xref: /trunk/main/x11_extensions/inc/Xrender.h (revision cdf0e10c)
1 /*
2  *
3  * Copyright © 2000 SuSE, Inc.
4  *
5  * Permission to use, copy, modify, distribute, and sell this software and its
6  * documentation for any purpose is hereby granted without fee, provided that
7  * the above copyright notice appear in all copies and that both that
8  * copyright notice and this permission notice appear in supporting
9  * documentation, and that the name of SuSE not be used in advertising or
10  * publicity pertaining to distribution of the software without specific,
11  * written prior permission.  SuSE makes no representations about the
12  * suitability of this software for any purpose.  It is provided "as is"
13  * without express or implied warranty.
14  *
15  * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
17  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
19  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21  *
22  * Author:  Keith Packard, SuSE, Inc.
23  */
24 
25 #ifndef _XRENDER_H_
26 #define _XRENDER_H_
27 
28 #include <X11/Xlib.h>
29 #include <X11/Xfuncproto.h>
30 #include <X11/Xosdefs.h>
31 #include <X11/Xutil.h>
32 
33 #include <X11/extensions/render.h>
34 
35 typedef struct {
36     short   red;
37     short   redMask;
38     short   green;
39     short   greenMask;
40     short   blue;
41     short   blueMask;
42     short   alpha;
43     short   alphaMask;
44 } XRenderDirectFormat;
45 
46 typedef struct {
47     PictFormat		id;
48     int			type;
49     int			depth;
50     XRenderDirectFormat	direct;
51     Colormap		colormap;
52 } XRenderPictFormat;
53 
54 #define PictFormatID	    (1 << 0)
55 #define PictFormatType	    (1 << 1)
56 #define PictFormatDepth	    (1 << 2)
57 #define PictFormatRed	    (1 << 3)
58 #define PictFormatRedMask   (1 << 4)
59 #define PictFormatGreen	    (1 << 5)
60 #define PictFormatGreenMask (1 << 6)
61 #define PictFormatBlue	    (1 << 7)
62 #define PictFormatBlueMask  (1 << 8)
63 #define PictFormatAlpha	    (1 << 9)
64 #define PictFormatAlphaMask (1 << 10)
65 #define PictFormatColormap  (1 << 11)
66 
67 typedef struct _XRenderPictureAttributes {
68     int 		repeat;
69     Picture		alpha_map;
70     int			alpha_x_origin;
71     int			alpha_y_origin;
72     int			clip_x_origin;
73     int			clip_y_origin;
74     Pixmap		clip_mask;
75     Bool		graphics_exposures;
76     int			subwindow_mode;
77     int			poly_edge;
78     int			poly_mode;
79     Atom		dither;
80     Bool		component_alpha;
81 } XRenderPictureAttributes;
82 
83 typedef struct {
84     unsigned short   red;
85     unsigned short   green;
86     unsigned short   blue;
87     unsigned short   alpha;
88 } XRenderColor;
89 
90 typedef struct _XGlyphInfo {
91     unsigned short  width;
92     unsigned short  height;
93     short	    x;
94     short	    y;
95     short	    xOff;
96     short	    yOff;
97 } XGlyphInfo;
98 
99 typedef struct _XGlyphElt8 {
100     GlyphSet		    glyphset;
101     _Xconst char	    *chars;
102     int			    nchars;
103     int			    xOff;
104     int			    yOff;
105 } XGlyphElt8;
106 
107 typedef struct _XGlyphElt16 {
108     GlyphSet		    glyphset;
109     _Xconst unsigned short  *chars;
110     int			    nchars;
111     int			    xOff;
112     int			    yOff;
113 } XGlyphElt16;
114 
115 typedef struct _XGlyphElt32 {
116     GlyphSet		    glyphset;
117     _Xconst unsigned int    *chars;
118     int			    nchars;
119     int			    xOff;
120     int			    yOff;
121 } XGlyphElt32;
122 
123 typedef double	XDouble;
124 
125 typedef struct _XPointDouble {
126     XDouble  x, y;
127 } XPointDouble;
128 
129 #define XDoubleToFixed(f)    ((XFixed) ((f) * 65536))
130 #define XFixedToDouble(f)    (((XDouble) (f)) / 65536)
131 
132 typedef int XFixed;
133 
134 typedef struct _XPointFixed {
135     XFixed  x, y;
136 } XPointFixed;
137 
138 typedef struct _XLineFixed {
139     XPointFixed	p1, p2;
140 } XLineFixed;
141 
142 typedef struct _XTriangle {
143     XPointFixed	p1, p2, p3;
144 } XTriangle;
145 
146 typedef struct _XCircle {
147     XFixed x;
148     XFixed y;
149     XFixed radius;
150 } XCircle;
151 
152 typedef struct _XTrapezoid {
153     XFixed  top, bottom;
154     XLineFixed	left, right;
155 } XTrapezoid;
156 
157 typedef struct _XTransform {
158     XFixed  matrix[3][3];
159 } XTransform;
160 
161 typedef struct _XFilters {
162     int	    nfilter;
163     char    **filter;
164     int	    nalias;
165     short   *alias;
166 } XFilters;
167 
168 typedef struct _XIndexValue {
169     unsigned long    pixel;
170     unsigned short   red, green, blue, alpha;
171 } XIndexValue;
172 
173 typedef struct _XAnimCursor {
174     Cursor	    cursor;
175     unsigned long   delay;
176 } XAnimCursor;
177 
178 typedef struct _XSpanFix {
179     XFixed	    left, right, y;
180 } XSpanFix;
181 
182 typedef struct _XTrap {
183     XSpanFix	    top, bottom;
184 } XTrap;
185 
186 typedef struct _XLinearGradient {
187     XPointFixed p1;
188     XPointFixed p2;
189 } XLinearGradient;
190 
191 typedef struct _XRadialGradient {
192     XCircle inner;
193     XCircle outer;
194 } XRadialGradient;
195 
196 typedef struct _XConicalGradient {
197     XPointFixed center;
198     XFixed angle; /* in degrees */
199 } XConicalGradient;
200 
201 _XFUNCPROTOBEGIN
202 
203 Bool XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep);
204 
205 Status XRenderQueryVersion (Display *dpy,
206 			    int     *major_versionp,
207 			    int     *minor_versionp);
208 
209 Status XRenderQueryFormats (Display *dpy);
210 
211 int XRenderQuerySubpixelOrder (Display *dpy, int screen);
212 
213 Bool XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel);
214 
215 XRenderPictFormat *
216 XRenderFindVisualFormat (Display *dpy, _Xconst Visual *visual);
217 
218 XRenderPictFormat *
219 XRenderFindFormat (Display			*dpy,
220 		   unsigned long		mask,
221 		   _Xconst XRenderPictFormat	*templ,
222 		   int				count);
223 
224 #define PictStandardARGB32  0
225 #define PictStandardRGB24   1
226 #define PictStandardA8	    2
227 #define PictStandardA4	    3
228 #define PictStandardA1	    4
229 #define PictStandardNUM	    5
230 
231 XRenderPictFormat *
232 XRenderFindStandardFormat (Display		*dpy,
233 			   int			format);
234 
235 XIndexValue *
236 XRenderQueryPictIndexValues(Display			*dpy,
237 			    _Xconst XRenderPictFormat	*format,
238 			    int				*num);
239 
240 Picture
241 XRenderCreatePicture (Display				*dpy,
242 		      Drawable				drawable,
243 		      _Xconst XRenderPictFormat		*format,
244 		      unsigned long			valuemask,
245 		      _Xconst XRenderPictureAttributes	*attributes);
246 
247 void
248 XRenderChangePicture (Display				*dpy,
249 		      Picture				picture,
250 		      unsigned long			valuemask,
251 		      _Xconst XRenderPictureAttributes  *attributes);
252 
253 void
254 XRenderSetPictureClipRectangles (Display	    *dpy,
255 				 Picture	    picture,
256 				 int		    xOrigin,
257 				 int		    yOrigin,
258 				 _Xconst XRectangle *rects,
259 				 int		    n);
260 
261 void
262 XRenderSetPictureClipRegion (Display	    *dpy,
263 			     Picture	    picture,
264 			     Region	    r);
265 
266 void
267 XRenderSetPictureTransform (Display	    *dpy,
268 			    Picture	    picture,
269 			    XTransform	    *transform);
270 
271 void
272 XRenderFreePicture (Display                   *dpy,
273 		    Picture                   picture);
274 
275 void
276 XRenderComposite (Display   *dpy,
277 		  int	    op,
278 		  Picture   src,
279 		  Picture   mask,
280 		  Picture   dst,
281 		  int	    src_x,
282 		  int	    src_y,
283 		  int	    mask_x,
284 		  int	    mask_y,
285 		  int	    dst_x,
286 		  int	    dst_y,
287 		  unsigned int	width,
288 		  unsigned int	height);
289 
290 GlyphSet
291 XRenderCreateGlyphSet (Display *dpy, _Xconst XRenderPictFormat *format);
292 
293 GlyphSet
294 XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing);
295 
296 void
297 XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset);
298 
299 void
300 XRenderAddGlyphs (Display		*dpy,
301 		  GlyphSet		glyphset,
302 		  _Xconst Glyph		*gids,
303 		  _Xconst XGlyphInfo	*glyphs,
304 		  int			nglyphs,
305 		  _Xconst char		*images,
306 		  int			nbyte_images);
307 
308 void
309 XRenderFreeGlyphs (Display	    *dpy,
310 		   GlyphSet	    glyphset,
311 		   _Xconst Glyph    *gids,
312 		   int		    nglyphs);
313 
314 void
315 XRenderCompositeString8 (Display		    *dpy,
316 			 int			    op,
317 			 Picture		    src,
318 			 Picture		    dst,
319 			 _Xconst XRenderPictFormat  *maskFormat,
320 			 GlyphSet		    glyphset,
321 			 int			    xSrc,
322 			 int			    ySrc,
323 			 int			    xDst,
324 			 int			    yDst,
325 			 _Xconst char		    *string,
326 			 int			    nchar);
327 
328 void
329 XRenderCompositeString16 (Display		    *dpy,
330 			  int			    op,
331 			  Picture		    src,
332 			  Picture		    dst,
333 			  _Xconst XRenderPictFormat *maskFormat,
334 			  GlyphSet		    glyphset,
335 			  int			    xSrc,
336 			  int			    ySrc,
337 			  int			    xDst,
338 			  int			    yDst,
339 			  _Xconst unsigned short    *string,
340 			  int			    nchar);
341 
342 void
343 XRenderCompositeString32 (Display		    *dpy,
344 			  int			    op,
345 			  Picture		    src,
346 			  Picture		    dst,
347 			  _Xconst XRenderPictFormat *maskFormat,
348 			  GlyphSet		    glyphset,
349 			  int			    xSrc,
350 			  int			    ySrc,
351 			  int			    xDst,
352 			  int			    yDst,
353 			  _Xconst unsigned int	    *string,
354 			  int			    nchar);
355 
356 void
357 XRenderCompositeText8 (Display			    *dpy,
358 		       int			    op,
359 		       Picture			    src,
360 		       Picture			    dst,
361 		       _Xconst XRenderPictFormat    *maskFormat,
362 		       int			    xSrc,
363 		       int			    ySrc,
364 		       int			    xDst,
365 		       int			    yDst,
366 		       _Xconst XGlyphElt8	    *elts,
367 		       int			    nelt);
368 
369 void
370 XRenderCompositeText16 (Display			    *dpy,
371 			int			    op,
372 			Picture			    src,
373 			Picture			    dst,
374 			_Xconst XRenderPictFormat   *maskFormat,
375 			int			    xSrc,
376 			int			    ySrc,
377 			int			    xDst,
378 			int			    yDst,
379 			_Xconst XGlyphElt16	    *elts,
380 			int			    nelt);
381 
382 void
383 XRenderCompositeText32 (Display			    *dpy,
384 			int			    op,
385 			Picture			    src,
386 			Picture			    dst,
387 			_Xconst XRenderPictFormat   *maskFormat,
388 			int			    xSrc,
389 			int			    ySrc,
390 			int			    xDst,
391 			int			    yDst,
392 			_Xconst XGlyphElt32	    *elts,
393 			int			    nelt);
394 
395 void
396 XRenderFillRectangle (Display		    *dpy,
397 		      int		    op,
398 		      Picture		    dst,
399 		      _Xconst XRenderColor  *color,
400 		      int		    x,
401 		      int		    y,
402 		      unsigned int	    width,
403 		      unsigned int	    height);
404 
405 void
406 XRenderFillRectangles (Display		    *dpy,
407 		       int		    op,
408 		       Picture		    dst,
409 		       _Xconst XRenderColor *color,
410 		       _Xconst XRectangle   *rectangles,
411 		       int		    n_rects);
412 
413 void
414 XRenderCompositeTrapezoids (Display		*dpy,
415 			    int			op,
416 			    Picture		src,
417 			    Picture		dst,
418 			    _Xconst XRenderPictFormat	*maskFormat,
419 			    int			xSrc,
420 			    int			ySrc,
421 			    _Xconst XTrapezoid	*traps,
422 			    int			ntrap);
423 
424 void
425 XRenderCompositeTriangles (Display		*dpy,
426 			   int			op,
427 			   Picture		src,
428 			   Picture		dst,
429 			    _Xconst XRenderPictFormat	*maskFormat,
430 			   int			xSrc,
431 			   int			ySrc,
432 			   _Xconst XTriangle	*triangles,
433 			   int			ntriangle);
434 
435 void
436 XRenderCompositeTriStrip (Display		*dpy,
437 			  int			op,
438 			  Picture		src,
439 			  Picture		dst,
440 			    _Xconst XRenderPictFormat	*maskFormat,
441 			  int			xSrc,
442 			  int			ySrc,
443 			  _Xconst XPointFixed	*points,
444 			  int			npoint);
445 
446 void
447 XRenderCompositeTriFan (Display			*dpy,
448 			int			op,
449 			Picture			src,
450 			Picture			dst,
451 			_Xconst XRenderPictFormat	*maskFormat,
452 			int			xSrc,
453 			int			ySrc,
454 			_Xconst XPointFixed	*points,
455 			int			npoint);
456 
457 void
458 XRenderCompositeDoublePoly (Display		    *dpy,
459 			    int			    op,
460 			    Picture		    src,
461 			    Picture		    dst,
462 			    _Xconst XRenderPictFormat	*maskFormat,
463 			    int			    xSrc,
464 			    int			    ySrc,
465 			    int			    xDst,
466 			    int			    yDst,
467 			    _Xconst XPointDouble    *fpoints,
468 			    int			    npoints,
469 			    int			    winding);
470 Status
471 XRenderParseColor(Display	*dpy,
472 		  char		*spec,
473 		  XRenderColor	*def);
474 
475 Cursor
476 XRenderCreateCursor (Display	    *dpy,
477 		     Picture	    source,
478 		     unsigned int   x,
479 		     unsigned int   y);
480 
481 XFilters *
482 XRenderQueryFilters (Display *dpy, Drawable drawable);
483 
484 void
485 XRenderSetPictureFilter (Display    *dpy,
486 			 Picture    picture,
487 			 const char *filter,
488 			 XFixed	    *params,
489 			 int	    nparams);
490 
491 Cursor
492 XRenderCreateAnimCursor (Display	*dpy,
493 			 int		ncursor,
494 			 XAnimCursor	*cursors);
495 
496 
497 void
498 XRenderAddTraps (Display	    *dpy,
499 		 Picture	    picture,
500 		 int		    xOff,
501 		 int		    yOff,
502 		 _Xconst XTrap	    *traps,
503 		 int		    ntrap);
504 
505 Picture XRenderCreateSolidFill (Display *dpy,
506                                 const XRenderColor *color);
507 
508 Picture XRenderCreateLinearGradient (Display *dpy,
509                                      const XLinearGradient *gradient,
510                                      const XFixed *stops,
511                                      const XRenderColor *colors,
512                                      int nstops);
513 
514 Picture XRenderCreateRadialGradient (Display *dpy,
515                                      const XRadialGradient *gradient,
516                                      const XFixed *stops,
517                                      const XRenderColor *colors,
518                                      int nstops);
519 
520 Picture XRenderCreateConicalGradient (Display *dpy,
521                                       const XConicalGradient *gradient,
522                                       const XFixed *stops,
523                                       const XRenderColor *colors,
524                                       int nstops);
525 
526 _XFUNCPROTOEND
527 
528 #endif /* _XRENDER_H_ */
529