xref: /plan9/sys/src/cmd/gs/src/gscompt.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1 /* Copyright (C) 1997 Aladdin Enterprises.  All rights reserved.
2 
3   This software is provided AS-IS with no warranty, either express or
4   implied.
5 
6   This software is distributed under license and may not be copied,
7   modified or distributed except as expressly authorized under the terms
8   of the license contained in the file LICENSE in this distribution.
9 
10   For more information about licensing, please refer to
11   http://www.ghostscript.com/licensing/. For information on
12   commercial licensing, go to http://www.artifex.com/licensing/ or
13   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15 */
16 
17 /* $Id: gscompt.h,v 1.5 2002/06/16 08:45:42 lpd Exp $ */
18 /* Abstract types for compositing objects */
19 
20 #ifndef gscompt_INCLUDED
21 #  define gscompt_INCLUDED
22 
23 /*
24  * Compositing is the next-to-last step in the rendering pipeline.
25  * It occurs after color correction but before halftoning (if needed).
26  *
27  * gs_composite_t is the abstract superclass for compositing functions such
28  * as RasterOp functions or alpha-based compositing.  Concrete subclasses
29  * must provide a default implementation (presumably based on
30  * get_bits_rectangle and copy_color) for devices that provide no optimized
31  * implementation of their own.
32  *
33  * A client that wants to produce composited output asks the target device
34  * to create an appropriate compositing device based on the target device
35  * and the gs_composite_t (and possibly other elements of the imager state).
36  * If the target device doesn't have its own implementation for the
37  * requested function, format, and state, it passes the buck to the
38  * gs_composite_t, which may make further tests for special cases before
39  * creating and returning a compositing device that uses the default
40  * implementation.
41  */
42 typedef struct gs_composite_s gs_composite_t;
43 
44 /*
45  * To enable fast cache lookup and equality testing, compositing functions,
46  * like halftones, black generation functions, etc., carry a unique ID (time
47  * stamp).
48  */
49 gs_id gs_composite_id(const gs_composite_t * pcte);
50 
51 #endif /* gscompt_INCLUDED */
52