VirtualBox

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

Last change on this file since 62489 was 58634, checked in by vboxsync, 9 years ago

Additions/x11: added header files for building X.Org video driver against X.Org Server 1.18.

  • Property svn:eol-style set to native
File size: 18.1 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
68typedef struct _PictSolidFill {
69 unsigned int type;
70 CARD32 color;
71} PictSolidFill, *PictSolidFillPtr;
72
73typedef struct _PictGradientStop {
74 xFixed x;
75 xRenderColor color;
76} PictGradientStop, *PictGradientStopPtr;
77
78typedef struct _PictGradient {
79 unsigned int type;
80 int nstops;
81 PictGradientStopPtr stops;
82} PictGradient, *PictGradientPtr;
83
84typedef struct _PictLinearGradient {
85 unsigned int type;
86 int nstops;
87 PictGradientStopPtr stops;
88 xPointFixed p1;
89 xPointFixed p2;
90} PictLinearGradient, *PictLinearGradientPtr;
91
92typedef struct _PictCircle {
93 xFixed x;
94 xFixed y;
95 xFixed radius;
96} PictCircle, *PictCirclePtr;
97
98typedef struct _PictRadialGradient {
99 unsigned int type;
100 int nstops;
101 PictGradientStopPtr stops;
102 PictCircle c1;
103 PictCircle c2;
104} PictRadialGradient, *PictRadialGradientPtr;
105
106typedef struct _PictConicalGradient {
107 unsigned int type;
108 int nstops;
109 PictGradientStopPtr stops;
110 xPointFixed center;
111 xFixed angle;
112} PictConicalGradient, *PictConicalGradientPtr;
113
114typedef union _SourcePict {
115 unsigned int type;
116 PictSolidFill solidFill;
117 PictGradient gradient;
118 PictLinearGradient linear;
119 PictRadialGradient radial;
120 PictConicalGradient conical;
121} SourcePict, *SourcePictPtr;
122
123typedef struct _Picture {
124 DrawablePtr pDrawable;
125 PictFormatPtr pFormat;
126 PictFormatShort format; /* PICT_FORMAT */
127 int refcnt;
128 CARD32 id;
129 unsigned int repeat:1;
130 unsigned int graphicsExposures:1;
131 unsigned int subWindowMode:1;
132 unsigned int polyEdge:1;
133 unsigned int polyMode:1;
134 unsigned int freeCompClip:1;
135 unsigned int componentAlpha:1;
136 unsigned int repeatType:2;
137 unsigned int filter:3;
138 unsigned int stateChanges:CPLastBit;
139 unsigned int unused:18 - CPLastBit;
140
141 PicturePtr pNext; /* chain on same drawable */
142
143 PicturePtr alphaMap;
144 DDXPointRec alphaOrigin;
145
146 DDXPointRec clipOrigin;
147 RegionPtr clientClip;
148
149 unsigned long serialNumber;
150
151 RegionPtr pCompositeClip;
152
153 PrivateRec *devPrivates;
154
155 PictTransform *transform;
156
157 SourcePictPtr pSourcePict;
158 xFixed *filter_params;
159 int filter_nparams;
160} PictureRec;
161
162typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
163 xFixed * params, int nparams,
164 int *width, int *height);
165typedef struct {
166 char *name;
167 int id;
168 PictFilterValidateParamsProcPtr ValidateParams;
169 int width, height;
170} PictFilterRec, *PictFilterPtr;
171
172#define PictFilterNearest 0
173#define PictFilterBilinear 1
174
175#define PictFilterFast 2
176#define PictFilterGood 3
177#define PictFilterBest 4
178
179#define PictFilterConvolution 5
180/* if you add an 8th filter, expand the filter bitfield above */
181
182typedef struct {
183 char *alias;
184 int alias_id;
185 int filter_id;
186} PictFilterAliasRec, *PictFilterAliasPtr;
187
188typedef int (*CreatePictureProcPtr) (PicturePtr pPicture);
189typedef void (*DestroyPictureProcPtr) (PicturePtr pPicture);
190typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture,
191 int clipType, void *value, int n);
192typedef void (*DestroyPictureClipProcPtr) (PicturePtr pPicture);
193
194typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture,
195 PictTransform * transform);
196
197typedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture,
198 int filter,
199 xFixed * params, int nparams);
200
201typedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture);
202
203typedef void (*ChangePictureProcPtr) (PicturePtr pPicture, Mask mask);
204typedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, Mask mask);
205typedef void (*CompositeProcPtr) (CARD8 op,
206 PicturePtr pSrc,
207 PicturePtr pMask,
208 PicturePtr pDst,
209 INT16 xSrc,
210 INT16 ySrc,
211 INT16 xMask,
212 INT16 yMask,
213 INT16 xDst,
214 INT16 yDst, CARD16 width, CARD16 height);
215
216typedef void (*GlyphsProcPtr) (CARD8 op,
217 PicturePtr pSrc,
218 PicturePtr pDst,
219 PictFormatPtr maskFormat,
220 INT16 xSrc,
221 INT16 ySrc,
222 int nlists,
223 GlyphListPtr lists, GlyphPtr * glyphs);
224
225typedef void (*CompositeRectsProcPtr) (CARD8 op,
226 PicturePtr pDst,
227 xRenderColor * color,
228 int nRect, xRectangle *rects);
229
230typedef void (*RasterizeTrapezoidProcPtr) (PicturePtr pMask,
231 xTrapezoid * trap,
232 int x_off, int y_off);
233
234typedef void (*TrapezoidsProcPtr) (CARD8 op,
235 PicturePtr pSrc,
236 PicturePtr pDst,
237 PictFormatPtr maskFormat,
238 INT16 xSrc,
239 INT16 ySrc, int ntrap, xTrapezoid * traps);
240
241typedef void (*TrianglesProcPtr) (CARD8 op,
242 PicturePtr pSrc,
243 PicturePtr pDst,
244 PictFormatPtr maskFormat,
245 INT16 xSrc,
246 INT16 ySrc, int ntri, xTriangle * tris);
247
248typedef void (*TriStripProcPtr) (CARD8 op,
249 PicturePtr pSrc,
250 PicturePtr pDst,
251 PictFormatPtr maskFormat,
252 INT16 xSrc,
253 INT16 ySrc, int npoint, xPointFixed * points);
254
255typedef void (*TriFanProcPtr) (CARD8 op,
256 PicturePtr pSrc,
257 PicturePtr pDst,
258 PictFormatPtr maskFormat,
259 INT16 xSrc,
260 INT16 ySrc, int npoint, xPointFixed * points);
261
262typedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
263
264typedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
265
266typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen,
267 PictFormatPtr pFormat,
268 int ndef, xColorItem * pdef);
269
270typedef void (*AddTrapsProcPtr) (PicturePtr pPicture,
271 INT16 xOff,
272 INT16 yOff, int ntrap, xTrap * traps);
273
274typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture,
275 INT16 xOff,
276 INT16 yOff, int ntri, xTriangle * tris);
277
278typedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
279
280typedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
281
282typedef struct _PictureScreen {
283 PictFormatPtr formats;
284 PictFormatPtr fallback;
285 int nformats;
286
287 CreatePictureProcPtr CreatePicture;
288 DestroyPictureProcPtr DestroyPicture;
289 ChangePictureClipProcPtr ChangePictureClip;
290 DestroyPictureClipProcPtr DestroyPictureClip;
291
292 ChangePictureProcPtr ChangePicture;
293 ValidatePictureProcPtr ValidatePicture;
294
295 CompositeProcPtr Composite;
296 GlyphsProcPtr Glyphs; /* unused */
297 CompositeRectsProcPtr CompositeRects;
298
299 DestroyWindowProcPtr DestroyWindow;
300 CloseScreenProcPtr CloseScreen;
301
302 StoreColorsProcPtr StoreColors;
303
304 InitIndexedProcPtr InitIndexed;
305 CloseIndexedProcPtr CloseIndexed;
306 UpdateIndexedProcPtr UpdateIndexed;
307
308 int subpixel;
309
310 PictFilterPtr filters;
311 int nfilters;
312 PictFilterAliasPtr filterAliases;
313 int nfilterAliases;
314
315 /**
316 * Called immediately after a picture's transform is changed through the
317 * SetPictureTransform request. Not called for source-only pictures.
318 */
319 ChangePictureTransformProcPtr ChangePictureTransform;
320
321 /**
322 * Called immediately after a picture's transform is changed through the
323 * SetPictureFilter request. Not called for source-only pictures.
324 */
325 ChangePictureFilterProcPtr ChangePictureFilter;
326
327 DestroyPictureFilterProcPtr DestroyPictureFilter;
328
329 TrapezoidsProcPtr Trapezoids;
330 TrianglesProcPtr Triangles;
331
332 RasterizeTrapezoidProcPtr RasterizeTrapezoid;
333
334 AddTrianglesProcPtr AddTriangles;
335
336 AddTrapsProcPtr AddTraps;
337
338 RealizeGlyphProcPtr RealizeGlyph;
339 UnrealizeGlyphProcPtr UnrealizeGlyph;
340
341#define PICTURE_SCREEN_VERSION 2
342 TriStripProcPtr TriStrip;
343 TriFanProcPtr TriFan;
344} PictureScreenRec, *PictureScreenPtr;
345
346extern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
347#define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec)
348
349extern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
350#define PictureWindowPrivateKey (&PictureWindowPrivateKeyRec)
351
352extern RESTYPE PictureType;
353extern RESTYPE PictFormatType;
354extern RESTYPE GlyphSetType;
355
356#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
357#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL)
358#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p)
359#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey))
360#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p)
361
362#define VERIFY_PICTURE(pPicture, pid, client, mode) {\
363 int tmprc = dixLookupResourceByType((void *)&(pPicture), pid,\
364 PictureType, client, mode);\
365 if (tmprc != Success)\
366 return tmprc;\
367}
368
369#define VERIFY_ALPHA(pPicture, pid, client, mode) {\
370 if (pid == None) \
371 pPicture = 0; \
372 else { \
373 VERIFY_PICTURE(pPicture, pid, client, mode); \
374 } \
375} \
376
377extern _X_EXPORT PictFormatPtr
378 PictureWindowFormat(WindowPtr pWindow);
379
380extern _X_EXPORT Bool
381 PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
382
383extern _X_EXPORT int
384 PictureGetSubpixelOrder(ScreenPtr pScreen);
385
386extern _X_EXPORT PictFormatPtr
387PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
388
389extern _X_EXPORT PictFormatPtr
390PictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format);
391
392extern _X_EXPORT Bool
393 PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
394
395extern _X_EXPORT int
396 PictureGetFilterId(const char *filter, int len, Bool makeit);
397
398extern _X_EXPORT char *PictureGetFilterName(int id);
399
400extern _X_EXPORT int
401PictureAddFilter(ScreenPtr pScreen,
402 const char *filter,
403 PictFilterValidateParamsProcPtr ValidateParams,
404 int width, int height);
405
406extern _X_EXPORT Bool
407PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias);
408
409extern _X_EXPORT Bool
410 PictureSetDefaultFilters(ScreenPtr pScreen);
411
412extern _X_EXPORT void
413 PictureResetFilters(ScreenPtr pScreen);
414
415extern _X_EXPORT PictFilterPtr
416PictureFindFilter(ScreenPtr pScreen, char *name, int len);
417
418extern _X_EXPORT int
419SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter,
420 xFixed * params, int nparams);
421
422extern _X_EXPORT int
423SetPictureFilter(PicturePtr pPicture, char *name, int len,
424 xFixed * params, int nparams);
425
426extern _X_EXPORT Bool
427 PictureFinishInit(void);
428
429extern _X_EXPORT PicturePtr
430CreatePicture(Picture pid,
431 DrawablePtr pDrawable,
432 PictFormatPtr pFormat,
433 Mask mask, XID *list, ClientPtr client, int *error);
434
435extern _X_EXPORT int
436ChangePicture(PicturePtr pPicture,
437 Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
438
439extern _X_EXPORT int
440
441SetPictureClipRects(PicturePtr pPicture,
442 int xOrigin, int yOrigin, int nRect, xRectangle *rects);
443
444extern _X_EXPORT int
445SetPictureClipRegion(PicturePtr pPicture,
446 int xOrigin, int yOrigin, RegionPtr pRegion);
447
448extern _X_EXPORT int
449 SetPictureTransform(PicturePtr pPicture, PictTransform * transform);
450
451extern _X_EXPORT void
452 ValidatePicture(PicturePtr pPicture);
453
454extern _X_EXPORT int
455 FreePicture(void *pPicture, XID pid);
456
457extern _X_EXPORT void
458CompositePicture(CARD8 op,
459 PicturePtr pSrc,
460 PicturePtr pMask,
461 PicturePtr pDst,
462 INT16 xSrc,
463 INT16 ySrc,
464 INT16 xMask,
465 INT16 yMask,
466 INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
467
468extern _X_EXPORT void
469CompositeGlyphs(CARD8 op,
470 PicturePtr pSrc,
471 PicturePtr pDst,
472 PictFormatPtr maskFormat,
473 INT16 xSrc,
474 INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
475
476extern _X_EXPORT void
477CompositeRects(CARD8 op,
478 PicturePtr pDst,
479 xRenderColor * color, int nRect, xRectangle *rects);
480
481extern _X_EXPORT void
482CompositeTrapezoids(CARD8 op,
483 PicturePtr pSrc,
484 PicturePtr pDst,
485 PictFormatPtr maskFormat,
486 INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
487
488extern _X_EXPORT void
489CompositeTriangles(CARD8 op,
490 PicturePtr pSrc,
491 PicturePtr pDst,
492 PictFormatPtr maskFormat,
493 INT16 xSrc,
494 INT16 ySrc, int ntriangles, xTriangle * triangles);
495
496extern _X_EXPORT void
497CompositeTriStrip(CARD8 op,
498 PicturePtr pSrc,
499 PicturePtr pDst,
500 PictFormatPtr maskFormat,
501 INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
502
503extern _X_EXPORT void
504CompositeTriFan(CARD8 op,
505 PicturePtr pSrc,
506 PicturePtr pDst,
507 PictFormatPtr maskFormat,
508 INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
509
510Bool
511 AnimCurInit(ScreenPtr pScreen);
512
513int
514AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
515 CursorPtr *ppCursor, ClientPtr client, XID cid);
516
517extern _X_EXPORT void
518AddTraps(PicturePtr pPicture,
519 INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
520
521extern _X_EXPORT PicturePtr
522CreateSolidPicture(Picture pid, xRenderColor * color, int *error);
523
524extern _X_EXPORT PicturePtr
525CreateLinearGradientPicture(Picture pid,
526 xPointFixed * p1,
527 xPointFixed * p2,
528 int nStops,
529 xFixed * stops, xRenderColor * colors, int *error);
530
531extern _X_EXPORT PicturePtr
532CreateRadialGradientPicture(Picture pid,
533 xPointFixed * inner,
534 xPointFixed * outer,
535 xFixed innerRadius,
536 xFixed outerRadius,
537 int nStops,
538 xFixed * stops, xRenderColor * colors, int *error);
539
540extern _X_EXPORT PicturePtr
541CreateConicalGradientPicture(Picture pid,
542 xPointFixed * center,
543 xFixed angle,
544 int nStops,
545 xFixed * stops, xRenderColor * colors, int *error);
546
547#ifdef PANORAMIX
548extern void PanoramiXRenderInit(void);
549extern void PanoramiXRenderReset(void);
550#endif
551
552/*
553 * matrix.c
554 */
555
556extern _X_EXPORT void
557PictTransform_from_xRenderTransform(PictTransformPtr pict,
558 xRenderTransform * render);
559
560extern _X_EXPORT void
561xRenderTransform_from_PictTransform(xRenderTransform * render,
562 PictTransformPtr pict);
563
564extern _X_EXPORT Bool
565 PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector);
566
567extern _X_EXPORT Bool
568 PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector);
569
570#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