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