mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	
		
			
	
	
		
			529 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			529 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | /*
 | ||
|  |  * | ||
|  |  * Copyright © 2000 SuSE, Inc. | ||
|  |  * | ||
|  |  * Permission to use, copy, modify, distribute, and sell this software and its | ||
|  |  * documentation for any purpose is hereby granted without fee, provided that | ||
|  |  * the above copyright notice appear in all copies and that both that | ||
|  |  * copyright notice and this permission notice appear in supporting | ||
|  |  * documentation, and that the name of SuSE not be used in advertising or | ||
|  |  * publicity pertaining to distribution of the software without specific, | ||
|  |  * written prior permission.  SuSE makes no representations about the | ||
|  |  * suitability of this software for any purpose.  It is provided "as is" | ||
|  |  * without express or implied warranty. | ||
|  |  * | ||
|  |  * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL | ||
|  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE | ||
|  |  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
|  |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||
|  |  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||
|  |  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
|  |  * | ||
|  |  * Author:  Keith Packard, SuSE, Inc. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef _XRENDER_H_
 | ||
|  | #define _XRENDER_H_
 | ||
|  | 
 | ||
|  | #include <X11/Xlib.h>
 | ||
|  | #include <X11/Xfuncproto.h>
 | ||
|  | #include <X11/Xosdefs.h>
 | ||
|  | #include <X11/Xutil.h>
 | ||
|  | 
 | ||
|  | #include <X11/extensions/render.h>
 | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     short   red; | ||
|  |     short   redMask; | ||
|  |     short   green; | ||
|  |     short   greenMask; | ||
|  |     short   blue; | ||
|  |     short   blueMask; | ||
|  |     short   alpha; | ||
|  |     short   alphaMask; | ||
|  | } XRenderDirectFormat; | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     PictFormat		id; | ||
|  |     int			type; | ||
|  |     int			depth; | ||
|  |     XRenderDirectFormat	direct; | ||
|  |     Colormap		colormap; | ||
|  | } XRenderPictFormat; | ||
|  | 
 | ||
|  | #define PictFormatID	    (1 << 0)
 | ||
|  | #define PictFormatType	    (1 << 1)
 | ||
|  | #define PictFormatDepth	    (1 << 2)
 | ||
|  | #define PictFormatRed	    (1 << 3)
 | ||
|  | #define PictFormatRedMask   (1 << 4)
 | ||
|  | #define PictFormatGreen	    (1 << 5)
 | ||
|  | #define PictFormatGreenMask (1 << 6)
 | ||
|  | #define PictFormatBlue	    (1 << 7)
 | ||
|  | #define PictFormatBlueMask  (1 << 8)
 | ||
|  | #define PictFormatAlpha	    (1 << 9)
 | ||
|  | #define PictFormatAlphaMask (1 << 10)
 | ||
|  | #define PictFormatColormap  (1 << 11)
 | ||
|  | 
 | ||
|  | typedef struct _XRenderPictureAttributes { | ||
|  |     int 		repeat; | ||
|  |     Picture		alpha_map; | ||
|  |     int			alpha_x_origin; | ||
|  |     int			alpha_y_origin; | ||
|  |     int			clip_x_origin; | ||
|  |     int			clip_y_origin; | ||
|  |     Pixmap		clip_mask; | ||
|  |     Bool		graphics_exposures; | ||
|  |     int			subwindow_mode; | ||
|  |     int			poly_edge; | ||
|  |     int			poly_mode; | ||
|  |     Atom		dither; | ||
|  |     Bool		component_alpha; | ||
|  | } XRenderPictureAttributes; | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     unsigned short   red; | ||
|  |     unsigned short   green; | ||
|  |     unsigned short   blue; | ||
|  |     unsigned short   alpha; | ||
|  | } XRenderColor; | ||
|  | 
 | ||
|  | typedef struct _XGlyphInfo { | ||
|  |     unsigned short  width; | ||
|  |     unsigned short  height; | ||
|  |     short	    x; | ||
|  |     short	    y; | ||
|  |     short	    xOff; | ||
|  |     short	    yOff; | ||
|  | } XGlyphInfo; | ||
|  | 
 | ||
|  | typedef struct _XGlyphElt8 { | ||
|  |     GlyphSet		    glyphset; | ||
|  |     _Xconst char	    *chars; | ||
|  |     int			    nchars; | ||
|  |     int			    xOff; | ||
|  |     int			    yOff; | ||
|  | } XGlyphElt8; | ||
|  | 
 | ||
|  | typedef struct _XGlyphElt16 { | ||
|  |     GlyphSet		    glyphset; | ||
|  |     _Xconst unsigned short  *chars; | ||
|  |     int			    nchars; | ||
|  |     int			    xOff; | ||
|  |     int			    yOff; | ||
|  | } XGlyphElt16; | ||
|  | 
 | ||
|  | typedef struct _XGlyphElt32 { | ||
|  |     GlyphSet		    glyphset; | ||
|  |     _Xconst unsigned int    *chars; | ||
|  |     int			    nchars; | ||
|  |     int			    xOff; | ||
|  |     int			    yOff; | ||
|  | } XGlyphElt32; | ||
|  | 
 | ||
|  | typedef double	XDouble; | ||
|  | 
 | ||
|  | typedef struct _XPointDouble { | ||
|  |     XDouble  x, y; | ||
|  | } XPointDouble; | ||
|  | 
 | ||
|  | #define XDoubleToFixed(f)    ((XFixed) ((f) * 65536))
 | ||
|  | #define XFixedToDouble(f)    (((XDouble) (f)) / 65536)
 | ||
|  | 
 | ||
|  | typedef int XFixed; | ||
|  | 
 | ||
|  | typedef struct _XPointFixed { | ||
|  |     XFixed  x, y; | ||
|  | } XPointFixed; | ||
|  | 
 | ||
|  | typedef struct _XLineFixed { | ||
|  |     XPointFixed	p1, p2; | ||
|  | } XLineFixed; | ||
|  | 
 | ||
|  | typedef struct _XTriangle { | ||
|  |     XPointFixed	p1, p2, p3; | ||
|  | } XTriangle; | ||
|  | 
 | ||
|  | typedef struct _XCircle { | ||
|  |     XFixed x; | ||
|  |     XFixed y; | ||
|  |     XFixed radius; | ||
|  | } XCircle; | ||
|  | 
 | ||
|  | typedef struct _XTrapezoid { | ||
|  |     XFixed  top, bottom; | ||
|  |     XLineFixed	left, right; | ||
|  | } XTrapezoid; | ||
|  | 
 | ||
|  | typedef struct _XTransform { | ||
|  |     XFixed  matrix[3][3]; | ||
|  | } XTransform; | ||
|  | 
 | ||
|  | typedef struct _XFilters { | ||
|  |     int	    nfilter; | ||
|  |     char    **filter; | ||
|  |     int	    nalias; | ||
|  |     short   *alias; | ||
|  | } XFilters; | ||
|  | 
 | ||
|  | typedef struct _XIndexValue { | ||
|  |     unsigned long    pixel; | ||
|  |     unsigned short   red, green, blue, alpha; | ||
|  | } XIndexValue; | ||
|  | 
 | ||
|  | typedef struct _XAnimCursor { | ||
|  |     Cursor	    cursor; | ||
|  |     unsigned long   delay; | ||
|  | } XAnimCursor; | ||
|  | 
 | ||
|  | typedef struct _XSpanFix { | ||
|  |     XFixed	    left, right, y; | ||
|  | } XSpanFix; | ||
|  | 
 | ||
|  | typedef struct _XTrap { | ||
|  |     XSpanFix	    top, bottom; | ||
|  | } XTrap; | ||
|  | 
 | ||
|  | typedef struct _XLinearGradient { | ||
|  |     XPointFixed p1; | ||
|  |     XPointFixed p2; | ||
|  | } XLinearGradient; | ||
|  | 
 | ||
|  | typedef struct _XRadialGradient { | ||
|  |     XCircle inner; | ||
|  |     XCircle outer; | ||
|  | } XRadialGradient; | ||
|  | 
 | ||
|  | typedef struct _XConicalGradient { | ||
|  |     XPointFixed center; | ||
|  |     XFixed angle; /* in degrees */ | ||
|  | } XConicalGradient; | ||
|  | 
 | ||
