From 3887b5a79dac90a90b395813e5c6c89273ebc8f0 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 6 Apr 2010 14:17:55 -0700 Subject: Move renderproto files to their sub-directory Signed-off-by: Keith Packard --- .gitignore | 78 --- COPYING | 20 - Makefile.am | 22 - README | 30 - autogen.sh | 12 - configure.ac | 13 - render.h | 210 ------- renderproto.h | 663 ---------------------- renderproto.pc.in | 9 - renderproto.txt | 1207 ----------------------------------------- renderproto/.gitignore | 78 +++ renderproto/COPYING | 20 + renderproto/Makefile.am | 22 + renderproto/README | 30 + renderproto/autogen.sh | 12 + renderproto/configure.ac | 13 + renderproto/render.h | 210 +++++++ renderproto/renderproto.h | 663 ++++++++++++++++++++++ renderproto/renderproto.pc.in | 9 + renderproto/renderproto.txt | 1207 +++++++++++++++++++++++++++++++++++++++++ 20 files changed, 2264 insertions(+), 2264 deletions(-) delete mode 100644 .gitignore delete mode 100644 COPYING delete mode 100644 Makefile.am delete mode 100644 README delete mode 100755 autogen.sh delete mode 100644 configure.ac delete mode 100644 render.h delete mode 100644 renderproto.h delete mode 100644 renderproto.pc.in delete mode 100644 renderproto.txt create mode 100644 renderproto/.gitignore create mode 100644 renderproto/COPYING create mode 100644 renderproto/Makefile.am create mode 100644 renderproto/README create mode 100755 renderproto/autogen.sh create mode 100644 renderproto/configure.ac create mode 100644 renderproto/render.h create mode 100644 renderproto/renderproto.h create mode 100644 renderproto/renderproto.pc.in create mode 100644 renderproto/renderproto.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 466a66e..0000000 --- a/.gitignore +++ /dev/null @@ -1,78 +0,0 @@ -# -# X.Org module default exclusion patterns -# The next section if for module specific patterns -# -# Do not edit the following section -# GNU Build System (Autotools) -aclocal.m4 -autom4te.cache/ -autoscan.log -ChangeLog -compile -config.guess -config.h -config.h.in -config.log -config-ml.in -config.py -config.status -config.status.lineno -config.sub -configure -configure.scan -depcomp -.deps/ -INSTALL -install-sh -.libs/ -libtool -libtool.m4 -ltmain.sh -lt~obsolete.m4 -ltoptions.m4 -ltsugar.m4 -ltversion.m4 -Makefile -Makefile.in -mdate-sh -missing -mkinstalldirs -*.pc -py-compile -stamp-h? -symlink-tree -texinfo.tex -ylwrap - -# Do not edit the following section -# Edit Compile Debug Document Distribute -*~ -*.[0-9] -*.[0-9]x -*.bak -*.bin -core -*.dll -*.exe -*-ISO*.bdf -*-JIS*.bdf -*-KOI8*.bdf -*.kld -*.ko -*.ko.cmd -*.lai -*.l[oa] -*.[oa] -*.obj -*.patch -*.so -*.pcf.gz -*.pdb -*.tar.bz2 -*.tar.gz -# -# Add & Override patterns for renderproto -# -# Edit the following section as needed -# For example, !report.pc overrides *.pc. See 'man gitignore' -# diff --git a/COPYING b/COPYING deleted file mode 100644 index f330a5d..0000000 --- a/COPYING +++ /dev/null @@ -1,20 +0,0 @@ -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. diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index a1a75ef..0000000 --- a/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -renderdir = $(includedir)/X11/extensions -render_HEADERS = \ - render.h \ - renderproto.h - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = renderproto.pc - -dist_doc_DATA = renderproto.txt - - -MAINTAINERCLEANFILES = ChangeLog INSTALL - -.PHONY: ChangeLog INSTALL - -INSTALL: - $(INSTALL_CMD) - -ChangeLog: - $(CHANGELOG_CMD) - -dist-hook: ChangeLog INSTALL diff --git a/README b/README deleted file mode 100644 index c5e9de8..0000000 --- a/README +++ /dev/null @@ -1,30 +0,0 @@ - X Rendering Extension - -This extension defines the protcol for a digital image composition as -the foundation of a new rendering model within the X Window System. - -Extension name: RENDER - -All questions regarding this software should be directed at the -Xorg mailing list: - - http://lists.freedesktop.org/mailman/listinfo/xorg - -Please submit bug reports to the Xorg bugzilla: - - https://bugs.freedesktop.org/enter_bug.cgi?product=xorg - -The master development code repository can be found at: - - git://anongit.freedesktop.org/git/xorg/proto/renderproto - - http://cgit.freedesktop.org/xorg/proto/renderproto - -For patch submission instructions, see: - - http://www.x.org/wiki/Development/Documentation/SubmittingPatches - -For more information on the git code manager, see: - - http://wiki.x.org/wiki/GitPage - diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 904cd67..0000000 --- a/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir - -autoreconf -v --install || exit 1 -cd $ORIGDIR || exit $? - -$srcdir/configure --enable-maintainer-mode "$@" diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 8779274..0000000 --- a/configure.ac +++ /dev/null @@ -1,13 +0,0 @@ -AC_PREREQ([2.60]) -AC_INIT([RenderProto], [0.11], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) -AM_INIT_AUTOMAKE([foreign dist-bzip2]) -AM_MAINTAINER_MODE - -# Require xorg-macros: XORG_DEFAULT_OPTIONS -m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.3) -XORG_DEFAULT_OPTIONS - -AC_OUTPUT([Makefile - renderproto.pc]) diff --git a/render.h b/render.h deleted file mode 100644 index 1afb1ca..0000000 --- a/render.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * $XFree86: xc/include/extensions/render.h,v 1.10 2002/11/06 22:47:49 keithp Exp $ - * - * 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 _RENDER_H_ -#define _RENDER_H_ - -typedef XID Glyph; -typedef XID GlyphSet; -typedef XID Picture; -typedef XID PictFormat; - -#define RENDER_NAME "RENDER" -#define RENDER_MAJOR 0 -#define RENDER_MINOR 11 - -#define X_RenderQueryVersion 0 -#define X_RenderQueryPictFormats 1 -#define X_RenderQueryPictIndexValues 2 /* 0.7 */ -#define X_RenderQueryDithers 3 -#define X_RenderCreatePicture 4 -#define X_RenderChangePicture 5 -#define X_RenderSetPictureClipRectangles 6 -#define X_RenderFreePicture 7 -#define X_RenderComposite 8 -#define X_RenderScale 9 -#define X_RenderTrapezoids 10 -#define X_RenderTriangles 11 -#define X_RenderTriStrip 12 -#define X_RenderTriFan 13 -#define X_RenderColorTrapezoids 14 -#define X_RenderColorTriangles 15 -/* #define X_RenderTransform 16 */ -#define X_RenderCreateGlyphSet 17 -#define X_RenderReferenceGlyphSet 18 -#define X_RenderFreeGlyphSet 19 -#define X_RenderAddGlyphs 20 -#define X_RenderAddGlyphsFromPicture 21 -#define X_RenderFreeGlyphs 22 -#define X_RenderCompositeGlyphs8 23 -#define X_RenderCompositeGlyphs16 24 -#define X_RenderCompositeGlyphs32 25 -#define X_RenderFillRectangles 26 -/* 0.5 */ -#define X_RenderCreateCursor 27 -/* 0.6 */ -#define X_RenderSetPictureTransform 28 -#define X_RenderQueryFilters 29 -#define X_RenderSetPictureFilter 30 -/* 0.8 */ -#define X_RenderCreateAnimCursor 31 -/* 0.9 */ -#define X_RenderAddTraps 32 -/* 0.10 */ -#define X_RenderCreateSolidFill 33 -#define X_RenderCreateLinearGradient 34 -#define X_RenderCreateRadialGradient 35 -#define X_RenderCreateConicalGradient 36 -#define RenderNumberRequests (X_RenderCreateConicalGradient+1) - -#define BadPictFormat 0 -#define BadPicture 1 -#define BadPictOp 2 -#define BadGlyphSet 3 -#define BadGlyph 4 -#define RenderNumberErrors (BadGlyph+1) - -#define PictTypeIndexed 0 -#define PictTypeDirect 1 - -#define PictOpMinimum 0 -#define PictOpClear 0 -#define PictOpSrc 1 -#define PictOpDst 2 -#define PictOpOver 3 -#define PictOpOverReverse 4 -#define PictOpIn 5 -#define PictOpInReverse 6 -#define PictOpOut 7 -#define PictOpOutReverse 8 -#define PictOpAtop 9 -#define PictOpAtopReverse 10 -#define PictOpXor 11 -#define PictOpAdd 12 -#define PictOpSaturate 13 -#define PictOpMaximum 13 - -/* - * Operators only available in version 0.2 - */ -#define PictOpDisjointMinimum 0x10 -#define PictOpDisjointClear 0x10 -#define PictOpDisjointSrc 0x11 -#define PictOpDisjointDst 0x12 -#define PictOpDisjointOver 0x13 -#define PictOpDisjointOverReverse 0x14 -#define PictOpDisjointIn 0x15 -#define PictOpDisjointInReverse 0x16 -#define PictOpDisjointOut 0x17 -#define PictOpDisjointOutReverse 0x18 -#define PictOpDisjointAtop 0x19 -#define PictOpDisjointAtopReverse 0x1a -#define PictOpDisjointXor 0x1b -#define PictOpDisjointMaximum 0x1b - -#define PictOpConjointMinimum 0x20 -#define PictOpConjointClear 0x20 -#define PictOpConjointSrc 0x21 -#define PictOpConjointDst 0x22 -#define PictOpConjointOver 0x23 -#define PictOpConjointOverReverse 0x24 -#define PictOpConjointIn 0x25 -#define PictOpConjointInReverse 0x26 -#define PictOpConjointOut 0x27 -#define PictOpConjointOutReverse 0x28 -#define PictOpConjointAtop 0x29 -#define PictOpConjointAtopReverse 0x2a -#define PictOpConjointXor 0x2b -#define PictOpConjointMaximum 0x2b - -/* - * Operators only available in version 0.11 - */ -#define PictOpBlendMinimum 0x30 -#define PictOpMultiply 0x30 -#define PictOpScreen 0x31 -#define PictOpOverlay 0x32 -#define PictOpDarken 0x33 -#define PictOpLighten 0x34 -#define PictOpColorDodge 0x35 -#define PictOpColorBurn 0x36 -#define PictOpHardLight 0x37 -#define PictOpSoftLight 0x38 -#define PictOpDifference 0x39 -#define PictOpExclusion 0x3a -#define PictOpHSLHue 0x3b -#define PictOpHSLSaturation 0x3c -#define PictOpHSLColor 0x3d -#define PictOpHSLLuminosity 0x3e -#define PictOpBlendMaximum 0x3e - -#define PolyEdgeSharp 0 -#define PolyEdgeSmooth 1 - -#define PolyModePrecise 0 -#define PolyModeImprecise 1 - -#define CPRepeat (1 << 0) -#define CPAlphaMap (1 << 1) -#define CPAlphaXOrigin (1 << 2) -#define CPAlphaYOrigin (1 << 3) -#define CPClipXOrigin (1 << 4) -#define CPClipYOrigin (1 << 5) -#define CPClipMask (1 << 6) -#define CPGraphicsExposure (1 << 7) -#define CPSubwindowMode (1 << 8) -#define CPPolyEdge (1 << 9) -#define CPPolyMode (1 << 10) -#define CPDither (1 << 11) -#define CPComponentAlpha (1 << 12) -#define CPLastBit 12 - -/* Filters included in 0.6 */ -#define FilterNearest "nearest" -#define FilterBilinear "bilinear" -/* Filters included in 0.10 */ -#define FilterConvolution "convolution" - -#define FilterFast "fast" -#define FilterGood "good" -#define FilterBest "best" - -#define FilterAliasNone -1 - -/* Subpixel orders included in 0.6 */ -#define SubPixelUnknown 0 -#define SubPixelHorizontalRGB 1 -#define SubPixelHorizontalBGR 2 -#define SubPixelVerticalRGB 3 -#define SubPixelVerticalBGR 4 -#define SubPixelNone 5 - -/* Extended repeat attributes included in 0.10 */ -#define RepeatNone 0 -#define RepeatNormal 1 -#define RepeatPad 2 -#define RepeatReflect 3 - -#endif /* _RENDER_H_ */ diff --git a/renderproto.h b/renderproto.h deleted file mode 100644 index ffe0639..0000000 --- a/renderproto.h +++ /dev/null @@ -1,663 +0,0 @@ -/* - * $XFree86: xc/include/extensions/renderproto.h,v 1.12 2002/09/26 02:56:48 keithp Exp $ - * - * 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 _XRENDERP_H_ -#define _XRENDERP_H_ - -#include -#include - -#define Window CARD32 -#define Drawable CARD32 -#define Font CARD32 -#define Pixmap CARD32 -#define Cursor CARD32 -#define Colormap CARD32 -#define GContext CARD32 -#define Atom CARD32 -#define VisualID CARD32 -#define Time CARD32 -#define KeyCode CARD8 -#define KeySym CARD32 - -#define Picture CARD32 -#define PictFormat CARD32 -#define Fixed INT32 -#define Glyphset CARD32 - -/* - * data structures - */ - -typedef struct { - CARD16 red B16; - CARD16 redMask B16; - CARD16 green B16; - CARD16 greenMask B16; - CARD16 blue B16; - CARD16 blueMask B16; - CARD16 alpha B16; - CARD16 alphaMask B16; -} xDirectFormat; - -#define sz_xDirectFormat 16 - -typedef struct { - PictFormat id B32; - CARD8 type; - CARD8 depth; - CARD16 pad1 B16; - xDirectFormat direct; - Colormap colormap; -} xPictFormInfo; - -#define sz_xPictFormInfo 28 - -typedef struct { - VisualID visual; - PictFormat format; -} xPictVisual; - -#define sz_xPictVisual 8 - -typedef struct { - CARD8 depth; - CARD8 pad1; - CARD16 nPictVisuals B16; - CARD32 pad2 B32; -} xPictDepth; - -#define sz_xPictDepth 8 - -typedef struct { - CARD32 nDepth B32; - PictFormat fallback B32; -} xPictScreen; - -#define sz_xPictScreen 8 - -typedef struct { - CARD32 pixel B32; - CARD16 red B16; - CARD16 green B16; - CARD16 blue B16; - CARD16 alpha B16; -} xIndexValue; - -#define sz_xIndexValue 12 - -typedef struct { - CARD16 red B16; - CARD16 green B16; - CARD16 blue B16; - CARD16 alpha B16; -} xRenderColor; - -#define sz_xRenderColor 8 - -typedef struct { - Fixed x B32; - Fixed y B32; -} xPointFixed; - -#define sz_xPointFixed 8 - -typedef struct { - xPointFixed p1; - xPointFixed p2; -} xLineFixed; - -#define sz_xLineFixed 16 - -typedef struct { - xPointFixed p1, p2, p3; -} xTriangle; - -#define sz_xTriangle 24 - -typedef struct { - Fixed top B32; - Fixed bottom B32; - xLineFixed left; - xLineFixed right; -} xTrapezoid; - -#define sz_xTrapezoid 40 - -typedef struct { - CARD16 width B16; - CARD16 height B16; - INT16 x B16; - INT16 y B16; - INT16 xOff B16; - INT16 yOff B16; -} xGlyphInfo; - -#define sz_xGlyphInfo 12 - -typedef struct { - CARD8 len; - CARD8 pad1; - CARD16 pad2; - INT16 deltax; - INT16 deltay; -} xGlyphElt; - -#define sz_xGlyphElt 8 - -typedef struct { - Fixed l, r, y; -} xSpanFix; - -#define sz_xSpanFix 12 - -typedef struct { - xSpanFix top, bot; -} xTrap; - -#define sz_xTrap 24 - -/* - * requests and replies - */ -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD32 majorVersion B32; - CARD32 minorVersion B32; -} xRenderQueryVersionReq; - -#define sz_xRenderQueryVersionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRenderQueryVersionReply; - -#define sz_xRenderQueryVersionReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; -} xRenderQueryPictFormatsReq; - -#define sz_xRenderQueryPictFormatsReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numFormats B32; - CARD32 numScreens B32; - CARD32 numDepths B32; - CARD32 numVisuals B32; - CARD32 numSubpixel B32; /* Version 0.6 */ - CARD32 pad5 B32; -} xRenderQueryPictFormatsReply; - -#define sz_xRenderQueryPictFormatsReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - PictFormat format B32; -} xRenderQueryPictIndexValuesReq; - -#define sz_xRenderQueryPictIndexValuesReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numIndexValues; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xRenderQueryPictIndexValuesReply; - -#define sz_xRenderQueryPictIndexValuesReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - Drawable drawable B32; - PictFormat format B32; - CARD32 mask B32; -} xRenderCreatePictureReq; - -#define sz_xRenderCreatePictureReq 20 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - CARD32 mask B32; -} xRenderChangePictureReq; - -#define sz_xRenderChangePictureReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - INT16 xOrigin B16; - INT16 yOrigin B16; -} xRenderSetPictureClipRectanglesReq; - -#define sz_xRenderSetPictureClipRectanglesReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; -} xRenderFreePictureReq; - -#define sz_xRenderFreePictureReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture mask B32; - Picture dst B32; - INT16 xSrc B16; - INT16 ySrc B16; - INT16 xMask B16; - INT16 yMask B16; - INT16 xDst B16; - INT16 yDst B16; - CARD16 width B16; - CARD16 height B16; -} xRenderCompositeReq; - -#define sz_xRenderCompositeReq 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture src B32; - Picture dst B32; - CARD32 colorScale B32; - CARD32 alphaScale B32; - INT16 xSrc B16; - INT16 ySrc B16; - INT16 xDst B16; - INT16 yDst B16; - CARD16 width B16; - CARD16 height B16; -} xRenderScaleReq; - -#define sz_xRenderScaleReq 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTrapezoidsReq; - -#define sz_xRenderTrapezoidsReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTrianglesReq; - -#define sz_xRenderTrianglesReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTriStripReq; - -#define sz_xRenderTriStripReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTriFanReq; - -#define sz_xRenderTriFanReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset gsid B32; - PictFormat format B32; -} xRenderCreateGlyphSetReq; - -#define sz_xRenderCreateGlyphSetReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset gsid B32; - Glyphset existing B32; -} xRenderReferenceGlyphSetReq; - -#define sz_xRenderReferenceGlyphSetReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; -} xRenderFreeGlyphSetReq; - -#define sz_xRenderFreeGlyphSetReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; - CARD32 nglyphs; -} xRenderAddGlyphsReq; - -#define sz_xRenderAddGlyphsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; -} xRenderFreeGlyphsReq; - -#define sz_xRenderFreeGlyphsReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - Glyphset glyphset B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req, -xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req; - -#define sz_xRenderCompositeGlyphs8Req 28 -#define sz_xRenderCompositeGlyphs16Req 28 -#define sz_xRenderCompositeGlyphs32Req 28 - -/* 0.1 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture dst B32; - xRenderColor color; -} xRenderFillRectanglesReq; - -#define sz_xRenderFillRectanglesReq 20 - -/* 0.5 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Cursor cid B32; - Picture src B32; - CARD16 x B16; - CARD16 y B16; -} xRenderCreateCursorReq; - -#define sz_xRenderCreateCursorReq 16 - -/* 0.6 and higher */ - -/* - * This can't use an array because 32-bit values may be in bitfields - */ -typedef struct { - Fixed matrix11 B32; - Fixed matrix12 B32; - Fixed matrix13 B32; - Fixed matrix21 B32; - Fixed matrix22 B32; - Fixed matrix23 B32; - Fixed matrix31 B32; - Fixed matrix32 B32; - Fixed matrix33 B32; -} xRenderTransform; - -#define sz_xRenderTransform 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - xRenderTransform transform; -} xRenderSetPictureTransformReq; - -#define sz_xRenderSetPictureTransformReq 44 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Drawable drawable B32; -} xRenderQueryFiltersReq; - -#define sz_xRenderQueryFiltersReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numAliases B32; /* LISTofCARD16 */ - CARD32 numFilters B32; /* LISTofSTRING8 */ - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRenderQueryFiltersReply; - -#define sz_xRenderQueryFiltersReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - CARD16 nbytes B16; /* number of bytes in name */ - CARD16 pad B16; -} xRenderSetPictureFilterReq; - -#define sz_xRenderSetPictureFilterReq 12 - -/* 0.8 and higher */ - -typedef struct { - Cursor cursor B32; - CARD32 delay B32; -} xAnimCursorElt; - -#define sz_xAnimCursorElt 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Cursor cid B32; -} xRenderCreateAnimCursorReq; - -#define sz_xRenderCreateAnimCursorReq 8 - -/* 0.9 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture; - INT16 xOff B16; - INT16 yOff B16; -} xRenderAddTrapsReq; - -#define sz_xRenderAddTrapsReq 12 - -/* 0.10 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xRenderColor color; -} xRenderCreateSolidFillReq; - -#define sz_xRenderCreateSolidFillReq 16 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed p1; - xPointFixed p2; - CARD32 nStops; -} xRenderCreateLinearGradientReq; - -#define sz_xRenderCreateLinearGradientReq 28 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed inner; - xPointFixed outer; - Fixed inner_radius; - Fixed outer_radius; - CARD32 nStops; -} xRenderCreateRadialGradientReq; - -#define sz_xRenderCreateRadialGradientReq 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed center; - Fixed angle; /* in degrees */ - CARD32 nStops; -} xRenderCreateConicalGradientReq; - -#define sz_xRenderCreateConicalGradientReq 24 - -#undef Window -#undef Drawable -#undef Font -#undef Pixmap -#undef Cursor -#undef Colormap -#undef GContext -#undef Atom -#undef VisualID -#undef Time -#undef KeyCode -#undef KeySym - -#undef Picture -#undef PictFormat -#undef Fixed -#undef Glyphset - -#endif /* _XRENDERP_H_ */ diff --git a/renderproto.pc.in b/renderproto.pc.in deleted file mode 100644 index 17331e9..0000000 --- a/renderproto.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: RenderProto -Description: Render extension headers -Version: @PACKAGE_VERSION@ -Cflags: -I${includedir} diff --git a/renderproto.txt b/renderproto.txt deleted file mode 100644 index a736ba7..0000000 --- a/renderproto.txt +++ /dev/null @@ -1,1207 +0,0 @@ - The X Rendering Extension - Version 0.11 - 2009-07-15 - Keith Packard - keithp@keithp.com - -1. Introduction - -The X Rendering Extension (Render) introduces digital image composition as -the foundation of a new rendering model within the X Window System. -Rendering geometric figures is accomplished by client-side tessellation into -either triangles or trapezoids. Text is drawn by loading glyphs into the -server and rendering sets of them. - -2. Acknowledgments - -This extension was the work of many people, in particular: - - + Thomas Porter and Tom Duff for their formal description - of image compositing. - - + Rob Pike and Russ Cox who designed the Plan 9 window system from - which the compositing model was lifted. - - + Juliusz Chroboczek and Raph Levien whose proposal for client-side - glyph management eliminated font handling from the X server. - - + Jon Leech, Brad Grantham and Allen Akin for patiently explaining - how OpenGL works. - - + Carl Worth for providing the sample implementation of - trapezoid rendering and showing how broken the spec was - - + Sam Pottle and Jamey Sharp for helping demonstrate the correctness - of the trapezoid specification. - - + Owen Taylor for helping specify projective transformations - -3. Rendering Model - -Render provides a single rendering operation which can be used in a variety of -ways to generate images: - - dest = (source IN mask) OP dest - -Where 'IN' is the Porter/Duff operator of that name and 'OP' is any of the -list of compositing operators described below, among which can be found all -of the Porter/Duff binary operators. - -To use this operator several additional values are required: - - + The destination rectangle. This is a subset of the destination - within which the rendering is performed. - - + The source location. This identifies the coordinate in the - source aligned with the upper left corner of the - destination rectangle. - - + The mask location. This identifies the coordinate in the - mask aligned with the upper left corner of the - destination rectangle. - - + A clip list. This limits the rendering to the intersection of the - destination rectangle with this clip list. - - + The OP to use - - + Whether the source should be repeated to cover the destination - rectangle, extended with a constant pixel value or extended by - using the nearest available source pixel. - - + Whether the mask should be repeated to cover the destination - rectangle, extended with a constant pixel value or extended by - using the nearest available mask pixel. - - + Whether the mask has a single alpha value for all four channels or - whether each mask channel should affect the associated source/dest - channels. - - + Whether the source should be reshaped with a projective - transformation, and if so, what filter to apply while - resampling the data. - - + Whether the mask should be reshaped with a projective - transformation, and if so, what filter to apply while - resampling the data. - -These parameters are variously attached to the operands or included in each -rendering request. - -4. Data types - -The core protocol rendering system uses a pixel model and applies color only -in the final generation of the video signal. A compositing model operates -on colors, not pixel values so a new datatype is needed to interpret data as -color instead of just bits. - -The "PictFormat" object holds information needed to translate pixel values -into red, green, blue and alpha channels. The server has a list of picture -formats corresponding to the various visuals on the screen. There are two -classes of formats, Indexed and Direct. Indexed PictFormats hold a list of -pixel values and RGBA values while Direct PictFormats hold bit masks for each -of R, G, B and A. - -The "Picture" object contains a Drawable, a PictFormat and some -rendering state. More than one Picture can refer to the same Drawable. - -5. Errors - -Errors are sent using core X error reports. - -PictFormat - A value for a PICTFORMAT argument does not name a defined PICTFORMAT. - -Picture - A value for a PICTURE argument does not name a defined PICTURE. - -PictOp - A value for a PICTOP argument does not name a defined PICTOP. - -GlyphSet - A value for a GLYPHSET argument does not name a defined GLYPHSET. - -Glyph - A value for a GLYPH argument does not name a defined GLYPH in the - glyphset. - -6. Protocol Types - -PICTURE 32-bit value (top three bits guaranteed to be zero) -PICTFORMAT 32-bit value (top three bits guaranteed to be zero) -PICTTYPE { Indexed, Direct } -PICTOP { Clear, Src, Dst, Over, OverReverse, In, InReverse, - Out, OutReverse, Atop, AtopReverse, Xor, Add, Saturate, - DisjointClear, DisjointSrc, DisjointDst, DisjointOver, - DisjointOverReverse, DisjointIn, DisjointInReverse, - DisjointOut, DisjointOutReverse, DisjointAtop, - DisjointAtopReverse, DisjointXor, - ConjointClear, ConjointSrc, ConjointDst, ConjointOver, - ConjointOverReverse, ConjointIn, ConjointInReverse, - ConjointOut, ConjointOutReverse, ConjointAtop, - ConjointAtopReverse, ConjointXor, - Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, - ColorBurn, HardLight, SoftLight, Difference, Exclusion, - HSLHue, HSLSaturation, HSLColor, HSLLuminosity - } -SUBPIXEL { Unknown, HorizontalRGB, HorizontalBGR, - VerticalRGB, VerticalBGR, None - } -COLOR [ - red, green, blue, alpha: CARD16 - ] -CHANNELMASK [ - shift, mask: CARD16 - ] -DIRECTFORMAT [ - red, green, blue, alpha: CHANNELMASK - ] -INDEXVALUE [ - pixel: Pixel; - red, green, blue, alpha: CARD16 - ] -PICTFORMINFO [ - id: PICTFORMAT - type: PICTTYPE - depth: CARD8 - direct: DIRECTFORMAT - colormap: COLORMAP or None - ] - -PICTVISUAL [ - visual: VISUALID or None - format: PICTFORMAT - ] - -PICTDEPTH [ - depth: CARD8 - visuals: LISTofPICTVISUAL - ] - -PICTSCREEN LISTofPICTDEPTH - -FIXED 32-bit value (top 16 are integer portion, bottom 16 are fraction) -TRANSFORM [ - p11, p12, p13: FIXED - p21, p22, p23: FIXED - p31, p32, p33: FIXED - ] -POINTFIX [ - x, y: FIXED - ] -POLYEDGE { Sharp, Smooth } -POLYMODE { Precise, Imprecise } -REPEAT { None, Regular, Pad, Reflect } -COLORPOINT [ - point: POINTFIX - color: COLOR - ] -SPANFIX [ - left, right, y: FIXED - ] -COLORSPANFIX [ - left, right, y: FIXED - left_color: COLOR - right_color: COLOR -QUAD [ - p1, p2, p3, p4: POINTFIX - ] -TRIANGLE [ - p1, p2, p3: POINTFIX - ] -LINEFIX [ - p1, p2: POINTFIX - ] -TRAP [ - top, bottom: SPANFIX - ] -TRAPEZOID [ - top, bottom: FIXED - left, right: LINEFIX - ] -(TRAPEZOID is deprecated) -GLYPHSET 32-bit value (top three bits guaranteed to be zero) -GLYPH 32-bit value -GLYPHINFO [ - width, height: CARD16 - x, y: INT16 - off-x, off-y: INT16 - ] -PICTGLYPH [ - info: GLYPHINFO - x, y: INT16 - ] -GLYPHABLE GLYPHSET or FONTABLE -GLYPHELT8 [ - dx, dy: INT16 - glyphs: LISTofCARD8 - ] -GLYPHITEM8 GLYPHELT8 or GLYPHABLE -GLYPHELT16 [ - dx, dy: INT16 - glyphs: LISTofCARD16 - ] -GLYPHITEM16 GLYPHELT16 or GLYPHABLE -GLYPHELT32 [ - dx, dy: INT16 - glyphs: LISTofCARD32 - ] -GLYPHITEM32 GLYPHELT32 or GLYPHABLE - -ANIMCURSORELT [ - cursor: CURSOR - delay: CARD32 - ] -7. Standard PictFormats - -The server must support a Direct PictFormat with 8 bits each of red, green, -blue and alpha as well as a Direct PictFormat with 8 bits of red, green and -blue and 0 bits of alpha. The server must also support Direct PictFormats -with 1, 4 and 8 bits of alpha and 0 bits of r, g and b. - -Pixel component values lie in the close range [0,1]. These values are -encoded in a varying number of bits. Values are encoded in a straight -forward manner. For a component encoded in m bits, a binary encoding b -is equal to a component value of b/(2^m-1). - -A Direct PictFormat with zero bits of alpha component is declared to have -alpha == 1 everywhere. A Direct PictFormat with zero bits of red, green and -blue is declared to have red, green, blue == 0 everywhere. If any of red, -green or blue components are of zero size, all are of zero size. Direct -PictFormats never have colormaps and are therefore screen independent. - -Indexed PictFormats never have alpha channels and the direct component is all -zeros. Indexed PictFormats always have a colormap in which the specified -colors are allocated read-only and are therefore screen dependent. Drawing -to in Indexed Picture uses only pixel values listed by QueryPictIndexValues. -Reading from an Indexed Picture uses red, green and blue values from the -colormap and alpha values from those listed by QueryPictIndexValues. Pixel -values not present in QueryPictIndexValues are given alpha values of 1. - -8. Compositing Operators - -For each pixel, the four channels of the image are computed with: - - C = Ca * Fa + Cb * Fb - -where C, Ca, Cb are the values of the respective channels and Fa and Fb -come from the following table: - - PictOp Fa Fb - -------------------------------------------------- - Clear 0 0 - Src 1 0 - Dst 0 1 - Over 1 1-Aa - OverReverse 1-Ab 1 - In Ab 0 - InReverse 0 Aa - Out 1-Ab 0 - OutReverse 0 1-Aa - Atop Ab 1-Aa - AtopReverse 1-Ab Aa - Xor 1-Ab 1-Aa - Add 1 1 - Saturate min(1,(1-Ab)/Aa) 1 - DisjointClear 0 0 - DisjointSrc 1 0 - DisjointDst 0 1 - DisjointOver 1 min(1,(1-Aa)/Ab) - DisjointOverReverse min(1,(1-Ab)/Aa) 1 - DisjointIn max(1-(1-Ab)/Aa,0) 0 - DisjointInReverse 0 max(1-(1-Aa)/Ab,0) - DisjointOut min(1,(1-Ab)/Aa) 0 - DisjointOutReverse 0 min(1,(1-Aa)/Ab) - DisjointAtop max(1-(1-Ab)/Aa,0) min(1,(1-Aa)/Ab) - DisjointAtopReverse min(1,(1-Ab)/Aa) max(1-(1-Aa)/Ab,0) - DisjointXor min(1,(1-Ab)/Aa) min(1,(1-Aa)/Ab) - ConjointClear 0 0 - ConjointSrc 1 0 - ConjointDst 0 1 - ConjointOver 1 max(1-Aa/Ab,0) - ConjointOverReverse max(1-Ab/Aa,0) 1 - ConjointIn min(1,Ab/Aa) 0 - ConjointInReverse 0 min(Aa/Ab,1) - ConjointOut max(1-Ab/Aa,0) 0 - ConjointOutReverse 0 max(1-Aa/Ab,0) - ConjointAtop min(1,Ab/Aa) max(1-Aa/Ab,0) - ConjointAtopReverse max(1-Ab/Aa,0) min(1,Aa/Ab) - ConjointXor max(1-Ab/Aa,0) max(1-Aa/Ab,0) - -Saturate and DisjointOverReverse are the same. They match OpenGL -compositing with FUNC_ADD, SRC_ALPHA_SATURATE, ONE, except that Render uses -premultiplied alpha while Open GL uses non-premultiplied alpha. - -The result of any compositing operator is always limited to the range -[0,1] for each component. Components whose value would be greater than 1 -are set to 1. - -For operations involving division, when the divisor is zero, define the -quotient to be positive infinity. The result is always well defined -because the division is surrounded with a max or min operator which will -give a finite result. - -When the mask contains separate alpha values for each channel, the -alpha value resulting from the combination of that value with the source -alpha channel is used in the final image composition. - -9. Source and Mask Transformations - -When fetching pixels from the source or mask pictures, Render provides four -options for pixel values which fall outside the drawable (this includes -pixels within a window geometry obscured by other windows). - - + None. Missing values are replaced with transparent. - - + Pad. Replace missing pixels with the nearest available - pixel. Where multiple pixels are equidistant, select - those with smallest Y and then smallest X coordinates - - + Normal. Select the pixel which would appear were the - drawable tiled to enclose the missing coordinate. If - the tiling doesn't cover the coordinate, use the - selected Constant or Nearest mode. - - * Reflect. Select the pixel which would appear were the - drawable tiled to enclose the missing coordinate in such a - way that tiles in even numbered columns are reflected in the Y - axis, and tiles in even numbered rows are reflected in the X - axis. Tiles that in both an even numbered row and an even - numbered column are reflected in both axes. - -To construct the source and mask operands, the computed pixels values are -transformed through a homogeneous matrix, filtered and then used in the -fundamental rendering operator described above. Each screen provides a list -of supported filter names. There are a few required filters, and several -required filter alias which must map to one of the available filters. - -10. Polygon Rasterization - -Render provides only two kinds of polygons, trapezoids and triangles. To -improve efficiency, several different wire encodings exist for each. - -All trapezoids must be convex. Rendering of concave trapezoids is unspecified -except that the result must obey the clipping rules. - -Composite -Polygons are rasterized by implicit generating an alpha mask and using that -in the general compositing operator along with a supplied source image: - - tmp = Rasterize (polygon) - Composite (op, dst, src, tmp) - -When rasterized with Sharp edges, the mask is computed with a depth of 1 so -that all of the mask values are either 0 or 1. - -When rasterized with Smooth edges, the mask is generated by creating a square -around each pixel coordinate and computing the amount of that square covered -by the polygon. This ignores sampling theory but it provides a precise -definition which is close to the right answer. This value is truncated to -the alpha width in the fallback format before application of the compositing -operator. - -Rasterization -Alpha values are generated by point sampling the coverage of a square -surrounding the center of each pixel by the polygon. - -In Precise poly mode, the sample points are located in a regular grid. When -alpha depth 'e' is even, the regular grid is 2**(e/2) + 1 samples wide and -2**(e/2) -1 samples high. For odd alpha depth 'o', the sample grid is 2**o -- 1 samples wide and 1 sample high. Note that odd alpha depth usually -occurs only at depth 1, so this misshapen sample grid has no ill effects. -The sample grid is centered within the pixel and then each sample point is -rounded down to a point on the sub-pixel coordinate grid. - -In Imprecise mode, the location of the sample points is not specified, but -the implementation must conform to the following constraints: - - + Abutting edges must match precisely. When specifying two polygons - abutting along a common edge, if that edge is specified with the - same coordinates in each polygon then the sum of alpha values for - pixels inside the union of the two polygons must be precisely one. - - + Translationally invariant. The pixelization of the polygon must - be the same when either the polygon or the target drawable - are translated by any whole number of pixels in any direction. - - + Sharp edges are honored. When the polygon is rasterized with Sharp - edges, the implicit alpha mask will contain only 1 or 0 for - each pixel. - - + Order independent. Two identical polygons specified with vertices - in different orders must generate identical results. - -11. Image Filtering - -When computing pixels from source and mask images, a filter may be applied -to the data. This is usually used with a non-identity transformation -matrix, but filtering may be applied with an identity transformation. - -Each filter is given a unique name encoded as an ISO Latin-1 string. -Filters may be configured with a list of fixed point values; the number of -parameters and their interpretation is currently left to conventions passed -outside of the protocol. A set of standard filters are required to be -provided: - - Filter Name Description - - nearest Nearest neighbor filtering - bilinear Linear interpolation in two dimensions - -Additional names may be provided for any filter as aliases. A set of -standard alias names are required to be mapped to a provided filter so that -applications can use the alias names without checking for availability. - - Alias name Intended interpretation - - fast High performance, quality similar to Nearest - good Reasonable performance, quality similar to Bilinear - best Highest quality available, performance may not - be suitable for interactive use - -Aliases must map directly to a non-aliased filter name. - -There is also a set of standard filters which are not required but may be -provided. If they are provided, using the standard name, they must match -the definition specified here. - - Filter Name Description - - convolution MxN convolution filter. The values specified - in SetPictureFilter are M, N and then M * N - filter parameters. M and N must be integers - represented as fixed point numbers. - gaussian Gaussian blur. The value specified is a radius - in pixels (which can be fractional). A standard - Gaussian 2D convolution filter will be applied. - binomial Binomial blur. An approximation of a Gaussian - blur using binomial coefficients - -12. Glyph Rendering - -Glyphs are small alpha masks which can be stored in the X server and -rendered by referring to them by name. A set of glyphs can be rendered in a -single request. Glyphs are positioned by subtracting the x, y elements of -the GLYPHINFO from the requested rendering position. The next glyph -rendering position is set to the current rendering position plus the off-x -and off-y elements. - -Glyphs are stored in GlyphSets and are named within the GlyphSet with -client-specified 32-bit numbers. - -Glyphs can be stored in any PictFormat supported by the server. All glyphs -in a GlyphSet are stored in the same format. - -13. Extension Initialization - -The client must negotiate the version of the extension before executing -extension requests. Behavior of the server is undefined otherwise. - -QueryVersion - - client-major-version: CARD32 - client-minor-version: CARD32 - - -> - - major-version: CARD32 - minor-version: CARD32 - - The client sends the highest supported version to the server and - the server sends the highest version it supports, but no higher than - the requested version. Major versions changes can introduce - incompatibilities in existing functionality, minor version - changes introduce only backward compatible changes. It is - the clients responsibility to ensure that the server supports - a version which is compatible with its expectations. - -QueryPictFormats - - -> - - fallback: PICTFORMAT - formats: LISTofPICTFORMINFO - screens: LISTofPICTSCREEN - subpixels: LISTofSUBPIXEL - - Errors: - - - The server responds with a list of supported PictFormats and - a list of which PictFormat goes with each visual on each screen. - Every PictFormat must match a supported depth, but not every - PictFormat need have a matching visual. - - The fallback format is used as an intermediate representation - in cases where there is no ideal choice. - - The relationship between the red, green and blue elements making - up each pixel indexed by screen is returned in subpixels. - This list is not present in servers advertising protocol - versions earlier than 0.6. This list may be shorter than - the number of screens, in which case the remaining screens - are given sub pixel order Unknown. - -QueryPictIndexValues - - format: PICTFORMAT - - -> - - values: LISTofINDEXVALUE - - Errors: - PictFormat, Match - - Returns the mapping from pixel values to RGBA values for the - specified Indexed PictFormat. If 'format' does not refer to - an Indexed PictFormat a Match error is generated. - -QueryFilters - - drawable: DRAWABLE - - -> - - filters: LISTofSTRING8 - aliases: LISTofCARD16 - - -14. Extension Requests - -CreatePicture - - pid: PICTURE - drawable: DRAWABLE - format: PICTFORMAT - value-mask: BITMASK - value-list: LISTofVALUE - - Errors: - Alloc, Drawable, IDChoice, Match, Pixmap, Picture, - PictFormat, Value - - This request creates a Picture object associated with the specified - drawable and assigns the identifier pid to it. Pixel data in the - image are interpreted according to 'format'. It is a Match error - to specify a format with a different depth than the drawable. If - the drawable is a Window then the Red, Green and Blue masks must - match those in the visual for the window else a Match error is - generated. - - The value-mask and value-list specify attributes of the picture that - are to be explicitly initialized. The possible values are: - - repeat: REPEAT - alpha-map: PICTURE or None - alpha-x-origin: INT16 - alpha-y-origin: INT16 - clip-x-origin: INT16 - clip-y-origin: INT16 - clip-mask: PIXMAP or None - graphics-exposures: BOOL - subwindow-mode: { ClipByChildren, IncludeInferiors } - poly-edge: POLYEDGE - poly-mode: POLYMODE - dither: ATOM or None - component-alpha: BOOL - - When used as a source or mask operand, Repeat indicates how the - drawable contents should be extented in both directions. - - The alpha channel of alpha-map is used in place of any alpha channel - contained within the drawable for all rendering operations. The - alpha-mask origin is interpreted relative to the origin of drawable. - Rendering is additionally clipped by the geometry and clip mask of - alpha-map. Exposures to the window do not affect the contents of - alpha-map. Alpha-map must refer to a picture containing a Pixmap, - not a Window (or a Match error results). - - The clip-mask restricts reads and writes to drawable. Only pixels - where the clip-mask has bits set to 1 are read or written. Pixels - are not accessed outside the area covered by the clip-mask or where - the clip-mask has bits set to 0. The clip-mask affects all graphics - requests, including sources. The clip-mask origin is interpreted - relative to the origin of the picture. If a pixmap is specified as - the clip-mask, it must have depth 1 and have the same root as the - drawable (or a Match error results). If clip-mask is None, then - pixels are always drawn, regardless of the clip origin. The - clip-mask can also be set with the SetPictureClipRectangles request. - Transformations, filters and repeat modes do not affect the clip - mask. - - When a window is used as a destination, the subwindow_mode - determines what happens to pixels obscured by inferior - windows. For ClipByChildren the window is clipped by inferiors - and siblings. For IncludeInferior, the window is clipped by - siblings, but not by inferiors. - - When a window is used as source or mask, the subwindow_mode is - ignored. Pixels that are obscured by other windows, whether - siblings or inferiors, have undefined contents. - - The graphics-exposures flag is ignored. GraphicsExposure events are - never generated by this extension. - - Poly-edge and poly-mode control the rasterization of polygons as - described above. - - Dither is ignored. - - Component-alpha indicates whether each image component is intended as - a separate alpha value when the picture is used as a mask operand. - - The default component values are - - Component Default - ------------------------------- - repeat None - clip-x-origin 0 - clip-y-origin 0 - clip-mask None - subwindow-mode ClipByChildren - poly-edge Smooth - poly-mode Precise - component-alpha False - -ChangePicture - - pid: PICTURE - value-mask: BITMASK - value-list: LISTofVALUE - - Errors: - Picture, Alloc, Pixmap, PictOp, Value - - The value-mask and value-list specify which attributes are to be - changed. The values and restrictions are the same as for - CreatePicture. - -SetPictureClipRectangles - - picture: PICTURE - clip-x-origin: INT16 - clip-y-origin: INT16 - rectangles: LISTofRECTANGLE - - Errors: - Alloc, Picture - - This request changes clip-mask in picture to the specified list of - rectangles and sets the clip origin. Input and output will be - clipped to remain contained within the rectangles. The clip origin - is interpreted relative to the origin of picture after - transformations and repeats have been applied. The rectangle - coordinates are interpreted relative to the clip origin. - - The list of rectangles can be empty, which effectively disables - output. This is the opposite of passing None as the clip-mask in - CreatePicture and ChangePicture. - - Note that output is clipped to the union of all of the rectangles - and that no particular ordering among the rectangles is required. - -SetPictureTransform - - picture: PICTURE - transform: TRANSFORM - - Errors: - Alloc, Value, Picture - - This request changes the projective transformation used to - map coordinates when 'picture' is used as the source or - mask in any compositing operation. The transform - maps from destination pixel geometry back to the source pixel - geometry. - - The matrix must be invertable, else a Value error is generated. - -SetPictureFilter - - picture: PICTURE - filter: STRING8 - values: LISTofFIXED - - Errors: - Value, Match, Picture - - This request sets the current filter used when picture is a source - or mask operand. Filter must be one of the filters supported - for the screen associated with picture, else a Match error - is generated. If the filter accepts additional parameters, - they can be provided in values, incorrect values generate Value - errors, too many values generate Match errors. Too few values - cause the filter to assume default values for the missing - parameters. - - When created, Pictures are set to the Nearest filter. - -FreePicture - - pid: PICTURE - - Errors: - Picture - - This request deletes the association between the resource ID and the - picture. The picture storage will be freed when no other resource - references it. - -Composite - - op: PICTOP - src: PICTURE - mask: PICTURE or None - dst: PICTURE - src-x, src-y: INT16 - mask-x, mask-y: INT16 - dst-x, dst-y: INT16 - width, height: CARD16 - - This request combines the specified rectangle of the transformed - src and mask operands with the specified rectangle of dst using op - as the compositing operator. The coordinates are relative their - respective (transformed) drawable's origin. Rendering is clipped - to the geometry of the dst drawable and then to the dst clip-list. - - Pixels outside the geometry of src or mask needed for this - computation are substituted as described in the Source and Mask - Transformations section above. - - If src, mask and dst are not in the same format, and one of their - formats can hold all without loss of precision, they are converted - to that format. Alternatively, the server will convert each - operand to the fallback format. - - If mask is None, it is replaced by a constant alpha value of 1. - -FillRectangles - - op: PICTOP - dst: PICTURE - color: COLOR - rects: LISTofRECTANGLE - - This request combines color with the destination drawable in the - area specified by rects. Each rectangle is combined separately; - overlapping areas will be rendered multiple times. The effect is - equivalent to compositing with a repeating source picture filled with - the specified color. - -Trapezoids - - op: PICTOP - src: PICTURE - src-x, src-y: INT16 - dst: PICTURE - mask-format: PICTFORMAT or None - traps: LISTofTRAPEZOID - - This request rasterizes the list of trapezoids. - - For each trap, the area between the left and right edges is filled - from the top to the bottom. src-x and src-y register the pattern to - the floor of the top x and y coordinate of the left edge of the - first trapezoid, they are adjusted for subsequent trapezoids so that - the pattern remains globally aligned within the destination. - - When mask-format is not None, trapezoids are rendered in the - following way with the effective mask computed in mask-format: - - tmp = temporary alpha picture (in mask-format) - Combine (Zero, tmp, tmp, None) - for each trapezoid - Combine (Add, tmp, trapezoid, None) - Combine (op, dst, source, tmp) - - When mask-format is None, trapezoids are rendered in the order - specified directly to the destination: - - for each trapezoid - Combine (op, dst, source, trapezoid) - - (The Trapezoids request is deprecated) - -Triangles - - op: PICTOP - src: PICTURE - src-x, src-y: INT16 - dst: PICTURE - mask-format: PICTFORMAT or None - triangles: LISTofTRIANGLE - - This request rasterizes the list of triangles in the order they - occur in the list. - - When mask-format is not None, triangles are rendered in the - following way with the effective mask computed in mask-format: - - tmp = temporary alpha picture (in mask-format) - Combine (Zero, tmp, tmp, None) - for each triangle - Combine (Add, tmp, triangle, None) - Combine (op, dst, source, tmp) - - When mask-format is None, triangles are rendered in the order - specified directly to the destination: - - for each triangle - Combine (op, dst, source, triangle) - -TriStrip - - op: PICTOP - src: PICTURE - src-x, src-y: INT16 - dst: PICTURE - mask-format: PICTFORMAT or None - points: LISTofPOINTFIX - - Triangles are formed by initially using the first three points and - then by eliminating the first point and appending the next point in - the list. If fewer than three points are provided, this request does - nothing. - - When mask-format is not None, triangles are rendered in the - following way with the effective mask computed in mask-format: - - tmp = temporary alpha picture (in mask-format) - Combine (Zero, tmp, tmp, None) - for each triangle - Combine (Add, tmp, triangle, None) - Combine (op, dst, source, tmp) - - When mask-format is None, triangles are rendered in the order - specified directly to the destination: - - for each triangle - Combine (op, dst, source, triangle) - -TriFan - op: PICTOP - src: PICTURE - src-x, src-y: INT16 - dst: PICTURE - mask-format: PICTFORMAT or None - points: LISTofPOINTFIX - - Triangles are formed by initially using the first three points and - then by eliminating the second point and appending the next point - int the list. If fewer than three points are provided, this request - does nothing. - - When mask-format is not None, triangles are rendered in the - following way with the effective mask computed in mask-format: - - tmp = temporary alpha picture (in mask-format) - Combine (Zero, tmp, tmp, None) - for each triangle - Combine (Add, tmp, triangle, None) - Combine (op, dst, source, tmp) - - When mask-format is None, triangles are rendered in the order - specified directly to the destination: - - for each triangle - Combine (op, dst, source, triangle) - -CreateGlyphSet - - gsid: GLYPHSET - format: PICTFORMAT - - Errors: - Alloc, IDChoice, PictFormat, Match - - This request creates a container for glyphs. The glyphset and - all contained glyphs are destroyed when gsid and any other names - for the glyphset are freed. Format must be a Direct format, when - it contains RGB values, the glyphs are composited using - component-alpha True, otherwise they are composited using - component-alpha False. - -ReferenceGlyphSet - - gsid: GLYPHSET - existing: GLYPHSET - - Errors: - Alloc, IDChoice, GlyphSet - - This request creates an additional name for the existing glyphset. - The glyphset will not be freed until all references to it are - destroyed. - -FreeGlyphSet - - glyphset: GLYPHSET - - Errors: - GlyphSet - - This request frees the name for the glyphset. When all names have - been freed, the glyphset and all contained glyphs are freed. - -AddGlyphs - glyphset: GLYPHSET - glyphids: LISTofCARD32 - glyphs: LISTofGLYPHINFO - data: LISTofBYTE - - Errors: - GlyphSet, Alloc - - This request adds glyphs to glyphset. The image for the glyphs - are stored with each glyph in a separate Z-format image padded to a - 32-bit boundary. Existing glyphs with the same names are replaced. - -FreeGlyphs - - glyphset: GLYPHSET - glyphs: LISTofGLYPH - - Errors: - GlyphSet, Match - - This request removes glyphs from glyphset. Each glyph must exist - in glyphset (else a Match error results). - -CompositeGlyphs8 -CompositeGlyphs16 -CompositeGlyphs32 - - op: PICTOP - src: PICTURE - dst: PICTURE - mask-format: PICTFORMAT or None - glyphset: GLYPHABLE - src-x, src-y: INT16 - dst-x, dst-y: INT16 - glyphcmds: LISTofGLYPHITEM8 CompositeGlyphs8 - glyphcmds: LISTofGLYPHITEM16 CompositeGlyphs16 - glyphcmds: LISTofGLYPHITEM32 CompositeGlyphs32 - - Errors: - Picture, PictOp, PictFormat, GlyphSet, Glyph - - The dst-x and dst-y coordinates are relative to the drawable's - origin and specify the baseline starting position (the initial glyph - origin). Each glyph item is processed in turn. A glyphset item - causes the glyphset to be used for subsequent glyphs. Switching - among glyphsets does not affect the next glyph origin. A glyph - element delta-x and delta-y specify additional changes in the - position along the x and y axes before the string is drawn; the - deltas are always added to the glyph origin. - - All contained GLYPHSETs are always transmitted most significant byte - first. - - If a GlyphSet error is generated for an item, the previous items may - have been drawn. - - When mask-format is not None, glyphs are rendered in the following - way with the effective mask computed in mask-format: - - tmp = temporary alpha picture - Combine (Zero, tmp, tmp, None) - for each glyph - Combine (Add, tmp, glyph, None) - Combine (op, dst, source, tmp) - - When mask-format is None, glyphs are rendered in the order specified - directly to the destination: - - for each glyph - Combine (op, dst, source, glyph) - -CreateCursor - - cid: CURSOR - source: PICTURE - x, y: CARD16 - - Errors: Alloc, IDChoice, Match, Picture - - This request creates a cursor and associates identifier cid with it. - The x and y coordinates define the hotspot relative to the source's - origin and must be a point within the source (or a Match error - results). The resulting picture will nominally be drawn to the - screen with PictOpOver. - - The components of the cursor may be transformed arbitrarily to meet - display limitations. In particular, if the display supports only - two colors cursors without translucency, the cursor will be - transformed so that areas less than .5 alpha will be transparent, - else opaque, and areas darker than 50% gray will be black else white. - - The source picture can be freed immediately if no further explicit - references to it are to be made. - - Subsequent drawing in the source has an undefined effect on the - cursor. The server might or might not make a copy of the picture. - -CreateAnimCursor - cid: CURSOR - cursors: LISTofANIMCURSORELT - - Errors: Alloc, IDChoice, Cursor - - This request creates a cursor and associates identifier cid with it. - When active, the cursor image on the screen will cycle through - 'cursors', showing each cursor in the element for the number of - milliseconds indicated by the 'delay' member of that element. - -AddTraps - picture: PICTURE - off-x, off-y: INT16 - trapezoids: LISTofTRAP - - Errors: Match - - Each trap is PictOpAdd'ed to 'picture'. 'off-x', 'off-y' - are added to each coordinate. - - 'picture' must be an alpha-only picture else a 'Match' error is - returned. - -CreateSolidFill - pid: PICTURE - color: COLOR - - Creates a Source picture that represents a solid fill with - the specified color. - -CreateLinearGradient - pid: PICTURE - p1, p2: POINTFIX - nstops: CARD32 - stops: LISTofFIXED - stop_colors: LISTofCOLOR - - Errors: Alloc, Value - - Creates a source picture representing a linear Gradient. The gradients - bounds are defined by the two end points p1 and p2. - - The gradient has nstops stop points between 0 and 1, each - having a stop color defined in stop_colors. - - The array of stops has to contain values between 0 and 1 (inclusive) and - has to be ordered in increasing size or a Value error is generated. If - p1 == p2 a Value error is generated. - - The colors are non premultiplied. - -CreateRadialGradient - pid: PICTURE - inner_center: POINTFIX - outer_center: POINTFIX - inner_radius: FIXED - outer_radius: FIXED - nstops: CARD32 - stops: LISTofFIXED - stop_colors: LISTofCOLOR - - Errors: Alloc, Value - - Creates a source picture representing a radial Gradient. The - gradients bounds are defined by a center point, a focal point and a - radius around the center. - - The gradient has nstops stop points between 0 and 1, each - having a stop color defined in stop_colors. - - The array of stops has to contain values between 0 and 1 (inclusive) and - has to be ordered in increasing size or a Value error is generated. The inner - circle has to be completely contained inside the outer one or a Value error is - generated. - - The colors are non premultiplied. - -CreateConicalGradient - pid: PICTURE - center: POINTFIX - angle: FIXED - nstops: CARD32 - stops: LISTofFIXED - stop_colors: LISTofCOLOR - - Errors: Alloc, Value - - Creates a source picture representing a conical Gradient. The - gradient is defined by a center point and an angle (in degrees). - - The gradient has nstops stop points between 0 and 1, each - having a stop color defined in stop_colors. - - The array of stops has to contain values between 0 and 1 (inclusive) and - has to be ordered in increasing size or a Value error is generated. - - The colors are non premultiplied. - - -15. Extension Versioning - -The Render extension was developed in parallel with the implementation to -ensure the feasibility of various portions of the design. As portions of -the extension are implemented, the version number of the extension has -changed to reflect the portions of the standard provided. This document -describes the intent for version 1.0 of the specification, the partial -implementations have version numbers less than that. Here's a list of -what each version before 1.0 implemented: - - 0.0: - No disjoint/conjoint operators - No component alpha - Composite - CreateGlyphSet - FreeGlyphSet - AddGlyphs - CompositeGlyphs - - 0.1: - Component alpha - FillRectangles - - 0.2: - Disjoint/Conjoint operators - - 0.3: - FreeGlyphs - - 0.4: - Trapezoids - Triangles - TriStrip - TriFan - - 0.5: - CreateCursor - - 0.6: - SetPictureTransform - QueryFilters - SetPictureFilter - subpixels member of QueryPictFormats - - 0.7: - QueryPictIndexValues - 0.8: - CreateAnimCursor - 0.9: - AddTrapezoids - - 0.10: - CreateSolidFill - CreateLinearGradient - CreateRadialGradient - CreateConicalGradient - - The repeat picture attribute now supports Pad and - Reflect, older versions only supported None and Normal. - - 0.11: - Blend mode operators - diff --git a/renderproto/.gitignore b/renderproto/.gitignore new file mode 100644 index 0000000..466a66e --- /dev/null +++ b/renderproto/.gitignore @@ -0,0 +1,78 @@ +# +# X.Org module default exclusion patterns +# The next section if for module specific patterns +# +# Do not edit the following section +# GNU Build System (Autotools) +aclocal.m4 +autom4te.cache/ +autoscan.log +ChangeLog +compile +config.guess +config.h +config.h.in +config.log +config-ml.in +config.py +config.status +config.status.lineno +config.sub +configure +configure.scan +depcomp +.deps/ +INSTALL +install-sh +.libs/ +libtool +libtool.m4 +ltmain.sh +lt~obsolete.m4 +ltoptions.m4 +ltsugar.m4 +ltversion.m4 +Makefile +Makefile.in +mdate-sh +missing +mkinstalldirs +*.pc +py-compile +stamp-h? +symlink-tree +texinfo.tex +ylwrap + +# Do not edit the following section +# Edit Compile Debug Document Distribute +*~ +*.[0-9] +*.[0-9]x +*.bak +*.bin +core +*.dll +*.exe +*-ISO*.bdf +*-JIS*.bdf +*-KOI8*.bdf +*.kld +*.ko +*.ko.cmd +*.lai +*.l[oa] +*.[oa] +*.obj +*.patch +*.so +*.pcf.gz +*.pdb +*.tar.bz2 +*.tar.gz +# +# Add & Override patterns for renderproto +# +# Edit the following section as needed +# For example, !report.pc overrides *.pc. See 'man gitignore' +# diff --git a/renderproto/COPYING b/renderproto/COPYING new file mode 100644 index 0000000..f330a5d --- /dev/null +++ b/renderproto/COPYING @@ -0,0 +1,20 @@ +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. diff --git a/renderproto/Makefile.am b/renderproto/Makefile.am new file mode 100644 index 0000000..a1a75ef --- /dev/null +++ b/renderproto/Makefile.am @@ -0,0 +1,22 @@ +renderdir = $(includedir)/X11/extensions +render_HEADERS = \ + render.h \ + renderproto.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = renderproto.pc + +dist_doc_DATA = renderproto.txt + + +MAINTAINERCLEANFILES = ChangeLog INSTALL + +.PHONY: ChangeLog INSTALL + +INSTALL: + $(INSTALL_CMD) + +ChangeLog: + $(CHANGELOG_CMD) + +dist-hook: ChangeLog INSTALL diff --git a/renderproto/README b/renderproto/README new file mode 100644 index 0000000..c5e9de8 --- /dev/null +++ b/renderproto/README @@ -0,0 +1,30 @@ + X Rendering Extension + +This extension defines the protcol for a digital image composition as +the foundation of a new rendering model within the X Window System. + +Extension name: RENDER + +All questions regarding this software should be directed at the +Xorg mailing list: + + http://lists.freedesktop.org/mailman/listinfo/xorg + +Please submit bug reports to the Xorg bugzilla: + + https://bugs.freedesktop.org/enter_bug.cgi?product=xorg + +The master development code repository can be found at: + + git://anongit.freedesktop.org/git/xorg/proto/renderproto + + http://cgit.freedesktop.org/xorg/proto/renderproto + +For patch submission instructions, see: + + http://www.x.org/wiki/Development/Documentation/SubmittingPatches + +For more information on the git code manager, see: + + http://wiki.x.org/wiki/GitPage + diff --git a/renderproto/autogen.sh b/renderproto/autogen.sh new file mode 100755 index 0000000..904cd67 --- /dev/null +++ b/renderproto/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" diff --git a/renderproto/configure.ac b/renderproto/configure.ac new file mode 100644 index 0000000..8779274 --- /dev/null +++ b/renderproto/configure.ac @@ -0,0 +1,13 @@ +AC_PREREQ([2.60]) +AC_INIT([RenderProto], [0.11], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_MAINTAINER_MODE + +# Require xorg-macros: XORG_DEFAULT_OPTIONS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.3) +XORG_DEFAULT_OPTIONS + +AC_OUTPUT([Makefile + renderproto.pc]) diff --git a/renderproto/render.h b/renderproto/render.h new file mode 100644 index 0000000..1afb1ca --- /dev/null +++ b/renderproto/render.h @@ -0,0 +1,210 @@ +/* + * $XFree86: xc/include/extensions/render.h,v 1.10 2002/11/06 22:47:49 keithp Exp $ + * + * 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 _RENDER_H_ +#define _RENDER_H_ + +typedef XID Glyph; +typedef XID GlyphSet; +typedef XID Picture; +typedef XID PictFormat; + +#define RENDER_NAME "RENDER" +#define RENDER_MAJOR 0 +#define RENDER_MINOR 11 + +#define X_RenderQueryVersion 0 +#define X_RenderQueryPictFormats 1 +#define X_RenderQueryPictIndexValues 2 /* 0.7 */ +#define X_RenderQueryDithers 3 +#define X_RenderCreatePicture 4 +#define X_RenderChangePicture 5 +#define X_RenderSetPictureClipRectangles 6 +#define X_RenderFreePicture 7 +#define X_RenderComposite 8 +#define X_RenderScale 9 +#define X_RenderTrapezoids 10 +#define X_RenderTriangles 11 +#define X_RenderTriStrip 12 +#define X_RenderTriFan 13 +#define X_RenderColorTrapezoids 14 +#define X_RenderColorTriangles 15 +/* #define X_RenderTransform 16 */ +#define X_RenderCreateGlyphSet 17 +#define X_RenderReferenceGlyphSet 18 +#define X_RenderFreeGlyphSet 19 +#define X_RenderAddGlyphs 20 +#define X_RenderAddGlyphsFromPicture 21 +#define X_RenderFreeGlyphs 22 +#define X_RenderCompositeGlyphs8 23 +#define X_RenderCompositeGlyphs16 24 +#define X_RenderCompositeGlyphs32 25 +#define X_RenderFillRectangles 26 +/* 0.5 */ +#define X_RenderCreateCursor 27 +/* 0.6 */ +#define X_RenderSetPictureTransform 28 +#define X_RenderQueryFilters 29 +#define X_RenderSetPictureFilter 30 +/* 0.8 */ +#define X_RenderCreateAnimCursor 31 +/* 0.9 */ +#define X_RenderAddTraps 32 +/* 0.10 */ +#define X_RenderCreateSolidFill 33 +#define X_RenderCreateLinearGradient 34 +#define X_RenderCreateRadialGradient 35 +#define X_RenderCreateConicalGradient 36 +#define RenderNumberRequests (X_RenderCreateConicalGradient+1) + +#define BadPictFormat 0 +#define BadPicture 1 +#define BadPictOp 2 +#define BadGlyphSet 3 +#define BadGlyph 4 +#define RenderNumberErrors (BadGlyph+1) + +#define PictTypeIndexed 0 +#define PictTypeDirect 1 + +#define PictOpMinimum 0 +#define PictOpClear 0 +#define PictOpSrc 1 +#define PictOpDst 2 +#define PictOpOver 3 +#define PictOpOverReverse 4 +#define PictOpIn 5 +#define PictOpInReverse 6 +#define PictOpOut 7 +#define PictOpOutReverse 8 +#define PictOpAtop 9 +#define PictOpAtopReverse 10 +#define PictOpXor 11 +#define PictOpAdd 12 +#define PictOpSaturate 13 +#define PictOpMaximum 13 + +/* + * Operators only available in version 0.2 + */ +#define PictOpDisjointMinimum 0x10 +#define PictOpDisjointClear 0x10 +#define PictOpDisjointSrc 0x11 +#define PictOpDisjointDst 0x12 +#define PictOpDisjointOver 0x13 +#define PictOpDisjointOverReverse 0x14 +#define PictOpDisjointIn 0x15 +#define PictOpDisjointInReverse 0x16 +#define PictOpDisjointOut 0x17 +#define PictOpDisjointOutReverse 0x18 +#define PictOpDisjointAtop 0x19 +#define PictOpDisjointAtopReverse 0x1a +#define PictOpDisjointXor 0x1b +#define PictOpDisjointMaximum 0x1b + +#define PictOpConjointMinimum 0x20 +#define PictOpConjointClear 0x20 +#define PictOpConjointSrc 0x21 +#define PictOpConjointDst 0x22 +#define PictOpConjointOver 0x23 +#define PictOpConjointOverReverse 0x24 +#define PictOpConjointIn 0x25 +#define PictOpConjointInReverse 0x26 +#define PictOpConjointOut 0x27 +#define PictOpConjointOutReverse 0x28 +#define PictOpConjointAtop 0x29 +#define PictOpConjointAtopReverse 0x2a +#define PictOpConjointXor 0x2b +#define PictOpConjointMaximum 0x2b + +/* + * Operators only available in version 0.11 + */ +#define PictOpBlendMinimum 0x30 +#define PictOpMultiply 0x30 +#define PictOpScreen 0x31 +#define PictOpOverlay 0x32 +#define PictOpDarken 0x33 +#define PictOpLighten 0x34 +#define PictOpColorDodge 0x35 +#define PictOpColorBurn 0x36 +#define PictOpHardLight 0x37 +#define PictOpSoftLight 0x38 +#define PictOpDifference 0x39 +#define PictOpExclusion 0x3a +#define PictOpHSLHue 0x3b +#define PictOpHSLSaturation 0x3c +#define PictOpHSLColor 0x3d +#define PictOpHSLLuminosity 0x3e +#define PictOpBlendMaximum 0x3e + +#define PolyEdgeSharp 0 +#define PolyEdgeSmooth 1 + +#define PolyModePrecise 0 +#define PolyModeImprecise 1 + +#define CPRepeat (1 << 0) +#define CPAlphaMap (1 << 1) +#define CPAlphaXOrigin (1 << 2) +#define CPAlphaYOrigin (1 << 3) +#define CPClipXOrigin (1 << 4) +#define CPClipYOrigin (1 << 5) +#define CPClipMask (1 << 6) +#define CPGraphicsExposure (1 << 7) +#define CPSubwindowMode (1 << 8) +#define CPPolyEdge (1 << 9) +#define CPPolyMode (1 << 10) +#define CPDither (1 << 11) +#define CPComponentAlpha (1 << 12) +#define CPLastBit 12 + +/* Filters included in 0.6 */ +#define FilterNearest "nearest" +#define FilterBilinear "bilinear" +/* Filters included in 0.10 */ +#define FilterConvolution "convolution" + +#define FilterFast "fast" +#define FilterGood "good" +#define FilterBest "best" + +#define FilterAliasNone -1 + +/* Subpixel orders included in 0.6 */ +#define SubPixelUnknown 0 +#define SubPixelHorizontalRGB 1 +#define SubPixelHorizontalBGR 2 +#define SubPixelVerticalRGB 3 +#define SubPixelVerticalBGR 4 +#define SubPixelNone 5 + +/* Extended repeat attributes included in 0.10 */ +#define RepeatNone 0 +#define RepeatNormal 1 +#define RepeatPad 2 +#define RepeatReflect 3 + +#endif /* _RENDER_H_ */ diff --git a/renderproto/renderproto.h b/renderproto/renderproto.h new file mode 100644 index 0000000..ffe0639 --- /dev/null +++ b/renderproto/renderproto.h @@ -0,0 +1,663 @@ +/* + * $XFree86: xc/include/extensions/renderproto.h,v 1.12 2002/09/26 02:56:48 keithp Exp $ + * + * 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 _XRENDERP_H_ +#define _XRENDERP_H_ + +#include +#include + +#define Window CARD32 +#define Drawable CARD32 +#define Font CARD32 +#define Pixmap CARD32 +#define Cursor CARD32 +#define Colormap CARD32 +#define GContext CARD32 +#define Atom CARD32 +#define VisualID CARD32 +#define Time CARD32 +#define KeyCode CARD8 +#define KeySym CARD32 + +#define Picture CARD32 +#define PictFormat CARD32 +#define Fixed INT32 +#define Glyphset CARD32 + +/* + * data structures + */ + +typedef struct { + CARD16 red B16; + CARD16 redMask B16; + CARD16 green B16; + CARD16 greenMask B16; + CARD16 blue B16; + CARD16 blueMask B16; + CARD16 alpha B16; + CARD16 alphaMask B16; +} xDirectFormat; + +#define sz_xDirectFormat 16 + +typedef struct { + PictFormat id B32; + CARD8 type; + CARD8 depth; + CARD16 pad1 B16; + xDirectFormat direct; + Colormap colormap; +} xPictFormInfo; + +#define sz_xPictFormInfo 28 + +typedef struct { + VisualID visual; + PictFormat format; +} xPictVisual; + +#define sz_xPictVisual 8 + +typedef struct { + CARD8 depth; + CARD8 pad1; + CARD16 nPictVisuals B16; + CARD32 pad2 B32; +} xPictDepth; + +#define sz_xPictDepth 8 + +typedef struct { + CARD32 nDepth B32; + PictFormat fallback B32; +} xPictScreen; + +#define sz_xPictScreen 8 + +typedef struct { + CARD32 pixel B32; + CARD16 red B16; + CARD16 green B16; + CARD16 blue B16; + CARD16 alpha B16; +} xIndexValue; + +#define sz_xIndexValue 12 + +typedef struct { + CARD16 red B16; + CARD16 green B16; + CARD16 blue B16; + CARD16 alpha B16; +} xRenderColor; + +#define sz_xRenderColor 8 + +typedef struct { + Fixed x B32; + Fixed y B32; +} xPointFixed; + +#define sz_xPointFixed 8 + +typedef struct { + xPointFixed p1; + xPointFixed p2; +} xLineFixed; + +#define sz_xLineFixed 16 + +typedef struct { + xPointFixed p1, p2, p3; +} xTriangle; + +#define sz_xTriangle 24 + +typedef struct { + Fixed top B32; + Fixed bottom B32; + xLineFixed left; + xLineFixed right; +} xTrapezoid; + +#define sz_xTrapezoid 40 + +typedef struct { + CARD16 width B16; + CARD16 height B16; + INT16 x B16; + INT16 y B16; + INT16 xOff B16; + INT16 yOff B16; +} xGlyphInfo; + +#define sz_xGlyphInfo 12 + +typedef struct { + CARD8 len; + CARD8 pad1; + CARD16 pad2; + INT16 deltax; + INT16 deltay; +} xGlyphElt; + +#define sz_xGlyphElt 8 + +typedef struct { + Fixed l, r, y; +} xSpanFix; + +#define sz_xSpanFix 12 + +typedef struct { + xSpanFix top, bot; +} xTrap; + +#define sz_xTrap 24 + +/* + * requests and replies + */ +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD32 majorVersion B32; + CARD32 minorVersion B32; +} xRenderQueryVersionReq; + +#define sz_xRenderQueryVersionReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 majorVersion B32; + CARD32 minorVersion B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xRenderQueryVersionReply; + +#define sz_xRenderQueryVersionReply 32 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; +} xRenderQueryPictFormatsReq; + +#define sz_xRenderQueryPictFormatsReq 4 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 numFormats B32; + CARD32 numScreens B32; + CARD32 numDepths B32; + CARD32 numVisuals B32; + CARD32 numSubpixel B32; /* Version 0.6 */ + CARD32 pad5 B32; +} xRenderQueryPictFormatsReply; + +#define sz_xRenderQueryPictFormatsReply 32 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + PictFormat format B32; +} xRenderQueryPictIndexValuesReq; + +#define sz_xRenderQueryPictIndexValuesReq 8 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 numIndexValues; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xRenderQueryPictIndexValuesReply; + +#define sz_xRenderQueryPictIndexValuesReply 32 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture pid B32; + Drawable drawable B32; + PictFormat format B32; + CARD32 mask B32; +} xRenderCreatePictureReq; + +#define sz_xRenderCreatePictureReq 20 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture B32; + CARD32 mask B32; +} xRenderChangePictureReq; + +#define sz_xRenderChangePictureReq 12 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture B32; + INT16 xOrigin B16; + INT16 yOrigin B16; +} xRenderSetPictureClipRectanglesReq; + +#define sz_xRenderSetPictureClipRectanglesReq 12 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture B32; +} xRenderFreePictureReq; + +#define sz_xRenderFreePictureReq 8 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture mask B32; + Picture dst B32; + INT16 xSrc B16; + INT16 ySrc B16; + INT16 xMask B16; + INT16 yMask B16; + INT16 xDst B16; + INT16 yDst B16; + CARD16 width B16; + CARD16 height B16; +} xRenderCompositeReq; + +#define sz_xRenderCompositeReq 36 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture src B32; + Picture dst B32; + CARD32 colorScale B32; + CARD32 alphaScale B32; + INT16 xSrc B16; + INT16 ySrc B16; + INT16 xDst B16; + INT16 yDst B16; + CARD16 width B16; + CARD16 height B16; +} xRenderScaleReq; + +#define sz_xRenderScaleReq 32 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture dst B32; + PictFormat maskFormat B32; + INT16 xSrc B16; + INT16 ySrc B16; +} xRenderTrapezoidsReq; + +#define sz_xRenderTrapezoidsReq 24 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture dst B32; + PictFormat maskFormat B32; + INT16 xSrc B16; + INT16 ySrc B16; +} xRenderTrianglesReq; + +#define sz_xRenderTrianglesReq 24 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture dst B32; + PictFormat maskFormat B32; + INT16 xSrc B16; + INT16 ySrc B16; +} xRenderTriStripReq; + +#define sz_xRenderTriStripReq 24 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture dst B32; + PictFormat maskFormat B32; + INT16 xSrc B16; + INT16 ySrc B16; +} xRenderTriFanReq; + +#define sz_xRenderTriFanReq 24 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Glyphset gsid B32; + PictFormat format B32; +} xRenderCreateGlyphSetReq; + +#define sz_xRenderCreateGlyphSetReq 12 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Glyphset gsid B32; + Glyphset existing B32; +} xRenderReferenceGlyphSetReq; + +#define sz_xRenderReferenceGlyphSetReq 24 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Glyphset glyphset B32; +} xRenderFreeGlyphSetReq; + +#define sz_xRenderFreeGlyphSetReq 8 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Glyphset glyphset B32; + CARD32 nglyphs; +} xRenderAddGlyphsReq; + +#define sz_xRenderAddGlyphsReq 12 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Glyphset glyphset B32; +} xRenderFreeGlyphsReq; + +#define sz_xRenderFreeGlyphsReq 8 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture src B32; + Picture dst B32; + PictFormat maskFormat B32; + Glyphset glyphset B32; + INT16 xSrc B16; + INT16 ySrc B16; +} xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req, +xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req; + +#define sz_xRenderCompositeGlyphs8Req 28 +#define sz_xRenderCompositeGlyphs16Req 28 +#define sz_xRenderCompositeGlyphs32Req 28 + +/* 0.1 and higher */ + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + CARD8 op; + CARD8 pad1; + CARD16 pad2 B16; + Picture dst B32; + xRenderColor color; +} xRenderFillRectanglesReq; + +#define sz_xRenderFillRectanglesReq 20 + +/* 0.5 and higher */ + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Cursor cid B32; + Picture src B32; + CARD16 x B16; + CARD16 y B16; +} xRenderCreateCursorReq; + +#define sz_xRenderCreateCursorReq 16 + +/* 0.6 and higher */ + +/* + * This can't use an array because 32-bit values may be in bitfields + */ +typedef struct { + Fixed matrix11 B32; + Fixed matrix12 B32; + Fixed matrix13 B32; + Fixed matrix21 B32; + Fixed matrix22 B32; + Fixed matrix23 B32; + Fixed matrix31 B32; + Fixed matrix32 B32; + Fixed matrix33 B32; +} xRenderTransform; + +#define sz_xRenderTransform 36 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture B32; + xRenderTransform transform; +} xRenderSetPictureTransformReq; + +#define sz_xRenderSetPictureTransformReq 44 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Drawable drawable B32; +} xRenderQueryFiltersReq; + +#define sz_xRenderQueryFiltersReq 8 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 numAliases B32; /* LISTofCARD16 */ + CARD32 numFilters B32; /* LISTofSTRING8 */ + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xRenderQueryFiltersReply; + +#define sz_xRenderQueryFiltersReply 32 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture B32; + CARD16 nbytes B16; /* number of bytes in name */ + CARD16 pad B16; +} xRenderSetPictureFilterReq; + +#define sz_xRenderSetPictureFilterReq 12 + +/* 0.8 and higher */ + +typedef struct { + Cursor cursor B32; + CARD32 delay B32; +} xAnimCursorElt; + +#define sz_xAnimCursorElt 8 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Cursor cid B32; +} xRenderCreateAnimCursorReq; + +#define sz_xRenderCreateAnimCursorReq 8 + +/* 0.9 and higher */ + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture picture; + INT16 xOff B16; + INT16 yOff B16; +} xRenderAddTrapsReq; + +#define sz_xRenderAddTrapsReq 12 + +/* 0.10 and higher */ + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture pid B32; + xRenderColor color; +} xRenderCreateSolidFillReq; + +#define sz_xRenderCreateSolidFillReq 16 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture pid B32; + xPointFixed p1; + xPointFixed p2; + CARD32 nStops; +} xRenderCreateLinearGradientReq; + +#define sz_xRenderCreateLinearGradientReq 28 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture pid B32; + xPointFixed inner; + xPointFixed outer; + Fixed inner_radius; + Fixed outer_radius; + CARD32 nStops; +} xRenderCreateRadialGradientReq; + +#define sz_xRenderCreateRadialGradientReq 36 + +typedef struct { + CARD8 reqType; + CARD8 renderReqType; + CARD16 length B16; + Picture pid B32; + xPointFixed center; + Fixed angle; /* in degrees */ + CARD32 nStops; +} xRenderCreateConicalGradientReq; + +#define sz_xRenderCreateConicalGradientReq 24 + +#undef Window +#undef Drawable +#undef Font +#undef Pixmap +#undef Cursor +#undef Colormap +#undef GContext +#undef Atom +#undef VisualID +#undef Time +#undef KeyCode +#undef KeySym + +#undef Picture +#undef PictFormat +#undef Fixed +#undef Glyphset + +#endif /* _XRENDERP_H_ */ diff --git a/renderproto/renderproto.pc.in b/renderproto/renderproto.pc.in new file mode 100644 index 0000000..17331e9 --- /dev/null +++ b/renderproto/renderproto.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: RenderProto +Description: Render extension headers +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} diff --git a/renderproto/renderproto.txt b/renderproto/renderproto.txt new file mode 100644 index 0000000..a736ba7 --- /dev/null +++ b/renderproto/renderproto.txt @@ -0,0 +1,1207 @@ + The X Rendering Extension + Version 0.11 + 2009-07-15 + Keith Packard + keithp@keithp.com + +1. Introduction + +The X Rendering Extension (Render) introduces digital image composition as +the foundation of a new rendering model within the X Window System. +Rendering geometric figures is accomplished by client-side tessellation into +either triangles or trapezoids. Text is drawn by loading glyphs into the +server and rendering sets of them. + +2. Acknowledgments + +This extension was the work of many people, in particular: + + + Thomas Porter and Tom Duff for their formal description + of image compositing. + + + Rob Pike and Russ Cox who designed the Plan 9 window system from + which the compositing model was lifted. + + + Juliusz Chroboczek and Raph Levien whose proposal for client-side + glyph management eliminated font handling from the X server. + + + Jon Leech, Brad Grantham and Allen Akin for patiently explaining + how OpenGL works. + + + Carl Worth for providing the sample implementation of + trapezoid rendering and showing how broken the spec was + + + Sam Pottle and Jamey Sharp for helping demonstrate the correctness + of the trapezoid specification. + + + Owen Taylor for helping specify projective transformations + +3. Rendering Model + +Render provides a single rendering operation which can be used in a variety of +ways to generate images: + + dest = (source IN mask) OP dest + +Where 'IN' is the Porter/Duff operator of that name and 'OP' is any of the +list of compositing operators described below, among which can be found all +of the Porter/Duff binary operators. + +To use this operator several additional values are required: + + + The destination rectangle. This is a subset of the destination + within which the rendering is performed. + + + The source location. This identifies the coordinate in the + source aligned with the upper left corner of the + destination rectangle. + + + The mask location. This identifies the coordinate in the + mask aligned with the upper left corner of the + destination rectangle. + + + A clip list. This limits the rendering to the intersection of the + destination rectangle with this clip list. + + + The OP to use + + + Whether the source should be repeated to cover the destination + rectangle, extended with a constant pixel value or extended by + using the nearest available source pixel. + + + Whether the mask should be repeated to cover the destination + rectangle, extended with a constant pixel value or extended by + using the nearest available mask pixel. + + + Whether the mask has a single alpha value for all four channels or + whether each mask channel should affect the associated source/dest + channels. + + + Whether the source should be reshaped with a projective + transformation, and if so, what filter to apply while + resampling the data. + + + Whether the mask should be reshaped with a projective + transformation, and if so, what filter to apply while + resampling the data. + +These parameters are variously attached to the operands or included in each +rendering request. + +4. Data types + +The core protocol rendering system uses a pixel model and applies color only +in the final generation of the video signal. A compositing model operates +on colors, not pixel values so a new datatype is needed to interpret data as +color instead of just bits. + +The "PictFormat" object holds information needed to translate pixel values +into red, green, blue and alpha channels. The server has a list of picture +formats corresponding to the various visuals on the screen. There are two +classes of formats, Indexed and Direct. Indexed PictFormats hold a list of +pixel values and RGBA values while Direct PictFormats hold bit masks for each +of R, G, B and A. + +The "Picture" object contains a Drawable, a PictFormat and some +rendering state. More than one Picture can refer to the same Drawable. + +5. Errors + +Errors are sent using core X error reports. + +PictFormat + A value for a PICTFORMAT argument does not name a defined PICTFORMAT. + +Picture + A value for a PICTURE argument does not name a defined PICTURE. + +PictOp + A value for a PICTOP argument does not name a defined PICTOP. + +GlyphSet + A value for a GLYPHSET argument does not name a defined GLYPHSET. + +Glyph + A value for a GLYPH argument does not name a defined GLYPH in the + glyphset. + +6. Protocol Types + +PICTURE 32-bit value (top three bits guaranteed to be zero) +PICTFORMAT 32-bit value (top three bits guaranteed to be zero) +PICTTYPE { Indexed, Direct } +PICTOP { Clear, Src, Dst, Over, OverReverse, In, InReverse, + Out, OutReverse, Atop, AtopReverse, Xor, Add, Saturate, + DisjointClear, DisjointSrc, DisjointDst, DisjointOver, + DisjointOverReverse, DisjointIn, DisjointInReverse, + DisjointOut, DisjointOutReverse, DisjointAtop, + DisjointAtopReverse, DisjointXor, + ConjointClear, ConjointSrc, ConjointDst, ConjointOver, + ConjointOverReverse, ConjointIn, ConjointInReverse, + ConjointOut, ConjointOutReverse, ConjointAtop, + ConjointAtopReverse, ConjointXor, + Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, + ColorBurn, HardLight, SoftLight, Difference, Exclusion, + HSLHue, HSLSaturation, HSLColor, HSLLuminosity + } +SUBPIXEL { Unknown, HorizontalRGB, HorizontalBGR, + VerticalRGB, VerticalBGR, None + } +COLOR [ + red, green, blue, alpha: CARD16 + ] +CHANNELMASK [ + shift, mask: CARD16 + ] +DIRECTFORMAT [ + red, green, blue, alpha: CHANNELMASK + ] +INDEXVALUE [ + pixel: Pixel; + red, green, blue, alpha: CARD16 + ] +PICTFORMINFO [ + id: PICTFORMAT + type: PICTTYPE + depth: CARD8 + direct: DIRECTFORMAT + colormap: COLORMAP or None + ] + +PICTVISUAL [ + visual: VISUALID or None + format: PICTFORMAT + ] + +PICTDEPTH [ + depth: CARD8 + visuals: LISTofPICTVISUAL + ] + +PICTSCREEN LISTofPICTDEPTH + +FIXED 32-bit value (top 16 are integer portion, bottom 16 are fraction) +TRANSFORM [ + p11, p12, p13: FIXED + p21, p22, p23: FIXED + p31, p32, p33: FIXED + ] +POINTFIX [ + x, y: FIXED + ] +POLYEDGE { Sharp, Smooth } +POLYMODE { Precise, Imprecise } +REPEAT { None, Regular, Pad, Reflect } +COLORPOINT [ + point: POINTFIX + color: COLOR + ] +SPANFIX [ + left, right, y: FIXED + ] +COLORSPANFIX [ + left, right, y: FIXED + left_color: COLOR + right_color: COLOR +QUAD [ + p1, p2, p3, p4: POINTFIX + ] +TRIANGLE [ + p1, p2, p3: POINTFIX + ] +LINEFIX [ + p1, p2: POINTFIX + ] +TRAP [ + top, bottom: SPANFIX + ] +TRAPEZOID [ + top, bottom: FIXED + left, right: LINEFIX + ] +(TRAPEZOID is deprecated) +GLYPHSET 32-bit value (top three bits guaranteed to be zero) +GLYPH 32-bit value +GLYPHINFO [ + width, height: CARD16 + x, y: INT16 + off-x, off-y: INT16 + ] +PICTGLYPH [ + info: GLYPHINFO + x, y: INT16 + ] +GLYPHABLE GLYPHSET or FONTABLE +GLYPHELT8 [ + dx, dy: INT16 + glyphs: LISTofCARD8 + ] +GLYPHITEM8 GLYPHELT8 or GLYPHABLE +GLYPHELT16 [ + dx, dy: INT16 + glyphs: LISTofCARD16 + ] +GLYPHITEM16 GLYPHELT16 or GLYPHABLE +GLYPHELT32 [ + dx, dy: INT16 + glyphs: LISTofCARD32 + ] +GLYPHITEM32 GLYPHELT32 or GLYPHABLE + +ANIMCURSORELT [ + cursor: CURSOR + delay: CARD32 + ] +7. Standard PictFormats + +The server must support a Direct PictFormat with 8 bits each of red, green, +blue and alpha as well as a Direct PictFormat with 8 bits of red, green and +blue and 0 bits of alpha. The server must also support Direct PictFormats +with 1, 4 and 8 bits of alpha and 0 bits of r, g and b. + +Pixel component values lie in the close range [0,1]. These values are +encoded in a varying number of bits. Values are encoded in a straight +forward manner. For a component encoded in m bits, a binary encoding b +is equal to a component value of b/(2^m-1). + +A Direct PictFormat with zero bits of alpha component is declared to have +alpha == 1 everywhere. A Direct PictFormat with zero bits of red, green and +blue is declared to have red, green, blue == 0 everywhere. If any of red, +green or blue components are of zero size, all are of zero size. Direct +PictFormats never have colormaps and are therefore screen independent. + +Indexed PictFormats never have alpha channels and the direct component is all +zeros. Indexed PictFormats always have a colormap in which the specified +colors are allocated read-only and are therefore screen dependent. Drawing +to in Indexed Picture uses only pixel values listed by QueryPictIndexValues. +Reading from an Indexed Picture uses red, green and blue values from the +colormap and alpha values from those listed by QueryPictIndexValues. Pixel +values not present in QueryPictIndexValues are given alpha values of 1. + +8. Compositing Operators + +For each pixel, the four channels of the image are computed with: + + C = Ca * Fa + Cb * Fb + +where C, Ca, Cb are the values of the respective channels and Fa and Fb +come from the following table: + + PictOp Fa Fb + -------------------------------------------------- + Clear 0 0 + Src 1 0 + Dst 0 1 + Over 1 1-Aa + OverReverse 1-Ab 1 + In Ab 0 + InReverse 0 Aa + Out 1-Ab 0 + OutReverse 0 1-Aa + Atop Ab 1-Aa + AtopReverse 1-Ab Aa + Xor 1-Ab 1-Aa + Add 1 1 + Saturate min(1,(1-Ab)/Aa) 1 + DisjointClear 0 0 + DisjointSrc 1 0 + DisjointDst 0 1 + DisjointOver 1 min(1,(1-Aa)/Ab) + DisjointOverReverse min(1,(1-Ab)/Aa) 1 + DisjointIn max(1-(1-Ab)/Aa,0) 0 + DisjointInReverse 0 max(1-(1-Aa)/Ab,0) + DisjointOut min(1,(1-Ab)/Aa) 0 + DisjointOutReverse 0 min(1,(1-Aa)/Ab) + DisjointAtop max(1-(1-Ab)/Aa,0) min(1,(1-Aa)/Ab) + DisjointAtopReverse min(1,(1-Ab)/Aa) max(1-(1-Aa)/Ab,0) + DisjointXor min(1,(1-Ab)/Aa) min(1,(1-Aa)/Ab) + ConjointClear 0 0 + ConjointSrc 1 0 + ConjointDst 0 1 + ConjointOver 1 max(1-Aa/Ab,0) + ConjointOverReverse max(1-Ab/Aa,0) 1 + ConjointIn min(1,Ab/Aa) 0 + ConjointInReverse 0 min(Aa/Ab,1) + ConjointOut max(1-Ab/Aa,0) 0 + ConjointOutReverse 0 max(1-Aa/Ab,0) + ConjointAtop min(1,Ab/Aa) max(1-Aa/Ab,0) + ConjointAtopReverse max(1-Ab/Aa,0) min(1,Aa/Ab) + ConjointXor max(1-Ab/Aa,0) max(1-Aa/Ab,0) + +Saturate and DisjointOverReverse are the same. They match OpenGL +compositing with FUNC_ADD, SRC_ALPHA_SATURATE, ONE, except that Render uses +premultiplied alpha while Open GL uses non-premultiplied alpha. + +The result of any compositing operator is always limited to the range +[0,1] for each component. Components whose value would be greater than 1 +are set to 1. + +For operations involving division, when the divisor is zero, define the +quotient to be positive infinity. The result is always well defined +because the division is surrounded with a max or min operator which will +give a finite result. + +When the mask contains separate alpha values for each channel, the +alpha value resulting from the combination of that value with the source +alpha channel is used in the final image composition. + +9. Source and Mask Transformations + +When fetching pixels from the source or mask pictures, Render provides four +options for pixel values which fall outside the drawable (this includes +pixels within a window geometry obscured by other windows). + + + None. Missing values are replaced with transparent. + + + Pad. Replace missing pixels with the nearest available + pixel. Where multiple pixels are equidistant, select + those with smallest Y and then smallest X coordinates + + + Normal. Select the pixel which would appear were the + drawable tiled to enclose the missing coordinate. If + the tiling doesn't cover the coordinate, use the + selected Constant or Nearest mode. + + * Reflect. Select the pixel which would appear were the + drawable tiled to enclose the missing coordinate in such a + way that tiles in even numbered columns are reflected in the Y + axis, and tiles in even numbered rows are reflected in the X + axis. Tiles that in both an even numbered row and an even + numbered column are reflected in both axes. + +To construct the source and mask operands, the computed pixels values are +transformed through a homogeneous matrix, filtered and then used in the +fundamental rendering operator described above. Each screen provides a list +of supported filter names. There are a few required filters, and several +required filter alias which must map to one of the available filters. + +10. Polygon Rasterization + +Render provides only two kinds of polygons, trapezoids and triangles. To +improve efficiency, several different wire encodings exist for each. + +All trapezoids must be convex. Rendering of concave trapezoids is unspecified +except that the result must obey the clipping rules. + +Composite +Polygons are rasterized by implicit generating an alpha mask and using that +in the general compositing operator along with a supplied source image: + + tmp = Rasterize (polygon) + Composite (op, dst, src, tmp) + +When rasterized with Sharp edges, the mask is computed with a depth of 1 so +that all of the mask values are either 0 or 1. + +When rasterized with Smooth edges, the mask is generated by creating a square +around each pixel coordinate and computing the amount of that square covered +by the polygon. This ignores sampling theory but it provides a precise +definition which is close to the right answer. This value is truncated to +the alpha width in the fallback format before application of the compositing +operator. + +Rasterization +Alpha values are generated by point sampling the coverage of a square +surrounding the center of each pixel by the polygon. + +In Precise poly mode, the sample points are located in a regular grid. When +alpha depth 'e' is even, the regular grid is 2**(e/2) + 1 samples wide and +2**(e/2) -1 samples high. For odd alpha depth 'o', the sample grid is 2**o +- 1 samples wide and 1 sample high. Note that odd alpha depth usually +occurs only at depth 1, so this misshapen sample grid has no ill effects. +The sample grid is centered within the pixel and then each sample point is +rounded down to a point on the sub-pixel coordinate grid. + +In Imprecise mode, the location of the sample points is not specified, but +the implementation must conform to the following constraints: + + + Abutting edges must match precisely. When specifying two polygons + abutting along a common edge, if that edge is specified with the + same coordinates in each polygon then the sum of alpha values for + pixels inside the union of the two polygons must be precisely one. + + + Translationally invariant. The pixelization of the polygon must + be the same when either the polygon or the target drawable + are translated by any whole number of pixels in any direction. + + + Sharp edges are honored. When the polygon is rasterized with Sharp + edges, the implicit alpha mask will contain only 1 or 0 for + each pixel. + + + Order independent. Two identical polygons specified with vertices + in different orders must generate identical results. + +11. Image Filtering + +When computing pixels from source and mask images, a filter may be applied +to the data. This is usually used with a non-identity transformation +matrix, but filtering may be applied with an identity transformation. + +Each filter is given a unique name encoded as an ISO Latin-1 string. +Filters may be configured with a list of fixed point values; the number of +parameters and their interpretation is currently left to conventions passed +outside of the protocol. A set of standard filters are required to be +provided: + + Filter Name Description + + nearest Nearest neighbor filtering + bilinear Linear interpolation in two dimensions + +Additional names may be provided for any filter as aliases. A set of +standard alias names are required to be mapped to a provided filter so that +applications can use the alias names without checking for availability. + + Alias name Intended interpretation + + fast High performance, quality similar to Nearest + good Reasonable performance, quality similar to Bilinear + best Highest quality available, performance may not + be suitable for interactive use + +Aliases must map directly to a non-aliased filter name. + +There is also a set of standard filters which are not required but may be +provided. If they are provided, using the standard name, they must match +the definition specified here. + + Filter Name Description + + convolution MxN convolution filter. The values specified + in SetPictureFilter are M, N and then M * N + filter parameters. M and N must be integers + represented as fixed point numbers. + gaussian Gaussian blur. The value specified is a radius + in pixels (which can be fractional). A standard + Gaussian 2D convolution filter will be applied. + binomial Binomial blur. An approximation of a Gaussian + blur using binomial coefficients + +12. Glyph Rendering + +Glyphs are small alpha masks which can be stored in the X server and +rendered by referring to them by name. A set of glyphs can be rendered in a +single request. Glyphs are positioned by subtracting the x, y elements of +the GLYPHINFO from the requested rendering position. The next glyph +rendering position is set to the current rendering position plus the off-x +and off-y elements. + +Glyphs are stored in GlyphSets and are named within the GlyphSet with +client-specified 32-bit numbers. + +Glyphs can be stored in any PictFormat supported by the server. All glyphs +in a GlyphSet are stored in the same format. + +13. Extension Initialization + +The client must negotiate the version of the extension before executing +extension requests. Behavior of the server is undefined otherwise. + +QueryVersion + + client-major-version: CARD32 + client-minor-version: CARD32 + + -> + + major-version: CARD32 + minor-version: CARD32 + + The client sends the highest supported version to the server and + the server sends the highest version it supports, but no higher than + the requested version. Major versions changes can introduce + incompatibilities in existing functionality, minor version + changes introduce only backward compatible changes. It is + the clients responsibility to ensure that the server supports + a version which is compatible with its expectations. + +QueryPictFormats + + -> + + fallback: PICTFORMAT + formats: LISTofPICTFORMINFO + screens: LISTofPICTSCREEN + subpixels: LISTofSUBPIXEL + + Errors: + + + The server responds with a list of supported PictFormats and + a list of which PictFormat goes with each visual on each screen. + Every PictFormat must match a supported depth, but not every + PictFormat need have a matching visual. + + The fallback format is used as an intermediate representation + in cases where there is no ideal choice. + + The relationship between the red, green and blue elements making + up each pixel indexed by screen is returned in subpixels. + This list is not present in servers advertising protocol + versions earlier than 0.6. This list may be shorter than + the number of screens, in which case the remaining screens + are given sub pixel order Unknown. + +QueryPictIndexValues + + format: PICTFORMAT + + -> + + values: LISTofINDEXVALUE + + Errors: + PictFormat, Match + + Returns the mapping from pixel values to RGBA values for the + specified Indexed PictFormat. If 'format' does not refer to + an Indexed PictFormat a Match error is generated. + +QueryFilters + + drawable: DRAWABLE + + -> + + filters: LISTofSTRING8 + aliases: LISTofCARD16 + + +14. Extension Requests + +CreatePicture + + pid: PICTURE + drawable: DRAWABLE + format: PICTFORMAT + value-mask: BITMASK + value-list: LISTofVALUE + + Errors: + Alloc, Drawable, IDChoice, Match, Pixmap, Picture, + PictFormat, Value + + This request creates a Picture object associated with the specified + drawable and assigns the identifier pid to it. Pixel data in the + image are interpreted according to 'format'. It is a Match error + to specify a format with a different depth than the drawable. If + the drawable is a Window then the Red, Green and Blue masks must + match those in the visual for the window else a Match error is + generated. + + The value-mask and value-list specify attributes of the picture that + are to be explicitly initialized. The possible values are: + + repeat: REPEAT + alpha-map: PICTURE or None + alpha-x-origin: INT16 + alpha-y-origin: INT16 + clip-x-origin: INT16 + clip-y-origin: INT16 + clip-mask: PIXMAP or None + graphics-exposures: BOOL + subwindow-mode: { ClipByChildren, IncludeInferiors } + poly-edge: POLYEDGE + poly-mode: POLYMODE + dither: ATOM or None + component-alpha: BOOL + + When used as a source or mask operand, Repeat indicates how the + drawable contents should be extented in both directions. + + The alpha channel of alpha-map is used in place of any alpha channel + contained within the drawable for all rendering operations. The + alpha-mask origin is interpreted relative to the origin of drawable. + Rendering is additionally clipped by the geometry and clip mask of + alpha-map. Exposures to the window do not affect the contents of + alpha-map. Alpha-map must refer to a picture containing a Pixmap, + not a Window (or a Match error results). + + The clip-mask restricts reads and writes to drawable. Only pixels + where the clip-mask has bits set to 1 are read or written. Pixels + are not accessed outside the area covered by the clip-mask or where + the clip-mask has bits set to 0. The clip-mask affects all graphics + requests, including sources. The clip-mask origin is interpreted + relative to the origin of the picture. If a pixmap is specified as + the clip-mask, it must have depth 1 and have the same root as the + drawable (or a Match error results). If clip-mask is None, then + pixels are always drawn, regardless of the clip origin. The + clip-mask can also be set with the SetPictureClipRectangles request. + Transformations, filters and repeat modes do not affect the clip + mask. + + When a window is used as a destination, the subwindow_mode + determines what happens to pixels obscured by inferior + windows. For ClipByChildren the window is clipped by inferiors + and siblings. For IncludeInferior, the window is clipped by + siblings, but not by inferiors. + + When a window is used as source or mask, the subwindow_mode is + ignored. Pixels that are obscured by other windows, whether + siblings or inferiors, have undefined contents. + + The graphics-exposures flag is ignored. GraphicsExposure events are + never generated by this extension. + + Poly-edge and poly-mode control the rasterization of polygons as + described above. + + Dither is ignored. + + Component-alpha indicates whether each image component is intended as + a separate alpha value when the picture is used as a mask operand. + + The default component values are + + Component Default + ------------------------------- + repeat None + clip-x-origin 0 + clip-y-origin 0 + clip-mask None + subwindow-mode ClipByChildren + poly-edge Smooth + poly-mode Precise + component-alpha False + +ChangePicture + + pid: PICTURE + value-mask: BITMASK + value-list: LISTofVALUE + + Errors: + Picture, Alloc, Pixmap, PictOp, Value + + The value-mask and value-list specify which attributes are to be + changed. The values and restrictions are the same as for + CreatePicture. + +SetPictureClipRectangles + + picture: PICTURE + clip-x-origin: INT16 + clip-y-origin: INT16 + rectangles: LISTofRECTANGLE + + Errors: + Alloc, Picture + + This request changes clip-mask in picture to the specified list of + rectangles and sets the clip origin. Input and output will be + clipped to remain contained within the rectangles. The clip origin + is interpreted relative to the origin of picture after + transformations and repeats have been applied. The rectangle + coordinates are interpreted relative to the clip origin. + + The list of rectangles can be empty, which effectively disables + output. This is the opposite of passing None as the clip-mask in + CreatePicture and ChangePicture. + + Note that output is clipped to the union of all of the rectangles + and that no particular ordering among the rectangles is required. + +SetPictureTransform + + picture: PICTURE + transform: TRANSFORM + + Errors: + Alloc, Value, Picture + + This request changes the projective transformation used to + map coordinates when 'picture' is used as the source or + mask in any compositing operation. The transform + maps from destination pixel geometry back to the source pixel + geometry. + + The matrix must be invertable, else a Value error is generated. + +SetPictureFilter + + picture: PICTURE + filter: STRING8 + values: LISTofFIXED + + Errors: + Value, Match, Picture + + This request sets the current filter used when picture is a source + or mask operand. Filter must be one of the filters supported + for the screen associated with picture, else a Match error + is generated. If the filter accepts additional parameters, + they can be provided in values, incorrect values generate Value + errors, too many values generate Match errors. Too few values + cause the filter to assume default values for the missing + parameters. + + When created, Pictures are set to the Nearest filter. + +FreePicture + + pid: PICTURE + + Errors: + Picture + + This request deletes the association between the resource ID and the + picture. The picture storage will be freed when no other resource + references it. + +Composite + + op: PICTOP + src: PICTURE + mask: PICTURE or None + dst: PICTURE + src-x, src-y: INT16 + mask-x, mask-y: INT16 + dst-x, dst-y: INT16 + width, height: CARD16 + + This request combines the specified rectangle of the transformed + src and mask operands with the specified rectangle of dst using op + as the compositing operator. The coordinates are relative their + respective (transformed) drawable's origin. Rendering is clipped + to the geometry of the dst drawable and then to the dst clip-list. + + Pixels outside the geometry of src or mask needed for this + computation are substituted as described in the Source and Mask + Transformations section above. + + If src, mask and dst are not in the same format, and one of their + formats can hold all without loss of precision, they are converted + to that format. Alternatively, the server will convert each + operand to the fallback format. + + If mask is None, it is replaced by a constant alpha value of 1. + +FillRectangles + + op: PICTOP + dst: PICTURE + color: COLOR + rects: LISTofRECTANGLE + + This request combines color with the destination drawable in the + area specified by rects. Each rectangle is combined separately; + overlapping areas will be rendered multiple times. The effect is + equivalent to compositing with a repeating source picture filled with + the specified color. + +Trapezoids + + op: PICTOP + src: PICTURE + src-x, src-y: INT16 + dst: PICTURE + mask-format: PICTFORMAT or None + traps: LISTofTRAPEZOID + + This request rasterizes the list of trapezoids. + + For each trap, the area between the left and right edges is filled + from the top to the bottom. src-x and src-y register the pattern to + the floor of the top x and y coordinate of the left edge of the + first trapezoid, they are adjusted for subsequent trapezoids so that + the pattern remains globally aligned within the destination. + + When mask-format is not None, trapezoids are rendered in the + following way with the effective mask computed in mask-format: + + tmp = temporary alpha picture (in mask-format) + Combine (Zero, tmp, tmp, None) + for each trapezoid + Combine (Add, tmp, trapezoid, None) + Combine (op, dst, source, tmp) + + When mask-format is None, trapezoids are rendered in the order + specified directly to the destination: + + for each trapezoid + Combine (op, dst, source, trapezoid) + + (The Trapezoids request is deprecated) + +Triangles + + op: PICTOP + src: PICTURE + src-x, src-y: INT16 + dst: PICTURE + mask-format: PICTFORMAT or None + triangles: LISTofTRIANGLE + + This request rasterizes the list of triangles in the order they + occur in the list. + + When mask-format is not None, triangles are rendered in the + following way with the effective mask computed in mask-format: + + tmp = temporary alpha picture (in mask-format) + Combine (Zero, tmp, tmp, None) + for each triangle + Combine (Add, tmp, triangle, None) + Combine (op, dst, source, tmp) + + When mask-format is None, triangles are rendered in the order + specified directly to the destination: + + for each triangle + Combine (op, dst, source, triangle) + +TriStrip + + op: PICTOP + src: PICTURE + src-x, src-y: INT16 + dst: PICTURE + mask-format: PICTFORMAT or None + points: LISTofPOINTFIX + + Triangles are formed by initially using the first three points and + then by eliminating the first point and appending the next point in + the list. If fewer than three points are provided, this request does + nothing. + + When mask-format is not None, triangles are rendered in the + following way with the effective mask computed in mask-format: + + tmp = temporary alpha picture (in mask-format) + Combine (Zero, tmp, tmp, None) + for each triangle + Combine (Add, tmp, triangle, None) + Combine (op, dst, source, tmp) + + When mask-format is None, triangles are rendered in the order + specified directly to the destination: + + for each triangle + Combine (op, dst, source, triangle) + +TriFan + op: PICTOP + src: PICTURE + src-x, src-y: INT16 + dst: PICTURE + mask-format: PICTFORMAT or None + points: LISTofPOINTFIX + + Triangles are formed by initially using the first three points and + then by eliminating the second point and appending the next point + int the list. If fewer than three points are provided, this request + does nothing. + + When mask-format is not None, triangles are rendered in the + following way with the effective mask computed in mask-format: + + tmp = temporary alpha picture (in mask-format) + Combine (Zero, tmp, tmp, None) + for each triangle + Combine (Add, tmp, triangle, None) + Combine (op, dst, source, tmp) + + When mask-format is None, triangles are rendered in the order + specified directly to the destination: + + for each triangle + Combine (op, dst, source, triangle) + +CreateGlyphSet + + gsid: GLYPHSET + format: PICTFORMAT + + Errors: + Alloc, IDChoice, PictFormat, Match + + This request creates a container for glyphs. The glyphset and + all contained glyphs are destroyed when gsid and any other names + for the glyphset are freed. Format must be a Direct format, when + it contains RGB values, the glyphs are composited using + component-alpha True, otherwise they are composited using + component-alpha False. + +ReferenceGlyphSet + + gsid: GLYPHSET + existing: GLYPHSET + + Errors: + Alloc, IDChoice, GlyphSet + + This request creates an additional name for the existing glyphset. + The glyphset will not be freed until all references to it are + destroyed. + +FreeGlyphSet + + glyphset: GLYPHSET + + Errors: + GlyphSet + + This request frees the name for the glyphset. When all names have + been freed, the glyphset and all contained glyphs are freed. + +AddGlyphs + glyphset: GLYPHSET + glyphids: LISTofCARD32 + glyphs: LISTofGLYPHINFO + data: LISTofBYTE + + Errors: + GlyphSet, Alloc + + This request adds glyphs to glyphset. The image for the glyphs + are stored with each glyph in a separate Z-format image padded to a + 32-bit boundary. Existing glyphs with the same names are replaced. + +FreeGlyphs + + glyphset: GLYPHSET + glyphs: LISTofGLYPH + + Errors: + GlyphSet, Match + + This request removes glyphs from glyphset. Each glyph must exist + in glyphset (else a Match error results). + +CompositeGlyphs8 +CompositeGlyphs16 +CompositeGlyphs32 + + op: PICTOP + src: PICTURE + dst: PICTURE + mask-format: PICTFORMAT or None + glyphset: GLYPHABLE + src-x, src-y: INT16 + dst-x, dst-y: INT16 + glyphcmds: LISTofGLYPHITEM8 CompositeGlyphs8 + glyphcmds: LISTofGLYPHITEM16 CompositeGlyphs16 + glyphcmds: LISTofGLYPHITEM32 CompositeGlyphs32 + + Errors: + Picture, PictOp, PictFormat, GlyphSet, Glyph + + The dst-x and dst-y coordinates are relative to the drawable's + origin and specify the baseline starting position (the initial glyph + origin). Each glyph item is processed in turn. A glyphset item + causes the glyphset to be used for subsequent glyphs. Switching + among glyphsets does not affect the next glyph origin. A glyph + element delta-x and delta-y specify additional changes in the + position along the x and y axes before the string is drawn; the + deltas are always added to the glyph origin. + + All contained GLYPHSETs are always transmitted most significant byte + first. + + If a GlyphSet error is generated for an item, the previous items may + have been drawn. + + When mask-format is not None, glyphs are rendered in the following + way with the effective mask computed in mask-format: + + tmp = temporary alpha picture + Combine (Zero, tmp, tmp, None) + for each glyph + Combine (Add, tmp, glyph, None) + Combine (op, dst, source, tmp) + + When mask-format is None, glyphs are rendered in the order specified + directly to the destination: + + for each glyph + Combine (op, dst, source, glyph) + +CreateCursor + + cid: CURSOR + source: PICTURE + x, y: CARD16 + + Errors: Alloc, IDChoice, Match, Picture + + This request creates a cursor and associates identifier cid with it. + The x and y coordinates define the hotspot relative to the source's + origin and must be a point within the source (or a Match error + results). The resulting picture will nominally be drawn to the + screen with PictOpOver. + + The components of the cursor may be transformed arbitrarily to meet + display limitations. In particular, if the display supports only + two colors cursors without translucency, the cursor will be + transformed so that areas less than .5 alpha will be transparent, + else opaque, and areas darker than 50% gray will be black else white. + + The source picture can be freed immediately if no further explicit + references to it are to be made. + + Subsequent drawing in the source has an undefined effect on the + cursor. The server might or might not make a copy of the picture. + +CreateAnimCursor + cid: CURSOR + cursors: LISTofANIMCURSORELT + + Errors: Alloc, IDChoice, Cursor + + This request creates a cursor and associates identifier cid with it. + When active, the cursor image on the screen will cycle through + 'cursors', showing each cursor in the element for the number of + milliseconds indicated by the 'delay' member of that element. + +AddTraps + picture: PICTURE + off-x, off-y: INT16 + trapezoids: LISTofTRAP + + Errors: Match + + Each trap is PictOpAdd'ed to 'picture'. 'off-x', 'off-y' + are added to each coordinate. + + 'picture' must be an alpha-only picture else a 'Match' error is + returned. + +CreateSolidFill + pid: PICTURE + color: COLOR + + Creates a Source picture that represents a solid fill with + the specified color. + +CreateLinearGradient + pid: PICTURE + p1, p2: POINTFIX + nstops: CARD32 + stops: LISTofFIXED + stop_colors: LISTofCOLOR + + Errors: Alloc, Value + + Creates a source picture representing a linear Gradient. The gradients + bounds are defined by the two end points p1 and p2. + + The gradient has nstops stop points between 0 and 1, each + having a stop color defined in stop_colors. + + The array of stops has to contain values between 0 and 1 (inclusive) and + has to be ordered in increasing size or a Value error is generated. If + p1 == p2 a Value error is generated. + + The colors are non premultiplied. + +CreateRadialGradient + pid: PICTURE + inner_center: POINTFIX + outer_center: POINTFIX + inner_radius: FIXED + outer_radius: FIXED + nstops: CARD32 + stops: LISTofFIXED + stop_colors: LISTofCOLOR + + Errors: Alloc, Value + + Creates a source picture representing a radial Gradient. The + gradients bounds are defined by a center point, a focal point and a + radius around the center. + + The gradient has nstops stop points between 0 and 1, each + having a stop color defined in stop_colors. + + The array of stops has to contain values between 0 and 1 (inclusive) and + has to be ordered in increasing size or a Value error is generated. The inner + circle has to be completely contained inside the outer one or a Value error is + generated. + + The colors are non premultiplied. + +CreateConicalGradient + pid: PICTURE + center: POINTFIX + angle: FIXED + nstops: CARD32 + stops: LISTofFIXED + stop_colors: LISTofCOLOR + + Errors: Alloc, Value + + Creates a source picture representing a conical Gradient. The + gradient is defined by a center point and an angle (in degrees). + + The gradient has nstops stop points between 0 and 1, each + having a stop color defined in stop_colors. + + The array of stops has to contain values between 0 and 1 (inclusive) and + has to be ordered in increasing size or a Value error is generated. + + The colors are non premultiplied. + + +15. Extension Versioning + +The Render extension was developed in parallel with the implementation to +ensure the feasibility of various portions of the design. As portions of +the extension are implemented, the version number of the extension has +changed to reflect the portions of the standard provided. This document +describes the intent for version 1.0 of the specification, the partial +implementations have version numbers less than that. Here's a list of +what each version before 1.0 implemented: + + 0.0: + No disjoint/conjoint operators + No component alpha + Composite + CreateGlyphSet + FreeGlyphSet + AddGlyphs + CompositeGlyphs + + 0.1: + Component alpha + FillRectangles + + 0.2: + Disjoint/Conjoint operators + + 0.3: + FreeGlyphs + + 0.4: + Trapezoids + Triangles + TriStrip + TriFan + + 0.5: + CreateCursor + + 0.6: + SetPictureTransform + QueryFilters + SetPictureFilter + subpixels member of QueryPictFormats + + 0.7: + QueryPictIndexValues + 0.8: + CreateAnimCursor + 0.9: + AddTrapezoids + + 0.10: + CreateSolidFill + CreateLinearGradient + CreateRadialGradient + CreateConicalGradient + + The repeat picture attribute now supports Pad and + Reflect, older versions only supported None and Normal. + + 0.11: + Blend mode operators + -- cgit v1.2.3