1/*
2
3   int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop)
4
5	For use with solid fills emulated by solid 8x8 patterns.  You
6	give it the foreground, planemask and X rop and it will replace
7	the foreground with a new one and the rop with the appropriate
8	MS triadic raster op.  The function will return which components
9	(S-P) need to be enabled.
10
11
12   int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop)
13
14	For use with 8x8 opaque pattern fills.  You give it the foreground,
15	and background, planemask and X rop and it will replace the
16	foreground and background with new ones and the rop with the
17	appropriate MS triadic raster op.  The function will return which
18	components (S-P) need to be enabled.
19
20
21	   ROP_PAT - Means to enable 8x8 mono patterns (all bits
22		     set for solid patterns).  Set the foreground and
23		     background as returned by the function.
24
25	   ROP_SRC - Means a source of color == planemask should be used.
26
27
28*/
29
30#ifndef _XAAROP_H
31#define _XAAROP_H
32
33#define ROP_DST		0x00000001
34#define ROP_SRC		0x00000002
35#define ROP_PAT		0x00000004
36
37#define ROP_0		0x00
38#define ROP_DPSoon	0x01
39#define ROP_DPSona	0x02
40#define ROP_PSon	0x03
41#define ROP_SDPona	0x04
42#define ROP_DPon	0x05
43#define ROP_PDSxnon	0x06
44#define ROP_PDSaon	0x07
45#define ROP_SDPnaa	0x08
46#define ROP_PDSxon	0x09
47#define ROP_DPna	0x0A
48#define ROP_PSDnaon	0x0B
49#define ROP_SPna	0x0C
50#define ROP_PDSnaon	0x0D
51#define ROP_PDSonon	0x0E
52#define ROP_Pn		0x0F
53#define ROP_PDSona	0x10
54#define ROP_DSon	0x11
55#define ROP_SDPxnon	0x12
56#define ROP_SDPaon	0x13
57#define ROP_DPSxnon	0x14
58#define ROP_DPSaon	0x15
59#define ROP_PSDPSanaxx	0x16
60#define ROP_SSPxDSxaxn	0x17
61#define ROP_SPxPDxa	0x18
62#define ROP_SDPSanaxn	0x19
63#define ROP_PDSPaox	0x1A
64#define ROP_SDPSxaxn	0x1B
65#define ROP_PSDPaox	0x1C
66#define ROP_DSPDxaxn	0x1D
67#define ROP_PDSox	0x1E
68#define ROP_PDSoan	0x1F
69#define ROP_DPSnaa	0x20
70#define ROP_SDPxon	0x21
71#define ROP_DSna	0x22
72#define ROP_SPDnaon	0x23
73#define ROP_SPxDSxa	0x24
74#define ROP_PDSPanaxn	0x25
75#define ROP_SDPSaox	0x26
76#define ROP_SDPSxnox	0x27
77#define ROP_DPSxa	0x28
78#define ROP_PSDPSaoxxn	0x29
79#define ROP_DPSana	0x2A
80#define ROP_SSPxPDxaxn	0x2B
81#define ROP_SPDSoax	0x2C
82#define ROP_PSDnox	0x2D
83#define ROP_PSDPxox	0x2E
84#define ROP_PSDnoan	0x2F
85#define ROP_PSna	0x30
86#define ROP_SDPnaon	0x31
87#define ROP_SDPSoox	0x32
88#define ROP_Sn		0x33
89#define ROP_SPDSaox	0x34
90#define ROP_SPDSxnox	0x35
91#define ROP_SDPox	0x36
92#define ROP_SDPoan	0x37
93#define ROP_PSDPoax	0x38
94#define ROP_SPDnox	0x39
95#define ROP_SPDSxox	0x3A
96#define ROP_SPDnoan	0x3B
97#define ROP_PSx		0x3C
98#define ROP_SPDSonox	0x3D
99#define ROP_SPDSnaox	0x3E
100#define ROP_PSan	0x3F
101#define ROP_PSDnaa	0x40
102#define ROP_DPSxon	0x41
103#define ROP_SDxPDxa	0x42
104#define ROP_SPDSanaxn	0x43
105#define ROP_SDna	0x44
106#define ROP_DPSnaon	0x45
107#define ROP_DSPDaox	0x46
108#define ROP_PSDPxaxn	0x47
109#define ROP_SDPxa	0x48
110#define ROP_PDSPDaoxxn	0x49
111#define ROP_DPSDoax	0x4A
112#define ROP_PDSnox	0x4B
113#define ROP_SDPana	0x4C
114#define ROP_SSPxDSxoxn	0x4D
115#define ROP_PDSPxox	0x4E
116#define ROP_PDSnoan	0x4F
117#define ROP_PDna	0x50
118#define ROP_DSPnaon	0x51
119#define ROP_DPSDaox	0x52
120#define ROP_SPDSxaxn	0x53
121#define ROP_DPSonon	0x54
122#define ROP_Dn		0x55
123#define ROP_DPSox	0x56
124#define ROP_DPSoan	0x57
125#define ROP_PDSPoax	0x58
126#define ROP_DPSnox	0x59
127#define ROP_DPx		0x5A
128#define ROP_DPSDonox	0x5B
129#define ROP_DPSDxox	0x5C
130#define ROP_DPSnoan	0x5D
131#define ROP_DPSDnaox	0x5E
132#define ROP_DPan	0x5F
133#define ROP_PDSxa	0x60
134#define ROP_DSPDSaoxxn	0x61
135#define ROP_DSPDoax	0x62
136#define ROP_SDPnox	0x63
137#define ROP_SDPSoax	0x64
138#define ROP_DSPnox	0x65
139#define ROP_DSx		0x66
140#define ROP_SDPSonox	0x67
141#define ROP_DSPDSonoxxn	0x68
142#define ROP_PDSxxn	0x69
143#define ROP_DPSax	0x6A
144#define ROP_PSDPSoaxxn	0x6B
145#define ROP_SDPax	0x6C
146#define ROP_PDSPDoaxxn	0x6D
147#define ROP_SDPSnoax	0x6E
148#define ROP_PDSxnan	0x6F
149#define ROP_PDSana	0x70
150#define ROP_SSDxPDxaxn	0x71
151#define ROP_SDPSxox	0x72
152#define ROP_SDPnoan	0x73
153#define ROP_DSPDxox	0x74
154#define ROP_DSPnoan	0x75
155#define ROP_SDPSnaox	0x76
156#define ROP_DSan	0x77
157#define ROP_PDSax	0x78
158#define ROP_DSPDSoaxxn	0x79
159#define ROP_DPSDnoax	0x7A
160#define ROP_SDPxnan	0x7B
161#define ROP_SPDSnoax	0x7C
162#define ROP_DPSxnan	0x7D
163#define ROP_SPxDSxo	0x7E
164#define ROP_DPSaan	0x7F
165#define ROP_DPSaa	0x80
166#define ROP_SPxDSxon	0x81
167#define ROP_DPSxna	0x82
168#define ROP_SPDSnoaxn	0x83
169#define ROP_SDPxna	0x84
170#define ROP_PDSPnoaxn	0x85
171#define ROP_DSPDSoaxx	0x86
172#define ROP_PDSaxn	0x87
173#define ROP_DSa		0x88
174#define ROP_SDPSnaoxn	0x89
175#define ROP_DSPnoa	0x8A
176#define ROP_DSPDxoxn	0x8B
177#define ROP_SDPnoa	0x8C
178#define ROP_SDPSxoxn	0x8D
179#define ROP_SSDxPDxax	0x8E
180#define ROP_PDSanan	0x8F
181#define ROP_PDSxna	0x90
182#define ROP_SDPSnoaxn	0x91
183#define ROP_DPSDPoaxx	0x92
184#define ROP_SPDaxn	0x93
185#define ROP_PSDPSoaxx	0x94
186#define ROP_DPSaxn	0x95
187#define ROP_DPSxx	0x96
188#define ROP_PSDPSonoxx	0x97
189#define ROP_SDPSonoxn	0x98
190#define ROP_DSxn	0x99
191#define ROP_DPSnax	0x9A
192#define ROP_SDPSoaxn	0x9B
193#define ROP_SPDnax	0x9C
194#define ROP_DSPDoaxn	0x9D
195#define ROP_DSPDSaoxx	0x9E
196#define ROP_PDSxan	0x9F
197#define ROP_DPa		0xA0
198#define ROP_PDSPnaoxn	0xA1
199#define ROP_DPSnoa	0xA2
200#define ROP_DPSDxoxn	0xA3
201#define ROP_PDSPonoxn	0xA4
202#define ROP_PDxn	0xA5
203#define ROP_DSPnax	0xA6
204#define ROP_PDSPoaxn	0xA7
205#define ROP_DPSoa	0xA8
206#define ROP_DPSoxn	0xA9
207#define ROP_D		0xAA
208#define ROP_DPSono	0xAB
209#define ROP_SPDSxax	0xAC
210#define ROP_DPSDaoxn	0xAD
211#define ROP_DSPnao	0xAE
212#define ROP_DPno	0xAF
213#define ROP_PDSnoa	0xB0
214#define ROP_PDSPxoxn	0xB1
215#define ROP_SSPxDSxox	0xB2
216#define ROP_SDPanan	0xB3
217#define ROP_PSDnax	0xB4
218#define ROP_DPSDoaxn	0xB5
219#define ROP_DPSDPaoxx	0xB6
220#define ROP_SDPxan	0xB7
221#define ROP_PSDPxax	0xB8
222#define ROP_DSPDaoxn	0xB9
223#define ROP_DPSnao	0xBA
224#define ROP_DSno	0xBB
225#define ROP_SPDSanax	0xBC
226#define ROP_SDxPDxan	0xBD
227#define ROP_DPSxo	0xBE
228#define ROP_DPSano	0xBF
229#define ROP_Psa		0xC0
230#define ROP_SPDSnaoxn	0xC1
231#define ROP_SPDSonoxn	0xC2
232#define ROP_PSxn	0xC3
233#define ROP_SPDnoa	0xC4
234#define ROP_SPDSxoxn	0xC5
235#define ROP_SDPnax	0xC6
236#define ROP_PSDPoaxn	0xC7
237#define ROP_SDPoa	0xC8
238#define ROP_SPDoxn	0xC9
239#define ROP_DPSDxax	0xCA
240#define ROP_SPDSaoxn	0xCB
241#define ROP_S		0xCC
242#define ROP_SDPono	0xCD
243#define ROP_SDPnao	0xCE
244#define ROP_SPno	0xCF
245#define ROP_PSDnoa	0xD0
246#define ROP_PSDPxoxn	0xD1
247#define ROP_PDSnax	0xD2
248#define ROP_SPDSoaxn	0xD3
249#define ROP_SSPxPDxax	0xD4
250#define ROP_DPSanan	0xD5
251#define ROP_PSDPSaoxx	0xD6
252#define ROP_DPSxan	0xD7
253#define ROP_PDSPxax	0xD8
254#define ROP_SDPSaoxn	0xD9
255#define ROP_DPSDanax	0xDA
256#define ROP_SPxDSxan	0xDB
257#define ROP_SPDnao	0xDC
258#define ROP_SDno	0xDD
259#define ROP_SDPxo	0xDE
260#define ROP_SDPano	0xDF
261#define ROP_PDSoa	0xE0
262#define ROP_PDSoxn	0xE1
263#define ROP_DSPDxax	0xE2
264#define ROP_PSDPaoxn	0xE3
265#define ROP_SDPSxax	0xE4
266#define ROP_PDSPaoxn	0xE5
267#define ROP_SDPSanax	0xE6
268#define ROP_SPxPDxan	0xE7
269#define ROP_SSPxDSxax	0xE8
270#define ROP_DSPDSanaxxn	0xE9
271#define ROP_DPSao	0xEA
272#define ROP_DPSxno	0xEB
273#define ROP_SDPao	0xEC
274#define ROP_SDPxno	0xED
275#define ROP_DSo		0xEE
276#define ROP_SDPnoo	0xEF
277#define ROP_P		0xF0
278#define ROP_PDSono	0xF1
279#define ROP_PDSnao	0xF2
280#define ROP_PSno	0xF3
281#define ROP_PSDnao	0xF4
282#define ROP_PDno	0xF5
283#define ROP_PDSxo	0xF6
284#define ROP_PDSano	0xF7
285#define ROP_PDSao	0xF8
286#define ROP_PDSxno	0xF9
287#define ROP_DPo		0xFA
288#define ROP_DPSnoo	0xFB
289#define ROP_PSo		0xFC
290#define ROP_PSDnoo	0xFD
291#define ROP_DPSoo	0xFE
292#define ROP_1		0xFF
293
294#define NO_SRC_ROP(rop) \
295   ((rop == GXnoop) || (rop == GXset) || (rop == GXclear) || (rop == GXinvert))
296
297extern _X_EXPORT int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop);
298extern _X_EXPORT int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop);
299
300/* XXX These four should be static, but it breaks the 6.7.0 ABI. */
301extern _X_EXPORT int XAACopyROP[16];
302extern _X_EXPORT int XAACopyROP_PM[16];
303extern _X_EXPORT int XAAPatternROP[16];
304extern _X_EXPORT int XAAPatternROP_PM[16];
305
306extern _X_EXPORT int XAAGetCopyROP(int i);
307extern _X_EXPORT int XAAGetCopyROP_PM(int i);
308extern _X_EXPORT int XAAGetPatternROP(int i);
309extern _X_EXPORT int XAAGetPatternROP_PM(int i);
310
311#endif /* _XAAROP_H */
312