|  | _XFUNCPROTOBEGIN | ||
|  | 
 | ||
|  | Bool XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep); | ||
|  | 
 | ||
|  | Status XRenderQueryVersion (Display *dpy, | ||
|  | 			    int     *major_versionp, | ||
|  | 			    int     *minor_versionp); | ||
|  | 
 | ||
|  | Status XRenderQueryFormats (Display *dpy); | ||
|  | 
 | ||
|  | int XRenderQuerySubpixelOrder (Display *dpy, int screen); | ||
|  | 
 | ||
|  | Bool XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel); | ||
|  | 
 | ||
|  | XRenderPictFormat * | ||
|  | XRenderFindVisualFormat (Display *dpy, _Xconst Visual *visual); | ||
|  | 
 | ||
|  | XRenderPictFormat * | ||
|  | XRenderFindFormat (Display			*dpy, | ||
|  | 		   unsigned long		mask, | ||
|  | 		   _Xconst XRenderPictFormat	*templ, | ||
|  | 		   int				count); | ||
|  | 
 | ||
|  | #define PictStandardARGB32  0
 | ||
|  | #define PictStandardRGB24   1
 | ||
|  | #define PictStandardA8	    2
 | ||
|  | #define PictStandardA4	    3
 | ||
|  | #define PictStandardA1	    4
 | ||
