xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

picturestr.h (18600B)


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