xref: /AOO41X/main/x11_extensions/inc/Xrender.h (revision 7814061ca0cc49c91e6bcd64be38b3053e0622f9)
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