1 /*
2  * Copyright © 2000 SuSE, Inc.
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and its
5  * documentation for any purpose is hereby granted without fee, provided that
6  * the above copyright notice appear in all copies and that both that
7  * copyright notice and this permission notice appear in supporting
8  * documentation, and that the name of SuSE not be used in advertising or
9  * publicity pertaining to distribution of the software without specific,
10  * written prior permission.  SuSE makes no representations about the
11  * suitability of this software for any purpose.  It is provided "as is"
12  * without express or implied warranty.
13  *
14  * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
16  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  *
21  * Author:  Keith Packard, SuSE, Inc.
22  */
23 
24 #ifndef _RENDER_H_
25 #define _RENDER_H_
26 
27 #include <X11/Xdefs.h>
28 
29 typedef XID		Glyph;
30 typedef XID		GlyphSet;
31 typedef XID		Picture;
32 typedef XID		PictFormat;
33 
34 #define RENDER_NAME	"RENDER"
35 #define RENDER_MAJOR	0
36 #define RENDER_MINOR	11
37 
38 #define X_RenderQueryVersion		    0
39 #define X_RenderQueryPictFormats	    1
40 #define X_RenderQueryPictIndexValues	    2	/* 0.7 */
41 #define X_RenderQueryDithers		    3
42 #define X_RenderCreatePicture		    4
43 #define X_RenderChangePicture		    5
44 #define X_RenderSetPictureClipRectangles    6
45 #define X_RenderFreePicture		    7
46 #define X_RenderComposite		    8
47 #define X_RenderScale			    9
48 #define X_RenderTrapezoids		    10
49 #define X_RenderTriangles		    11
50 #define X_RenderTriStrip		    12
51 #define X_RenderTriFan			    13
52 #define X_RenderColorTrapezoids		    14
53 #define X_RenderColorTriangles		    15
54 /* #define X_RenderTransform		    16 */
55 #define X_RenderCreateGlyphSet		    17
56 #define X_RenderReferenceGlyphSet	    18
57 #define X_RenderFreeGlyphSet		    19
58 #define X_RenderAddGlyphs		    20
59 #define X_RenderAddGlyphsFromPicture	    21
60 #define X_RenderFreeGlyphs		    22
61 #define X_RenderCompositeGlyphs8	    23
62 #define X_RenderCompositeGlyphs16	    24
63 #define X_RenderCompositeGlyphs32	    25
64 #define X_RenderFillRectangles		    26
65 /* 0.5 */
66 #define X_RenderCreateCursor		    27
67 /* 0.6 */
68 #define X_RenderSetPictureTransform	    28
69 #define X_RenderQueryFilters		    29
70 #define X_RenderSetPictureFilter	    30
71 /* 0.8 */
72 #define X_RenderCreateAnimCursor	    31
73 /* 0.9 */
74 #define X_RenderAddTraps		    32
75 /* 0.10 */
76 #define X_RenderCreateSolidFill             33
77 #define X_RenderCreateLinearGradient        34
78 #define X_RenderCreateRadialGradient        35
79 #define X_RenderCreateConicalGradient       36
80 #define RenderNumberRequests		    (X_RenderCreateConicalGradient+1)
81 
82 #define BadPictFormat			    0
83 #define BadPicture			    1
84 #define BadPictOp			    2
85 #define BadGlyphSet			    3
86 #define BadGlyph			    4
87 #define RenderNumberErrors		    (BadGlyph+1)
88 
89 #define PictTypeIndexed			    0
90 #define PictTypeDirect			    1
91 
92 #define PictOpMinimum			    0
93 #define PictOpClear			    0
94 #define PictOpSrc			    1
95 #define PictOpDst			    2
96 #define PictOpOver			    3
97 #define PictOpOverReverse		    4
98 #define PictOpIn			    5
99 #define PictOpInReverse			    6
100 #define PictOpOut			    7
101 #define PictOpOutReverse		    8
102 #define PictOpAtop			    9
103 #define PictOpAtopReverse		    10
104 #define PictOpXor			    11
105 #define PictOpAdd			    12
106 #define PictOpSaturate			    13
107 #define PictOpMaximum			    13
108 
109 /*
110  * Operators only available in version 0.2
111  */
112 #define PictOpDisjointMinimum			    0x10
113 #define PictOpDisjointClear			    0x10
114 #define PictOpDisjointSrc			    0x11
115 #define PictOpDisjointDst			    0x12
116 #define PictOpDisjointOver			    0x13
117 #define PictOpDisjointOverReverse		    0x14
118 #define PictOpDisjointIn			    0x15
119 #define PictOpDisjointInReverse			    0x16
120 #define PictOpDisjointOut			    0x17
121 #define PictOpDisjointOutReverse		    0x18
122 #define PictOpDisjointAtop			    0x19
123 #define PictOpDisjointAtopReverse		    0x1a
124 #define PictOpDisjointXor			    0x1b
125 #define PictOpDisjointMaximum			    0x1b
126 
127 #define PictOpConjointMinimum			    0x20
128 #define PictOpConjointClear			    0x20
129 #define PictOpConjointSrc			    0x21
130 #define PictOpConjointDst			    0x22
131 #define PictOpConjointOver			    0x23
132 #define PictOpConjointOverReverse		    0x24
133 #define PictOpConjointIn			    0x25
134 #define PictOpConjointInReverse			    0x26
135 #define PictOpConjointOut			    0x27
136 #define PictOpConjointOutReverse		    0x28
137 #define PictOpConjointAtop			    0x29
138 #define PictOpConjointAtopReverse		    0x2a
139 #define PictOpConjointXor			    0x2b
140 #define PictOpConjointMaximum			    0x2b
141 
142 /*
143  * Operators only available in version 0.11
144  */
145 #define PictOpBlendMinimum			    0x30
146 #define PictOpMultiply				    0x30
147 #define PictOpScreen				    0x31
148 #define PictOpOverlay				    0x32
149 #define PictOpDarken				    0x33
150 #define PictOpLighten				    0x34
151 #define PictOpColorDodge			    0x35
152 #define PictOpColorBurn				    0x36
153 #define PictOpHardLight				    0x37
154 #define PictOpSoftLight				    0x38
155 #define PictOpDifference			    0x39
156 #define PictOpExclusion				    0x3a
157 #define PictOpHSLHue				    0x3b
158 #define PictOpHSLSaturation			    0x3c
159 #define PictOpHSLColor				    0x3d
160 #define PictOpHSLLuminosity			    0x3e
161 #define PictOpBlendMaximum			    0x3e
162 
163 #define PolyEdgeSharp			    0
164 #define PolyEdgeSmooth			    1
165 
166 #define PolyModePrecise			    0
167 #define PolyModeImprecise		    1
168 
169 #define CPRepeat			    (1 << 0)
170 #define CPAlphaMap			    (1 << 1)
171 #define CPAlphaXOrigin			    (1 << 2)
172 #define CPAlphaYOrigin			    (1 << 3)
173 #define CPClipXOrigin			    (1 << 4)
174 #define CPClipYOrigin			    (1 << 5)
175 #define CPClipMask			    (1 << 6)
176 #define CPGraphicsExposure		    (1 << 7)
177 #define CPSubwindowMode			    (1 << 8)
178 #define CPPolyEdge			    (1 << 9)
179 #define CPPolyMode			    (1 << 10)
180 #define CPDither			    (1 << 11)
181 #define CPComponentAlpha		    (1 << 12)
182 #define CPLastBit			    12
183 
184 /* Filters included in 0.6 */
185 #define FilterNearest			    "nearest"
186 #define FilterBilinear			    "bilinear"
187 /* Filters included in 0.10 */
188 #define FilterConvolution		    "convolution"
189 
190 #define FilterFast			    "fast"
191 #define FilterGood			    "good"
192 #define FilterBest			    "best"
193 
194 #define FilterAliasNone			    -1
195 
196 /* Subpixel orders included in 0.6 */
197 #define SubPixelUnknown			    0
198 #define SubPixelHorizontalRGB		    1
199 #define SubPixelHorizontalBGR		    2
200 #define SubPixelVerticalRGB		    3
201 #define SubPixelVerticalBGR		    4
202 #define SubPixelNone			    5
203 
204 /* Extended repeat attributes included in 0.10 */
205 #define RepeatNone                          0
206 #define RepeatNormal                        1
207 #define RepeatPad                           2
208 #define RepeatReflect                       3
209 
210 #endif	/* _RENDER_H_ */
211