|  | #define PictStandardNUM	    5
 | ||
|  | 
 | ||
|  | XRenderPictFormat * | ||
|  | XRenderFindStandardFormat (Display		*dpy, | ||
|  | 			   int			format); | ||
|  | 
 | ||
|  | XIndexValue * | ||
|  | XRenderQueryPictIndexValues(Display			*dpy, | ||
|  | 			    _Xconst XRenderPictFormat	*format, | ||
|  | 			    int				*num); | ||
|  | 
 | ||
|  | Picture | ||
|  | XRenderCreatePicture (Display				*dpy, | ||
|  | 		      Drawable				drawable, | ||
|  | 		      _Xconst XRenderPictFormat		*format, | ||
|  | 		      unsigned long			valuemask, | ||
|  | 		      _Xconst XRenderPictureAttributes	*attributes); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderChangePicture (Display				*dpy, | ||
|  | 		      Picture				picture, | ||
|  | 		      unsigned long			valuemask, | ||
|  | 		      _Xconst XRenderPictureAttributes  *attributes); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderSetPictureClipRectangles (Display	    *dpy, | ||
|  | 				 Picture	    picture, | ||
|  | 				 int		    xOrigin, | ||
|  | 				 int		    yOrigin, | ||
|  | 				 _Xconst XRectangle *rects, | ||
|  | 				 int		    n); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderSetPictureClipRegion (Display	    *dpy, | ||
|  | 			     Picture	    picture, | ||
|  | 			     Region	    r); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderSetPictureTransform (Display	    *dpy, | ||
|  | 			    Picture	    picture, | ||
|  | 			    XTransform	    *transform); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderFreePicture (Display                   *dpy, | ||
|  | 		    Picture                   picture); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderComposite (Display   *dpy, | ||
|  | 		  int	    op, | ||
|  | 		  Picture   src, | ||
|  | 		  Picture   mask, | ||
|  | 		  Picture   dst, | ||
|  | 		  int	    src_x, | ||
|  | 		  int	    src_y, | ||
|  | 		  int	    mask_x, | ||
|  | 		  int	    mask_y, | ||
|  | 		  int	    dst_x, | ||
|  | 		  int	    dst_y, | ||
|  | 		  unsigned int	width, | ||
|  | 		  unsigned int	height); | ||
|  | 
 | ||
|  | GlyphSet | ||
|  | XRenderCreateGlyphSet (Display *dpy, _Xconst XRenderPictFormat *format); | ||
|  | 
 | ||
