VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.6.0/picturestr.h@ 17448

Last change on this file since 17448 was 17448, checked in by vboxsync, 16 years ago

Additions/x11: added a full header set for X.Org server 1.5 and 1.6

  • Property svn:eol-style set to native
File size: 17.8 KB
Line 
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 _PICTURESTR_H_
25#define _PICTURESTR_H_
26
27#include "scrnintstr.h"
28#include "glyphstr.h"
29#include "resource.h"
30#include "privates.h"
31
32typedef struct _DirectFormat {
33 CARD16 red, redMask;
34 CARD16 green, greenMask;
35 CARD16 blue, blueMask;
36 CARD16 alpha, alphaMask;
37} DirectFormatRec;
38
39typedef struct _IndexFormat {
40 VisualID vid;
41 ColormapPtr pColormap;
42 int nvalues;
43 xIndexValue *pValues;
44 void *devPrivate;
45} IndexFormatRec;
46
47typedef struct _PictFormat {
48 CARD32 id;
49 CARD32 format; /* except bpp */
50 unsigned char type;
51 unsigned char depth;
52 DirectFormatRec direct;
53 IndexFormatRec index;
54} PictFormatRec;
55
56typedef struct pixman_vector PictVector, *PictVectorPtr;
57typedef struct pixman_transform PictTransform, *PictTransformPtr;
58
59#define pict_f_vector pixman_f_vector
60#define pict_f_transform pixman_f_transform
61
62#define PICT_GRADIENT_STOPTABLE_SIZE 1024
63#define SourcePictTypeSolidFill 0
64#define SourcePictTypeLinear 1
65#define SourcePictTypeRadial 2
66#define SourcePictTypeConical 3
67
68#define SourcePictClassUnknown 0
69#define SourcePictClassHorizontal 1
70#define SourcePictClassVertical 2
71
72typedef struct _PictSolidFill {
73 unsigned int type;
74 unsigned int class;
75 CARD32 color;
76} PictSolidFill, *PictSolidFillPtr;
77
78typedef struct _PictGradientStop {
79 xFixed x;
80 xRenderColor color;
81} PictGradientStop, *PictGradientStopPtr;
82
83typedef struct _PictGradient {
84 unsigned int type;
85 unsigned int class;
86 int nstops;
87 PictGradientStopPtr stops;
88 int stopRange;
89 CARD32 *colorTable;
90 int colorTableSize;
91} PictGradient, *PictGradientPtr;
92
93typedef struct _PictLinearGradient {
94 unsigned int type;
95 unsigned int class;
96 int nstops;
97 PictGradientStopPtr stops;
98 int stopRange;
99 CARD32 *colorTable;
100 int colorTableSize;
101 xPointFixed p1;
102 xPointFixed p2;
103} PictLinearGradient, *PictLinearGradientPtr;
104
105typedef struct _PictCircle {
106 xFixed x;
107 xFixed y;
108 xFixed radius;
109} PictCircle, *PictCirclePtr;
110
111typedef struct _PictRadialGradient {
112 unsigned int type;
113 unsigned int class;
114 int nstops;
115 PictGradientStopPtr stops;
116 int stopRange;
117 CARD32 *colorTable;
118 int colorTableSize;
119 PictCircle c1;
120 PictCircle c2;
121 double cdx;
122 double cdy;
123 double dr;
124 double A;
125} PictRadialGradient, *PictRadialGradientPtr;
126
127typedef struct _PictConicalGradient {
128 unsigned int type;
129 unsigned int class;
130 int nstops;
131 PictGradientStopPtr stops;
132 int stopRange;
133 CARD32 *colorTable;
134 int colorTableSize;
135 xPointFixed center;
136 xFixed angle;
137} PictConicalGradient, *PictConicalGradientPtr;
138
139typedef union _SourcePict {
140 unsigned int type;
141 PictSolidFill solidFill;
142 PictGradient gradient;
143 PictLinearGradient linear;
144 PictRadialGradient radial;
145 PictConicalGradient conical;
146} SourcePict, *SourcePictPtr;
147
148typedef struct _Picture {
149 DrawablePtr pDrawable;
150 PictFormatPtr pFormat;
151 PictFormatShort format; /* PICT_FORMAT */
152 int refcnt;
153 CARD32 id;
154 PicturePtr pNext; /* chain on same drawable */
155
156 unsigned int repeat : 1;
157 unsigned int graphicsExposures : 1;
158 unsigned int subWindowMode : 1;
159 unsigned int polyEdge : 1;
160 unsigned int polyMode : 1;
161 unsigned int freeCompClip : 1;
162 unsigned int clientClipType : 2;
163 unsigned int componentAlpha : 1;
164 unsigned int repeatType : 2;
165 unsigned int unused : 21;
166
167 PicturePtr alphaMap;
168 DDXPointRec alphaOrigin;
169
170 DDXPointRec clipOrigin;
171 pointer clientClip;
172
173 Atom dither;
174
175 unsigned long stateChanges;
176 unsigned long serialNumber;
177
178 RegionPtr pCompositeClip;
179
180 PrivateRec *devPrivates;
181
182 PictTransform *transform;
183
184 int filter;
185 xFixed *filter_params;
186 int filter_nparams;
187 SourcePictPtr pSourcePict;
188} PictureRec;
189
190typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
191 xFixed *params, int nparams,
192 int *width, int *height);
193typedef struct {
194 char *name;
195 int id;
196 PictFilterValidateParamsProcPtr ValidateParams;
197 int width, height;
198} PictFilterRec, *PictFilterPtr;
199
200#define PictFilterNearest 0
201#define PictFilterBilinear 1
202
203#define PictFilterFast 2
204#define PictFilterGood 3
205#define PictFilterBest 4
206
207#define PictFilterConvolution 5
208
209typedef struct {
210 char *alias;
211 int alias_id;
212 int filter_id;
213} PictFilterAliasRec, *PictFilterAliasPtr;
214
215typedef int (*CreatePictureProcPtr) (PicturePtr pPicture);
216typedef void (*DestroyPictureProcPtr) (PicturePtr pPicture);
217typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture,
218 int clipType,
219 pointer value,
220 int n);
221typedef void (*DestroyPictureClipProcPtr)(PicturePtr pPicture);
222
223typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture,
224 PictTransform *transform);
225
226typedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture,
227 int filter,
228 xFixed *params,
229 int nparams);
230
231typedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture);
232
233typedef void (*ChangePictureProcPtr) (PicturePtr pPicture,
234 Mask mask);
235typedef void (*ValidatePictureProcPtr) (PicturePtr pPicture,
236 Mask mask);
237typedef void (*CompositeProcPtr) (CARD8 op,
238 PicturePtr pSrc,
239 PicturePtr pMask,
240 PicturePtr pDst,
241 INT16 xSrc,
242 INT16 ySrc,
243 INT16 xMask,
244 INT16 yMask,
245 INT16 xDst,
246 INT16 yDst,
247 CARD16 width,
248 CARD16 height);
249
250typedef void (*GlyphsProcPtr) (CARD8 op,
251 PicturePtr pSrc,
252 PicturePtr pDst,
253 PictFormatPtr maskFormat,
254 INT16 xSrc,
255 INT16 ySrc,
256 int nlists,
257 GlyphListPtr lists,
258 GlyphPtr *glyphs);
259
260typedef void (*CompositeRectsProcPtr) (CARD8 op,
261 PicturePtr pDst,
262 xRenderColor *color,
263 int nRect,
264 xRectangle *rects);
265
266typedef void (*RasterizeTrapezoidProcPtr)(PicturePtr pMask,
267 xTrapezoid *trap,
268 int x_off,
269 int y_off);
270
271typedef void (*TrapezoidsProcPtr) (CARD8 op,
272 PicturePtr pSrc,
273 PicturePtr pDst,
274 PictFormatPtr maskFormat,
275 INT16 xSrc,
276 INT16 ySrc,
277 int ntrap,
278 xTrapezoid *traps);
279
280typedef void (*TrianglesProcPtr) (CARD8 op,
281 PicturePtr pSrc,
282 PicturePtr pDst,
283 PictFormatPtr maskFormat,
284 INT16 xSrc,
285 INT16 ySrc,
286 int ntri,
287 xTriangle *tris);
288
289typedef void (*TriStripProcPtr) (CARD8 op,
290 PicturePtr pSrc,
291 PicturePtr pDst,
292 PictFormatPtr maskFormat,
293 INT16 xSrc,
294 INT16 ySrc,
295 int npoint,
296 xPointFixed *points);
297
298typedef void (*TriFanProcPtr) (CARD8 op,
299 PicturePtr pSrc,
300 PicturePtr pDst,
301 PictFormatPtr maskFormat,
302 INT16 xSrc,
303 INT16 ySrc,
304 int npoint,
305 xPointFixed *points);
306
307typedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen,
308 PictFormatPtr pFormat);
309
310typedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen,
311 PictFormatPtr pFormat);
312
313typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen,
314 PictFormatPtr pFormat,
315 int ndef,
316 xColorItem *pdef);
317
318typedef void (*AddTrapsProcPtr) (PicturePtr pPicture,
319 INT16 xOff,
320 INT16 yOff,
321 int ntrap,
322 xTrap *traps);
323
324typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture,
325 INT16 xOff,
326 INT16 yOff,
327 int ntri,
328 xTriangle *tris);
329
330typedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen,
331 GlyphPtr glyph);
332
333typedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen,
334 GlyphPtr glyph);
335
336typedef struct _PictureScreen {
337 PictFormatPtr formats;
338 PictFormatPtr fallback;
339 int nformats;
340
341 CreatePictureProcPtr CreatePicture;
342 DestroyPictureProcPtr DestroyPicture;
343 ChangePictureClipProcPtr ChangePictureClip;
344 DestroyPictureClipProcPtr DestroyPictureClip;
345
346 ChangePictureProcPtr ChangePicture;
347 ValidatePictureProcPtr ValidatePicture;
348
349 CompositeProcPtr Composite;
350 GlyphsProcPtr Glyphs; /* unused */
351 CompositeRectsProcPtr CompositeRects;
352
353 DestroyWindowProcPtr DestroyWindow;
354 CloseScreenProcPtr CloseScreen;
355
356 StoreColorsProcPtr StoreColors;
357
358 InitIndexedProcPtr InitIndexed;
359 CloseIndexedProcPtr CloseIndexed;
360 UpdateIndexedProcPtr UpdateIndexed;
361
362 int subpixel;
363
364 PictFilterPtr filters;
365 int nfilters;
366 PictFilterAliasPtr filterAliases;
367 int nfilterAliases;
368
369 /**
370 * Called immediately after a picture's transform is changed through the
371 * SetPictureTransform request. Not called for source-only pictures.
372 */
373 ChangePictureTransformProcPtr ChangePictureTransform;
374
375 /**
376 * Called immediately after a picture's transform is changed through the
377 * SetPictureFilter request. Not called for source-only pictures.
378 */
379 ChangePictureFilterProcPtr ChangePictureFilter;
380
381 DestroyPictureFilterProcPtr DestroyPictureFilter;
382
383 TrapezoidsProcPtr Trapezoids;
384 TrianglesProcPtr Triangles;
385 TriStripProcPtr TriStrip;
386 TriFanProcPtr TriFan;
387
388 RasterizeTrapezoidProcPtr RasterizeTrapezoid;
389
390 AddTrianglesProcPtr AddTriangles;
391
392 AddTrapsProcPtr AddTraps;
393
394 RealizeGlyphProcPtr RealizeGlyph;
395 UnrealizeGlyphProcPtr UnrealizeGlyph;
396
397} PictureScreenRec, *PictureScreenPtr;
398
399extern DevPrivateKey PictureScreenPrivateKey;
400extern DevPrivateKey PictureWindowPrivateKey;
401extern RESTYPE PictureType;
402extern RESTYPE PictFormatType;
403extern RESTYPE GlyphSetType;
404
405#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
406#define GetPictureScreenIfSet(s) GetPictureScreen(s)
407#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p)
408#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey))
409#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p)
410
411#define VERIFY_PICTURE(pPicture, pid, client, mode, err) {\
412 pPicture = SecurityLookupIDByType(client, pid, PictureType, mode);\
413 if (!pPicture) { \
414 client->errorValue = pid; \
415 return err; \
416 } \
417}
418
419#define VERIFY_ALPHA(pPicture, pid, client, mode, err) {\
420 if (pid == None) \
421 pPicture = 0; \
422 else { \
423 VERIFY_PICTURE(pPicture, pid, client, mode, err); \
424 } \
425} \
426
427Bool
428PictureDestroyWindow (WindowPtr pWindow);
429
430Bool
431PictureCloseScreen (int Index, ScreenPtr pScreen);
432
433void
434PictureStoreColors (ColormapPtr pColormap, int ndef, xColorItem *pdef);
435
436Bool
437PictureInitIndexedFormat (ScreenPtr pScreen, PictFormatPtr format);
438
439Bool
440PictureSetSubpixelOrder (ScreenPtr pScreen, int subpixel);
441
442int
443PictureGetSubpixelOrder (ScreenPtr pScreen);
444
445PictFormatPtr
446PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp);
447
448PictFormatPtr
449PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual);
450
451PictFormatPtr
452PictureMatchFormat (ScreenPtr pScreen, int depth, CARD32 format);
453
454Bool
455PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
456
457int
458PictureGetFilterId (char *filter, int len, Bool makeit);
459
460char *
461PictureGetFilterName (int id);
462
463int
464PictureAddFilter (ScreenPtr pScreen,
465 char *filter,
466 PictFilterValidateParamsProcPtr ValidateParams,
467 int width,
468 int height);
469
470Bool
471PictureSetFilterAlias (ScreenPtr pScreen, char *filter, char *alias);
472
473Bool
474PictureSetDefaultFilters (ScreenPtr pScreen);
475
476void
477PictureResetFilters (ScreenPtr pScreen);
478
479PictFilterPtr
480PictureFindFilter (ScreenPtr pScreen, char *name, int len);
481
482int
483SetPicturePictFilter (PicturePtr pPicture, PictFilterPtr pFilter,
484 xFixed *params, int nparams);
485
486int
487SetPictureFilter (PicturePtr pPicture, char *name, int len,
488 xFixed *params, int nparams);
489
490Bool
491PictureFinishInit (void);
492
493void
494SetPictureToDefaults (PicturePtr pPicture);
495
496PicturePtr
497CreatePicture (Picture pid,
498 DrawablePtr pDrawable,
499 PictFormatPtr pFormat,
500 Mask mask,
501 XID *list,
502 ClientPtr client,
503 int *error);
504
505int
506ChangePicture (PicturePtr pPicture,
507 Mask vmask,
508 XID *vlist,
509 DevUnion *ulist,
510 ClientPtr client);
511
512int
513SetPictureClipRects (PicturePtr pPicture,
514 int xOrigin,
515 int yOrigin,
516 int nRect,
517 xRectangle *rects);
518
519int
520SetPictureClipRegion (PicturePtr pPicture,
521 int xOrigin,
522 int yOrigin,
523 RegionPtr pRegion);
524
525int
526SetPictureTransform (PicturePtr pPicture,
527 PictTransform *transform);
528
529void
530CopyPicture (PicturePtr pSrc,
531 Mask mask,
532 PicturePtr pDst);
533
534void
535ValidatePicture(PicturePtr pPicture);
536
537int
538FreePicture (pointer pPicture,
539 XID pid);
540
541int
542FreePictFormat (pointer pPictFormat,
543 XID pid);
544
545void
546CompositePicture (CARD8 op,
547 PicturePtr pSrc,
548 PicturePtr pMask,
549 PicturePtr pDst,
550 INT16 xSrc,
551 INT16 ySrc,
552 INT16 xMask,
553 INT16 yMask,
554 INT16 xDst,
555 INT16 yDst,
556 CARD16 width,
557 CARD16 height);
558
559void
560CompositeGlyphs (CARD8 op,
561 PicturePtr pSrc,
562 PicturePtr pDst,
563 PictFormatPtr maskFormat,
564 INT16 xSrc,
565 INT16 ySrc,
566 int nlist,
567 GlyphListPtr lists,
568 GlyphPtr *glyphs);
569
570void
571CompositeRects (CARD8 op,
572 PicturePtr pDst,
573 xRenderColor *color,
574 int nRect,
575 xRectangle *rects);
576
577void
578CompositeTrapezoids (CARD8 op,
579 PicturePtr pSrc,
580 PicturePtr pDst,
581 PictFormatPtr maskFormat,
582 INT16 xSrc,
583 INT16 ySrc,
584 int ntrap,
585 xTrapezoid *traps);
586
587void
588CompositeTriangles (CARD8 op,
589 PicturePtr pSrc,
590 PicturePtr pDst,
591 PictFormatPtr maskFormat,
592 INT16 xSrc,
593 INT16 ySrc,
594 int ntriangles,
595 xTriangle *triangles);
596
597void
598CompositeTriStrip (CARD8 op,
599 PicturePtr pSrc,
600 PicturePtr pDst,
601 PictFormatPtr maskFormat,
602 INT16 xSrc,
603 INT16 ySrc,
604 int npoints,
605 xPointFixed *points);
606
607void
608CompositeTriFan (CARD8 op,
609 PicturePtr pSrc,
610 PicturePtr pDst,
611 PictFormatPtr maskFormat,
612 INT16 xSrc,
613 INT16 ySrc,
614 int npoints,
615 xPointFixed *points);
616
617CARD32
618PictureGradientColor (PictGradientStopPtr stop1,
619 PictGradientStopPtr stop2,
620 CARD32 x);
621
622void RenderExtensionInit (void);
623
624Bool
625AnimCurInit (ScreenPtr pScreen);
626
627int
628AnimCursorCreate (CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor, ClientPtr client, XID cid);
629
630void
631AddTraps (PicturePtr pPicture,
632 INT16 xOff,
633 INT16 yOff,
634 int ntraps,
635 xTrap *traps);
636
637pixman_image_t *
638PixmanImageFromPicture (PicturePtr pPict,
639 Bool hasClip);
640
641PicturePtr
642CreateSolidPicture (Picture pid,
643 xRenderColor *color,
644 int *error);
645
646PicturePtr
647CreateLinearGradientPicture (Picture pid,
648 xPointFixed *p1,
649 xPointFixed *p2,
650 int nStops,
651 xFixed *stops,
652 xRenderColor *colors,
653 int *error);
654
655PicturePtr
656CreateRadialGradientPicture (Picture pid,
657 xPointFixed *inner,
658 xPointFixed *outer,
659 xFixed innerRadius,
660 xFixed outerRadius,
661 int nStops,
662 xFixed *stops,
663 xRenderColor *colors,
664 int *error);
665
666PicturePtr
667CreateConicalGradientPicture (Picture pid,
668 xPointFixed *center,
669 xFixed angle,
670 int nStops,
671 xFixed *stops,
672 xRenderColor *colors,
673 int *error);
674
675#ifdef PANORAMIX
676void PanoramiXRenderInit (void);
677void PanoramiXRenderReset (void);
678#endif
679
680/*
681 * matrix.c
682 */
683
684void
685PictTransform_from_xRenderTransform (PictTransformPtr pict,
686 xRenderTransform *render);
687
688void
689xRenderTransform_from_PictTransform (xRenderTransform *render,
690 PictTransformPtr pict);
691
692Bool
693PictureTransformPoint (PictTransformPtr transform,
694 PictVectorPtr vector);
695
696Bool
697PictureTransformPoint3d (PictTransformPtr transform,
698 PictVectorPtr vector);
699
700#endif /* _PICTURESTR_H_ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette