<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <meta http-equiv="Content-Language" content="en-us"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>XRender</title> <link rel="stylesheet" type="text/css" href="../../style.css"> </head> <body> <h2>XRender Base Driver</h2> <p>This driver represents a basic driver for all system-dependent drivers implemented in the X-Windows system using the XRender extension. The implementation uses the XRender and Xft API functions.</p> <p>The main motivation for the use of XRender was transparency for all the primitives. Beyond that we got other features like anti-aliasing, gradient filling and transformations.</p> <p>This driver still does not completely replace the X-Windows base driver, because XRender does not have support for XOR and for line styles.</p> <p>So we let the programmer to choose what to use. We created the function <font face="Courier"><strong> cdUseContextPlus</strong></font> that allows to activate or to deactivate the use of X-Render for the available X-Windows based drivers. This function affects only the <font face="Courier"><strong>cdCreateCanvas</strong></font> function call, once created the canvas will be always a XRender canvas. In fact the function affects primary the definitions <font face="Courier"><strong>CD_NATIVEWINDOW</strong></font>, <strong><span style="font-family: Courier">CD_IMAGE</span></strong> and <strong> <span style="font-family: Courier">CD_DBUFFER</span></strong>, because they are function calls and not static defines.</p> <p>Using XRender it is allowed to create more that one canvas at the same time for the same Window. And they can co-exist with a standard X-Windows canvas.</p> <p>To enable the use of XRender based drivers you must call the initialization function <font face="Courier"><strong> cdInitContextPlus()</strong></font> once and link to the libraries "<strong>cdcontextplus</strong>", "<strong>Xrender</strong>" and "<strong>Xft</strong>". Also the libraries "<strong>Xrender</strong>" and "<strong>Xft</strong>" must be installed in your system. The XRender extension must be available in the X-Windows server for the driver to work.</p> <p>Currently, pre-compiled binaries are available for Linux and BSD. It is not available for the systems we have with AIX, SunOS and IRIX.</p> <p>In CDLua it is not necessary any additional initialization, but the application must still be linked with the <strong>cdcontextplus.lib</strong> library or a <strong>require"cdluacontextplus"</strong> can be used when using dynamic libraries.</p> <h3>Behavior of Functions</h3> <h4>Control </h4> <ul> <li><a href="../func/other.html#cdPlay"> <font face="Courier"><strong>Play</strong></font></a>: does nothing, returns <font face="Courier">CD_ERROR</font>. </li> </ul> <h4>Coordinate System and Clipping </h4> <ul> <li> <a href="../func/coordinates.html#cdUpdateYAxis"> <font face="Courier"><strong>UpdateYAxis</strong></font></a>: the orientation of axis Y is the opposite to its orientation in the CD library. Except when using transformations.</li> </ul> <h4>Primitives</h4> <ul> <li><font face="Courier"><a href="../func/lines.html#cdLine"><b>Line</b></a></font>: simulated using the client's <strong>Poly</strong>.</li> <li><a href="../func/text.html#cdText"><font face="Courier"><strong>Text</strong></font></a>: Generic transformation matrix affects only the position of the text. Complex clipping regions can not contain text regions.</li> <li><a href="../func/lines.html#cdBegin"> <font face="Courier"><strong>Begin</strong></font></a>: <strong><tt> CD_BEZIER</tt></strong> and <strong><tt>CD_PATH</tt></strong> are simulated with lines.</li> <li><font face="Courier"><strong><a href="../func/lines.html#cdRect">Rect</a></strong></font>: simulated using the client's <strong>Line</strong>.</li> <li><font face="Courier"><a href="../func/lines.html#cdArc"><b>Arc</b></a></font>: simulated using the client's <strong>Line</strong>. </li> <li><font face="Courier"><a href="../func/filled.html#cdSector"><b>Sector</b></a></font>: simulated using the client's <strong>Poly</strong>. </li> <li><font face="Courier"><b><a href="../func/filled.html#cdChord">Chord</a></b></font>: simulated using the client's <strong>Poly</strong></li> <li><font face="Courier"><a href="../func/filled.html#cdBox"><b>Box</b></a></font>: simulated using the client's <strong>Poly</strong>.</li> <li>Floating point primitives are supported.</li> </ul> <h4>Attributes </h4> <ul> <li> <a href="../func/lines.html#cdLineWidth"> <font face="Courier"><strong>LineWidth</strong></font></a>: the driver will use a polygon that fits to the line extents, even when linewidth==1.</li> <li> <a href="../func/lines.html#cdLineStyle"> <font face="Courier"><strong>LineStyle</strong></font></a>: NOT supported.</li> <li><a href="../func/filled.html#cdPattern"><font face="Courier"><strong> Pattern</strong></font></a>: each pixel can contain transparency information.</li> <li> <a href="../func/text.html#cdNativeFont"> <font face="Courier"><strong>NativeFont</strong></font></a>: also accepts the X-Windows font string format. You can use program <strong>xfontsel</strong> to select a font and obtain the string. For ex: "-*-times-bold-r-*-*-24-*-*-*-*-*-*-*" (equivalent of <strong>Font</strong>("Times", CD_BOLD, -24).</li> <li><a href="../func/text.html#cdFont"> <font face="Courier"><strong>Font</strong></font></a>: font support is implemented using the Xft library. Internally the Xft library uses the Freetype library.</li> </ul> <h4>Colors </h4> <ul> <li> Use the X-Windows base driver support for colors.</li> </ul> <h4>Client and Server Images</h4> <ul> <li> All functions use the X-Windows base driver functions.</li> </ul> <h4>Exclusive Attributes</h4> <ul> <li>"<b><font face="Courier">GC</font></b>": returns the X11 graphics context (get only). In Lua is returned as a user data.</li> </ul> <ul> <li>"<b><font face="Courier">ROTATE</font></b>": allows the usage of 1 angle and 1 coordinate (x, y), that define a global rotation transformation centered in the specified coordinate. Use 1 real and 2 integer values inside a string ("%g %d %d" = angle x y). In this driver will change the current transformation matrix, if removed will reset the current transformation matrix.</li> </ul> <ul> <li>"<b><font face="Courier">ANTIALIAS</font></b>": controls the use of anti-aliasing for the text, image zoom and line drawing primitives. Assumes values "1" (active) and "0" (inactive). Default value: "1". </li> </ul> <ul> <li><b><font face="Courier">"LINEGRADIENT": </font></b>defines a filled interior style that uses a line gradient between two colors. It uses 2 points ("%d %d %d %d" = x1 y1 x2 y2), one for the starting point using (using the foreground color), and another one for the end point (using the background color). (available only if Xrender version >= 0.10)</li> </ul> <ul> <li><b><font face="Courier">"XRENDERVERSION": </font></b>returns a string with the XRender version number. It is empty if the XRender extension is not available in the X-Windows server.</li> </ul> </body> </html>