|  | GlyphSet | ||
|  | XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderAddGlyphs (Display		*dpy, | ||
|  | 		  GlyphSet		glyphset, | ||
|  | 		  _Xconst Glyph		*gids, | ||
|  | 		  _Xconst XGlyphInfo	*glyphs, | ||
|  | 		  int			nglyphs, | ||
|  | 		  _Xconst char		*images, | ||
|  | 		  int			nbyte_images); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderFreeGlyphs (Display	    *dpy, | ||
|  | 		   GlyphSet	    glyphset, | ||
|  | 		   _Xconst Glyph    *gids, | ||
|  | 		   int		    nglyphs); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeString8 (Display		    *dpy, | ||
|  | 			 int			    op, | ||
|  | 			 Picture		    src, | ||
|  | 			 Picture		    dst, | ||
|  | 			 _Xconst XRenderPictFormat  *maskFormat, | ||
|  | 			 GlyphSet		    glyphset, | ||
|  | 			 int			    xSrc, | ||
|  | 			 int			    ySrc, | ||
|  | 			 int			    xDst, | ||
|  | 			 int			    yDst, | ||
|  | 			 _Xconst char		    *string, | ||
|  | 			 int			    nchar); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeString16 (Display		    *dpy, | ||
|  | 			  int			    op, | ||
|  | 			  Picture		    src, | ||
|  | 			  Picture		    dst, | ||
|  | 			  _Xconst XRenderPictFormat *maskFormat, | ||
|  | 			  GlyphSet		    glyphset, | ||
|  | 			  int			    xSrc, | ||
|  | 			  int			    ySrc, | ||
|  | 			  int			    xDst, | ||
|  | 			  int			    yDst, | ||
|  | 			  _Xconst unsigned short    *string, | ||
|  | 			  int			    nchar); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeString32 (Display		    *dpy, | ||
|  | 			  int			    op, | ||
|  | 			  Picture		    src, | ||
|  | 			  Picture		    dst, | ||
|  | 			  _Xconst XRenderPictFormat *maskFormat, | ||
|  | 			  GlyphSet		    glyphset, | ||
|  | 			  int			    xSrc, | ||
|  | 			  int			    ySrc, | ||
|  | 			  int			    xDst, | ||
|  | 			  int			    yDst, | ||
|  | 			  _Xconst unsigned int	    *string, | ||
|  | 			  int			    nchar); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeText8 (Display			    *dpy, | ||
|  | 		       int			    op, | ||
|  | 		       Picture			    src, | ||
|  | 		       Picture			    dst, | ||
|  | 		       _Xconst XRenderPictFormat    *maskFormat, | ||
|  | 		       int			    xSrc, | ||
|  | 		       int			    ySrc, | ||
|  | 		       int			    xDst, | ||
|  | 		       int			    yDst, | ||
|  | 		       _Xconst XGlyphElt8	    *elts, | ||
|  | 		       int			    nelt); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeText16 (Display			    *dpy, | ||
|  | 			int			    op, | ||
|  | 			Picture			    src, | ||
|  | 			Picture			    dst, | ||
|  | 			_Xconst XRenderPictFormat   *maskFormat, | ||
|  | 			int			    xSrc, | ||
|  | 			int			    ySrc, | ||
|  | 			int			    xDst, | ||
|  | 			int			    yDst, | ||
|  | 			_Xconst XGlyphElt16	    *elts, | ||
|  | 			int			    nelt); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeText32 (Display			    *dpy, | ||
|  | 			int			    op, | ||
|  | 			Picture			    src, | ||
|  | 			Picture			    dst, | ||
|  | 			_Xconst XRenderPictFormat   *maskFormat, | ||
|  | 			int			    xSrc, | ||
|  | 			int			    ySrc, | ||
|  | 			int			    xDst, | ||
|  | 			int			    yDst, | ||
|  | 			_Xconst XGlyphElt32	    *elts, | ||
|  | 			int			    nelt); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderFillRectangle (Display		    *dpy, | ||
|  | 		      int		    op, | ||
|  | 		      Picture		    dst, | ||
|  | 		      _Xconst XRenderColor  *color, | ||
|  | 		      int		    x, | ||
|  | 		      int		    y, | ||
|  | 		      unsigned int	    width, | ||
|  | 		      unsigned int	    height); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderFillRectangles (Display		    *dpy, | ||
|  | 		       int		    op, | ||
|  | 		       Picture		    dst, | ||
|  | 		       _Xconst XRenderColor *color, | ||
|  | 		       _Xconst XRectangle   *rectangles, | ||
|  | 		       int		    n_rects); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeTrapezoids (Display		*dpy, | ||
|  | 			    int			op, | ||
|  | 			    Picture		src, | ||
|  | 			    Picture		dst, | ||
|  | 			    _Xconst XRenderPictFormat	*maskFormat, | ||
|  | 			    int			xSrc, | ||
|  | 			    int			ySrc, | ||
|  | 			    _Xconst XTrapezoid	*traps, | ||
|  | 			    int			ntrap); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeTriangles (Display		*dpy, | ||
|  | 			   int			op, | ||
|  | 			   Picture		src, | ||
|  | 			   Picture		dst, | ||
|  | 			    _Xconst XRenderPictFormat	*maskFormat, | ||
|  | 			   int			xSrc, | ||
|  | 			   int			ySrc, | ||
|  | 			   _Xconst XTriangle	*triangles, | ||
|  | 			   int			ntriangle); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeTriStrip (Display		*dpy, | ||
|  | 			  int			op, | ||
|  | 			  Picture		src, | ||
|  | 			  Picture		dst, | ||
|  | 			    _Xconst XRenderPictFormat	*maskFormat, | ||
|  | 			  int			xSrc, | ||
|  | 			  int			ySrc, | ||
|  | 			  _Xconst XPointFixed	*points, | ||
|  | 			  int			npoint); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeTriFan (Display			*dpy, | ||
|  | 			int			op, | ||
|  | 			Picture			src, | ||
|  | 			Picture			dst, | ||
|  | 			_Xconst XRenderPictFormat	*maskFormat, | ||
|  | 			int			xSrc, | ||
|  | 			int			ySrc, | ||
|  | 			_Xconst XPointFixed	*points, | ||
|  | 			int			npoint); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderCompositeDoublePoly (Display		    *dpy, | ||
|  | 			    int			    op, | ||
|  | 			    Picture		    src, | ||
|  | 			    Picture		    dst, | ||
|  | 			    _Xconst XRenderPictFormat	*maskFormat, | ||
|  | 			    int			    xSrc, | ||
|  | 			    int			    ySrc, | ||
|  | 			    int			    xDst, | ||
|  | 			    int			    yDst, | ||
|  | 			    _Xconst XPointDouble    *fpoints, | ||
|  | 			    int			    npoints, | ||
|  | 			    int			    winding); | ||
|  | Status | ||
|  | XRenderParseColor(Display	*dpy, | ||
|  | 		  char		*spec, | ||
|  | 		  XRenderColor	*def); | ||
|  | 
 | ||
