.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Protocol::Ext::RENDER 3pm" .TH Protocol::Ext::RENDER 3pm "2004-04-03" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" X11::Protocol::Ext::RENDER \- Perl module for the X Rendering Extension .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 3 \& use X11::Protocol; \& $x = X11::Protocol\->new($ENV{\*(AqDISPLAY\*(Aq}); \& $x\->init_extension(\*(AqRENDER\*(Aq) or die; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \s-1RENDER\s0 extension adds a new set of drawing primitives which effectively represent a replacement of the drawing routines in the core protocol, redesigned based on the needs of more modern clients. It adds long-desired features such as subpixel positioning, alpha compositing, direct specification of colors, and multicolored or animated cursors. On the other hand, it omits features that are no longer commonly used: wide lines, arbitrary polygons (only triangles and horizontally-aligned trapezoids are supported), ellipses, bitwise rendering operations, and server-side fonts (in favor of \*(L"glyphs\*(R" that are rendered on the client side and transmitted once). .PP As of this writing (early 2004), the specification and implementation both have rough edges, but there are relatively few alternatives for offloading fancy graphics processing to the server, as is necessary over slow links or if the client is written in a slow language. Another possibility you might consider is the 2D subset of OpenGL, though it doesn't yet have an X11::Protocol\-compatible interface. .SH "SYMBOLIC CONSTANTS" .IX Header "SYMBOLIC CONSTANTS" This extension adds the constant types 'PictType', 'PictOp', \&'SubPixel', 'PolyEdge', and 'PolyMode', with values as defined in the standard. .SH "REQUESTS" .IX Header "REQUESTS" This extension adds several requests, called as shown below: .PP .Vb 3 \& $x\->RenderQueryVersion($major, $minor) \& => \& ($major, $minor) \& \& $x\->RenderQueryPictFormats() \& => \& ([[$id, $type, $depth, \& $red, $red_m, $green, $green_m, $blue, $blue_m, \& $alpha, $alpha_m, $cmap], ...], \& [[$fallback, [$depth, [$visual, $format], ...], ...], ...], \& [$subpixel, ...]) \& \& $x\->RenderQueryPictIndexValues($pict_format) \& => \& ([$index, $red, $green, $blue, $alpha], ...) \& \& $x\->RenderQueryFilters($drawable) \& => \& ([@filters], [@aliases]) \& \& $x\->RenderCreatePicture($picture, $drawable, $format, \& \*(Aqattribute\*(Aq => $value, ...) \& \& $x\->RenderChangePicture($picture, \*(Aqattribute\*(Aq => $value, ...) \& \& $x\->RenderSetPictureClipRectangles($pic, $x_origin, $y_origin, \& [$x, $y, $width, $height], ...) \& \& $x\->RenderSetPictureTransform($pict, $m11, $m12, $m13, \& $m21, $m22, $m23, \& $m31, $m32, $m33); \& \& $x\->RenderSetPictureFilter($pict, $filter, @args) \& \& $x\->RenderComposite($op, $src, $mask, $dst, $src_x, $src_y, \& $mask_x, $mask_y, $dst_x, $dst_y, \& $width, $height) \& \& $x\->RenderFillRectangles($op, $dst, [$red, $green, $blue, $alpha], \& [$x, $y, $width, $height], ...) \& \& $x\->RenderTrapezoids($op, $src, $src_x, $src_y, $dst, $mask_format, \& [$top, $bottom, $lx1, $ly1, $lx2, $ly2, \& $rx1, $ry1, $rx2, $ry2] ,...) \& \& $x\->RenderTriangles($op, $src, $src_x, $src_y, $dst, $mask_format, \& [$x1, $y1, $x2, $y2, $x3, $y3]) \& \& $x\->RenderTriStrip($op, $src, $src_x, $src_y, $dst, $mask_format, \& [$x, $y], [$x, $y], [$x, $y], [$x, $y], ...) \& \& $x\->RenderTriFan($op, $src, $src_x, $src_y, $dst, $mask_format, \& [$x, $y], [$x, $y], [$x, $y], [$x, $y], ...) \& \& $x\->RenderCreateGlyphSet($gsid, $format) \& \& $x\->RenderReferenceGlyphSet($gsid, $existing) \& \& $x\->RenderFreeGlyphSet($gsid) \& \& $x\->RenderAddGlyphs($gsid, [$glyph, $width, $height, \& $x, $y, $x_off, $y_off, $data], ...) .Ve .PP Warning: with some server implementations (including XFree86 through 4.4) passing more than one glyph to AddGlyphs can hang or crash the server. So don't do that. .PP .Vb 1 \& $x\->RenderFreeGylphs($gsid, @glyphs) \& \& $x\->RenderCompositeGlyphs8($op, $src, $dst, $mask_format, $gsid, \& $src_x, $src_y, \& [$delta_x, $delta_y, $str], ...) \& \& $x\->RenderCompositeGlyphs16($op, $src, $dst, $mask_format, $gsid, \& $src_x, $src_y, \& [$delta_x, $delta_y, $str], ...) \& \& $x\->RenderCompositeGlyphs32($op, $src, $dst, $mask_format, $gsid, \& $src_x, $src_y, \& [$delta_x, $delta_y, $str], ...) .Ve .PP In these three requests, new GlyphSetIDs can also be interspersed with the array references. .PP .Vb 1 \& $x\->RenderCreateCursor($cid, $source, $hot_x, $hot_y) \& \& $x\->RenderCreateAnimCursor($cid, [$cursor, $delay], ...) .Ve .SH "AUTHOR" .IX Header "AUTHOR" Stephen McCamant . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIperl\fR\|(1), X11::Protocol, \&\fIThe X Rendering Extension (XFree86 draft standard)\fR.