|  | Cursor | ||
|  | XRenderCreateCursor (Display	    *dpy, | ||
|  | 		     Picture	    source, | ||
|  | 		     unsigned int   x, | ||
|  | 		     unsigned int   y); | ||
|  | 
 | ||
|  | XFilters * | ||
|  | XRenderQueryFilters (Display *dpy, Drawable drawable); | ||
|  | 
 | ||
|  | void | ||
|  | XRenderSetPictureFilter (Display    *dpy, | ||
|  | 			 Picture    picture, | ||
|  | 			 const char *filter, | ||
|  | 			 XFixed	    *params, | ||
|  | 			 int	    nparams); | ||
|  | 
 | ||
|  | Cursor | ||
|  | XRenderCreateAnimCursor (Display	*dpy, | ||
|  | 			 int		ncursor, | ||
|  | 			 XAnimCursor	*cursors); | ||
|  | 
 | ||
|  | 
 | ||
|  | void | ||
|  | XRenderAddTraps (Display	    *dpy, | ||
|  | 		 Picture	    picture, | ||
|  | 		 int		    xOff, | ||
|  | 		 int		    yOff, | ||
|  | 		 _Xconst XTrap	    *traps, | ||
|  | 		 int		    ntrap); | ||
|  | 
 | ||
|  | Picture XRenderCreateSolidFill (Display *dpy, | ||
|  |                                 const XRenderColor *color); | ||
|  | 
 | ||
|  | Picture XRenderCreateLinearGradient (Display *dpy, | ||
|  |                                      const XLinearGradient *gradient, | ||
|  |                                      const XFixed *stops, | ||
|  |                                      const XRenderColor *colors, | ||
|  |                                      int nstops); | ||
|  | 
 | ||
|  | Picture XRenderCreateRadialGradient (Display *dpy, | ||
|  |                                      const XRadialGradient *gradient, | ||
|  |                                      const XFixed *stops, | ||
|  |                                      const XRenderColor *colors, | ||
|  |                                      int nstops); | ||
|  | 
 | ||
|  | Picture XRenderCreateConicalGradient (Display *dpy, | ||
|  |                                       const XConicalGradient *gradient, | ||
|  |                                       const XFixed *stops, | ||
|  |                                       const XRenderColor *colors, | ||
|  |                                       int nstops); | ||
|  | 
 | ||
|  | _XFUNCPROTOEND | ||
|  | 
 | ||
|  | #endif /* _XRENDER_H_ */
 |