diff options
Diffstat (limited to 'html/en')
57 files changed, 7530 insertions, 0 deletions
diff --git a/html/en/canvas.html b/html/en/canvas.html new file mode 100644 index 0000000..dc7721b --- /dev/null +++ b/html/en/canvas.html @@ -0,0 +1,47 @@ +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<link rel="stylesheet" type="text/css" href="../style.css"> +<title>Canvas</title> +</head> + +<body> + +<h1>Canvas</h1> + + <p>The canvas represents the drawing surface. It could be anything: a file, a + client area inside a window in a Window System, a paper used by a printer, + etc. Each canvas has its own attributes. </p> + <h3>Initialization</h3> + <p>You must call <b>cdCreateCanvas</b> to create a canvas, and <b>cdKillCanvas</b> when you do not need the canvas anymore. + It is not necessary to activate + a canvas using <b>cdCanvasActivate</b>, but some drivers may require that + call. </p> + <p>To know if a feature is supported by a driver, use function + <strong>cdContextCaps</strong> or see the driver's + documentation.</p> + <h3>Control</h3> + <p>Some canvases are buffered and need to be flushed; for that, use the <b>cdCanvasFlush</b> function. In some drivers, this function can also be used to + change to another page, as in drivers <b>CD_PRINTER</b> and <b>CD_PS</b>. + </p> + <p>You can clear the drawing surface with the <b>cdCanvasClear</b> function, + but in some drivers the function may just draw a rectangle using the + background color. </p> + <h3>Coordinate System</h3> + <p>You may retrieve the original canvas size using the <b>cdCanvasGetSize</b> + function. The canvas' origin is at the bottom left corner of the canvas, but + an origin change can be simulated with function <b>cdCanvasOrigin</b>. Usually + user interface libraries have their origin at the upper right corner, oriented + top down. In this case, the function <strong>cd</strong><b>Canvas</b><strong>UpdateYAxis</strong> + converts the Y coordinate from this orientation to CD's orientation and + vice-versa. </p> + <h3>Other</h3> + <p>Some canvas contents can be interpreted; the <b>cdCanvasPlay</b> function + interprets the contents of a canvas and calls library functions for the + contents to be displayed in the active canvas. </p> + + +</body> + +</html> diff --git a/html/en/cdlua.html b/html/en/cdlua.html new file mode 100644 index 0000000..9cfb965 --- /dev/null +++ b/html/en/cdlua.html @@ -0,0 +1,117 @@ +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Lua Binding</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Lua Binding</h1> +<h3><a name="Overview">Overview</a></h3> + + <p>CDLua was developed to make all functionalities of the CD library available to Lua programmers. To use the CDLua + bindings, your executable must be linked with the CDLua library, and you must call the initialization function <strong> + <font face="Courier New">cdlua_open</font></strong> declared in the header file <strong><font face="Courier New">cdlua</font><font size="2" face="Courier New">.</font><font face="Courier New">h</font></strong>, + as seen in the example below:</p> + + <div align="center"> + <center> + <table border="1" cellpadding="10" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1"> + <tr> + <th> + <p align="center">in Lua5</th> + </tr> + <tr> + <td> + <pre>#include <lua.h> +#include <lualib.h> +#include <lauxlib.h> +<b><font color="#FF0000">#include <cdlua.h></font></b></pre> + <pre>void main(void) +{ + lua_State *L = lua_open(); + + luaopen_string(L); + luaopen_math(L); + luaopen_io(L); + +<b> <font color="#FF0000">cdlua_open(L);</font> +</b> + lua_dofile("myprog.lua"); + + <b><font color="#FF0000">cdlua_close(L);</font></b> + lua_close(L); +}</pre> + </td> + </tr> + </table> + </center> + </div> + + <p>The <font face="Courier New"><strong>cdlua_open</strong>()</font> function registers all CD functions and constants + your Lua program will need. The use of the CDLua functions in Lua is generally identical to their equivalents in C. + Nevertheless, there are several exceptions due to differences between the two languages. Notice that, as opposed to C, + in which the flags are<i> </i>combined with the bitwise operator OR, in Lua the flags are added arithmetically. </p> + <p>The CDLua dynamic libraries are also compatible with the Lua 5 "loadlib" function.<span lang="en-us"> + </span>Here is an example on how to dynamically load CD + in Lua 5<span lang="en-us">.1</span>:</p> +<pre>local cdlua_open = package.loadlib("cdlua51.dll", "cdlua_open") +cdlua_open()</pre> +<p><strong>Lua</strong> 5.1 "require" can be used for all the <strong> +CDLua</strong> +libraries. You can use <b>require</b>"<b>cdlua</b>" and so on, but the LUA_CPATH +must also contains the following: </p> + +<pre>"./lib?51.so;" [in UNIX] + +".\\?51.dll;" [in Windows] +</pre> +<p>The LuaBinaries distribution already includes these modifications on the +default search path.</p> +<p>The simplest form <b>require</b>"<b>cd</b>" +and so on, can not be used because there are CD dynamic libraries with names +that will conflict with the names used by <b>require</b> during search.</p> + +<h3><a name="New Functions">Function Names and Definitions</a></h3> + + <p>In Lua, because of the name space "cd" all the functions and definitions have their names prefix changed. The + general rule is quite simple:</p> + + <pre>cdXxx -> cd.Xxx +wdXxx -> cd.wXxx +CD_XXX -> cd.XXX</pre> + + +<h3>Modifications to the API</h3> + + <p>New functions (without equivalents in C) were implemented to create and + destroy objects that do not exist in C. For instance functions were developed + to create and destroy images, pattern, stipple and palette. All the + metatables have the "tostring" method implemented to help debuging.</p> + + <p>Some functions were modified to receive those objects as parameters.</p> + <p>Also the functions which receive values by reference in C were modified. Generally, the values of + parameters that would have their values modified are now returned by the function in the same order.</p> + + +<h3>Garbage Collection</h3> + + <p>All the objects are garbage collected by the Lua garbage collector, except + the canvas because there can be different Lua canvases pointing to the same + C canvas. The tostring method of the Lua canvas will print both values, Lua + and C. The equal method will compare the C canvas value.</p> + +<h3>Exchanging Values between C and Lua</h3> + + <p>Because of some applications that interchange the use of CD canvases in Lua and C, we build a + few C functions that are available in "cdlua.h":</p> + +<pre>cdCanvas* cdlua_checkcanvas(lua_State* L, int pos); +void cdlua_pushcanvas(lua_State* L, cdCanvas* canvas);</pre> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/cdluaim.html b/html/en/cdluaim.html new file mode 100644 index 0000000..707539d --- /dev/null +++ b/html/en/cdluaim.html @@ -0,0 +1,54 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>CDLua+IMLua</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../style.css"> + </head> + <body> + <h2 align="center">CDLua+IMLua</h2> + +<p> +When CD is used togheter with the IM library in Lua, the CD bitmap and the IM +image objects in Lua have a few more methods. These methods allow to map the <font face="Courier New">imImage</font> + structure to the <font face="Courier New">cdBitmap</font> structure and add some facilities to draw +on an imImage using a CD + canvas. See also the <a target="_blank" href="http://www.tecgraf.puc-rio.br/im">IM documentation</a>.<p>Color values and palettes can be created and used transparently in both libraries. Palettes and color values are + 100% compatible between CD and IM.</p> + + + <p> + You must link the application with the "cdluaim51" library.<p> +See also the <a target="_top" href="http://www.tecgraf.puc-rio.br/im">IM +documentation</a>.<pre class="function">int <strong><span style="font-size: 110%"><a name="cdlua_open">cdluaim_open</a></span></strong>(lua_State* L); [in C] [for Lua 5]</pre> + + <p> +Must be called to enable the additional methods. Can be called only after CDLua +and IMLua were initialized. require"cdluaim" can also be used. <br> + Returns 0 (leaves nothing on the top of the stack).<hr> + <h3>Available methods</h3> + <pre class="function">bitmap:imImageCreate() -> image: imImage [in Lua] +</pre> +<p>Creates an imImage from a cdBitmap.</p> +<pre class="function">image:cdCreateBitmap() -> bitmap: cdBitmap [in Lua]</pre> +<p>Creates a cdBitmap from an imImage. The imImage must be a bitmap image, see +"image:<strong>IsBitmap</strong>". </p> +<pre class="function">image:cdInitBitmap() -> bitmap: cdBitmap [in Lua]</pre> +<p>Creates a cdBitmap from an imImage, but reuses image data. When the +cdBitmap is destroyed, the data is preserved. </p> +<pre class="function">image:cdCanvasPutImageRect(canvas: cdCanvas, x: number, y: number, w: number, h: number, xmin: number, xmax: number, ymin: number, ymax: number) [in Lua] </pre> +<p> Draws the imImage into the given cdCanvas. The imImage must be a +bitmap image, see \ref imImageIsBitmap. </p> +<pre class="function">image:wdCanvasPutImageRect(canvas: cdCanvas, x: number, y: number, w: number, h: number, xmin: number, xmax: number, ymin: number, ymax: number) [in Lua] </pre> +<p>Draws the imImage into the given cdCanvas using world coordinates. The +imImage must be a bitmap image, see \ref imImageIsBitmap. </p> +<pre class="function">image:cdCanvasGetImage(canvas: cdCanvas, x: number, y: number) [in Lua] </pre> +<p>Retrieve the imImage data from the given cdCanvas. The imImage must be a +IM_RGB/IM_BYTE image. </p> +<pre class="function">image:cdCreateCanvas([res: number]) -> canvas: cdCanvas [in Lua] </pre> + <p> Creates a cdCanvas using the <a href="drv/irgb.html">CD_IMAGERGB</a> driver. Resolution is optional, + default is 3.8 pixels per milimiter (96.52 DPI). The imImage must be a + IM_RGB/IM_BYTE image. </p> +</BODY> +</HTML> diff --git a/html/en/copyright.html b/html/en/copyright.html new file mode 100644 index 0000000..83354bd --- /dev/null +++ b/html/en/copyright.html @@ -0,0 +1,45 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"> +<html> +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Tecgraf Library License</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> +<body> + +<hr> +<h2>Tecgraf Library License</h2> +<p>The Tecgraf products under this license are: <a href="http://www.tecgraf.puc-rio.br/iup">IUP</a>, +<a href="http://www.tecgraf.puc-rio.br/cd">CD</a> and <a href="http://www.tecgraf.puc-rio.br/im">IM</a>.</p> + +<p>All the products under this license are free software: they can be used for both academic and commercial purposes at +absolutely no cost. There are no paperwork, no royalties, no GNU-like "copyleft" restrictions, +either. Just download and use it. They are licensed under the terms of the +<a HREF="http://www.opensource.org/licenses/mit-license.html">MIT license</a> reproduced below, and so are compatible +with <a HREF="http://www.gnu.org/licenses/gpl.html">GPL</a> and also qualifies as +<a HREF="http://www.opensource.org/docs/definition.html">Open Source</a> software. They are not in the public domain, +<a HREF="http://www.puc-rio.br">PUC-Rio</a> keeps their copyright. The legal details are below. </p> +<p>The spirit of this license is that you are free to use the libraries for any purpose at no cost without having to ask +us. The only requirement is that if you do use them, then you should give us credit by including the copyright notice +below somewhere in your product or its documentation. A nice, but optional, way to give us further credit is to include +a Tecgraf logo and a link to our site in a web page for your product. </p> +<p>The libraries are designed, implemented and maintained by a team at Tecgraf/PUC-Rio in Brazil. The implementation is not derived +from licensed software. The library was developed by request of Petrobras. Petrobras permits Tecgraf to distribute the +library under the conditions here presented.</p> +<hr> +<p>Copyright © 1994-2008 <a HREF="http://www.tecgraf.puc-rio.br">Tecgraf</a>, <a HREF="http://www.puc-rio.br">PUC-Rio</a>.</p> +<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: </p> +<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. </p> +<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. </p> +<hr> + +</body> + +</html> diff --git a/html/en/cvs.html b/html/en/cvs.html new file mode 100644 index 0000000..687946c --- /dev/null +++ b/html/en/cvs.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"> +<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>CVS</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> +<body> + +<h2 align="center" style="text-align:center">CVS</h2> +<p>The CVS files are in the CD <b>LuaForge</b> site available at:</p> +<p class="info"><a href="http://luaforge.net/scm/?group_id=88"> +http://luaforge.net/scm/?group_id=88</a> +</p> +<p>Current version can be obtained from module "cd".</p> +<p>To checkout use:</p> + +<pre>CVSROOT=:pserver:anonymous@cvs.luaforge.net:/cvsroot/cdlib</pre> + +</body> + +</html> diff --git a/html/en/download.html b/html/en/download.html new file mode 100644 index 0000000..83a8f85 --- /dev/null +++ b/html/en/download.html @@ -0,0 +1,30 @@ +<html> + +<head> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<title>Download</title> +<meta http-equiv="Content-Language" content="en-us"> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Download</h1> + + <p>The main download site is the <b>LuaForge</b> site available at:</p> + + <p class="info"><a href="http://luaforge.net/project/showfiles.php?group_id=88"> + http://luaforge.net/project/showfiles.php?group_id=88</a> </p> + + <p>Before downloading any precompiled binaries, you should read before the + <a href="download_tips.html">Tecgraf Library Download Tips</a>.</p> + <p>Some other files are available directly at the <b>CD</b> download folder:</p> + + <p class="info"><a href="http://www.tecgraf.puc-rio.br/cd/download/"> + http://www.tecgraf.puc-rio.br/cd/download/</a> </p> + + + +</body> + +</html> diff --git a/html/en/download_tips.html b/html/en/download_tips.html new file mode 100644 index 0000000..b999eae --- /dev/null +++ b/html/en/download_tips.html @@ -0,0 +1,363 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"> +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Library Download Tips</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +<base target="_blank"> +<style type="text/css"> +.style1 { + font-family: Tahoma; +} +</style> +</head> +<body> + +<h1>Tecgraf/PUC-Rio Library Download Tips</h1> +<p>All the libraries were build using <b>Tecmake</b>. Please use it if you intend to recompile the sources. +<b>Tecmake</b> + can be found at +<a target="_blank" href="http://www.tecgraf.puc-rio.br/tecmake">http://www.tecgraf.puc-rio.br/tecmake</a>.</p> +<p class="info">The <b>IM</b> files can be downloaded at +<a href="http://luaforge.net/project/showfiles.php?group_id=86">http://luaforge.net/project/showfiles.php?group_id=86</a>.<br> + The <b>CD</b> files can be downloaded at +<a href="http://luaforge.net/project/showfiles.php?group_id=88">http://luaforge.net/project/showfiles.php?group_id=88</a>.<br> + The <b>IUP</b> files can be downloaded at +<a href="http://luaforge.net/project/showfiles.php?group_id=89">http://luaforge.net/project/showfiles.php?group_id=89</a>.<br> + The <b>Lua</b> files can be downloaded at +<a href="http://luaforge.net/project/showfiles.php?group_id=110">http://luaforge.net/project/showfiles.php?group_id=110</a>.</p> +<h3><a name="build">Build Configuration</a></h3> +<p>Libraries and executables were built using speed optimization. In UNIX the dynamic libraries were NOT built with + the -fpic parameter. In MacOS X the dynamic libraries are in bundle format. The source code along with the + "config.mak" files for <b>Tecmake</b> are also available.</p> +<p>The DLLs were built using the <b>cdecl</b> calling convention. This should be +a problem for Visual Basic users.</p> +<p>In Visual C++ we use the single thread C Run Time Library for static libraries and the multi thread C RTL for DLLs. + Because this is the default in Visual Studio for new projects. In Visual C++ 8 both use the multi thread C RTL.</p> +<h3><a name="pack">Packaging</a></h3> +<p>The package files available for download are named according to the platform where they were build.</p> +<p>In UNIX all strings are based in the result of the command "uname -a". The package name is a concatenation of the + platform <b>uname</b>, the system <b>major</b> version number and the system +<b>minor</b> version number. Some times a + suffix must be added to complement the name. The default compiler is gcc, if the native compiler is used the name + receive the suffix "cc". Binaries for 64-bits receive the suffix: "_64". In Linux when gcc is changed for the same + uname in a new platform the major version number of the compiler is added as a suffix: "g3" for gcc 3 and "g4" for gcc + 4.</p> +<p>In Windows the platform name is the <b>compiler</b> and its <b>major</b> version number. +</p> +<p>All library packages contains binaries for the specified platform and includes. Packages with "_bin" suffix + contains executables only.</p> +<p>The package name is a general reference for the platform. If you have the same platform it will work fine, but it + may also work in similar platforms.</p> +<p>Here are some examples of packages:</p> +<p class="info"><b>iup2_4_AIX43_64_bin.tar.gz</b> = IUP 2.4 64-bits Executables for AIX version 4.3<br> +<b>iup2_4_Linux26g4_lib.tar.gz</b> = IUP 2.4 32-bits Libraries and Includes for Linux with Kernel version 2.6 built with + gcc 4.<br> +<b>iup2_4_Win32_vc7_lib.tar.gz</b> = IUP 2.4 32-bits Libraries and Includes for Windows to use with Visual C++ 7.<br> +<b>iup2_4_Docs_html.tar.gz</b> = IUP 2.4 documentation files in HTML format (the web site files can be browsed + locally).<br> +<b>iup2_4_Win32_bin.tar.gz</b> = IUP 2.4 32-bits Executables for Windows.</p> +<p>The documentation files are in HTML format. They do not include the CHM and PDF versions. These two files are + provided only as a separate download, but they all have the same documentation.</p> +<h3><a name="install">Installation</a></h3> +<p>For any platform we recommend you to create a folder to contain the third party libraries you download. Then just + unpack the packages you download in that folder. The packages already contains a directory structure that separates + each library or toolkit. For example:</p> +<pre>\mylibs\ + iup\ + bin\ + html\ + include\ + lib\Linux26 + lib\vc7 + src + cd\ + im\ + lua5\</pre> +<p>This structure will also made the process of building from sources more simple, since the projects and makefiles + will assume this structure .</p> +<h3><a name="usage">Usage</a></h3> +<p>For makefiles use:</p> +<pre>1) "-I/mylibs/iup/include" to find include files +2) "-L/mylibs/iup/lib/Linux26" to find library files +3) "-liup" to specify the library files</pre> +<p>For IDEs the configuration involves the same 3 steps above, but each IDE has a different dialog. The IUP toolkit + has a Guide for some IDEs:</p> +<p class="info"><strong>Open Watcom</strong> - <a href="http://www.tecgraf.puc-rio.br/iup/en/guide/owc.html">http://www.tecgraf.puc-rio.br/iup/en/guide/owc.html</a> +<br> + <strong>Dev-C++</strong> - <a href="http://www.tecgraf.puc-rio.br/iup/en/guide/dev-cpp.html">http://www.tecgraf.puc-rio.br/iup/en/guide/dev-cpp.html</a> +<br> + <strong>Borland C++ BuilderX</strong> - +<a href="http://www.tecgraf.puc-rio.br/iup/en/guide/cppbx.html">http://www.tecgraf.puc-rio.br/iup/en/guide/cppbx.html</a><br> + <strong>Microsoft Visual C++</strong> (Visual Studio 2003) - +<a href="http://www.tecgraf.puc-rio.br/iup/en/guide/msvc.html">http://www.tecgraf.puc-rio.br/iup/en/guide/msvc.html</a><br> + <strong>Microsoft Visual C++</strong> (Visual Studio 2005) - +<a href="http://www.tecgraf.puc-rio.br/iup/en/guide/msvc8.html">http://www.tecgraf.puc-rio.br/iup/en/guide/msvc8.html</a><br> +<strong>Eclipse for C++</strong> - +<a href="http://www.tecgraf.puc-rio.br/iup/en/guide/eclipse.html"> +http://www.tecgraf.puc-rio.br/iup/en/guide/eclipse.html</a> +</p> +<h3><a name="plat">Available Platforms</a></h3> +<table border="0" cellpadding="3" style="border-collapse: collapse" bordercolor="#111111" align="center"> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>AIX43</b></td> + <td bgcolor="#DDDDDD"> IBM AIX 4.3 (ppc) / gcc 2.95 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>AIX43cc</b></td> + <td bgcolor="#DDDDDD"> IBM AIX 4.3 (ppc) / cc 4.4 / Motif 2.1 </td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>AIX43_64</b></td> + <td bgcolor="#DDDDDD"> IBM AIX 4.3 (ppc) (64 bits libraries) / cc 4.4 / Motif 2.1</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>IRIX65</b></td> + <td bgcolor="#C0C0C0"> SGI IRIX 6.5 (mips) / gcc 3.0 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>IRIX6465</b></td> + <td bgcolor="#C0C0C0"> SGI IRIX 6.5 (mips) / gcc 3.3 / Motif 1.2</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>IRIX6465cc</b></td> + <td bgcolor="#C0C0C0"> SGI IRIX 6.5 (mips) / cc MIPSpro 7.4 / Motif 1.2 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>IRIX6465_64</b></td> + <td bgcolor="#C0C0C0"> SGI IRIX 6.5 (mips) (64 bits libraries) / cc MIPSpro 7.4 / Motif 1.2</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux24</b></td> + <td bgcolor="#DDDDDD"> Red Hat 7.3 (x86) / Kernel 2.4 / gcc 2.95 / Open Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux24g3</b></td> + <td bgcolor="#DDDDDD"> CentOS 3.9 (x86) / Kernel 2.4 / gcc 3.2 / Open Motif 2.2 + <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux24g3_64 </b></td> + <td bgcolor="#DDDDDD"> Red Hat E.L. WS 3 (x64) (64 bits libraries) / Kernel 2.4 / gcc 3.2 / Open Motif + 2.2 <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux26</b></td> + <td bgcolor="#DDDDDD"> CentOS 4.5 (x86) / Kernel 2.6 / gcc 3.4 / Open Motif 2.2 + <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux26_64</b></td> + <td bgcolor="#DDDDDD"> CentOS 4.5 (x64) / Kernel 2.6 / gcc 3.4 / Open Motif 2.2 + <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux26g4</b></td> + <td bgcolor="#DDDDDD"> Ubuntu 6.06 (x86) / Kernel 2.6 / gcc 4.0 / Open Motif + 2.2 <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><strong>Linux26g4_64</strong></td> + <td bgcolor="#DDDDDD"> Ubuntu 6.10 (x64) / Kernel 2.6 / gcc 4.1 / + OpenMotif 2.2 <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Linux26g4ppc</b></td> + <td bgcolor="#DDDDDD"> Ubuntu 7.10 (ppc) / Kernel 2.6 / gcc 4.1 / Open Motif 2.2 + <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><strong>Linux26_ia64</strong></td> + <td bgcolor="#DDDDDD"> Red Hat E.L. AS 4 (ia64) / Kernel 2.6 / gcc 3.4 / + Open Motif 2.2 <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS57</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 7 (sparc) / gcc 2.95 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS57cc</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 7 (sparc) / cc 5.2 (Sun WorkShop 6 update 1) / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS57_64</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 7 (sparc) (64 bits libraries) / cc 5.2 (Sun WorkShop 6 update 1) / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS58</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 8 (sparc) / gcc 3.4 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS58cc</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 8 (sparc) / Sun WorkShop 6 update 2 C++ 5.3 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>SunOS58_64</b></td> + <td bgcolor="#C0C0C0"> Sun Solaris 8 (sparc) / Sun WorkShop 6 update 2 C++ 5.3 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><strong>SunOS510x86</strong></td> + <td bgcolor="#C0C0C0"> Sun Solaris 10 (x86) / gcc 3.3 / Motif 2.1 + </td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>FreeBSD54</b></td> + <td bgcolor="#DDDDDD"> Free BSD 5.4 (x86) / gcc 3.4 / Open Motif 2.2 + <sup><span class="style1">3</span></sup></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>HP-UXB11</b></td> + <td bgcolor="#DDDDDD"> HP-UX 11 (9000) / HP ANSI C++ B3910B / Motif 2.1</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Darwin811</b></td> + <td bgcolor="#C0C0C0"> Mac OS X 10.4.11 (ppc) / Darwin Kernel Version 8.11 / gcc 4.0 / + <a href="http://www.ist-inc.com/DOWNLOADS/motif_download.html">Open Motif 2.1</a></td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Darwin811x86</b></td> + <td bgcolor="#C0C0C0"> Mac OS X 10.4.11 (x86) / Darwin Kernel Version 8.11 / gcc 4.0 / + <a href="http://www.ist-inc.com/DOWNLOADS/motif_download.html">Open Motif 2.1</a></td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_vc6</b></td> + <td bgcolor="#DDDDDD"> Microsoft Visual C++ 6 (static RTL/single thread)</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_vc7</b></td> + <td bgcolor="#DDDDDD"> Microsoft Visual C++ 7.1 (.NET 2003) (static RTL/single thread)<br> + Also compatible with Microsoft Visual C++ Toolkit 2003 -<br> + <a href="http://msdn.microsoft.com/visualc/vctoolkit2003/" style="text-decoration: none">http://msdn.microsoft.com/visualc/vctoolkit2003/</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_vc8</b></td> + <td bgcolor="#DDDDDD"> Microsoft Visual C++ 8.0 (2005) (static RTL/multithread)<br> + Also compatible with Microsoft Visual C++ 2005 Express Edition -<br> + <a style="text-decoration: none" href="http://msdn.microsoft.com/vstudio/express/visualc/">http://msdn.microsoft.com/vstudio/express/visualc/</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_vc9</b></td> + <td bgcolor="#DDDDDD"> Microsoft Visual C++ 9.0 (2008) (static RTL/multithread)<br> + Also compatible with Microsoft Visual C++ 2008 Express Edition -<br> + <a style="text-decoration: none" href="http://msdn.microsoft.com/vstudio/express/visualc/">http://msdn.microsoft.com/vstudio/express/visualc/</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_dll</b></td> + <td bgcolor="#C0C0C0"> built using vc6, creates dependency with MSVCRT.DLL<br> + (either other libraries or new applications).</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_dll7</b></td> + <td bgcolor="#C0C0C0"> built using vc7, creates dependency with MSVCR71.DLL<br> + (either other libraries or new applications).</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_dll8</b></td> + <td bgcolor="#C0C0C0"> built using vc8, creates dependency with MSVCR80.DLL<br> + (either other libraries or new applications).</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_dll9</b></td> + <td bgcolor="#C0C0C0"> built using vc9, creates dependency with MSVCR90.DLL<br> + (either other libraries or new applications).</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win64_vc8</b></td> + <td bgcolor="#DDDDDD"> Same as <b>Win32_vc8</b> but for 64-bits + systems using x64 standard.</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win64_vc9</b></td> + <td bgcolor="#DDDDDD"> Same as <b>Win32_vc9</b> but for 64-bits + systems using x64 standard.</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win64_dll8</b></td> + <td bgcolor="#DDDDDD"> Same as <b>Win32_dll8</b> but for 64-bits + systems using x64 standard.</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win64_dll9</b></td> + <td bgcolor="#DDDDDD"> Same as <b>Win32_dll9</b> but for 64-bits + systems using x64 standard.</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_gcc3</b></td> + <td bgcolor="#C0C0C0"> Cygwin gcc 3.4 (Depends on Cygwin DLL 1.5) - + <a href="http://www.cygwin.com/" style="text-decoration: none">http://www.cygwin.com/</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_cygw15</b></td> + <td bgcolor="#C0C0C0"> Same as <b>Win32_gcc3</b>, but using the Cygwin Posix + system</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_mingw3</b></td> + <td bgcolor="#C0C0C0"> MingW gcc 3.4 - + <a href="http://www.mingw.org/" style="text-decoration: none">http://www.mingw.org/</a> + ¹<br> + Also compatible with Dev-C++ - + <a href="http://www.bloodshed.net/devcpp.html" style="text-decoration: none">http://www.bloodshed.net/devcpp.html</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_mingw4</b></td> + <td bgcolor="#C0C0C0"> MingW gcc 4.x (unofficial) - + <a href="http://www.develer.com/oss/GccWinBinaries" style="text-decoration: none">http://www.develer.com/oss/GccWinBinaries</a> + ¹</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_owc1</b></td> + <td bgcolor="#DDDDDD"> Open Watcom 1.5 - + <a href="http://www.openwatcom.org/" style="text-decoration: none">http://www.openwatcom.org/</a></td> + </tr> + <tr> + <td bgcolor="#C0C0C0" align="right"><b>Win32_bc56</b></td> + <td bgcolor="#C0C0C0"> Borland C++ BuilderX 1.0 / Borland C++ 5.6 Compiler - + <br /> + <a href="http://www.borland.com/products/downloads/download_cbuilderx.html" style="text-decoration: none">http://www.borland.com/products/downloads/download_cbuilderx.html</a> + <font face="Times New Roman">¹,²</font><br> + (the C++ BuilderX IDE can also be configured to use mingw3 or gcc3 versions.) + </td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win32_bin</b></td> + <td bgcolor="#DDDDDD"> Executables only for Windows NT/2000/XP</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><b>Win64_bin</b></td> + <td bgcolor="#DDDDDD"> Same as <b>Win32_bin</b> but for 64-bits systems + using the x64 standard</td> + </tr> + <tr> + <td bgcolor="#DDDDDD" align="right"><strong>Win32_cygw15_bin</strong></td> + <td bgcolor="#DDDDDD"> Executables only for Windows NT/2000/XP, but + using the Cygwin Posix system</td> + </tr> +</table> + + <p>¹ - Notice that all the Windows + compilers with links here are free to download and use. <br> + ² - Recently Borland removed the C++ Builder X + from download. But if you bought a book that has the CD of the compiler, then + it is still free to use.<br> + <sup><span class="style1">3</span></sup> - OpenMotif 2.2 is classified as + 'experimental' by the Open Group. </p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/drv.html b/html/en/drv.html new file mode 100644 index 0000000..2cd78f5 --- /dev/null +++ b/html/en/drv.html @@ -0,0 +1,25 @@ +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Drivers</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Drivers</h1> + + <p>Driver is the implementation of functions of a canvas for a specific canvas + type. In other words it represents the context in which the canvas is + situated. For example, a Window System that has windows on which you can draw. + </p> + <p>It can be portable, platform independent, or it can has a different + implementation in each platform. In this case its functions may have different + behaviors, but the library is implemented in such a way that these differences + are minimized. </p> + + +</body> + +</html> diff --git a/html/en/drv/cgm.html b/html/en/drv/cgm.html new file mode 100644 index 0000000..17ca141 --- /dev/null +++ b/html/en/drv/cgm.html @@ -0,0 +1,184 @@ +<!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>CD_CGM</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_CGM - <em>Computer Graphics Metafile Driver </em>(cdcgm.h)</h2> + + <p>This driver allows generating a Computer Graphics Metafile, which is an ANSI standard for the persistent storage of + graphics primitives. The file usually has an extension .CGM.</p> + +<h3>Use</h3> + + <p>The file file is created by means of a call to the function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_CGM, + Data)</font>, which <b>opens</b> the file and writes its header. Then, other functions in the CD library can be called + as usual. The <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre><em>"filename [widthxheight] [resolution] [-t] -p[precision]" or in C style "<strong><tt>%s %gx%g %g %s</tt></strong>"</em></pre> + + <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (") + if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters + (note the lowercase "x" between them), and their default value in pixels is <font face="Courier">INT_MAX</font> for + both dimensions. When the canvas' size is not specified, the VDC Extension saved to the file is the image's bounding + rectangle. The resolution is the number of pixels per millimeter; its default value is "3.78 pixels/mm" (96 DPI). + <font face="Courier">Width</font>, <font face="Courier">height</font> and <font face="Courier">resolution</font> are + real values. <font face="Courier">Width</font>, <font face="Courier">height</font> and <font face="Courier">resolution</font> + are used only by <strong><font face="Courier">cdGetCanvasSize</font> </strong>and in pixel-millimeter conversion. + Parameter <font face="Courier">-t</font> modifies the codification. Parameter <font face="Courier">-p</font> specifies + the precision of integers, which can be 16 (default) or 32.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + <p><strong>Coding -</strong> The CGM format supports binary and text coding. If you are not sure what to do, use + binary coding, which is the default. Should you prefer text coding, add a "<font face="Courier">-t</font>" string to + the <font face="Courier">Data</font> parameter.</p> + <p><strong>Precision of Coordinates -</strong> The primitives can use coordinates in real numbers. However, for + compatibility reasons, we use coordinates in integers.</p> + +<h3>Behavior of Functions</h3> +<h4>Control </h4> +<ul> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + does nothing.</li> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + creates a new image, preserving the previous one. The CGM format supports multiple images in a file.</li> + <li><a href="../func/other.html#cdPlay"><font face="Courier"><strong>Play</strong></font></a>: + works with files created with text or binary coding. There are several callbacks for this driver. If one of the + callbacks returns a value different from zero, <font face="Courier">cdPlay</font>'s processing is interrupted. The + driver implements the callback <tt><strong><font face="Courier">CD_SIZECB</font> </strong></tt>and other callbacks + associated to CGM:<br> + <tt><font face="Courier"><strong>CD_COUNTERCB</strong></font> - int(*cdcgmcountercb)(cdContext *driver, double + percent) - </tt>Executed for each header of CGM commands; returns the percentage (0-100%) of headers read.<br> + <font face="Times New Roman"><code><strong><span style="font-family: Courier">CD_SCLMDECB</span></strong></code></font><tt> - int(*cdcgmsclmdecb)(cdContext + *driver, short scl_mde, short *drw_mode, double *factor)</tt> <font face="Courier">-</font> Executed for the command + CGM SCALE MODE. Returns the current CGM scale mode and allows the callback to modify the scale mode used by the + <font face="Courier">cdPlay</font> function <font face="Courier">(ABSTRACT=0, METRIC=1)</font>. Should you choose the + METRIC or ABSTRACT scale mode but the original scale mode is METRIC, you must provide the conversion factor in mm per + pixel.<br> + <font face="Times New Roman"><code><strong><span style="font-family: Courier">CD_VDCEXTCB</span></strong></code></font><tt> - int(*cdcgmvdcextcb)(cdContext + *driver, short type, void *xmn, void *ymn, void *xmx, void *ymx)</tt> <font face="Courier">-</font> Executed for the + CGM command CGM VDC EXTENT, returns the VDC SPACE. <br> + <font face="Times New Roman"><code><strong><span style="font-family: Courier">CD_BEGPICTCB</span></strong></code></font><tt> - int(*cdcgmbegpictcb)(cdContext + *driver, char *pict)</tt> <font face="Courier">-</font> Executed for the command BEGIN PICTURE, returns the string + that describes the image.<br> + <font face="Times New Roman"><code><strong><span style="font-family: Courier">CD_BEGPICTBCB</span></strong></code></font><tt> - int(*cdcgmbegpictbcb)(cdContext + *driver)</tt> <font face="Courier">-</font> Executed for the command BEGIN PICTURE BODY.<br> + <font face="Times New Roman"><code><strong><span style="font-family: Courier">CD_CGMBEGMTFCB</span></strong></code></font> - <font face="Times New Roman"><code> + int (*cdcgmbegmtfcb)(cdContext *driver, int *xmin, int *ymin, int *xmax, int *ymax)</code></font> - Executed for the + command BEGIN METAFILE, provides the drawing limits of the image in the file.</li> +</ul> +<h4>Coordinate System and Clipping</h4> +<ul> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing. The axis orientation is the same as the CD library.</li> + <li><b>Complex Regions</b>: not supported.</li> + <li><strong>Transformation Matrix</strong>: not supported.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><a href="../func/lines.html#cdBegin"><font face="Courier"><strong>Begin</strong></font></a>: + if parameter <strong><tt>CD_CLIP</tt></strong> or <strong><tt>CD_BEZIER</tt></strong> are specified, does nothing.</li> + <li><font face="Courier"><strong><a href="../func/marks.html#cdPixel">Pixel</a></strong></font>: + does not exist in CGM, is simulated using a mark with size 1.</li> + <li><strong><font face="Courier"><a href="../func/filled.html#cdChord">Chord</a></font></strong>: + does nothing.</li> + <li>Floating point primitives are supported.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing, returns <font face="Courier">CD_REPLACE</font>.</li> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + is simulated.</li> + <li><a href="../func/filled.html#cdFillMode"><font face="Courier"><strong> + FillMode</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineCap"><font face="Courier"><strong> + LineCap</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineJoin"><font face="Courier"><strong> + LineJoin</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: is simulated.</li> + <li><a href="../func/text.html#cdTextOrientation"><font face="Courier"> + <strong> + TextOrientation</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + see the table bellow for the generated font names. No other fonts are + supported.</li> +</ul> +<div align="center"> + <center> + <table border="1" cellpadding="5"> + <caption style="text-align: center"><font size="4">Font Mapping</font></caption> + <tr> + <th rowspan="2">CD Fonts</th> + <th colspan="4">Generated Font Names</th> + </tr> + <tr> + <th>CD_PLAIN</th> + <th>CD_BOLD</th> + <th>CD_ITALIC</th> + <th>CD_BOLD|CD_ITALIC</th> + </tr> + <tr> + <td>"System"</td> + <td>"SYSTEM"</td> + <td>"SYSTEM_BOLD"</td> + <td>"SYSTEM_ITALIC"</td> + <td>"SYSTEM_BOLDITALIC"</td> + </tr> + <tr> + <td>"Courier"</td> + <td>"COURIER" </td> + <td>"COURIER_BOLD" </td> + <td>"COURIER_ITALIC" </td> + <td>"COURIER_BOLDITALIC"</td> + </tr> + <tr> + <td>"Times"</td> + <td>"TIMES_ROMAN" </td> + <td>"TIMES_ROMAN_BOLD"</td> + <td>"TIMES_ROMAN_ITALIC"</td> + <td>"TIMES_ROMAN_BOLDITALIC" </td> + </tr> + <tr> + <td>"Helvetica"</td> + <td>"HELVETICA" </td> + <td>"HELVETICA_BOLD"</td> + <td>"HELVETICA_ITALIC"</td> + <td>"HELVETICA_BOLDITALIC"</td> + </tr> + </table> + </center> +</div> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 24.</li> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + does nothing. </li> +</ul> +<h4>Client Images </h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> + <li><a href="../func/client.html#cdPutImageRGBA"><font face="Courier"><strong> + PutImageRGBA</strong></font></a>: alpha is ignored.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/clipbd.html b/html/en/drv/clipbd.html new file mode 100644 index 0000000..0b9be2d --- /dev/null +++ b/html/en/drv/clipbd.html @@ -0,0 +1,68 @@ +<!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>CD_CLIPBOARD</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_CLIPBOARD - Clipboard Driver (cdclipbd.h)</h2> + + <p>This driver allows the access to a Clipboard area. It is greatly dependent + on the system. In Win32, it creates an <a href="emf.html">Enhanced Metafile</a>, + a <b>Bitmap</b> or a <a href="mf.html">CD Metafile</a>; in X-Windows it + creates only a <a href="mf.html">CD Metafile</a>.</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"> + <strong>cdCreateCanvas</strong></a>(CD_CLIPBOARD, Data)</font>, after which + other functions in the CD library can be called as usual. The + <font face="Courier">Data</font> parameter string is platform-dependent and + varies according to the metafile created. See each metafile's documentation, + but remember to exclude parameter <font face="Courier">"filename".</font></p> + <p>In the Windows environment, if the string "<font face="Courier">-b</font>" + is present, it means that a <b>Bitmap</b> must be created instead of a + metafile, and, if the string <font face="Courier">"-m"</font> is specified, a + <b>CD Metafile</b> will be created. For a <b>Bitmap</b> the remaining string + must contains the bitmap size and optionally its resolution: <em>"-b + widthxheight [resolution]"</em> or in C "<tt><em><strong>%dx%d %g"</strong></em></tt>, + the resolution default is the screen resolution.</p> + <p>In the X-Windows environment, the Display <font face="Courier">("%p")</font> + where the data will be stored must be passed as a parameter before the <b>CD + Metafile</b> parameters. This environment's driver is used only for + applications that use CD to communicate with each other, because only CD Metafiles + are created.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to + note that a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + properly copy the data to the Clipboard.</p> + <p>You can interpret the data from the Clipboard using function <strong>cdPlay</strong>. In the X-Windows environment, the + parameter <font face="Courier">"data"</font> for the <strong>cdPlay + </strong>function is the pointer to the + Display where the metafile will be obtained. The <strong>cdRegisterCallback</strong> + must be called for the driver that will interpret the file, except for bitmaps + that the <strong>CD_CLIPBOARD</strong> driver must be used.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> in each platform: <a href="win32.html">Microsoft + Windows (GDI)</a>, <a href="xwin.html">X-Windows (XLIB)</a>. However, it + should be noted that some functions behave differently from the basic + functions of each platform.</p> + + +</body> + +</html> diff --git a/html/en/drv/dbuf.html b/html/en/drv/dbuf.html new file mode 100644 index 0000000..37b5c89 --- /dev/null +++ b/html/en/drv/dbuf.html @@ -0,0 +1,71 @@ +<!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>CD_DBUFFER</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_DBUFFER - Double Buffer Driver using a server image (cddbuf.h)</h2> + + <p>Implements the concept of offscreen drawing. It is based on a Server Image + (the back buffer) and a Window canvas (the front buffer).</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to function + <a href="../func/init.html#cdCreateCanvas"> + <font face="Courier"><strong>cdCreateCanvas</strong></font></a><font face="Courier">(CD_DBUFFER, + Data)</font>, after which other functions in the CD library can be called as + usual. This function creates a CD canvas to use with an existing window canvas + (Native Windows or IUP). The parameter <font face="Courier">Data</font> is a + pointer to the already created canvas.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to + note that a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + properly <b>end</b> the driver. Call function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> for this driver + before calling <font face="Courier"><strong>cdKillCanvas</strong></font> for + the window driver.</p> + <p>The drawing functions will work normally as if they were drawn on + the server image driver. When function <font face="Courier"><b> + <a href="../func/control.html#cdFlush"> + cdCanvasFlush</a></b></font> is executed, the image is drawn in the window canvas + passed as parameter in the canvas creation.</p> + <p>When the window's size changes, the server image is automatically recreated + using the same size as the canvas. This is done in the function + <font face="Courier"><b> + <a href="../func/init.html#cdActivate"> + cdCanvasActivate</a></b></font>.</p> +<p>We suggest you to implement rubber bands using XOR directly on the front +buffer.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> in each platform: <a href="win32.html">Microsoft + Windows (GDI)</a>, <a href="gdiplus.html">Windows Using GDI+</a>, + <a href="xwin.html">X-Windows (XLIB)</a>. However, it should be noted that + some functions behave differently from the basic functions of each platform.</p> +<h4>Control</h4> +<ul> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + draws the contents of the image into the window. It is affected by <strong> + Origin</strong> and <strong>Clipping</strong>, but not by <strong>WriteMode</strong>.</li> +</ul> +<p> </p> + + +</body> + +</html> diff --git a/html/en/drv/dbufrgb.html b/html/en/drv/dbufrgb.html new file mode 100644 index 0000000..a9fa4c8 --- /dev/null +++ b/html/en/drv/dbufrgb.html @@ -0,0 +1,60 @@ +<!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>CD_DBUFFER</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_DBUFFERRGB - Double Buffer Driver using a RGB image (cdirgb.h)</h2> + + <p>Implements the concept of offscreen drawing. It is based on a Image + RGB (the back buffer) and any other canvas (the front buffer).</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to function + <a href="../func/init.html#cdCreateCanvas"> + <font face="Courier"><strong>cdCreateCanvas</strong></font></a><font face="Courier">(CD_DBUFFERRGB, + Data)</font>, after which other functions in the CD library can be called as + usual. This function creates a CD canvas to use with any existing canvas. The parameter <font face="Courier">Data</font> is a + pointer to the already created canvas.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to + note that a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + properly <b>end</b> the driver. Call function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> for this driver + before calling <font face="Courier"><strong>cdKillCanvas</strong></font> for + the client canvas driver.</p> + <p>The drawing functions will work normally as if they were drawn on + the image RGB driver. When function <font face="Courier"><b> + <a href="../func/control.html#cdFlush"> + cdCanvasFlush</a></b></font> is executed, the image is drawn in the canvas + passed as parameter in the canvas creation.</p> + <p>When the window's size changes, the RGB image is automatically recreated + using the same size as the canvas. This is done in the function + <font face="Courier"><b> + <a href="../func/init.html#cdActivate"> + cdCanvasActivate</a></b></font>.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver depends on the <a href="irgb.html">RGB Client Image Driver</a>.</p> +<h4>Control</h4> +<ul> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + draws the contents of the image into the window. It is affected by <strong> + Origin</strong> and <strong>Clipping</strong>, but not by <strong>WriteMode</strong>.</li> +</ul> +<p> </p> + + +</body> + +</html> diff --git a/html/en/drv/debug.html b/html/en/drv/debug.html new file mode 100644 index 0000000..e405dac --- /dev/null +++ b/html/en/drv/debug.html @@ -0,0 +1,64 @@ +<!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>CD_METAFILE</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_DEBUG - CD Debug Driver (cddebug.h)</h2> + + <p>This driver creates a text file with a log of all function calls. But for + only the functions that have a driver implementation and in the order that + the driver implements sequece of functions like Begin/Vertex/End. Pointers + are stored as addresses, and definitions are stored as the CD definition + "CD_XXX".</p> + +<h3>Use</h3> + + <p>The file is created by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_DEBUG, + Data)</font>. The <font face="Courier">Data</font> parameter is a string that must contain the filename and the canvas + dimensions, in the following format:</p> + + <pre>"<i>filename </i>[widthxheight resolution]" or in <em>C use "<strong><tt>%s %gx%g %g</tt></strong>"</em></pre> + + <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (") + if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters + (note the lowercase "x" between them), and their default value in pixels is <font face="Courier">INT_MAX</font> for + both dimensions. <font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is + "3.78 pixels/mm" (96 DPI). <font face="Courier">Width</font>, <font face="Courier">height</font> and + <font face="Courier">resolution</font> are real values.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + +<h3>Behavior of Functions</h3> +<h4>Coordinate System and Clipping </h4> +<ul> + <li><a href="../func/other.html#cdPlay"> + <font face="Courier"><strong>Play</strong></font></a>: NOT implemented. </li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing.</li> +</ul> +<h4>Attributes</h4> +<dir> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + uses a size estimator, returning approximate values.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: uses a size estimator, returning approximate values.</li> +</dir> +<h4>Colors</h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: always returns 24.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/dgn.html b/html/en/drv/dgn.html new file mode 100644 index 0000000..acd688b --- /dev/null +++ b/html/en/drv/dgn.html @@ -0,0 +1,161 @@ +<!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>CD_DGN</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_DGN - MicroStation Design File Driver (cddgn.h)</h2> + + <p>This driver allows generating a MicroStation design file. The file name usually has an extension .DGN. The driver + supports only MicroStation version 4.0 or later. The format's copyrights are property of + <a href="http://www.bentley.com" target="_top">Bentley Systems</a>.</p> + +<h3>Use</h3> + + <p>The file is created and opened by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_DGN, + Data)</font>, in which <font face="Courier">Data</font> contains the filename and canvas dimensions. This function + opens the file and writes its header. Then, other functions in the CD library can be called as usual. The + <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre><em>"filename [widthxheight] [resolution] [-f] [-sseedfile]" </em>or in C <em>"<strong><tt>%s %gx%g %g %s</tt></strong>"</em></pre> + + <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (") + if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters + (note the lowercase "x" between them), and their default value in pixels is <font face="Courier">INT_MAX</font> for + both dimensions. <font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is + "3.78 pixels/mm" (96 DPI). <font face="Courier">Width</font>, <font face="Courier">height</font> and + <font face="Courier">resolution</font> are real values. Parameter <font face="Courier">-f</font> modifies the polygon + filling's behavior. Just as in MicroStation, you can specify a seed file using parameter <font face="Courier">-s</font>. + <font face="Courier">Width</font>, <font face="Courier">height</font> and <font face="Courier">resolution</font> are + used only by <a href="../func/coordinates.html#cdGetCanvasSize"> + <font face="Courier"><strong>cdCanvasGetSize</strong></font></a><font face="Courier"><strong> </strong></font>and in + pixel-millimeter conversion. </p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to close the file properly.</p> + <p><b>Images and Colors</b> - The DGN format does not support server images and works with an indexed-color format. + Color quality is limited to 256 colors, and the format uses a uniform palette to convert RGB colors into palette + indices. If you configure a palette, the color conversion process will become slower.</p> + <p><b>Filling</b> - Up to version 5.0, MicroStation presents some limitations for polygon filling. You can disable + filling by means of string "<font face="Courier">-f</font>" in the <font face="Courier">Data</font> parameter. Filled + polygons can only have around 10,000 vertices; if the value is larger, the polygon style changes to closed lines.</p> + <p><b>Seed</b> - In the seed file, several DGN parameters can be defined to be used in the drawing. The library offers + a default seed file, called "SEED2D.DGN". The file's location depends on the environment variable <strong>CDDIR</strong>.</p> + +<h3>Behavior of Functions</h3> +<h4>Control</h4> +<ul> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + does nothing.</li> + <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/clipping.html#cdClip"><font face="Courier"><strong>Clip</strong></font></a>: + does nothing (no clipping function is supported), returns <font face="Courier">CD_CLIPOFF</font>.</li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing. The axis orientation is the same as the CD library.</li> + <li><strong>Transformation Matrix</strong>: not supported.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><a href="../func/lines.html#cdBegin"><font face="Courier"><strong>Begin</strong></font></a>: + if parameter <strong><tt>CD_CLIP</tt></strong> or <strong><tt>CD_BEZIER</tt></strong> are specified, does nothing.</li> + <li><strong><font face="Courier"><a href="../func/filled.html#cdChord">cdChord</a></font></strong>: + does nothing.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li><a href="../func/filled.html#cdBackOpacity"><font face="Courier"><strong> + BackOpacity</strong></font></a>: does nothing, returns <font face="Courier">CD_OPAQUE</font>.</li> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing, returns <font face="Courier">CD_REPLACE</font>.</li> + <li><a href="../func/filled.html#cdInteriorStyle"><font face="Courier"> + <strong> + InteriorStyle</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdFillMode"><font face="Courier"><strong> + FillMode</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineCap"><font face="Courier"><strong> + LineCap</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineJoin"><font face="Courier"><strong> + LineJoin</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdHatch"><font face="Courier"><strong>Hatch</strong></font></a>: + does nothing.</li> + <li><a href="../func/filled.html#cdStipple"><font face="Courier"><strong> + Stipple</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdPattern"><font face="Courier"><strong> + Pattern</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: returns a bounding box which is usually larger than the text (the computation is based + on the widest character).</li> + <li><a href="../func/text.html#cdTextAlignment"><font face="Courier"><strong> + TextAlignment</strong></font></a>: uses <font face="Courier"><strong>cdTextSize</strong></font>, therefore is not + precise.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + See the font mapping table for the equivalence used to map CD fonts into + MicroStation fonts. Styles are not supported.</li> +</ul> +<div align="center"> + <center> + <table border="1" cellpadding="5"> + <caption valign="top"><font size="4">Font Mapping</font></caption> + <tr> + <th>CD Fonts</th> + <th>MicroStation Font Index</th> + </tr> + <tr> + <td><font face="Courier">CD_SYSTEM</font></td> + <td><font face="Courier">0</font></td> + </tr> + <tr> + <td><font face="Courier">CD_COURIER</font> </td> + <td><font face="Courier">1</font></td> + </tr> + <tr> + <td><font face="Courier">CD_TIMES_ROMAN</font></td> + <td><font face="Courier">2</font></td> + </tr> + <tr> + <td><font face="Courier">CD_HELVETICA</font></td> + <td><font face="Courier">3</font></td> + </tr> + </table> + </center> +</div> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 8 (MicroStation uses a palette with 256 values).</li> + <li><a href="../func/attributes.html#cdBackground"><font face="Courier"> + <strong> + Background</strong></font></a>: always returns <code><font face="Times New Roman">CD_WHITE</font></code>.</li> +</ul> +<h4>Client Images </h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> + <li><a href="../func/client.html#cdPutImageRGB"><font face="Courier"><strong> + PutImageRGB</strong></font></a>: considering that the format supports only 256 colors, image quality is quite poor.</li> + <li><a href="../func/client.html#cdPutImageRGBA"><font face="Courier"><strong> + PutImageRGBA</strong></font></a>: alpha is ignored.</li> + <li><a href="../func/client.html#cdPutImageMap"><font face="Courier"><strong> + PutImageMap</strong></font></a>: considering that the format supports only 256 colors, image quality is quite poor.</li> +</ul> +<h4>Server Images </h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/dxf.html b/html/en/drv/dxf.html new file mode 100644 index 0000000..95274ee --- /dev/null +++ b/html/en/drv/dxf.html @@ -0,0 +1,180 @@ +<!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>CD_DXF</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_DXF - AutoCAD Image Exchange File Driver (cddxf.h)</h2> + + <p>This driver allows generating an AutoCAD image exchange file. The file name usually has an extension .DXF. This + driver supports only AutoCAD version 10.0 or later. The format's copyrights are property of + <a href="http://www.autodesk.com" target="_top">Autodesk</a>.</p> + +<h3>Use</h3> + + <p>The file is created and opened by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_DXF, + Data)</font>, in which <font face="Courier">Data</font> contains the file name and canvas dimensions. This function + opens the file and writes its header. Then, other functions in the CD library can be called as usual. The + <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre><em>"filename [widthxheight] [resolution]" </em>or in C <em>"<strong><tt>%s %gx%g %g</tt></strong>"</em></pre> + + <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (") + if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters + (note the lowercase "x" between them), and their default value in pixels is <font face="Courier">INT_MAX</font> for + both dimensions. <font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is + "3.78 pixels/mm" (96 DPI). <font face="Courier">Width</font>, <font face="Courier">height</font> and + <font face="Courier">resolution</font> are given in real values and are used only by + <a href="../func/coordinates.html#cdGetCanvasSize"><font face="Courier"><strong> + cdCanvasGetSize</strong></font></a><font face="Courier"><strong> </strong></font>and in pixel-millimeter conversion. </p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to close the DXF file properly.</p> + <p><b>Images </b>- The DXF format does not support client or server images and works with an indexed-color format + (color quality is limited to 256 fixed colors). </p> + <p><strong>Precision of Coordinates -</strong> The primitives use coordinates in real numbers.</p> + <p><strong>Layers -</strong> The format can work with several layers. It is necessary to draw the primitives of layer + '0' first, then layer '1' and so on. Use functions + <a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a> + to change the current layer.</p> + +<h3>Behavior of Functions</h3> +<h4>Control </h4> +<ul> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + changes the current layer (the initial layer is '0', followed by '1' and so on). </li> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + does nothing.</li> + <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/clipping.html#cdClip"><font face="Courier"><strong>Clip</strong></font></a>: + does nothing (no clipping function is supported), returns <font face="Courier">CD_CLIPOFF</font>.</li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing. Axis orientation is the same as in the CD library.</li> + <li><strong>Transformation Matrix</strong>: not supported.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><a href="../func/filled.html#cdBox"><font face="Courier"><strong>Box</strong></font></a>: + draws only the box's borders (no filling function is supported). Behaves like + <strong><font face="Courier">Rect</font></strong>.</li> + <li><a href="../func/filled.html#cdSector"><font face="Courier"><strong>Sector</strong></font></a>: + draws a "hollow" sector, that is, only its borders.</li> + <li><a href="../func/lines.html#cdBegin"><font face="Courier"><strong>Begin</strong></font></a>: + <font face="Courier"><strong><tt>CD_FILL</tt></strong></font> is mapped to <font face="Courier"><strong><tt> + CD_CLOSED_LINES</tt></strong></font>. if parameter <strong><tt>CD_CLIP</tt></strong> or <strong><tt>CD_BEZIER</tt></strong> + are specified, does nothing.</li> + <li><strong><font face="Courier"><a href="../func/filled.html#cdChord">Chord</a></font></strong>: + does nothing.</li> + <li>Floating point primitives are supported.</li> +</ul> +<h4>Attributes</h4> +<ul> + <li><a href="../func/filled.html#cdBackOpacity"><font face="Courier"><strong> + BackOpacity</strong></font></a>: does nothing, returns <font face="Courier">CD_TRANSPARENT</font>.</li> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing, returns <font face="Courier">CD_REPLACE</font>.</li> + <li><a href="../func/filled.html#cdInteriorStyle"><font face="Courier"> + <strong> + InteriorStyle</strong></font></a>: does nothing (filling is not supported), returns 0.</li> + <li><a href="../func/filled.html#cdHatch"><font face="Courier"><strong>Hatch</strong></font></a>: + does nothing. </li> + <li><a href="../func/filled.html#cdFillMode"><font face="Courier"><strong> + FillMode</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineCap"><font face="Courier"><strong> + LineCap</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdLineJoin"><font face="Courier"><strong> + LineJoin</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdStipple"><font face="Courier"><strong> + Stipple</strong></font></a>: does nothing.</li> + <li><a href="../func/filled.html#cdPattern"><font face="Courier"><strong> + Pattern</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: returns a bounding box usually larger than the text (the computation is based on the + widest character).</li> + <li><a href="../func/text.html#cdTextOrientation"><font face="Courier"> + <strong> + TextOrientation</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + italic styles correspond to the basic styles with an inclination of 15<sup>o</sup>. See the font mapping table for the + equivalence used to map fonts of the CD library into AutoCAD fonts. No + other fonts are supported.</li> +</ul> +<div align="center"> + <center> + <table border="1" cellpadding="5"> + <caption valign="top"><font size="4">Font Mapping</font></caption> + <tr> + <th>CD Fonts</th> + <th>AutoCAD Fonts</th> + </tr> + <tr> + <td><font face="Courier">S</font><span style="font-family: Courier">ystem</span></td> + <td><font face="Courier">STANDARD (sem arquivo)</font></td> + </tr> + <tr> + <td><font face="Courier">Courier</font></td> + <td><font face="Courier">ROMAN (romanc.shx)</font></td> + </tr> + <tr> + <td><font face="Courier">Courier + CD_BOLD</font></td> + <td><font face="Courier">ROMAN_BOLD (romant.shx)</font></td> + </tr> + <tr> + <td><font face="Courier">Times</font></td> + <td><font face="Courier">ROMANTIC (rom_____.pfb)</font></td> + </tr> + <tr> + <td><font face="Courier">Times + CD_BOLD</font></td> + <td><font face="Courier">ROMANTIC_BOLD (romb_____.pfb)</font></td> + </tr> + <tr> + <td><font face="Courier">Helvetica</font></td> + <td><font face="Courier">SANSSERIF (sas_____.pfb)</font></td> + </tr> + <tr> + <td><font face="Courier">Helvetica + CD_BOLD</font></td> + <td><font face="Courier">SANSSERIF_BOLD (sasb____.pfb)</font></td> + </tr> + </table> + </center> +</div> +<h4>Colors</h4> +<ul> + <li><a href="../func/attributes.html#cdForeground"><font face="Courier"> + <strong> + Foreground</strong></font></a>: indexes<font face="Courier"> long int *color</font> in the fixed palette + (AutoCAD uses a 256-color palette - for further detail, see AutoCAD's Reference Manual).</li> + <li><a href="../func/attributes.html#cdBackground"><font face="Courier"> + <strong> + Background</strong></font></a>: does nothing, returns <font face="Courier">CD_WHITE</font>.</li> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 8.</li> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + does nothing (the palette is fixed). </li> +</ul> +<h4>Client Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> +<h4>Server Images </h4> +<ul> + <li>All functions do nothing.</li> +</ul> +<p> </p> + +</body> + +</html> diff --git a/html/en/drv/emf.html b/html/en/drv/emf.html new file mode 100644 index 0000000..1f7b462 --- /dev/null +++ b/html/en/drv/emf.html @@ -0,0 +1,84 @@ +<!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>CD_EMF</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_EMF - Enhanced Metafile Driver (cdemf.h)</h2> + + <p>This driver allows generating a Microsoft Windows Enhanced Metafile, the + format used by 32-bit Windows systems to store graphics primitives. Usually, + the filename has an extension "*.emf".</p> + <p>The driver works only in the Microsoft Windows platform, but you can use it + in other platforms without the risk of compilation error. If you attempt to + create a canvas in another platform, function <font face="Courier"><strong> + cdCreateCanvas</strong></font> will return NULL.</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"> + <strong>cdCreateCanvas</strong></a>(CD_EMF, Data)</font>, after which other CD + functions can be called as usual. Parameter <font face="Courier">Data</font> + has the following format:</p> + + <pre><em>"filename widthxheight" </em>or in C <em>"<strong><tt>%s %dx%d</tt></strong>"</em></pre> + + <p>It must include the filename and the canvas' dimensions.<font face="Courier"> + </font>The filename must be inside double quotes (") if it has spaces.<font face="Courier"> + Width</font> and <font face="Courier">height</font> are provided in pixels + (note the lowercase "x" between them). Resolution (the number of pixels per + millimeter) is always the screen resolution.</p> + <p>Any amount of such canvases may exist simultaneously. Function + <font face="Courier"><strong>cdCreateCanvas</strong></font> <b>opens</b> the + file, and a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + <b>close</b> the file properly.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas. If you intend to use <strong>cdCanvasPlay</strong> +to interpret the EMF, then do not use GDI+ to generate the metafile. GDI+ +extensively use internal transformations that will affect the <strong> +cdCanvasPlay</strong> interpretation. Also some interior style will not be +correctly interpreted.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> of the <a href="win32.html">Microsoft Windows (GDI)</a> + or <a href="gdiplus.html">Windows Using GDI+</a> platform base drivers. It has + been noticed that EMF, when saved in the Windows 95 environment, is not + totally compatible with EMF saved in the Windows NT environment.</p> + +<h4>Control Functions</h4> +<ul> + <li><a href="../func/other.html#cdPlay"> + <font face="Courier"><strong>Play</strong></font></a>: different from the + basic driver, is implemented. Not implemented using GDI+.</li> + <li> + <a href="../func/control.html#cdClear"> + <font face="Courier"><strong>Clear</strong></font></a>: different from the + basic driver, does nothing.</li> +</ul> +<h4>Client Images </h4> +<ul> + <li> + <a href="../func/client.html#cdGetImageRGB"> + <font face="Courier"><strong>GetImageRGB</strong></font></a>: does nothing.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/gdiplus.html b/html/en/drv/gdiplus.html new file mode 100644 index 0000000..e4a2810 --- /dev/null +++ b/html/en/drv/gdiplus.html @@ -0,0 +1,200 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> + +<head> +<meta http-equiv="Content-Language" content="en"> +<title>GDI+</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>Microsoft Windows Base <em style="font-style: normal">Driver</em> Using GDI+</h2> + + <p>This driver represents a base driver for all system-dependent drivers implemented in the Microsoft Windows system, + but uses a new API called GDI+. The drivers <b>Clipboard, Native Window</b>, <b>IUP</b>, <b>Image</b>, <b>Printer</b>, + <b>EMF</b> and <b>Double Buffer</b> were implemented. The driver <b>WMF</b>, and the function <font face="Courier"> + <strong>cdPlay</strong></font> of the <b>Clipboard</b> and <b>EMF</b> drivers were not implemented using GDI+.</p> + <p>The main motivation for the use of GDI+ was transparency for all the primitives. Beyond that we got other features + like anti-aliasing, gradient filling, bezier lines and filled cardinal splines.</p> + <p>This driver still does not completely replace the GDI Windows base driver, because GDI+ does not have support for + XOR. Also the applications need to adapt the rendering of text that is slightly different from GDI. It is know that + GDI+ can be slower than GDI in some cases and faster in other cases, Microsoft does not make this clear.</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 GDI+ for the available + 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 GDI+ 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>, <strong> + <span style="font-family: Courier">CD_PRINTER</span></strong>, <strong> + <span style="font-family: Courier">CD_EMF</span></strong>, <strong> + <span style="font-family: Courier">CD_DBUFFER</span></strong> and <strong> + <span style="font-family: Courier">CD_CLIPBOARD</span></strong>, because they are + function calls and not static defines.</p> + <p>Using GDI+ 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 GDI canvas.</p> + <p>To enable the use of GDI+ based drivers you must call the initialization function <font face="Courier"><strong> + cdInitContextPlus()</strong></font> once and link to the libraries "<strong>cdcontextplus.lib</strong>" and "<strong>gdiplus.lib</strong>". + Also the file "<strong>gdiplus.dll</strong>" must be available in your system. These files already came with Visual + C++ 7 and Windows XP. For other compilers or systems you will need to copy the ".lib" file for you libraries area, and + you will need to copy the DLL for the Windows\System (Win98/Me) or Windows\System32 (Win2000/NT4-SP6) folder. The + gdiplus files can be obtained from + <a href="http://www.microsoft.com/downloads/details.aspx?familyid=6a63ab9c-df12-4d41-933c-be590feaa05a&displaylang=en"> + Microsoft</a> or from <a href="../../download/gdiplus.zip">here</a>.</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"><strong><a href="../func/marks.html#cdPixel">Pixel</a></strong></font>: + uses GDI. Excepting when the canvas is an image so it is done using GDI+.</li> + <li><font face="Courier"><a href="../func/filled.html#cdSector"><b>Sector</b></a></font>: + it also draws an arc in the same position to complete the size of the sector.</li> + <li><font face="Courier"><a href="../func/text.html#cdText"><b>Text</b></a></font>: + opaque text is simulated using a rectangle in the back.</li> + <li><a href="../func/lines.html#cdBegin"><font face="Courier"><strong>Begin</strong></font></a>: + Beyond the standard modes it accepts the additional modes: <strong><tt>CD_FILLSPLINE</tt></strong> and <strong><tt> + CD_FILLGRADIENT</tt></strong>. The C definitions of these modes are available in the <b>cdgdiplus.h</b> header.<br> + <strong><tt><br> + CD_SPLINE</tt></strong> defines the points of a curve constructed by a cardinal spline. Uses the current line style.<br> + <strong><tt>CD_FILLSPLINE</tt></strong> defines the points of a filled curve constructed by a cardinal spline. Uses + the current interior style.<br> + <strong><tt>CD_FILLGRADIENT</tt></strong> defines the points of a filled polygon. It is filled with a gradient from + colors in each vertex to a color in its center. The colors are defined by the "<strong><tt>GRADIENTCOLOR</tt></strong>" + attribute, that must be set before each <strong><tt>cdVertex</tt></strong> call and before <strong><tt>cdEnd</tt></strong> + for the center color. This will not affect the current interior style.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li><a href="../func/filled.html#cdBackOpacity"><font face="Courier"><strong> + BackOpacity</strong></font></a>: only changes the transparency of the background color to 0 (transparent) or 255 + (opaque).</li> + <li><a href="../func/filled.html#cdHatch"><font face="Courier"><strong>Hatch</strong></font></a>: + diagonal styles are drawn with anti-aliasing.</li> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing. There is no support for XOR or NOT_XOR.</li> + <li><a href="../func/filled.html#cdPattern"><font face="Courier"><strong> + Pattern</strong></font></a>: each pixel can contain transparency information.</li> + <li><font face="Courier"><strong><a href="../func/lines.html#cdLineStyle"> + LineStyle</a></strong></font>: uses a custom GDI+ style when line width is 1. In World Coordinates the line style + has its scaled changed.</li> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + the maximum width is estimated from the character "W".</li> + <li><font face="Courier"><strong><a href="../func/text.html#cdTextAlignment"> + TextAlignment</a></strong></font>: is simulated. Although GDI+ has text alignment, the results + do not match the CD text alignment.</li> + <li><a href="../func/text.html#cdNativeFont"><font face="Courier"><strong> + NativeFont</strong></font></a>: also accepts <em><strong>"-d"</strong></em><strong> + </strong> to show the font-selection dialog box.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + "System" is mapped to "MS Sans Serif", "Courier" is mapped to "Courier New", + "Helvetica" is mapped to "Arial", and "Times" is mapped to "Times New Roman". + Underline and Strikeout are supported.</li> +</ul> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + works only when the canvas is a server image.</li> + <li><a href="../func/attributes.html#cdForeground"><font face="Courier"> + <strong> + Foreground</strong></font></a> & + <a href="../func/attributes.html#cdBackground"> + <font face="Courier"><strong>Background</strong></font></a>: accepts the transparency information encoded in the + color.</li> +</ul> +<h4>Client Images </h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: uses GDI. Excepting when the canvas is an image so it is done using GDI+.</li> +</ul> +<h4>Server Images </h4> +<ul> + <li><strong><a href="../func/server.html#cdGetImage">GetImage</a></strong>: + uses GDI. Excepting when the canvas is an image so it is done using GDI+.</li> + <li><strong><a href="../func/server.html#cdScrollArea">ScrollArea</a></strong>: + uses GDI. Excepting when the canvas is an image so it is done using GDI+.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<span style="font-family: Courier"><strong>GDI+</strong></span>": + returns "1". So the application can detect if the driver uses the GDI+ base + driver. Other drivers that do not implement this attribute will return NULL.</li> +</ul> +<ul> + <li>"<b><font face="Courier">HDC</font></b>": returns the HDC of the Win32 canvas. It can only be retrieved (get + only). In Lua is returned as a user data. It is not NULL only in some Native Windows canvas and in the printer canvas.</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">GRADIENTCOLOR</font></b>": necessary for the creation of the gradient fill defined by a + polygon (see details in the function <font face="Courier"><strong>cdBegin</strong></font> above). Defines the color of + each vertex and the center (%d %d %d" = r g b). It can not be retrieved (set only).</li> +</ul> +<ul> + <li>"<b><font face="Courier">IMAGETRANSP</font></b>": defines an interval of colors to be considered transparent in + client and server images (except for RGBA images). It uses two colors to define the interval ("%d %d %d %d %d %d" = r1 + g1 b1 r2 g3 b3). Use NULL to remove the attribute. </li> +</ul> +<ul> + <li>"<b><font face="Courier">IMAGEFORMAT</font></b>": defines the number of bits per pixel used to create server + images. It uses 1 integer that can have the values: "32" or "24" (%d). Use NULL to remove the attribute. It is used + only in the <font face="Courier"><strong>cdCreateImage</strong></font>. When not defined, the server images use the + same format of the canvas.</li> +</ul> +<ul> + <li>"<strong><font face="Courier">IMAGEALPHA</font></strong>": allows the usage of an alpha channel for server + images if IMAGEFORMAT=32. The attribute format is a pointer to the transparency values in a sequence of chars in + the same format of alpha for client images. The attribute is used in the <strong> + <font face="Courier">cdCreateImage</font></strong> and for every <font face="Courier"><strong> + cdPutImageRect</strong></font>, the pointer must exists while the image exists. The alpha values are transfered to + the image only in <font face="Courier"><strong>cdPutImageRect</strong></font>, so they can be freely changed any time. + The data is not duplicated, only the pointer is stored. The size of the data must be the same size of the image. Use + NULL to remove the attribute. Not accessible in Lua.</li> +</ul> +<ul> + <li>"<b><font face="Courier">IMAGEPOINTS</font></b>": define 3 coordinates of a paralelogram that will be used + to warp server and client images in the subsequent calls of <font face="Courier"><strong>PutImage</strong></font> + functions. Use 6 integer values inside a string ("%d %d %d %d %d %d" = x1 y1 x2 y2 x3 y3). Use NULL to remove the + attribute. The destination rectangle of the <font face="Courier"><strong>PutImage</strong></font> functions will be + ignored. The respective specified points are the upper-left corner, the upper-right corner and the lower left corner. + In GDI+ this attribute is more complete than in GDI, because affects also client images.</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).</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).</li> +</ul> +<ul> + <li><b><font face="Courier">"LINECAP": </font></b>defines addicional line cap styles. It can have the following + values: "Triangle", "NoAnchor", "SquareAnchor", "RoundAnchor", "DiamondAnchor", or "ArrowAnchor". It can not be + retrieved (set only).</li> +</ul> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/drv/image.html b/html/en/drv/image.html new file mode 100644 index 0000000..f19b3b3 --- /dev/null +++ b/html/en/drv/image.html @@ -0,0 +1,57 @@ +<!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>CD_IMAGE</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_IMAGE - Server Image Driver (cdimage.h)</h2> + + <p>This driver provides access to a Server Image, a memory-based + high-performance image that corresponds to the attributes of the system's + devices. It is used for offscreen drawings.</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to function + <a href="../func/init.html#cdCreateCanvas"> + <font face="Courier"><strong>cdCreateCanvas</strong></font></a><font face="Courier">(CD_IMAGE, + Data)</font>, after which other functions in the CD library can be called as + usual. The function creates a CD canvas based on an existing Server Image. The + <font face="Courier">Data</font> parameter must be a pointer to an image + created with function + <a href="../func/server.html#cdCreateImage"> + <font face="Courier"><strong>cdCreateImage</strong></font></a>.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to + note that a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + properly <b>end</b> the driver. You can call function + <a href="../func/server.html#cdKillImage"> + <font face="Courier"><strong>cdKillImage</strong></font></a> only after + calling <font face="Courier"><strong>cdKillCanvas</strong></font>.</p> + <p>For use with CDLUA, the Server Image passed as parameter must have been + created with function <strong><font face="Courier">cd.CreateImage</font></strong> + in Lua.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> in each platform: <a href="win32.html">Microsoft + Windows (GDI)</a>, <a href="gdiplus.html">Windows Using GDI+</a>, + <a href="xwin.html">X-Windows (XLIB)</a>. However, it should be noted that + some functions behave differently from the basic functions of each platform.</p> + + +</body> + +</html> diff --git a/html/en/drv/irgb.html b/html/en/drv/irgb.html new file mode 100644 index 0000000..3ab71f4 --- /dev/null +++ b/html/en/drv/irgb.html @@ -0,0 +1,117 @@ +<!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>CD_IMAGERGB</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_IMAGERGB - RGB Client Image Driver (cdirgb.h)</h2> + + <p>This driver allows access to a Client Image, an imaged based in RGB colors with 24 + or 32 bits per pixel (8 per channel). + It is used to implement high-quality offscreen drawings, but is slower than the Server Image version. In fact, it is a + rasterizer, that is, it converts vector primitives into a raster representation. All primitives are implemented by the + library and are not system-dependent (the primitives of the Server Image version are system-dependent).</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to the function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_IMAGERGB, + Data)</font>, after which other functions in the CD library can be called as usual. The function creates an RGB image, + and then a CD canvas. The <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre><em>"width<strong>x</strong>height [r g b] -<strong>r</strong>[resolution]"</em> in C "<em><strong><tt>%dx%d %p %p %p -r%g" +or +</tt></strong>"width<strong>x</strong>height [r g b a] -<strong>r</strong>[resolution] -<strong>a</strong>"</em> in C "<em><strong><tt>%dx%d %p %p %p %p -r%g -a"</tt></strong></em></pre> + + <p>It must include the canvas' dimensions.<font face="Courier"> Width</font> and <font face="Courier">height</font> + are provided in pixels (note the lowercase "x" between them). As an option, you can specify the buffers to be used by + the driver, so that you can draw over an existing image. The resolution can be defined with parameter + <font face="Courier">-r</font>; its default value is "3.78 pixels/mm" (96 DPI). </p> +<p>When the parameter -a is specified an alpha channel will be added to the +canvas underlying image. All primitives will be composed using an over operator +if the foreground or background colors have alpha components. This channel is +initialized with transparent (0). The other channels are initialized with white +(255, 255, 255). After drawing in the RGBA image the resulting alpha channel can +be used to compose the image in another canvas.</p> +<p>All channels are initialized only when allocated internally by the driver. +They are not initialized when allocated by the application.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><strong>cdKillCanvas</strong></a> is required to + release internal allocated memory.</p> + <p>In Lua, the canvas can be created in two ways: with an already defined image or without it. With an image, an RGB + image must be passed as parameter, created by functions <strong> + <a href="../func/client.html#cdCreateImageRGB">cd.CreateImageRGB</a>,</strong> + <strong><a href="../func/client.html#cdCreateImageRGBA">cd.CreateImageRGBA</a></strong> or <strong> + <a href="../func/client.html#cdCreateBitmap">cd.CreateBitmap</a></strong> + in Lua. The resolution must be passed in an extra parameter after the image.</p> + +<h3>Exclusive Functions</h3> + +<h4><font face="Courier">cd.ImageRGB(canvas: cdCanvas) -> (imagergb: cdImageRGB +or cdImageRGBA) [in Lua]<br> +cd.ImageRGBBitmap(canvas: cdCanvas) -> (bitmap: cdBitmap) [in Lua]</font></h4> + + <p>Returns the canvas' internal image.</p> + +<h3>Behavior of Functions</h3> + + <p>All primitives are from the Simulation driver, see the <a href="sim.html">Simulation</a> driver's documentation for + further information.</p> + +<h4>Control</h4> +<ul> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + does nothing.</li> + <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>: does nothing. The axis orientation is the same as the CD library's.</li> +</ul> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 24 if no alpha, returns 32 if + exists an alpha channel.</li> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + does nothing.</li> + <li><a href="../func/attributes.html#cdForeground"><font face="Courier"> + <strong> + Foreground</strong></font></a> & + <a href="../func/attributes.html#cdBackground"> + <font face="Courier"><strong>Background</strong></font></a>: accepts the transparency information encoded in the + color.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<strong><font face="Courier">REDIMAGE</font></strong>", "<strong><font face="Courier">GREENIMAGE</font></strong>", + "<strong><font face="Courier">BLUEIMAGE</font></strong>", "<span style="font-family: Courier"><strong>ALPHA</strong></span><strong><font face="Courier">IMAGE</font></strong>": return the respective pointers of the canvas image (read-only). Not accessible in Lua.</li> +</ul> + +<ul> + <li>"<b><font face="Courier">ANTIALIAS</font></b>": controls the use of anti-aliasing + for line primitives. Assumes values "1" (active) and "0" (inactive). Default value: "1". + Notice that text is always antialiased.</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> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/drv/iup.html b/html/en/drv/iup.html new file mode 100644 index 0000000..90f11d9 --- /dev/null +++ b/html/en/drv/iup.html @@ -0,0 +1,65 @@ +<!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>CD_IUP</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_IUP - IUP Driver (cdiup.h)</h2> + + <p>This driver provides access to an interface element of a IUP canvas. IUP is a portable user-interface library used + to create portable user-interface applications. See + <a target="_top" href="http://www.tecgraf.puc-rio.br/iup">IUP documentation</a>.</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to the function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_IUP, + Data)</font>, after which other CD functions can be called as usual. This function creates a CD canvas based on the + existing IUP canvas. The parameter <font face="Courier">Data</font> is a pointer to a handle of the IUP canvas (<font face="Courier">Ihandle*</font>). + For use with CDLUA, a canvas created with IUPLUA must necessarily be passed as parameter.</p> + <p>Any amount of such canvases may exist simultaneously, but they should not use the same IUP canvas. It is important + to note that a call to function <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + <p>The CD canvas is automatically stored in the IUP canvas as the <strong>"<font face="Courier">_CD_CANVAS</font>"</strong> + attribute.</p> + + + + <p>To use this driver, it must be linked with the "<b><font face="Courier">iupcd</font></b>" + library available in the + IUP distribution. </p> + <p>In Lua, it is necessary to call function <strong><font face="Courier">cdluaiup_open() </font></strong>after a call + to function <strong><font face="Courier">cdlua_open()</font></strong>, apart from linking with the "<strong><font face="Courier">iupluacd</font></strong>" + library. To use with require must be require"iupluacd" or require"iupluacd51".</p> + <p>To use this driver in Windows using GDI+ is necessary to call + <font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> + before creating the canvas.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent, but little dependent on the IUP library. For further detail, see the <b> + Behavior of Functions</b> in each platform: <a href="win32.html">Microsoft Windows (GDI)</a>, <a href="gdiplus.html"> + Windows Using GDI+</a>, <a href="xwin.html">X-Windows (XLIB)</a>. However, it should be noted that some functions + behave differently from the basic functions of each platform.</p> + +<h4>Control </h4> +<ul> + <li><a href="../func/init.html#cdActivate"><font face="Courier"><strong> + cdCanvasActivate</strong></font></a>: updates the canvas size; the IUP canvas might have been resized.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<b><font face="Courier">WINDOWRGN</font></b>": set the shape of a window to the current complex clipping region + (set only). If data is NULL the region is reset.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/mf.html b/html/en/drv/mf.html new file mode 100644 index 0000000..c6157b9 --- /dev/null +++ b/html/en/drv/mf.html @@ -0,0 +1,80 @@ +<!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>CD_METAFILE</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_METAFILE - CD Metafile Driver (cdmf.h)</h2> + + <p>This driver allows the generation of a CD Metafile, a very simple format that includes calls to functions of the CD + library and provides persistence to its primitives.</p> + +<h3>Use</h3> + + <p>The file is created by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_METAFILE, + Data)</font>. The <font face="Courier">Data</font> parameter is a string that must contain the filename and the canvas + dimensions, in the following format:</p> + + <pre>"<i>filename </i>[widthxheight resolution]" or in <em>C use "<strong><tt>%s %gx%g %g</tt></strong>"</em></pre> + + <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (") + if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters + (note the lowercase "x" between them), and their default value in pixels is <font face="Courier">INT_MAX</font> for + both dimensions. <font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is + "3.78 pixels/mm" (96 DPI). <font face="Courier">Width</font>, <font face="Courier">height</font> and + <font face="Courier">resolution</font> are real values.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + <p><b>Images - </b>Be careful when saving images in the file, because it uses a text format to store all numbers and + texts of primitives, including images, which significantly increases its size.</p> + <p><b>Extension -</b> Although this is not required, we recommend the extension used for the file to be ".MF".</p> + +<h3>Behavior of Functions</h3> +<h4>Coordinate System and Clipping </h4> +<ul> + <li><a href="../func/other.html#cdPlay"> + <font face="Courier"><strong>Play</strong></font></a>: implemented. </li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing.</li> + <li><b>Complex Regions</b>: not supported.</li> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + removes all primitives from the picture.</li> +</ul> +<h4>Attributes</h4> +<dir> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + uses a size estimator, returning approximate values.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: uses a size estimator, returning approximate values.</li> +</dir> +<h4>Colors</h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: always returns 24.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li>Floating point primitives are supported.</li> +</ul> +<h4>Client Images</h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/native.html b/html/en/drv/native.html new file mode 100644 index 0000000..20d182a --- /dev/null +++ b/html/en/drv/native.html @@ -0,0 +1,91 @@ +<!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=windows-1252"> +<title>CD_NATIVEWINDOW</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_NATIVEWINDOW - Native Window Driver (cdnative.h)</h2> + + <p>This driver provides access to an existing Native Window, a basic element of the user-interface system. It also + provides access to other native handles like HDC handles in Windows.</p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to the function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_NATIVEWINDOW, + Data)</font>, after which other functions in the CD library can be called as usual. This function <b>creates</b> a CD + canvas based on an existing system canvas. The parameter <font face="Courier">Data</font> is a pointer to a handle of + the canvas. It is system-dependent, having a different meaning in each platform:</p> + + <p><strong>Microsoft Windows</strong>: can be the handle of the Windows window (<font face="Courier">HWND</font>), + or the handle of a previously created Device Context (<font face="Courier">HDC</font>), or can be a string in the + format "<font face="Courier">hdc width height</font>" or, in C, "<font face="Courier">%p %d %d</font>". + To get the entire screen use a NULL data.<br> + <strong>X-Windows</strong>: It is a string in the format "<font face="Courier">display window</font>" or, in C, "<font face="Courier"><tt>%p + %lu</tt></font>" (uses the default screen).</p> + + <p>The given parameters must exists until <font face="Courier"><strong>cdKillCanvas</strong></font> is called. The + <font face="Courier">HDC</font> is released only if created inside <font face="Courier"><strong>cdCreateCanvas</strong></font> + from an <font face="Courier">HWND</font> or when data is NULL.</p> + <p>Any amount of such canvases may exist simultaneously, but they should not use the same window, except if you are + using a GDI canvas and a GDI+ canvas at the same time for the same window.</p> + + <p>In CDLUA, the creation parameter must be a string in X-Windows and a userdata in Microsoft Windows.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas.</p> + +<h3>Exclusive Functions</h3> +<h4><font face="Courier">void cdGetScreenSize(int *width, int *height, double *width_mm, double *height_mm); [in C]<br> +<font face="Courier New" color="#808080">cd.Get</font></font><font color="#808080"><font face="Courier New">Screen</font><font face="Courier"><font face="Courier New">Size() +-> (width, heigth, mm_width, mm_height:</font> <i>number</i><font face="Courier New">)</font> [in Lua]</font></font></h4> + + <p>Equivalent to function <a href="../func/coordinates.html#cdGetCanvasSize"> + <font face="Courier"><b>cdCanvasGetSize</b></font></a>, but returns the values relative to the main screen of the + window system. It is not necessary to have an active canvas to call this function.</p> + +<h4><font face="Courier">int cdGetScreenColorPlanes(void); [in C]<br> +<font color="#808080">cd.GetScreenColorPlanes() -> (bpp: <em>number</em>) [in Lua</font>]</font></h4> + + <p>Equivalent to function <a href="../func/color.html#cdGetColorPlanes"> + <font face="Courier"><b>cdCanvasGetColorPlanes</b></font></a>, but returns the value relative to the main screen of the + window system. It is not necessary to have an active canvas to call this function.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b>Behavior of Functions</b> in each + platform: <a href="win32.html">Microsoft Windows (GDI)</a>, <a href="gdiplus.html">Windows Using GDI+</a>, + <a href="xwin.html">X-Windows (XLIB)</a>. However, it should be noted that some functions behave differently from the + basic functions of each platform.</p> + +<h4>Control</h4> +<ul> + <li><a href="../func/init.html#cdActivate"><font face="Courier"><strong> + cdCanvasActivate</strong></font></a>: updates the canvas size; the window might have been resized. If the canvas was created + using a HDC, the size will not be updated. <br> + <br> + <span style="color: #FF0000"><strong>IMPORTANT</strong></span>: + For the standard Win32 base driver (not GDI+) if your Windows does not have one of the styles CS_OWNDC or CS_CLASSDC, + then a temporary HDC will be created everytime a <strong>cdCanvasActivate</strong> is called. To release this HDC call + <strong>cdCanvasDeactivate</strong> after + drawing. The IupCanvas control of the IUP library in the Win32 driver have the style, so + this should be ignored. But the IupCanvas in the GTK driver running in Win32 + does not have this style so + <strong>cdCanvasDeactivate</strong> should be used.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<b><font face="Courier">WINDOWRGN</font></b>": set the shape of a window to the current complex clipping region + (set only). If data is NULL the region is reset.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/pdf.html b/html/en/drv/pdf.html new file mode 100644 index 0000000..71ee6b7 --- /dev/null +++ b/html/en/drv/pdf.html @@ -0,0 +1,227 @@ +<!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>CD_PDF</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_PDF - PDF Driver (cdpdf.h)</h2> + + <p>This drivers allows generating a PDF file. This format developed for representing documents in a manner that is + independent of the original application software, hardware, and operating system used to create those documents. The + format's copyrights are property of <a href="http://www.adobe.com" target="_top">Adobe Systems</a>. </p> + <p>This driver is very similar to the PS driver but it uses the PDFlib library to generate the PDF (<a href="http://www.pdflib.com/">http://www.pdflib.com/</a>). + There are two PDFlib licenses available, one commercial and one free with a flexible license, see + <a href="http://www.pdflib.org/purchase/license-lite.html">PDFlib Lite License</a>. The CD_PDF driver works with both + versions. </p> +<p>By default the pre-compiled library in the distribution uses the PDF Lite version code. The configuration of the PDF Lite code +included does not supports image + file formats. The current PDF Lite version is 7.0.2.</p> + <p>PDFlib Copyright (c) 1997-2007 Thomas Merz and PDFlib GmbH. All rights reserved. Applications that use this driver + are subject to the <a href="../../download/PDFlib-Lite-license.pdf">PDFlib GmbH License Agreement</a>.</p> + +<h3>Use</h3> + + <p>The file is created and opened by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_PDF, + Data)</font>, in which <font face="Courier">Data</font> contains the filename and canvas dimensions. This function + opens the file and writes its header. Then, other functions in the CD library can be called as usual. The + <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre>"<em>filename -p[paper] -w[width] -h[height] -s[resolution] [-o]</em>" +or in C<em> +"<strong><tt>%s -p%d -w%g -h%g -s%d -o</tt></strong>"</em></pre> + + <p>The filename must be inside double quotes (") if it has spaces. Any amount of such canvases may exist + simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + + + + <p>To use this driver, the application must be linked with the "<strong>cdpdf</strong>" + and "<strong>pdflib</strong>" libraries. </p> + <p><b>Paper Size - </b>The default paper size is A4. It is possible to change it by using one of the predefined sizes + - <strong><tt>CD_A0</tt></strong>, <strong><tt>CD_A1</tt></strong>, <strong><tt>CD_A2</tt></strong>, <strong><tt>CD_A3</tt></strong>, + <strong><tt>CD_A4</tt></strong>, <strong><tt>CD_A5</tt></strong>, <strong><tt>CD_LETTER</tt></strong> and <strong><tt> + CD_LEGAL</tt></strong> - with parameter "<font face="Courier">-p</font>". It is also possible to define a paper in a + particular size by using parameters "<font face="Courier">-w</font>" e "<font face="Courier">-h</font>". Values are + provided in millimeters.</p> + +<div align="center"> + <center> + <table border="1" cellpadding="3"> + <caption valign="top"><font size="4">Default Paper Sizes</font></caption> + <tr> + <td> </td> + <th>Width (mm)</th> + <th>Length (mm)</th> + </tr> + <tr> + <td><strong>A0</strong></td> + <td align="center">841</td> + <td align="center">1187</td> + </tr> + <tr> + <td><strong>A1</strong></td> + <td align="center">594</td> + <td align="center">841</td> + </tr> + <tr> + <td><strong>A2</strong></td> + <td align="center">420</td> + <td align="center">594</td> + </tr> + <tr> + <td><strong>A3</strong></td> + <td align="center">297</td> + <td align="center">420</td> + </tr> + <tr> + <td><strong>A4</strong></td> + <td align="center">210</td> + <td align="center">297</td> + </tr> + <tr> + <td><strong>A5</strong></td> + <td align="center">148</td> + <td align="center">210</td> + </tr> + <tr> + <td><strong>Letter</strong></td> + <td align="center">216</td> + <td align="center">279</td> + </tr> + <tr> + <td><strong>Legal</strong></td> + <td align="center">216</td> + <td align="center">356</td> + </tr> + </table> + </center> +</div> + + <p><b>Resolution -</b> Resolution is used to convert values from millimeters to pixels (the same as points, but the + number of points is per inch - DPI). Use parameter "<font face="Courier">-s</font>" to configure the resolution. The + default value is 300 DPI.</p> + <p><b>Orientation -</b> The page can be oriented as portrait or landscape. The default value is portrait, but when the + parameter "-o" is used, the horizontal and vertical values are switched.</p> + <p>In Lua, it is necessary to call function <strong><font face="Courier">cdluapdf_open() </strong> </font>after a call + to function <strong><font face="Courier">cdlua_open()</font></strong>, apart from linkediting with the "<strong><font face="Courier">cdluapdf</font></strong>" + library.</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> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + changes to a new page, preserving the previous one. </li> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + does nothing.</li> +</ul> +<h4>Coordinate System & Clipping</h4> +<ul> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing.</li> + <li><b>Complex Regions</b>: not supported.</li> +</ul> +<h4>Attributes</h4> +<ul> + <li><a href="../func/attributes.html#cdBackground"><font face="Courier"> + <strong> + Background</strong></font></a> does nothing, returns <font face="Courier">CD_WHITE</font>.</li> + <li><a href="../func/filled.html#cdBackOpacity"><font face="Courier"><strong> + BackOpacity</strong></font></a>: does nothing, returns <font face="Courier">CD_TRANSPARENT</font>.</li> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing, returns <font face="Courier">CD_REPLACE</font>.</li> + <li><a href="../func/filled.html#cdHatch"><font face="Courier"><strong>Hatch</strong></font></a>: + is always opaque.</li> + <li><a href="../func/filled.html#cdStipple"><font face="Courier"><strong> + Stipple</strong></font></a>: is always opaque.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + the old "System" font is mapped to the "Courier" font. For + the PDF core fonts styles are added to the font name, for other fonts styles + are simulated by PDFlib. Underline and Strikeout are supported. Following is the core fonts:</li> +</ul> +<pre>Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique, +Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique, +Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, +Symbol, +ZapfDingbats</pre> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 24.</li> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + does nothing. </li> +</ul> +<h4>Client Images</h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> + <li><font face="Courier"><strong><a href="../func/client.html#cdPutImageMap"> + PutImageMap</a></strong></font>: stores an RGB image.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><font face="Courier"><strong><a href="../func/marks.html#cdPixel">Pixel</a></strong></font>: + does not exist in PDF, is simulated using a circle with radius=1.</li> + <li>Floating point primitives are supported.</li> + <li>Filled primitves do not include the line at the edges of the filled area.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li><strong><font face="Courier">"POLYHOLE"</font></strong>: defines the index of +the vertex where there is a hole in a + closed polygon. It will affect the next <strong>cdEnd</strong>. Can be called several times between + <strong>cdBegin</strong> and <strong>cdEnd</strong> to define holes. The value passed must + be a string containing an integer ("%d"). If the value of the attribute passed is NULL, all holes will no longer be + considered. When consulted returns the current number of holes ("%d"). It can have a maximum of 500 holes. + Default: NULL.</li> +</ul> +<ul> + <li><strong><span style="font-family: Courier">"HATCHBOXSIZE"</span></strong>: + defines the size of smallest hatch box pattern. This affects the spacing + between the hatch lines. The value passed must be a string containing an + integer ("%d"). If the value of the attribute passed is NULL, the value is + rest to the default. When consulted returns the current value ("%d"). Default: + "8".</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).</li> +</ul> +<ul> + <li>"<b><font face="Courier">OPAQUE</font></b>": allows the usage of a global + opacity value. The value passed must be a string containing an integer + ("%d") [0=full transparent, 255=full opaque]. Use NULL to reset to the + default. Default: 255.</li> +</ul> +<ul> + <li>"<b><font face="Courier">PATTERN</font></b>": creates a pattern with + regular primitives (except images). The value passed must be a string + containing two integeres with the pattern size ("%dx%d") [widthxheight]. + Just call regular primitives. Use NULL to end the pattern creation and set + the interior style.</li> +</ul> +<ul> + <li>"<b><font face="Courier">PDF</font></b>": Returns the "PDF*" handle + of the PDFLib.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/picture.html b/html/en/drv/picture.html new file mode 100644 index 0000000..d702555 --- /dev/null +++ b/html/en/drv/picture.html @@ -0,0 +1,81 @@ +<!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>CD_METAFILE</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_PICTURE - CD Picture (cdpicture.h)</h2> + + <p>This driver allows the creation of a CD Picture. It store primitives and + attributes in memory that can be played and resized in any other driver. It + does not includes clipping and WriteMode.</p> + +<h3>Use</h3> + + <p>The file is created by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_PICTURE, + Data)</font>. The <font face="Courier">Data</font> parameter is a string that + can contain the resolution in the following format:</p> + + <pre>"[resolution]" or in <em>C use "<strong><tt>%lg</tt></strong>"</em></pre> + + <p><font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is + "3.78 pixels/mm" (96 DPI).</p> +<p>The canvas size is automatically calculated to be the bounding box of all the +primitives inside the picture.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to release the picture memory.</p> + +<h3>Behavior of Functions</h3> +<h4>Coordinate System and Clipping </h4> +<ul> + <li><a href="../func/other.html#cdPlay"> + <font face="Courier"><strong>Play</strong></font></a>: implemented. </li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing.</li> + <li><b><strong>Clipping</strong>:</b> not supported.</li> + <li><strong>Transformation Matrix</strong>: not supported.</li> + <li><a href="../func/coordinates.html#cdGetCanvasSize">cdGetCanvasSize</a>: + returns the size of the bounding box that includes all primitives inside the + picture.</li> +</ul> +<h4>Attributes</h4> +<dir> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing.</li> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + uses a size estimator, returning approximate values.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: uses a size estimator, returning approximate values.</li> +</dir> +<h4>Colors</h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: always returns 24.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li>Floating point primitives are supported.</li> +</ul> +<h4>Client Images</h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/printer.html b/html/en/drv/printer.html new file mode 100644 index 0000000..d354fe2 --- /dev/null +++ b/html/en/drv/printer.html @@ -0,0 +1,83 @@ +<!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>CD_PRINTER</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_PRINTER - Printer Driver (cdprint.h)</h2> + + <p>This driver provides access to a System Default Printer. </p> + <p>Currently, it works only in Microsoft Windows platforms, but it is possible + to use it in other platforms without the risk of compilation error. If you + attempt to create a canvas in another platform, the function + <a href="../func/init.html#cdCreateCanvas"> + <font face="Courier"><strong>cdCreateCanvas</strong></font></a> will return + NULL.</p> + +<h3>Use</h3> + + <p>The canvas is created by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"> + <strong>cdCreateCanvas</strong></a>(CD_PRINTER, Data)</font>, after which + other CD functions can be called as usual. The <font face="Courier">Data</font> + string has the following format:</p> + + <pre><span style="background-color: #CEE7FF">"</span><i>name </i>[-d]" <em> or in C style "</em><em><strong><tt>%s -d</tt></strong></em><em>"</em></pre> + + <p><font face="Courier">name</font> is an optional document name that will + appear in the printer queue. Optionally, <font face="Courier">-d</font> + displays the System Printer dialogue box before starting to print, allowing + you to configure the printer's parameters. When using this parameter and the + return canvas is NULL, one must assume that the print was canceled by the + user.</p> + <p>Any amount of such canvases may exist simultaneously. It is important to + note that a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + properly send the data to the printer.</p> + <p><b>Pages -</b> Use + <a href="../func/control.html#cdFlush"> + <font face="Courier"><strong>Flush</strong></font></a> to change to a new + page. You can draw first on page 1, then on page 2 and so forth.</p> +<p>To use this driver in Windows using GDI+ is necessary to call +<font face="Courier"><strong> + cdUseContextPlus</strong></font><strong><font face="Courier">(1)</font></strong> +before creating the canvas.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> in each platform: <a href="win32.html">Microsoft + Windows (GDI)</a>, <a href="gdiplus.html">Windows Using GDI+</a>, + <a href="xwin.html">X-Windows (XLIB)</a>. However, it should be noted that + some functions behave differently from the basic functions of each platform.</p> + <p>A printer created in Win32s has the same limitations as the + <a href="wmf.html">WMF driver</a>. In Windows 95 or NT, it has the same + limitations as the <a href="emf.html">EMF driver</a>.</p> + +<h4>Control</h4> +<ul> + <li> + <a href="../func/control.html#cdFlush"> + <font face="Courier"><strong>Flush</strong></font></a>: changes to a new + page, preserving the previous one. In the Win32 base driver, after the first + page, function <font face="Courier"><strong>cdText</strong></font> draws the + text below its correct position - we do not know why this happens.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li> + <a href="../func/filled.html#cdHatch"> + <font face="Courier"><strong>Hatch</strong></font></a>: opaque in Win32 base + driver (GDI).</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/ps.html b/html/en/drv/ps.html new file mode 100644 index 0000000..7a2dc1a --- /dev/null +++ b/html/en/drv/ps.html @@ -0,0 +1,208 @@ +<!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>CD_PS</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_PS - PostScript Driver (cdps.h)</h2> + + <p>This drivers allows generating a PostScript file. This format was created to be a high-quality graphics language + for printers and is currently supported by several printers. If your printer supports PostScript, you can send the + file generated by the driver directly to the printer port. Usually, the filename has an extension .PS or .EPS. The + driver generates level-2 PostScript, therefore some PostScript viewers might present errors. The format's copyrights + are property of <a href="http://www.adobe.com" target="_top">Adobe Systems</a>. </p> + +<h3>Use</h3> + + <p>The file is created and opened by calling function <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"><strong>cdCreateCanvas</strong></a>(CD_PS, + Data)</font>, in which <font face="Courier">Data</font> contains the filename and canvas dimensions. This function + opens the file and writes its header. Then, other functions in the CD library can be called as usual. The + <font face="Courier">Data</font> parameter string has the following format:</p> + + <pre>"<em>filename -p[paper] -w[width] -h[height] -l[left] -r[right] -b[bottom] -t[top] -s[resolution] [-e]</em> <em>[-g] [-o] [-1] d[margin]</em>"<em><br> +</em>or in C<em><br> +"<strong><tt>%s -p%d -w%g -h%g -l%g -r%g -b%g -t%g -s%d -e -o -1 -g -d%g</tt></strong>"</em></pre> + + <p>The filename must be inside double quotes (") if it has spaces. Any amount of such canvases may exist + simultaneously. It is important to note that a call to function + <a href="../func/init.html#cdKillCanvas"><font face="Courier"><strong> + cdKillCanvas</strong></font></a> is required to <b>close</b> the file properly.</p> + <p><b>Paper Size - </b>The default paper size is A4. It is possible to change it by using one of the predefined sizes + - <strong><tt>CD_A0</tt></strong>, <strong><tt>CD_A1</tt></strong>, <strong><tt>CD_A2</tt></strong>, <strong><tt>CD_A3</tt></strong>, + <strong><tt>CD_A4</tt></strong>, <strong><tt>CD_A5</tt></strong>, <strong><tt>CD_LETTER</tt></strong> and <strong><tt> + CD_LEGAL</tt></strong> - with parameter "<font face="Courier">-p</font>". It is also possible to define a paper in a + particular size by using parameters "<font face="Courier">-w</font>" e "<font face="Courier">-h</font>". Values are + provided in millimeters.</p> + +<div align="center"> + <center> + <table border="1" cellpadding="3"> + <caption valign="top"><font size="4">Default Paper Sizes</font></caption> + <tr> + <td> </td> + <th>Width (mm)</th> + <th>Length (mm)</th> + </tr> + <tr> + <td><strong>A0</strong></td> + <td align="center">841</td> + <td align="center">1187</td> + </tr> + <tr> + <td><strong>A1</strong></td> + <td align="center">594</td> + <td align="center">841</td> + </tr> + <tr> + <td><strong>A2</strong></td> + <td align="center">420</td> + <td align="center">594</td> + </tr> + <tr> + <td><strong>A3</strong></td> + <td align="center">297</td> + <td align="center">420</td> + </tr> + <tr> + <td><strong>A4</strong></td> + <td align="center">210</td> + <td align="center">297</td> + </tr> + <tr> + <td><strong>A5</strong></td> + <td align="center">148</td> + <td align="center">210</td> + </tr> + <tr> + <td><strong>Letter</strong></td> + <td align="center">216</td> + <td align="center">279</td> + </tr> + <tr> + <td><strong>Legal</strong></td> + <td align="center">216</td> + <td align="center">356</td> + </tr> + </table> + </center> +</div> + + <p><b>Margins -</b> The margins are controlled by parameters "<font face="Courier">-l</font>" "<font face="Courier">-r</font>" + "<font face="Courier">-t</font>" and "<font face="Courier">-b</font>" (<em>left, right, top, bottom</em>). Values are + provided in millimeters. Default margins are 25.4 mm to all parameters. You can draw only inside the margins.</p> + <p><b>Resolution -</b> Resolution is used to convert values from millimeters to pixels (the same as points, but the + number of points is per inch - DPI). Use parameter "<font face="Courier">-s</font>" to configure the resolution. The + default value is 300 DPI.</p> + <p><b>Orientation -</b> The page can be oriented as portrait or landscape. The default value is portrait, but when the + parameter "-o" is used, the horizontal and vertical values are switched.</p> + <p><b>EPS -</b> The PostScript file can be in an <strong>Encapsulated PostScript<b> </b></strong>format. For such, + simply specify the parameter "<font face="Courier">-e</font>". It is useful for other applications to import the + PostScript file. You can define the margins of the bounding box by means of parameter "<font face="Courier">-d</font>", + in millimeters.</p> + <p><b>Debug -</b> Parameter "<font face="Courier">-g</font>" adds a series of comments to the PS file, making the + beginning and end of a command from the CD library explicit. It is useful only for those who understand PostScript and + wish to identify a problem. It considerably increases the file size.</p> + <p><b>Level 1 -</b> Parameter "<font face="Courier">-1</font>" forces the driver to generate a level-1 PostScript. In + this case, pattern, stipple and hatch are not supported.</p> + <p><b>Pages -</b> Use function <font face="Courier">cdFlush</font> to change to a new page. The previous page will not + be changed.</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> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + changes to a new page, preserving the previous one. Does nothing in EPS mode.</li> + <li><a href="../func/control.html#cdClear"><font face="Courier"><strong>Clear</strong></font></a>: + does nothing.</li> +</ul> +<h4>Coordinate System & Clipping</h4> +<ul> + <li><a href="../func/coordinates.html#cdGetCanvasSize"><font face="Courier"> + <strong>GetCanvasSize</strong></font></a>: returns the page's size within the margins (drawing area).</li> + <li><a href="../func/coordinates.html#cdUpdateYAxis"><font face="Courier"> + <strong>UpdateYAxis</strong></font></a>: does nothing.</li> + <li><b>Complex Regions</b>: not supported.</li> +</ul> +<h4>Attributes</h4> +<ul> + <li><a href="../func/attributes.html#cdBackground"><font face="Courier"> + <strong> + Background</strong></font></a> does nothing, returns <font face="Courier">CD_WHITE</font>.</li> + <li><a href="../func/filled.html#cdBackOpacity"><font face="Courier"><strong> + BackOpacity</strong></font></a>: does nothing, returns <font face="Courier">CD_TRANSPARENT</font>.</li> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: does nothing, returns <font face="Courier">CD_REPLACE</font>.</li> + <li><a href="../func/text.html#cdFontDim"><font face="Courier"><strong>FontDim</strong></font></a>: + is simulated.</li> + <li><a href="../func/text.html#cdTextSize"><font face="Courier"><strong> + TextSize</strong></font></a>: is simulated.</li> + <li><a href="../func/filled.html#cdHatch"><font face="Courier"><strong>Hatch</strong></font></a>: + is always opaque (to be implemented).</li> + <li><a href="../func/filled.html#cdStipple"><font face="Courier"><strong> + Stipple</strong></font></a>: is always opaque (to be implemented).</li> + <li><a href="../func/text.html#cdTextAlignment"><font face="Courier"><strong> + TextAlignment</strong></font></a>: <font face="Courier">Baseline</font> is the same as <font face="Courier">South</font>.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + old name "System" is mapped to "Courier". Styles are added to the Postscript + font name.</li> +</ul> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdGetColorPlanes"><font face="Courier"> + <strong> + GetColorPlanes</strong></font></a>: returns 24.</li> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + does nothing. </li> +</ul> +<h4>Client Images</h4> +<ul> + <li><a href="../func/client.html#cdGetImageRGB"><font face="Courier"><strong> + GetImageRGB</strong></font></a>: does nothing.</li> + <li><font face="Courier"><strong><a href="../func/client.html#cdPutImageMap"> + PutImageMap</a></strong></font>: stores an RGB image in the file (to be implemented).</li> + <li><a href="../func/client.html#cdPutImageRGBA"><font face="Courier"><strong> + PutImageRGBA</strong></font></a>: alpha is ignored (to be implemented).</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><font face="Courier"><strong><a href="../func/marks.html#cdPixel">Pixel</a></strong></font>: + does not exist in PS, is simulated using a circle with radius=1.</li> + <li>Floating point primitives are supported.</li> + <li>Filled primitves do not include the line at the edges of the filled area.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<strong><font face="Courier">POLYHOLE</font></strong>": defines the index of + the vertex where there is a hole in a + closed polygon. It will affect the next <strong>cdEnd</strong>. Can be called several times between + <strong>cdBegin</strong> and <strong>cdEnd</strong> to define holes. The value passed must + be a string containing an integer ("%d"). If the value of the attribute passed is NULL, all holes will no longer be + considered. When consulted returns the current number of holes ("%d"). It can have a maximum of 500 holes.</li> +</ul> +<ul> + <li>"<b><font face="Courier">CMD</font></b>": saves a string directly to the file. Allows adding PostScript commands + to the file generated by the CD library. (set only)</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).</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/sim.html b/html/en/drv/sim.html new file mode 100644 index 0000000..85a4e7f --- /dev/null +++ b/html/en/drv/sim.html @@ -0,0 +1,90 @@ +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Simulation</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>Simulation Base Driver</h2> + + <p>The Simulation driver was created to simulate functions that were not supported by some CD drivers. It works + jointly with the other driver (known as "client"), using its pixel, line and text functions to simulate arcs, sectors, + polygons, boxes, and fillings with styles.</p> + <p><b>Important:</b> All simulation primitives are based in the client's Pixel, Image and/or Line functions.</p> + +<h3>Use</h3> + + <p>The Simulation driver is used in several parts of the CD library.</p> + <p>In many drivers, the behavior of a given primitive may not be the expected. Usually this is documented in the + manual. If you wish to activate the simulation of a primitive, simply call function <strong> + <font face="Courier"><a href="../func/init.html#cdSimulate">cdSimulate</a></font></strong> + with the code of the primitive to be simulated.</p> + +<h3>Behavior of Functions</h3> +<h4>Clipping</h4> +<ul> + <li>Clipping is not implemented in the simulation base driver. The primary + driver must implement its own clipping.</li> +</ul> +<h4>Attributes</h4> +<ul> + <li><a href="../func/filled.html#cdLineCap"><font face="Courier"><strong> + LineCap</strong></font></a>: only <font face="Courier">CD_CAPFLAT</font> is supported.</li> + <li><a href="../func/filled.html#cdLineJoin"><font face="Courier"><strong> + LineJoin</strong></font></a>: only <font face="Courier">CD_MITER</font> is supported.</li> + <li><font face="Courier"><strong><a href="../func/lines.html#cdLineStyle"> + LineStyle</a></strong></font>: If line width is greater than 1, the style is + always continuous.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + Selects a True Type font file for the + <a target="_blank" href="http://www.freetype.org/">FreeType</a> library to + render the text. Notice that TTF fonts have different files for different font styles, like bold and italic. Font files can be in the + current directory, in the directory pointed by the CDDIR environment variable, in Windows in the system defined Font + directory, or using the full path of the file. <br> + Old name "System" is mapped to "Courier". For the know font names "Courier" (<font face="Courier">cour</font>), + "Times" (<font face="Courier">times</font>) and "Helvetica" (<font face="Courier">arial</font>), + the styles are added to the font file name as a suffix: "bd", "i" and "bi" are + used for bold, italic and bold-italic. For other fonts, it will first check + for a font map added using the attribute <strong>ADDFONTMAP</strong>, if + failed it will try to load the type_face name without any change, if fail it + will add the style suffix to the type_face and try to load again. The ".ttf" + file extension is always automatically added to the end of the file name.</li> +</ul> +<h4><strong>Primitives</strong> </h4> +<ul> + <li><b><font face="Courier"><a href="../func/marks.html#cdPixel">Pixel</a></font></b>: + always uses the client's pixel function. When clipping simulation is active, it executes area and polygon clipping.</li> + <li><font face="Courier"><a href="../func/lines.html#cdLine"><b>Line</b></a></font>: + draws lines pixel per pixel.</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><font face="Courier"><b><a href="../func/lines.html#cdBegin">Begin</a></b></font>, + <font face="Courier"><a href="../func/lines.html#cdVertex"><b>Vertex</b></a></font> + and <font face="Courier"><a href="../func/lines.html#cdEnd"><b>End</b></a></font>: + simulate using the <strong>Line</strong> or <strong>Pixel</strong> functions, depending on the interior style.</li> + <li><font face="Courier"><a href="../func/text.html#cdText"><b>Text</b></a></font>: + text simulation is made using TrueType font files in a transparent way for the + user. Oriented text is not supported.</li> +</ul> + +<h4>Exclusive Attributes</h4> +<ul> + <li>"<strong>ADDFONTMAP</strong>": Add a font map between a type face + name and a file name. It has the format "Type Face=filename", For ex: "Arial + Narrow Bold=ARIALNB". "Type Face" is not case sensitive.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/win32.html b/html/en/drv/win32.html new file mode 100644 index 0000000..53ac2a5 --- /dev/null +++ b/html/en/drv/win32.html @@ -0,0 +1,137 @@ +<!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=windows-1252"> +<title>Windows</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>Microsoft Windows Base Driver</h2> + + <p>This driver represents a base driver for all system-dependent drivers implemented in the Microsoft Windows system. + The implementation uses Win32 API graphics functions, the GDI. The driver works better in Windows NT, but it may also + work in Windows 9x/Me.</p> + +<h3>Behavior of Functions</h3> +<h4>Control </h4> +<ul> + <li><a href="../func/control.html#cdFlush"><font face="Courier"><strong>Flush</strong></font></a>: + does nothing.</li> + <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.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><a href="../func/text.html#cdText"><font face="Courier"><strong>Text</strong></font></a>: + when Write Mode is <strong><tt>XOR</tt></strong> or <strong><tt>NOT_XOR</tt></strong>, the XOR effect is simulated + using bitmaps.</li> + <li><font face="Courier"><strong><a href="../func/lines.html#cdLine">Line</a></strong></font>: + needs to draw an extra pixel in the final position.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li><a href="../func/attributes.html#cdWriteMode"><font face="Courier"> + <strong> + WriteMode</strong></font></a>: for the client and server image functions, the mode <strong><tt>NOT_XOR</tt></strong> + works as <strong><tt>XOR</tt></strong>.</li> + <li><a href="../func/filled.html#cdStipple"><font face="Courier"><strong> + Stipple</strong></font></a>: is always opaque. If not in Windows NT and if <font face="Courier">width</font> or + <font face="Courier">height</font> are greater than 8, the stipple is simulated using non-regular Windows clipping + regions and bitmaps. The simulation is made when filled boxes, sectors and polygons are drawn.</li> + <li><a href="../func/filled.html#cdPattern"><font face="Courier"><strong> + Pattern</strong></font></a>: If not in Windows NT and if <font face="Courier">width</font> or <font face="Courier"> + height</font> are greater than 8, the pattern is simulated using non-regular Windows clipping regions and bitmaps. The + simulation is made when filled boxes, sectors and polygons are drawn.</li> + <li><a href="../func/lines.html#cdLineWidth"><font face="Courier"><strong> + TextAlignment</strong></font></a>: the vertical alignment of CD_CENTER, CD_EAST, CD_WEST is manually calculated.</li> + <li><a href="../func/lines.html#cdLineWidth"><font face="Courier"><strong> + LineWidth</strong></font></a>: If not in Windows NT line width is always 1. If line width is 1, then a cosmetic pen + is used for fast drawing.</li> + <li><font face="Courier"><strong><a href="../func/lines.html#cdLineStyle"> + LineStyle</a></strong></font>: If line width is 1, the style is a little different from when line width is not 1, + because a cosmetic pen is used for width=1.</li> + <li><a href="../func/text.html#cdNativeFont"><font face="Courier"><strong> + NativeFont</strong></font></a>: also accepts <em><strong>"-d"</strong></em><strong> + </strong> to show the font-selection dialog box.</li> + <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>: + "Courier" is mapped to "Courier New", "Helvetica" is mapped to "Arial", and + "Times" is mapped to "Times New Roman". Underline and + Strikeout are supported. The System font does not have orientation.</li> +</ul> +<h4>Client Images </h4> +<ul> + <li><font face="Courier"><strong><a href="../func/client.html#cdPutImageRGBA"> + PutImageRGBA</a></strong></font>: Try to use the new GDI function AlphaBlend, if not available captures an image + from the canvas to blend it manually.</li> +</ul> +<h4>Colors </h4> +<ul> + <li><a href="../func/color.html#cdPalette"><font face="Courier"><strong>Palette</strong></font></a>: + is useful only if the device has 256 colors. If it has less than 256 colors, ignore this function, for it will not + make much difference. If two different canvases have their palettes modified, the last one to be modified will have + the best quality; the other one will not have good quality and the colors might have a completely different + appearance.</li> +</ul> +<h4>Exclusive Attributes</h4> +<ul> + <li>"<b><font face="Courier">HDC</font></b>": returns the HDC of the Win32 canvas. It can only be retrieved (get + only). In Lua is returned as a user data.</li> +</ul> +<ul> + <li>"<strong><font face="Courier">PENFILLPOLY</font></strong>": controls the polygon filling outline. Assumes values + "1" (active) and "0" (inactive). Default value: "1". When a filled polygon is drawn, a line in the same color is used + to draw the border which is not included in the filling. Deactivating this attribute solves the problem of polygons + with holes, in which there is a line connecting the external polygon to the internal polygon.</li> +</ul> +<ul> + <li>"<b><font face="Courier">IMAGEFORMAT</font></b>": defines the number of bits per pixel used to create server + images. It uses 1 integer that can have the values: "32" or "24" (%d). Use NULL to remove the attribute. It is used + only in the <font face="Courier"><strong>cdCreateImage</strong></font>. When not defined, the server images use the + same format of the canvas.</li> +</ul> +<ul> + <li>"<strong><font face="Courier">IMAGEALPHA</font></strong>": allows the usage of an alpha channel for server + images if IMAGEFORMAT=32. The attribute format is a pointer to the transparency values in a sequence of chars in + the same format of alpha for client images. The attribute is used only in the <font face="Courier"><strong> + cdCreateImage</strong></font> and for every <font face="Courier"><strong> + cdPutImageRect</strong></font>, the pointer must exists while the image exists. The alpha values are transfered to + the image only in <font face="Courier"><strong>cdPutImageRect</strong></font>, so they can be freely changed any time. + It will use the <strong><font face="Courier">AlphaBlend</font></strong> GDI + function. The data is not duplicated, only the pointer is stored. The size of + the data must be the same size of the image. Use NULL to remove the attribute. + Not accessible in Lua.</li> +</ul> +<ul> + <li>"<strong><font face="Courier">IMAGEMASK</font></strong>": defines a binary transparency mask for server + images. The format is the same of a stipple, can contain only 0s and 1s. Use 2 integers, width and height, and a char + pointer to the mask values inside a string ("%d %d %p"). Use NULL to remove the attribute. It can not be retrieved + (set only). Not accessible in Lua. It will use the <font face="Courier"><strong>MaskBlt</strong></font> + GDI function.</li> +</ul> +<ul> + <li>"<b><font face="Courier">IMAGEPOINTS</font></b>": define 3 coordinates of a paralelogram that will be used + to warp server images. Use 6 integer values inside a string ("%d %d %d %d %d %d" = x1 y1 x2 y2 x3 y3). Use NULL to + remove the attribute. The respective specified points are the upper-left corner, the upper-right corner and the lower + left corner. The drawing is also affected by the "IMAGEMASK" attribute. It will use the <font face="Courier"><strong> + PlgBlt</strong></font> GDI function. </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).</li> +</ul> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/drv/wmf.html b/html/en/drv/wmf.html new file mode 100644 index 0000000..aa92c68 --- /dev/null +++ b/html/en/drv/wmf.html @@ -0,0 +1,116 @@ +<!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>CD_WMF</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2>CD_WMF - Windows Metafile Driver (cdwmf.h)</h2> + + <p>This driver allows creating a Microsoft Windows Metafile, the format used + by 16-bit Windows systems to store graphics primitives. Usually, the filename + has an extension "*.wmf".</p> + <p>The driver works only in the Microsoft Windows platform, but you can use it + in other platforms without the risk of compilation error. If you attempt to + create a canvas in another platform, function <font face="Courier"><strong> + cdCreateCanvas</strong></font> will return NULL.</p> +<p><span style="color: #FF0000"><strong>It is recomended to use EMF instead of WMF whenever is possible.</strong></span> </p> + +<h3>Use</h3> + + <p>The canvas is created by means of a call to the function + <font face="Courier"> + <a href="../func/init.html#cdCreateCanvas"> + <strong>cdCreateCanvas</strong></a>(CD_WMF, Data)</font>, after which other + functions in the CD library can be called as usual. The <font face="Courier"> + Data</font> parameter string has the following format:</p> + + <pre><em>"filename widthxheight </em>[resolution]<em>" </em>or in C <em>"<strong><tt>%s + %dx%d</tt></strong> <strong>%g</strong>"</em></pre> + + <p>The file's name and dimensions are required. <font face="Courier">Width</font> + and <font face="Courier">height</font> are provided in pixels (note the + lowercase "x" between them). <font face="Courier">Resolution</font> is the + number of pixels per millimeter; its default value is the screen resolution.</p> + <p>Any amount of such canvases may exist simultaneously. Function + <font face="Courier"><strong>cdCreateCanvas</strong></font> creates a + memory-based metafile, and a call to function + <a href="../func/init.html#cdKillCanvas"> + <font face="Courier"><strong>cdKillCanvas</strong></font></a> is required to + <b>close</b> the file properly.</p> + <p>In fact the driver uses a slightly different format, called Aldus Placeable + Metafile (APM). It attaches a small header to the beginning of the file, + allowing other applications to import better the metafile contents.</p> + <p>This + driver is NOT available for the GDI+ base driver.</p> + +<h3>Behavior of Functions</h3> + + <p>This driver is greatly platform-dependent. For further detail, see the <b> + Behavior of Functions</b> of the <a href="drv/win32.html">Microsoft Windows + (GDI)</a> platform. However, it should be noted that some functions behave + differently from the basic functions of each platform.</p> + +<h4>Control </h4> +<ul> + <li><a href="../func/other.html#cdPlay"> + <font face="Courier"><strong>Play</strong></font></a>: different from the + basic driver, is implemented.</li> + <li> + <a href="../func/control.html#cdClear"> + <font face="Courier"><strong>Clear</strong></font></a>: different from the + basic driver, does nothing.</li> +</ul> +<h4>Coordinate System and Clipping </h4> +<ul> + <li> + <a href="../func/clipping.html#cdClip"> + <font face="Courier"><strong>Clip</strong></font></a>: does nothing, returns + <font face="Courier">CD_CLIPOFF</font>.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li> + <a href="../func/filled.html#cdStipple"> + <font face="Courier"><strong>Stipple</strong></font></a>: is always opaque + and smaller than 8x8 pixels.</li> + <li> + <a href="../func/filled.html#cdPattern"> + <font face="Courier"><strong>Pattern</strong></font></a>: does nothing.</li> + <li> + <a href="../func/lines.html#cdLineWidth"> + <font face="Courier"><strong>LineWidth</strong></font></a>: is always 1.</li> + <li> + <a href="../func/text.html#cdTextAlignment"> + <font face="Courier"><strong>TextAlignment</strong></font></a>: + <font face="Courier">CD_CENTER/CD_WEST/CD_EAST</font> is saved as + <font face="Courier">CD_BASE_CENTER/CD_BASE_LEFT/CD_BASE_RIGHT</font>, but the + position error is compensated.</li> + <li> + <a href="../func/text.html#cdTextOrientation"> + <font face="Courier"><strong>TextOrientation</strong></font></a>: does + nothing</li> +</ul> +<h4>Client Images </h4> +<ul> + <li> + <a href="../func/client.html#cdGetImageRGB"> + <font face="Courier"><strong>GetImageRGB</strong></font></a>: does nothing.</li> + <li> + <a href="../func/client.html#cdPutImageRGBA"> + <font face="Courier"><strong>PutImageRGBA</strong></font></a>: the alpha + component is ignored.</li> +</ul> +<h4>Server Images</h4> +<ul> + <li>All functions do nothing.</li> +</ul> + +</body> + +</html> diff --git a/html/en/drv/xrender.html b/html/en/drv/xrender.html new file mode 100644 index 0000000..6970e29 --- /dev/null +++ b/html/en/drv/xrender.html @@ -0,0 +1,152 @@ +<!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>X-Windows</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, Darwin +and FreeBSD54. 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> is 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> +</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> diff --git a/html/en/drv/xwin.html b/html/en/drv/xwin.html new file mode 100644 index 0000000..cd2d900 --- /dev/null +++ b/html/en/drv/xwin.html @@ -0,0 +1,129 @@ +<!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>X-Windows</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +<style type="text/css"> +.style1 { + font-family: Courier; +} +</style> +</head> + +<body> + +<h2>X-Windows Base Driver</h2> + + <p>This driver represents a basic driver for all system-dependent drivers + implemented in the X-Windows system. The implementation uses the XLIB API + functions. It was developed using X11R4, but works in more recent versions, + such as X11R6.</p> + <p>Note: The coordinates internally implemented by the video driver use 16-bit + integers. Therefore, if a coordinate with less than -32k or more than 32k is + defined, it will be interpreted incorrectly.</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.</li> +</ul> +<h4>Primitives</h4> +<ul> + <li><a href="../func/text.html#cdText"><font face="Courier"><strong>Text</strong></font></a>: + text orientation is simulated using XVertex rotines. Generic transformation + matrix affects only the position of the text.</li> + <li><a href="../func/lines.html#cdBegin"> + <font face="Courier"><strong>Begin</strong></font></a>: Filled + polygons have an error of one pixel to the right and below. <strong><tt> + CD_BEZIER</tt></strong> is simulated with lines.</li> + <li><span class="style1"><a href="../func/marks.html#cdMark"> + <strong>Box</strong></a></span>: in Linux with ATI board, is being drawn with one + extra pixel to the right and below.</li> +</ul> +<h4>Attributes </h4> +<ul> + <li> + <a href="../func/lines.html#cdLineWidth"> + <font face="Courier"><strong>LineWidth</strong></font></a>: if + <font face="Courier">width</font> is 1, the driver will use 0 for a better + performance.</li> + <li> + <a href="../func/lines.html#cdLineStyle"> + <font face="Courier"><strong>LineStyle</strong></font></a>: thick lines have + style only in the line's direction. For example, you will see small rectangles + in a thick dotted line.</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>: the old name "System" + is mapped to "fixed".</li> +</ul> +<h4>Colors </h4> +<ul> + <li> + <a href="../func/color.html#cdPalette"> + <font face="Courier"><strong>Palette</strong></font></a>: When the number of + bits per pixel is smaller than or equal to 8, the driver will use the system + palette to solve colors passed as parameters to the canvas. The driver + allocates colors as they are requested - if a color cannot be allocated, the + closest color is used in the palette. For such, the driver sees all available + colors, in the current application and others. If one of the applications is + terminated, a color in the palette may become invalid and will only be updated + by the driver when it is requested again. For this reason, a call to <strong> + cdForeground </strong>or <strong>cdBackground</strong> or <strong>cdPalette</strong> + is recommended before drawing.<br> + When CD_FORCE is used, the driver forces color allocation in the X server. + This may imply changing colors in other applications when a cursor moves in + and out of the canvas. However, if the number of requested colors is smaller + than the maximum number of possible colors in the palette, then the first + colors in the default system palette will be preserved, minimizing this + problem.<br> + When CD_POLITE is used, all colors allocated by the driver are liberated, and + the requested colors are allocated. This is useful for the application to + prioritize the colors that will be allocated, causing other colors to be + mapped to their closest colors.<br> + Note that canvases in the same application interfere with one another, but + when a canvas is terminated it liberates all allocated colors.</li> +</ul> +<h4>Client Images</h4> +<ul> + <li> + <a href="../func/client.html#cdGetImageRGB"> + <font face="Courier"><strong>GetImageRGB</strong></font></a>: can be very + slow due to the heavy conversions performed to translate data in system format + into RGB vectors. </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> + +</body> + +</html> diff --git a/html/en/freetype.txt b/html/en/freetype.txt new file mode 100644 index 0000000..e874ba5 --- /dev/null +++ b/html/en/freetype.txt @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © <year> The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace <year> with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- diff --git a/html/en/func/attributes.html b/html/en/func/attributes.html new file mode 100644 index 0000000..60768e4 --- /dev/null +++ b/html/en/func/attributes.html @@ -0,0 +1,49 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>General Attributes</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">General Attributes</h2> + <pre class="function"><span class="mainFunction">long int <a name="cdForeground">cdCanvasForeground</a>(cdCanvas* canvas, long int color); [in C]</span> +void cdCanvasSetForeground(cdCanvas* canvas, long int color); [in C] + +canvas:Foreground(color: lightuserdata) -> (old_color: lightuserdata) [in Lua] +canvas:SetForeground(color: lightuserdata) [in Lua]</pre> + <p>Configures a new current foreground color and returns the previous one. This + color is used in all primitives (lines, areas, marks and text). Default value: <b> + <tt>CD_BLACK</tt></b>. Value <tt><b>CD_QUERY</b> </tt>simply returns the + current value.</p> + <p>Notice that CD_QUERY conflicts with color RGBA=(255,255,255,255) (full + transparent white). Use <strong>SetForeground</strong> to avoid the + conflict. See also <a href="color.html">Color Coding</a>.</p> + <pre class="function"><span class="mainFunction">long int <a name="cdBackground">cdCanvasBackground</a>(cdCanvas* canvas, long int color); [in C]</span> +void cdCanvasSetBackground(cdCanvas* canvas, long int color); [in C] + +canvas:Background(color: lightuserdata) -> (old_color: lightuserdata) [in Lua] +canvas:SetBackground(color: lightuserdata) [in Lua]</pre> + <p>Configures the new current background color and returns the previous one. + However, it does not automatically change the background of a canvas. For such, + it is necessary to call the <strong>Clear</strong> function. The + background color only makes sense for <strong>Clear</strong><tt><font> </font></tt>and for + primitives affected by the background opacity attribute. Default value: <b><tt>CD_WHITE</tt></b>. + Value <tt><b>CD_QUERY</b> </tt>simply returns the current value.</p> + <p>Notice that CD_QUERY conflicts with color RGBA=(255,255,255,255) (full + transparent white). Use <strong>SetBackground</strong> to avoid the + conflict. See also <a href="color.html">Color Coding</a>.</p> + <pre class="function"><span class="mainFunction">int <a name="cdWriteMode">cdCanvasWriteMode</a>(cdCanvas* canvas, int mode); [in C]</span> + +canvas:WriteMode(mode: number) -> (old_mode: number) [in Lua]</pre> + <p>Defines the writing type for all drawing primitives. Values: <b><tt>CD_REPLACE</tt></b>, + <b><tt>CD_XOR</tt></b> or <b><tt>CD_NOT_XOR</tt></b>. Returns the previous + value. Default value: <b><tt>CD_REPLACE</tt></b>. Value <tt><b>CD_QUERY</b> </tt> + simply returns the current value. + </p> + <p>Note: operation XOR is very useful, because, using white as the foreground + color and drawing the same image twice, you can go back to the original color, + before the drawing. This is commonly used for mouse selection feedback.</p> + </body> +</html> diff --git a/html/en/func/client.html b/html/en/func/client.html new file mode 100644 index 0000000..20a6c4e --- /dev/null +++ b/html/en/func/client.html @@ -0,0 +1,255 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>Client Images</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">Client Images</h2> + <p>There are 2 kinds of client images: RGB and Indexed RGB (or MAP). The RGB + image is composed by 3 buffers: red, green and blue (more colors, more memory). + The MAP image is composed by 1 buffer of indices for a table and one table of + encoded RGB values (less colors, less memory). + </p> + <p>The image buffer is described by its width and height in pixels. The starting + point of the buffer is the origin of the image, which is located at its bottom + left corner. To retrieve a pixel in the image, use the formula <font>pixel(x,y)=buffer[y*width + + x]</font>. + </p> + <p>The Put functions may do zoom in or out; zero order interpolation is used to + scale the image. It is not possible to specify a part of the image to be drawn.</p> + <hr> + <pre class="function"><span class="mainFunction">void <a name="cdGetImageRGB">cdCanvasGetImageRGB</a>(cdCanvas* canvas, unsigned char *r, + unsigned char *g, + unsigned char *b, + int x, int y, int w, int h); [in C]</span> + +canvas:GetImageRGB(imagergb: cdImageRGB; x, y: number) [in Lua]</pre> + <p>Returns the red, green and blue components of each pixel in a server image. + The RGB components are provided in three matrices stored as byte arrays. The <strong> + <tt>(i,j)</tt></strong> component of these matrices is at the address <strong><tt> + (j*w+i)</tt></strong>. As occurs with all primitives from the Canvas Draw + library, the pixel <strong><tt>(0,0)</tt></strong> is at the bottom left + corner, and the pixel <strong><tt>(w-1,h-1)</tt></strong> is that the upper + right corner of the image rectangle.</p> + <pre class="function"><span class="mainFunction">void <a name="cdPutImageRectRGB">cdCanvasPutImageRectRGB</a>(cdCanvas* canvas, int iw, int ih, + const unsigned char *r, + const unsigned char *g, + const unsigned char *b, + int x, int y, int w, int h, + int xmin, int xmax, int ymin, int ymax); [in C]</span> +void wdCanvasPutImageRectRGB(cdCanvas* canvas, int iw, int ih, + const unsigned char *r, + const unsigned char *g, + const unsigned char *b, + double x, double y, double w, double h, + int xmin, int xmax, int ymin, int ymax); (WC) [in C] + +canvas:PutImageRectRGB(imagergb: cdImageRGB; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wPutImageRectRGB(imagergb: cdImageRGB; x, y, w, h, xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + <p>Puts, in a specified area of the canvas, an image with its red, green and blue + components defined in the three matrices stored in byte arrays. The <strong><tt>(i,j)</tt></strong> + component of these matrices is at the address <strong><tt>(j*iw+i)</tt></strong>. + The pixel <strong><tt>(0,0)</tt></strong> is at the bottom left corner, and the + pixel <strong><tt>(iw-1,ih-1)</tt></strong> is that the upper right corner of + the image rectangle. + </p> + <p>Parameters <strong><font>w</font></strong> and <font><strong>h</strong></font> + refer to the target rectangle of the canvas, so that it is possible to reduce + or expand the image drawn. If <strong><font>w</font></strong> and <strong><font>h</font></strong> + are 0, the size of the image is assumed (<strong><font>iw</font></strong> and <strong> + <font>ih</font></strong>). + </p> + <p>It also allows specifying a rectangle inside the image to be drawn, if <strong><font> + xmin</font>, <font>xmax</font>, <font>ymin</font> </strong>and <strong><font>ymax</font></strong> + are 0 then the whole image is assumed. + </p> + <p>If the driver has bpp <=8 or only 256 colors or less, then the image is + converted to 256 optimal colors using the function <strong><font>cdRGB2Map</font></strong> + and is drawn using <strong><font>cdPutImageRectMap</font></strong>.</p> + <pre class="function"><span class="mainFunction">void <a name="cdPutImageRectRGBA">cdCanvasPutImageRectRGBA</a>(cdCanvas* canvas, int iw, int ih, + const unsigned char *r, + const unsigned char *g, + const unsigned char *b, + const unsigned char *a, + int x, int y, int w, int h, + int xmin, int xmax, int ymin, int ymax); [in C]</span> +void wdCanvasPutImageRectRGBA(cdCanvas* canvas, int iw, int ih, + const unsigned char *r, + const unsigned char *g, + const unsigned char *b, + const unsigned char *a, + double x, double y, double w, double h, + int xmin, int xmax, int ymin, int ymax); (WC) [in C] + +canvas:PutImageRectRGBA(imagergba: cdImageRGBA; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wPutImageRectRGBA(imagergba: cdImageRGBA; x, y, w, h, xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + <p>The same as function <font><strong>cdPutImageRectRGB</strong></font>, + except for the fact that it is possible to specify an alpha channel. The + resulting color is the image color weighted by the alpha value, using the + formula <strong><tt>result=(source * alpha + destiny * (255 - alpha))/255</tt></strong>. + This means that, if alpha is 0, the resulting color is the target color + (completely transparent), and, if alpha is 255, the resulting color is the + original image color (completely opaque).</p> + <p>If this function is not defined for a given driver or if alpha is <font>NULL</font>, + then the function <strong><font>cdPutImageRectRGB</font></strong> is used, as + long as it is defined.</p> + <pre class="function"><span class="mainFunction">void <a name="cdPutImageRectMap">cdCanvasPutImageRectMap</a>(cdCanvas* canvas, int iw, int ih, + const unsigned char *index, + const long int *colors, + int x, int y, int w, int h, + int xmin, int xmax, int ymin, int ymax); [in C]</span> +void wdCanvasPutImageRectMap(cdCanvas* canvas, int iw, int ih, + const unsigned char *index, + const long int *colors, + double x, double y, double w, double h, + int xmin, int xmax, int ymin, int ymax); (WC) [in C] + +canvas:PutImageRectMap(imagemap: cdImageMap; palette: cdPalette; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wPutImageRectMap(imagemap: cdImageMap; palette: cdPalette; x, y, w, h, xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + <p>The same as function <font><strong>cdPutImageRectRGB</strong></font>, + except for the fact that the colors are provided by means of an index matrix + (map). The color corresponding to a given index is given in <font><b>colors[index]</b></font>. + The map is also a matrix stored as a byte vector. If the color vector is null, + then a vector with 256 gray tones is assumed.</p> + <pre class="function"><span class="mainFunction">void <a name="cdRGB2Map">cdRGB2Map</a>(int iw, int ih, + const unsigned char *r, + const unsigned char *g, + const unsigned char *b, + unsigned char *index, + int pal_size, long *color); [in C]</span> + +cd.RGB2Map(imagergb: cdImageRGB, imagemap: cdImageMap, palette: cdPalette) [in Lua]</pre> + <p>Converts an RGB image into an image with 256 indexed colors. The resulting + image must have the same size (width x length) as the RGB image. It is + necessary to allocate memory for the arrays <strong><font>map</font></strong> and + <strong><font>colors</font></strong>. This is the same algorithm used in the IM + library - in fact, the same code.</p> + <h3>Extras</h3> + <p>The following functions are used only for encapsulating the several types of + client images from the library in a single structure, simplifying their + treatment. </p> + <p>For such, a public structure was created, called <font><b>cdBitmap</b></font>, + which will store the image. From this structure, the following fields are + officially defined:</p> + <pre>cdBitmap: + int w /* image width */ + int h /* image heigth */ + int type /* image type: CD_RGBA, CD_RGB or CD_MAP */</pre> + <pre class="function"><span class="mainFunction">cdBitmap* <a name="cdCreateBitmap">cdCreateBitmap</a>(int w, int h, int type); [in C]</span> + +cd.CreateBitmap(w, h, type: number) -> (bitmap: cdBitmap) [in Lua]</pre> + <p>Creates an image with width <strong>w</strong>, and height <strong>h</strong> and + of type <strong>type</strong>. The type can be <font>CD_RGBA, CD_RGB or CD_MAP</font>. + However, <font>CD_MAP</font> only means that the image will have 256 colors if <strong> + type</strong> is greater than 0. It is assumed that the image will be MAP + with the same number of colors in the palette as <strong>type</strong>. + Internally, the color palette is always allocated with 256 entries, which may + or may not be totally fulfilled. In this case, the value of <strong>type</strong> + can be changed as wished.</p> + <pre class="function"><span class="mainFunction">cdBitmap* <a name="cdInitBitmap">cdInitBitmap</a>(int w, int h, int type, ...); [in C]</span> + +[There is no equivalent in Lua]</pre> + <p>Similar to <strong><font>cdCreateBitmap</font></strong>, but it accepts the + data area already allocated by the user. The parameters vary according to the + image type.</p> + <pre><font>CD_RGBA - (unsigned char* red, unsigned char* green, unsigned char* blue, unsigned char* alpha) +CD_RGB - (unsigned char* red, unsigned char* green, unsigned char* blue) +CD_MAP - (unsigned char* index, lont int* colors)</font></pre> + <pre class="function"><span class="mainFunction">void <a name="cdKillBitmap">cdKillBitmap</a>(cdBitmap* image); [in C]</span> + +cd.KillBitmap(bitmap: cdBitmap) [in Lua]</pre> + <p>Liberates the memory allocated for the image. If this function is not + called in Lua, the garbage collector will call it.</p> + <pre class="function"><span class="mainFunction">unsigned char* <a name="cdBitmapGetData">cdBitmapGetData</a>(cdBitmap* image, int dataptr); [in C]</span> + +cd.BitmapGetData(bitmap: cdBitmap; dataptr: number) -> (data: cdImageChannel) [in Lua]</pre> + <p>Returns a pointer to the image's data area according to <font><strong>dataptr</strong></font>. + The following values are defined for <font><strong>dataptr</strong>:</font></p> + <pre><strong>CD_IRED</strong> - red component of an RGB image. cdImageChannel in Lua. +<strong>CD_IGREEN</strong> - green component of an RGB image. cdImageChannel in Lua. +<strong>CD_IBLUE</strong> - blue component of an RGB image. cdImageChannel in Lua. +<strong>CD_IALPHA</strong> - alpha component of an RGBA image. cdImageChannel in Lua. +<strong>CD_INDEX</strong> - indices of a MAP image. cdImageChannel in Lua. +<strong>CD_COLORS</strong> - color table of a MAP image. In this case, a type conversion must be made to <strong>(long int*)</strong>. cdPalette in Lua.</pre> + <p>In Lua, channels are also available as tables, see <a href="#DataAccess">Data + Access</a>. + </p> + <pre class="function"><span class="mainFunction">void <a name="cdBitmapSetRect">cdBitmapSetRect</a>(cdBitmap* image, int xmin, int xmax, int ymin, int ymax); [in C]</span> + +cd.BitmapSetRect(bitmap: cdBitmap; xmin, xmax, ymin, ymax: number) [in Lua]</pre> + <p>Allows specifying a region of interest inside the image to be used by the + function <b><font>cdPutBitmap</font></b>. If no region was defined, the whole + image is used, that is, (0, w-1, 0, h-1).</p> + <pre class="function"><span class="mainFunction">void <a name="cdPutBitmap">cdCanvasPutBitmap</a>(cdCanvas* canvas, cdBitmap* image, int x, int y, int w, int h); [in C]</span> +void wdCanvasPutBitmap(cdCanvas* canvas, cdBitmap* image, double x, double y, double w, double h); (WC) [in C] + +canvas:PutBitmap(image: cdBitmap; x, y, w, h: number) [in Lua] +canvas:wPutBitmap(bitmap: cdBitmap; x, y, w, h: number) (WC) [in Lua]</pre> + <p>Draws the image in the position (x,y), changing the scale. It + encapsulates <font><strong>cdPutImageRectRGB</strong>, <strong>cdPutImageRectRGBA</strong></font> + and <strong><font>cdPutImageRectMap</font></strong>. The region of the image + drawn depends on the rectangle defined by <strong><font>cdBitmapSetRect</font></strong>. + If no rectangle was defined, then the whole image is used.</p> + <p>The parameters <strong>w</strong> and <strong>h</strong> allow scaling the + image, increasing or decreasing its dimensions when drawn. If <strong>w</strong> + and/or <strong>h</strong> are 0, then no scale change is assumed. + </p> + <pre class="function"><span class="mainFunction">void <a name="cdGetBitmap">cdCanvasGetBitmap</a>(cdCanvas* canvas, cdBitmap* image, int x, int y); [in C]</span> + +canvas:GetBitmap(bitmap: cdBitmap; x, y: number) [in Lua]</pre> + <p>Encapsulates <strong><font>cdGetImageRGB</font></strong>. Nothing happens if + the image is MAP.</p> + <pre class="function"><span class="mainFunction">void <a name="cdBitmapRGB2Map">cdBitmapRGB2Map</a>(cdBitmap* image_rgb, cdBitmap* image_map); [in C]</span> + +cd.BitmapRGB2Map(bitmap_rgb: cdBitmap, bitmap_map: cdBitmap) [in Lua]</pre> + <p>Encapsulates <strong><font>cdRGB2Map</font></strong>. The images must be of + types <font>RGB(A)</font> and <font>MAP</font>, respectively.</p> + <h3>Extras in Lua (Deprecated)</h3> + <pre class="function"><a name="cdCreateImageRGB">cd.CreateImageRGB</a>(width, height: number) -> (imagergb: cdImageRGB)</pre> + <p>Creates an RGB image in Lua. Deprecated use <strong>cd.CreateBitmap</strong>.</p> + <pre class="function"><a name="cdKillImageRGB">cd.KillImageRGB</a>(imagergb: cdImageRGB)</pre> + <p>Destroys the created RGB image and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it. Deprecated use <strong> + cd.KillBitmap</strong>.</p> + <pre class="function"><a name="cdCreateImageRGBA">cd.CreateImageRGBA</a>(width, height: number) -> (imagergba: cdImageRGBA)</pre> + <p>Creates an RGBA image in Lua. Deprecated use <strong>cd.CreateBitmap</strong>.</p> + <pre class="function"><a name="cdKillImageRGBA">cd.KillImageRGBA</a>(imagergba: cdImageRGBA)</pre> + <p>Destroys the created RGBA image and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it. Deprecated use <strong> + cd.KillBitmap</strong>.</p> + <pre class="function"><a name="cdCreateImageMap">cd.CreateImageMap</a>(width, height: number) -> (imagemap: cdImageMap)</pre> + <p>Creates a Map image in Lua. Deprecated use <strong>cd.CreateBitmap</strong>.</p> + <pre class="function"><a name="cdKillImageMap">cd.KillImageMap</a>(imagemap: cdImageMap)</pre> + <p>Destroys the created Map image and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it. Deprecated use <strong> + cd.KillBitmap</strong>.</p> + <h3><a name="DataAccess">Data Access</a></h3> + <p>Data access in Lua is done directly using the operator "<font>[y*width + x]</font>" + in image channels. Each channel works as a value table which should be + consulted or modified in the following way:</p> + <pre><font>image = cd.CreateBitmap(100, 200) +... +image.r[y*100 + x] = 255 +image.g[y*100 + x] = 128 +image.b[y*100 + x] = 0 +... +green = image.g[y*100 + x] -- it will return 128</font></pre> + <p>The order of the tables <em>is</em> important, so that <font size="3">image[n].r</font> + has no meaning to CDLua and the expression will cause an error. Finally, + the user could expect the value of <font size="3">image[n]</font> to be of type <font> + lightuserdata</font>. Unfortunately, this is not the case, and such expression + will cause the same error.</p> + <p>In the old <font>cdImageMap </font>images, the channel must be not + specified: <font size="3">imagemap[y*100+x]</font>.</p> + <p>Known channel names are:</p> + <pre>r - red channel of RGB or RGBA images. +g - gree channel of RGB or RGBA images. +b - blue channel of RGB or RGBA images. +a - alpha channel of RGBA images. +m - indices channel of MAP images (valid only for cdBitmap objects). +p - colors table of MAP images (valid only for cdBitmap objects). It is a cdPalette object.</pre> + </body> +</html>
\ No newline at end of file diff --git a/html/en/func/clipping.html b/html/en/func/clipping.html new file mode 100644 index 0000000..b30db55 --- /dev/null +++ b/html/en/func/clipping.html @@ -0,0 +1,62 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>Clipping</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">Clipping</h2> + <p>The clipping area is an area that limits the available drawing area inside the + canvas. Any primitive is drawn only inside the clipping area. It affects all + primitives.</p> + <p>You can set the clipping area by using the function <b>cdClipArea</b>, and + retrieve it using <b>cdGetClipArea</b>. The clipping area is a rectangle by + default, but it can has other shapes. In some drivers a polygon area can be + defined, and in display based drivers a complex region can be defined. The + complex region can be a combination of boxes, polygons, sectors, chords and + texts.</p> + <p>The <b>cdClip</b> function activates and deactivaes the clipping.</p> + <hr> + <pre class="function"><span class="mainFunction">int cdCanvasClip(cdCanvas* canvas, int mode); [in C]</span> + +canvas:Clip(mode: number) -> (old_mode: number) [in Lua]</pre> + <p>Activates or deactivates clipping. Returns the previous status. Values: <b>CD_CLIPAREA, + CD_CLIPPOLYGON, CD_CLIPREGION</b> or <b>CD_CLIPOFF</b>. The value <b>CD_QUERY</b> + simply returns the current status. Default value: <b>CD_CLIPOFF</b>.</p> + <p>The value <b>CD_CLIPAREA</b> activates a rectangular area as the clipping + region. + </p> + <p>The value <b>CD_CLIPPOLYGON</b> activates a polygon as a clipping region, but + works only in some drivers (please refer to the notes of each driver). The + clipping polygon must be defined before activating the polygon clipping; if it + is not defined, the current clipping state remains unchanged. See the + documentation of <a href="polygon.html">cdBegin/cdVertex/cdEnd</a> to create a + polygon.</p> + <p>The value <b>CD_CLIPREGION</b> activates a complex clipping region. See the + documentation of <a href="region.html">Regions</a>.</p> + <pre class="function"><span class="mainFunction">void cdCanvasClipArea(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); [in C]</span> +void cdfCanvasClipArea(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); [in C] +void wdCanvasClipArea(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); (WC) [in C] + +canvas:ClipArea(xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wClipArea(xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + <p>Defines a rectangle for clipping. Only the points in the interval <i><b>xmin<= + x <= xmax</b></i> and<b> </b><i><b>ymin <= y <= ymax</b></i> will + be printed. Default region: (0, w-1, 0, h-1). + </p> + <pre class="function"><span class="mainFunction">int cdCanvasGetClipArea(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax); [in C]</span> +int cdfCanvasGetClipArea(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax); [in C] +int wdCanvasGetClipArea(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax); (WC) [in C] + +canvas:GetClipArea() -> (xmin, xmax, ymin, ymax, status: number) [in Lua] +canvas:wGetClipArea() -> (xmin, xmax, ymin, ymax, status: number) (WC) [in Lua]</pre> + <p>Returns the rectangle and the clipping status. It is not necessary to provide + all return pointers, you can provide only the desired values and <i><b>NULL</b></i> + for the others.</p> + <h4><a name="Polygons">Polygons</a></h4> + <p>A polygon for clipping can be created using <font face="Courier"><strong>cdBegin(</strong>CD_CLIP<strong>)/cdVertex(x,y)/.../cdEnd()</strong></font>.</p> + <p>See the documentation of <a href="polygon.html">cdBegin/cdVertex/cdEnd</a>.</p> + </body> +</html> diff --git a/html/en/func/color.html b/html/en/func/color.html new file mode 100644 index 0000000..9ec9928 --- /dev/null +++ b/html/en/func/color.html @@ -0,0 +1,137 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>Color Coding</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">Color Coding</h2> + <p>The library's color system is RGB. In order to simplify some functions, a + compact representation was created for the 3 values. To make a conversion from + this representation to the 3 separate values and vice-versa, use functions + <b> <font>cdDecodeColor</font></b> + and <b> <font>cdEncodeColor</font></b>. + </p> + <p>When the canvas used does not support more than 8 bpp of color resolution, you + can use function <b> <font>Palette</font></b> to give the driver an idea of which + colors to prioritize. <b> <font>Palette</font>'s</b> behavior is driver dependent.</p> + <p>There are some predefined colors:</p> + <pre>CD_RED = (255, 0, 0) +CD_DARK_RED = (128, 0, 0) +CD_GREEN = (0 ,255, 0) +CD_DARK_GREEN = ( 0,128, 0) +CD_BLUE = ( 0, 0,255) +CD_DARK_BLUE = ( 0, 0,128) +CD_YELLOW = (255,255, 0) +CD_DARK_YELLOW = (128,128, 0) +CD_MAGENTA = (255, 0,255) +CD_DARK_MAGENTA = (128, 0,128) +CD_CYAN = ( 0,255,255) +CD_DARK_CYAN = ( 0,128,128) +CD_WHITE = (255,255,255) +CD_BLACK = ( 0, 0 , 0) +CD_DARK_GRAY = (128,128,128) +CD_GRAY = (192,192,192) +</pre> + <hr> + <pre class="function"><span class="mainFunction">long int <a name="cdEncodeColor">cdEncodeColor</a>(unsigned char red, unsigned char green, unsigned char blue) [in C]</span> + +cd.EncodeColor(r, g, b: number) -> (old_color: lightuserdata) [in Lua]</pre> + <p>Returns a codified triple (<em>r,g,b</em>) in a long integer such as <b><tt>0x00RRGGBB</tt></b>, + where <tt><b>RR</b> </tt>are the red components, <b><tt>GG</tt></b> are the + green ones and <b><tt>BB</tt></b> are the blue ones. The code is used in the CD + library to define colors. It can be used without an active canvas.</p> + <pre class="function"><span class="mainFunction">void <a name="cdDecodeColor">cdDecodeColor</a>(long int color, unsigned char *red, unsigned char *green, unsigned char *blue) [in C]</span> + +cd.DecodeColor(color: lightuserdata) -> (r, g, b: number) [in Lua]</pre> + <p>Returns the red, green and blue components of a color in the CD library. Can + be used without an active canvas.</p> + <pre class="function"><span class="mainFunction">long int <a name="cdEncodeAlpha">cdEncodeAlpha</a>(long int color, unsigned char alpha) [in C]</span> + +cd.EncodeAlpha(color: lightuserdata, alpha: number) -> (color: lightuserdata) [in Lua]</pre> + <p>Returns the given color coded with the alpha information. ATENTION: At the + moment only the Win32 with GDI+ and the IMAGERGB drivers support alpha + components in color coding. Se in <a href="../drv/gdiplus.html">Windows Using + GDI+ Base Driver</a> and <a href="../drv/irgb.html">IMAGERGB driver</a>. The + internal representation of the component is inverted, because the default value + must be 0 and opaque for backward compatibility, so you should use the <strong>cdDecodeAlpha</strong> + function ot the <strong>cdAlpha</strong> macro to retrieve the alpha component.</p> + <pre class="function"><span class="mainFunction">unsigned char <a name="cdDecodeAlpha">cdDecodeAlpha</a>(long int color) [in C]</span> + +cd.DecodeAlpha(color: lightuserdata) -> (a: number) [in Lua]</pre> + <p>Returns the alpha component of a color in the CD library. Can be used without + an active canvas. 0 is transparent, 255 is opaque.</p> + <pre class="function"><span class="mainFunction">unsigned char <a name="cdRed0">cdAlpha</a>(long int color); [in C]</span> + +cd.Alpha(color: lightuserdata) -> (r: number) [in Lua]</pre> + <p>Macro that returns the alpha component of a color in the CD library. Can be + used without an active canvas.</p> + <pre class="function"><span class="mainFunction">unsigned char <a name="cdRed">cdRed</a>(long int color); [in C]</span> + +cd.Red(color: lightuserdata) -> (r: number) [in Lua]</pre> + <p>Macro that returns the red component of a color in the CD library. Can be used + without an active canvas.</p> + <pre class="function"><span class="mainFunction">unsigned char <a name="cdGreen">cdGreen</a>(long int color); [in C]</span> + +cd.Green(color: lightuserdata) -> (g: number) [in Lua]</pre> + <p>Macro that returns the green component of a color in the CD library. Can be + used without an active canvas.</p> + <pre class="function"><span class="mainFunction">unsigned char <a name="cdBlue">cdBlue</a>(long int color); [in C]</span> + +cd.Blue(color: lightuserdata) -> (b: number) [in Lua]</pre> + <p>Macro that returns the blue component of a color in the CD library. Can be + used without an active canvas.</p> + <hr> + <pre class="function"><span class="mainFunction">int <a name="cdGetColorPlanes">cdCanvasGetColorPlanes</a>(cdCanvas* canvas); [in C]</span> + +canvas:GetColorPlanes() -> (bpp: number) [in Lua]</pre> + <p>Returns a given number, for instance <i>p</i>, which defines the number of + colors supported by the current device as <i>2<sup>p</sup></i>, representing + the number of bits by pixel. + </p> + <pre class="function"><span class="mainFunction">void <a name="cdPalette">cdCanvasPalette</a>(cdCanvas* canvas, int n, const long int *color, int mode); [in C]</span> + +canvas:Palette(palette: cdPalette; mode: number) [in Lua]</pre> + <p>In systems limited to 256 palette colors, this function aims at adding <b><tt> + n</tt></b> colors to the system's palette. In such systems, the colors + demanded forward or backward which are not in the palette are approximated to + the closest available color. The type can be <tt><b>CD_FORCE</b> </tt>or <b><tt>CD_POLITE</tt></b>. + <b><tt>CD_FORCE</tt></b> ignores the system colors and interface elements, + since the menus and dialogues may be in illegible colors, but there will be + more colors available. <tt><b>CD_POLITE</b></tt> is the recommended type. It + must always be used before drawing. It cannot be queried.</p> + +<h3><a name="Palette">Palette</a></h3> + + <pre class="function"><a name="cdCreatePalette">cd.CreatePalette</a>(size: number) -> (palette: cdPalette) [in Lua Only]</pre> + <p>Creates a palette.</p> + <pre class="function"><a name="cdKillPalette">cd.KillPalette</a>(palette: cdPalette) [in Lua Only]</pre> + <p>Destroys the created palette and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it.</p> + +<h3>Palette <a name="DataAccess">Data Access</a></h3> + + <p>Data access in Lua is done directly using the array access operators. The + colors can have their values checked or changed directly as if they + were Lua tables:</p> + + <pre>palette[index] = cd.EncodeColor(r, g, b) +count = #palette +... +color = palette[index] +r, g, b = cd.DecodeColor(color)</pre> + + <p>Notice that the type of value returned or received by + <font size="3">palette[index]</font><font size="2"> </font>is a + <font>lightuserdata</font>, the same type used with functions <b> + <font size="3">cdEncodeColor</font></b>, <b> + <font size="3">cdDecodeColor</font></b>, <b> + <font size="3">cdPixel</font></b>, <b> + <font size="3">cdForeground</font></b><font size="2"> + </font>and <b> <font size="3">cdBackground</font></b>.</p> + + + </body> +</html>
\ No newline at end of file diff --git a/html/en/func/control.html b/html/en/func/control.html new file mode 100644 index 0000000..5ccdd1c --- /dev/null +++ b/html/en/func/control.html @@ -0,0 +1,63 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>Canvas Control</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">Canvas Control</h2> + <pre class="function"><span class="mainFunction">void cdCanvasClear(cdCanvas* canvas); [in C]</span> + +canvas:Clear() [in Lua]</pre> + <p>Cleans the active canvas using the current background color. This action is + interpreted very differently by each driver. Many drivers simply draw a + rectangle with the current background color. It is NOT necessary to call <font>cdClear</font> + when the canvas has just been created, as at this moment it is already clean. + Most file-based drivers do not implement this function.</p> + <pre class="function"><span class="mainFunction">void cdCanvasFlush(cdCanvas* canvas); [in C]</span> + +canvas:Flush() [in Lua]</pre> + <p>Has a different meaning for each driver. It is useful to send information to + buffered devices and to move to a new page or layer. In all cases, the current + canvas attributes are preserved.</p> + <hr> + <pre class="function"><span class="mainFunction">cdState* <a name="cdSaveState">cdCanvasSaveState</a>(cdCanvas* canvas); [in C]</span> + +canvas:SaveState() -> (state: cdState) [in Lua]</pre> + <p>Saves the state of attributes of the active canvas. It does not save cdPlay + callbacks, polygon creation states (begin/vertex/vertex/...), the palette, + complex clipping regions and driver internal attributes.</p> + <pre class="function"><span class="mainFunction">void <a name="cdRestoreState">cdCanvasRestoreState</a>(cdCanvas* canvas, cdState* state); [in C]</span> + +canvas:RestoreState(state: cdState) [in Lua]</pre> + <p>Restores the attribute state of the active canvas. It can be used between + canvases of different contexts. It can be used several times for the same + state. </p> + <pre class="function"><span class="mainFunction">void <a name="cdReleaseState">cdReleaseState</a>(cdState* state); [in C]</span> + +cd.ReleaseState(state: cdState) [in Lua]</pre> + <p>Releases the memory allocated by the <strong><font>cdSaveState</font></strong> + function. If this function is not called in Lua, the garbage collector + will call it.</p> + <hr> + <pre class="function"><span class="mainFunction">void <a name="cdSetAttribute">cdCanvasSetAttribute</a>(cdCanvas* canvas, const char* name, char* data); [in C]</span> + +canvas:SetAttribute(name, data: string) [in Lua]</pre> + <p>Modifies a custom attribute directly in the driver of the active canvas. If + the driver does not have this attribute, the call is ignored.</p> + <pre class="function"><span class="mainFunction">void <a name="cdSetfAttribute">cdCanvasSetfAttribute</a>(cdCanvas* canvas, const char* name, const char* format, ...); [in C]</span> + +[There is no equivalent in Lua]</pre> + <p>Same as <strong><font>cdSetAttribute</font></strong>, used for the case in + which the parameter <b><font>data</font></b> is a string composed by several + parameters. It can be used with parameters equivalent to those of the <b><font> + printf</font></b> function from the standard C library.</p> + <pre class="function"><span class="mainFunction">char* <a name="cdGetAttribute">cdCanvasGetAttribute</a>(cdCanvas* canvas, const char* name); [in C]</span> + +canvas:SetAttribute(name: string) -> (data: string) [in Lua]</pre> + <p>Returns a custom attribute from the driver of the active canvas. If the driver + does not have this attribute, it returns <font>NULL</font>.</p> + </body> +</html>
\ No newline at end of file diff --git a/html/en/func/coordinates.html b/html/en/func/coordinates.html new file mode 100644 index 0000000..9f119bb --- /dev/null +++ b/html/en/func/coordinates.html @@ -0,0 +1,148 @@ +<!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>Coordinate System</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Coordinate System</h2> +<pre class="function"><span class="mainFunction">void <a name="cdGetCanvasSize">cdCanvasGetSize</a>(cdCanvas* canvas, int *width, int *height, double *width_mm, double *height_mm); [in C]</span> + +canvas:GetSize() -> (width, height, mm_width, mm_height: number) [in Lua]</pre> + + <p>Returns the canvas size in pixels and in millimeters. You can provide only + the desired values and <font>NULL</font> for the others.</p> + +<pre class="function"><span class="mainFunction">int <a name="cdUpdateYAxis">cdCanvasUpdateYAxis</a>(cdCanvas* canvas, int *y); [in C]</span> +double cdfCanvasUpdateYAxis(cdCanvas* canvas, double *y); [in C] +int cdCanvasInvertYAxis(cdCanvas* canvas, int y); [in C] +double cdfCanvasInvertYAxis(cdCanvas* canvas, double y); [in C] + +canvas:UpdateYAxis(yc: number) -> (yr: number) [in Lua] +canvas:InvertYAxis(yc: number) -> (yr: number) [in Lua]</pre> + + <p>In some graph systems, the origin is at the upper left corner of the + canvas, with the direction of the Y axis pointing down. In this case, the + function converts the coordinate system of the CD library into the internal + system of the active canvas' driver, and the other way round. If this is not + the case, nothing happens. This is just <font>"y = height-1 - + y"</font>. It returns the changed value. The "Invert" will always invert + the given value, the "Update" function will invert only if the canvas has the + Y axis inverted.</p> + +<pre class="function"><span class="mainFunction">void cdCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, int *dx, int *dy); [in C]</span> +void cdfCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, double *dx, double *dy); [in C] + +canvas:MM2Pixel(mm_dx, mm_dy: number) -> (dx, dy: number) [in Lua] +canvas:fMM2Pixel(mm_dx, mm_dy: number) -> (dx, dy: number) [in Lua]</pre> + + <p>Converts sizes in millimeters into pixels (canvas coordinates). You can + provide only the desired values and <font>NULL</font> for the + others.</p> + +<pre class="function"><span class="mainFunction">void cdCanvasPixel2MM(cdCanvas* canvas, int dx, int dy, double *mm_dx, double *mm_dy); [in C]</span> +void cdfCanvasPixel2MM(cdCanvas* canvas, double dx, double dy, double *mm_dx, double *mm_dy); [in C] + +canvas:Pixel2MM(dx, dy: number) -> (mm_dx, mm_dy: number) [in Lua] +canvas:fPixel2MM(dx, dy: number) -> (mm_dx, mm_dy: number) [in Lua]</pre> + + <p>Converts sizes in pixels (canvas coordinates) into millimeters. You can + provide only the desired values and <font>NULL</font> for the + others. Use this function to obtain the horizontal and vertical resolution of + the canvas by passing 1 as parameter in <font>dx</font> and + <font>dy</font>. The resolution value is obtained using the + formula <strong><font>res=1.0/mm</font></strong>.</p> + +<pre class="function"><span class="mainFunction">void cdCanvasOrigin(cdCanvas* canvas, int x, int y); [in C]</span> +void cdfCanvasOrigin(cdCanvas* canvas, double x, double y); [in C] + +canvas:Origin(x, y: number) [in Lua] +canvas:fOrigin(x, y: number) [in Lua]</pre> + + <p>Allows translating the origin - for instance, to the center of the canvas. + The function profits from the architecture of the library to simulate a + translation of the origin, which in fact is never actually passed to the + canvas in the respective driver. Default values: (0, 0)</p> + + +<pre class="function"><span class="mainFunction">void cdCanvasGetOrigin(cdCanvas* canvas, int *x, int *y); [in C]</span> +void cdfCanvasGetOrigin(cdCanvas* canvas, double *x, double *y); [in C] + +canvas:GetOrigin() -> (x, y: number) [in Lua] +canvas:fGetOrigin() -> (x, y: number) [in Lua]</pre> + + <p>Returns the origin.</p> + + +<h3>Transformation Matrix</h3> + +<pre class="function"><span class="mainFunction">void <a name="cdTransform">cdCanvasTransform</a>(cdCanvas* canvas, const double* matrix); [in C]</span> + +canvas:Transform(matrix: table) [in Lua]</pre> + + <p>Defines a transformation matrix with 6 elements. If the matrix is NULL, + the + transformation is reset to the identity. Default value: NULL.</p> + <p>The matrix contains scale, rotation and translation elements as follows:</p> + <pre>|x'| |sx*cos(angle) -sin(angle) dx| |x| |0 2 4| +|y'| = | sin(angle) sy*cos(angle) dy| * |y| with indices |1 3 5| + |1|</pre> + <p>But notice that the indices are different of the <strong> + cdCanvasVectorTextTransform</strong>.</p> +<p>Functions that retrieve images from the canvas are not affected by the +transformation matrix, such as <strong>GetImage</strong>, <strong>GetImageRGB</strong> +and <strong>ScrollArea</strong>.</p> +<p>Transformation matrix is independent of the <strong>World Coordinate</strong> +and <strong>Origin</strong> +functions. And those are affected if a transformation is set, just like other +regular primitives.</p> + + +<pre class="function"><span class="mainFunction">double* <a name="cdGetTransform">cdCanvasGetTransform</a>(cdCanvas* canvas); [in C]</span> + +canvas:GetTransformation() -> (matrix: table) [in Lua]</pre> + + <p>Returns the transformation matrix. If the identity is set, returns NULL.</p> + + +<pre class="function"><span class="mainFunction">void <a name="cdTransformMultiply">cdCanvasTransforMultiply</a>(cdCanvas* canvas, const double* matrix); [in C]</span> + +canvas:TransformMultiply(matrix: table) [in Lua]</pre> + + <p>Left multiply the current transformation by the given transformation.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTransformTranslate">cdCanvasTransformTranslate</a>(cdCanvas* canvas, double dx, double dy); [in C]</span> + +canvas:TransformTranslate(dx, dy: number) [in Lua]</pre> + + <p>Applies a translation to the current transformation.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTransformScale">cdCanvasTransformScale</a>(cdCanvas* canvas, double sx, double sy); [in C]</span> + +canvas:TransformScale(sx, sy: number) [in Lua]</pre> + + <p>Applies a scale to the current transformation.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTransformRotate">cdCanvasTransformRotate</a>(cdCanvas* canvas, double angle); [in C]</span> + +canvas:TransformRotate(angle: number) [in Lua]</pre> + + <p>Applies a rotation to the current transformation. Angle is in degrees, + oriented counter-clockwise from the horizontal axis.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTransformPoint">cdCanvasTransformPoint</a>(cdCanvas* canvas, int x, int y, int *tx, int *ty); [in C]</span> +void cdfCanvasTransformPoint(cdCanvas* canvas, double x, double y, double *tx, double *ty); [in C] + +canvas:TransformPoint(x, y: number) -> (tx, ty: number) [in Lua] +canvas:fTransformPoint(x, y: number) -> (tx, ty: number) [in Lua]</pre> + + <p>Applies a transformation to a given point.</p> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/filled.html b/html/en/func/filled.html new file mode 100644 index 0000000..2ae1083 --- /dev/null +++ b/html/en/func/filled.html @@ -0,0 +1,272 @@ +<!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>Filled Areas</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Filled Areas</h2> + + <p>It is an area filled with the foreground color, but it depends on the + current interior style. The <font>SOLID</font> style + depends only on the foreground color. The <font>HATCH</font> + and + <font>STIPPLE </font> style depend on the foreground color, background color and on the back opacity attribute. The + hatch lines drawn with this style do not depend on the other line attributes. The + <font>PATTERN</font> style depends only on global canvas + attributes.</p> +<p>The filled area includes the line at the edge of the area. So if you draw a +filled rectangle, sector or polygon on top of a non filled one using the same +coordinates, no style and 1 pixel width, the non filled primitive should be +obscured by the filled primitive. But depending on the driver implementation +some pixels at the edges may be not included. IMPORTANT: In the Postscript and +PDF drivers the line at the edge is not included at all.</p> + <p>If + either the background or the foreground color are modified, the hatched and + monochromatic fillings must be modified again in order to be updated.</p> + <p>Note that when a Filling Attribute is modified, the active filling style is + now that of the modified attribute (hatch, stipple or pattern). Notice that + this is not true for the clipping area. When the clipping area is modified, + the clipping is only affected if it is active.</p> + +<hr> +<pre class="function"><span class="mainFunction">Filled <a name="Polygons">Polygons</a></span></pre> + + <p>Filled polygons can be created using <font><strong>cdBegin(</strong>CD_FILL<strong>)/cdVertex(x,y)/.../cdEnd()</strong></font>.</p> + <p>See the documentation of <a href="polygon.html">cdBegin/cdVertex/cdEnd</a>.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdBox">cdCanvasBox</a>(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); [in C]</span> +void cdfCanvasBox(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); [in C] +void wdCanvasBox(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); (WC) [in C] + +canvas:Box(xmin, xmax, ymin, ymax: number) [in Lua] +canvas:fBox(xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wBox(xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + + <p>Fills a rectangle according to the current interior style. All points in + the interval <font><strong>x_min<=x<=x_max, y_min<=y<=y_max</strong></font> + will be painted. When the interior style <font>CD_HOLLOW</font> + is defined, the function behaves like its equivalent <strong> + <font>cdRect</font>.</strong></p> + +<pre class="function"><span class="mainFunction">void <a name="cdSector">cdCanvasSector</a>(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2); [in C]</span> +void cdfCanvasSector(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); [in C] +void wdCanvasSector(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); (WC) [in C] + +canvas:Sector(xc, yc, w, h, angle1, angle2: number) [in Lua] +canvas:fSector(xc, yc, w, h, angle1, angle2: number) [in Lua] +canvas:wSector(xc, yc, w, h, angle1, angle2: number) (WC) [in Lua]</pre> + + <p>Fills the arc of an ellipse aligned with the axis, according to the current + interior style, in the shape of a pie. It is drawn counter-clockwise. The + coordinate <b>(xc,yc)</b> defines the center of the ellipse. + Dimensions <b>w</b> and <b>h</b> define the elliptic axes X + and Y, respectively. </p> + <p>Angles <b>angle1</b> and <b>angle2</b>, in degrees, + define the arc's beginning and end, but they are not the angle relative to the + center, except when w==h and the ellipse is reduced to a circle. The arc + starts at the point <b>(xc+(w/2)*cos(angle1),yc+(h/2)*sin(angle1))</b> + and ends at <b>(xc+(w/2)*cos(angle2),yc+(h/2)*sin(angle2))</b>. A + complete ellipse can be drawn using 0 and 360 as the angles. </p> + <p>The angles are specified so if the size of the ellipse (w x h) is changed, + its shape is preserved. So the angles relative to the center are dependent + from the ellipse size. The actual angle can be obtained using <tt><b>rangle = + atan2((h/2</b></tt><b>)*sin(angle),(w/2)*cos(angle))</b>.</p> + <p>The angles are given in degrees. To specify the angle in radians, you can + use the definition <font size="2"><strong>CD_RAD2DEG</strong></font> + to multiply the value in radians before passing the angle to CD. </p> + <p>When the interior style <font><strong>CD_HOLLOW</strong></font> is defined, + the function behaves like its equivalent <strong><font>cdArc</font></strong>, + plus two lines connecting to the center.</p> + <p align="center"><font size="4">Sector Parameters</font><br> + <img src="../../img/sector.gif" border="2" width="161" height="160"></p> + +<pre class="function"><span class="mainFunction">void <a name="cdChord">cdCanvasChord</a>(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2); [in C]</span> +void cdfCanvasChord(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); [in C] +void wdCanvasChord(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); (WC) [in C] + +canvas:Chord(xc, yc, w, h, angle1, angle2: number) [in Lua] +canvas:fChord(xc, yc, w, h, angle1, angle2: number) [in Lua] +canvas:wChord(xc, yc, w, h, angle1, angle2: number) (WC) [in Lua]</pre> + + <p>Fills the arc of an ellipse aligned with the axis, according to the current + interior style, the start and end points of the arc are connected. The + parameters are the same as the <strong><font>cdSector</font></strong>.</p> + <p>When the interior style <font><strong>CD_HOLLOW</strong></font> is defined, + the function behaves like its equivalent <strong><font>cdArc</font></strong>, + plus a line connecting the arc start and end points.</p> + <p align="center"><font size="4">Chord Parameters</font><br> + <img src="../../img/chord.gif" border="2" width="161" height="160"></p> + +<h3>Attributes</h3> +<pre class="function"><span class="mainFunction">int <a name="cdBackOpacity">cdCanvasBackOpacity</a>(cdCanvas* canvas, int opacity); [in C]</span> + +canvas:BackOpacity(opacity: number) -> (old_opacity: number) [in Lua]</pre> + + <p>Configures the background opacity to filling primitives based on the + foreground and background colors. Values: <font><b> + CD_TRANSPARENT</b></font> or <b>CD_OPAQUE</b>. If it is opaque + the primitive will erase whatever is in background with the background color. + If it is transparent, only the foreground color is painted. It returns the previous value. Default value: <b> + CD_TRANSPARENT</b>. Value <b><b>CD_QUERY</b> </b>simply returns the + current value. In some drivers is always opaque.</p> + <p align="center"><font size="4">Back Opacity Attribute<br> + </font><img src="../../img/opacity.gif" border="2" width="260" height="136"></p> + +<pre class="function"><span class="mainFunction">int <a name="cdFillMode">cdCanvasFillMode</a>(cdCanvas* canvas, int mode); [in C]</span> + +canvas:FillMode(mode: number) -> (old_mode: number) [in Lua]</pre> + + <p>Selects a predefined polygon fill rule (<b>CD_EVENODD</b> or <strong>CD_WINDING</strong>). Returns the previous value. Default value: <b> + CD_EVENODD</b>. Value <b><b>CD_QUERY</b> </b>simply returns the current + value.</p> + <p align="center"><font size="4">Fill Modes</font><br> + <img src="../../img/fillmode.gif" border="2" width="260" height="136"></p> + +<pre class="function"><span class="mainFunction">int <a name="cdInteriorStyle">cdCanvasInteriorStyle</a>(cdCanvas* canvas, int style); [in C]</span> + +canvas:InteriorStyle(style: number) -> (old_style: number) [in Lua]</pre> + + <p>Configures the current style for the area filling primitives: <b> + CD_SOLID</b>, <strong><b>CD_HOLLOW</b></strong>, <b>CD_HATCH</b>, + <b>CD_STIPPLE</b> or <b>CD_PATTERN</b>. Note that <b> + CD_HATCH</b> and <b>CD_STIPPLE</b> are affected by the backopacity. It returns the previous value. Default value: <b>CD_SOLID</b>. Value + <b><b>CD_QUERY</b> </b>simply returns the + current value.</p> + <p>If <i>a stipple</i> or <i>a pattern</i> were not defined, when they are + selected the state of the + attribute is not changed. </p> + <p>When the style <strong>CD_HOLLOW</strong> is defined, functions + <strong>cdBox</strong> and <strong>cdSector</strong> behave as their + equivalent <strong>cdRect</strong> and <strong>cdArc+Lines</strong>, and the + polygons with style <b>CD_FILL</b> behave like <b>CD_CLOSED_LINES</b>.</p> + +<pre class="function"><span class="mainFunction">int <a name="cdHatch">cdCanvasHatch</a>(cdCanvas* canvas, int style); [in C]</span> + +canvas:Hatch(style: number) -> (old_style: number) [in Lua]</pre> + + <p>Selects a predefined <i>hatch</i> style (<b>CD_HORIZONTAL</b>, <b>CD_VERTICAL</b>, + <b>CD_FDIAGONAL</b>, <b>CD_BDIAGONAL</b>, + <b>CD_CROSS</b> or <b>CD_DIAGCROSS</b>) and sets the + interior style to <b>CD_HATCH</b>. The lines are drawn with the foreground + color, and the background is drawn with the background color if back opacity + is opaque. Returns the previous value. + Default value: <b>CD_HORIZONTAL</b>. Value <b><b>CD_QUERY</b> </b> + simply returns the current value. The foreground and background colors must be + set before setting the style. In some drivers is always opaque.</p> + <p align="center"><font size="4">Hatch Styles</font><br> + <img src="../../img/hatch.gif" border="2" width="182" height="348"></p> + +<pre class="function"><span class="mainFunction">void <a name="cdStipple">cdCanvasStipple</a>(cdCanvas* canvas, int w, int h, const unsigned char *fgbg) [in C]</span> + +canvas:Stipple(stipple: cdStipple) [in Lua]</pre> + + <p>Defines a <b><b>wxh</b> </b>matrix of zeros (0) and ones (1). The zeros are + mapped to the background color or are transparent, according to the background + opacity attribute. The ones are mapped to the foreground color. The function + sets the interior style to <b>CD_STIPPLE</b>. To avoid having to deal + with matrices in C, the element <b>(i,j)</b> of <b>fgbg</b> + is stored as <b>fgbg[j*w+i]</b>. The origin is the left bottom corner + of the image. It does not need to be stored by the + application, as it is internally replicated by the library. In some + drivers is always opaque. The foreground and background colors must be set + before setting the style. </p> + +<pre class="function"><span class="mainFunction">void <a name="wdStipple">wdCanvasStipple</a>(cdCanvas* canvas, int w, int h, const unsigned char *fgbg, double w_mm, double h_mm); [in C]</span> + +canvas:wStipple(stipple: cdStipple, w_mm, h_mm: number) [in Lua]</pre> + + <p>Allows specifying the stipple in world coordinates. Another stipple will be + created with the size in pixels corresponding to the specified size in + millimeters. The new size in pixels will be an integer factor of the original + size that is closets to the size in millimeters. The use of this function may produce very large or very small + stipples.</p> + +<pre class="function"><span class="mainFunction">unsigned char* <a name="cdGetStipple">cdCanvasGetStipple</a>(cdCanvas* canvas, int* w, int* h); [in C]</span> + +canvas:GetStipple() - > (stipple: cdStipple) [in Lua]</pre> + + <p>Returns the current <i>stipple</i> and its dimensions. Returns NULL if no + <i>stipple</i> was defined.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdPattern">cdCanvasPattern</a>(cdCanvas* canvas, int w, int h, const long int *color); [in C]</span> + +canvas:Pattern(pattern: cdPattern) [in Lua]</pre> + + <p>Defines a new <b><b>wxh</b> </b>color matrix and sets the interior style + to <b>CD_PATTERN</b>. To avoid having to deal with matrices in C, the + color element <b>(i,j)</b> is stored as <b>color[j*w+i]</b>. + The origin is the left bottom corner of the image. It + does not need to be stored by the application, as it is internally replicated + by the library.</p> + +<pre class="function"><span class="mainFunction">void <a name="wdPattern">wdCanvasPattern</a>(cdCanvas* canvas, int w, int h, const long int *color, double w_mm, double h_mm); [in C]</span> + +canvas:wPattern(pattern: cdPattern, w_mm, h_mm: number) [in Lua]</pre> + + <p>Allows specifying the pattern in world coordinates. Another pattern will be + created with the size in pixels corresponding to the specified size in + millimeters. The new size in pixels will be an integer factor of the original + size that is closets to the size in millimeters. The use of this function may produce very large or very small + patterns.</p> + +<pre class="function"><span class="mainFunction">long int* <a name="cdGetPattern">cdCanvasGetPattern</a>(cdCanvas* canvas, int* w, int* h); [in C]</span> + +canvas:GetPattern() - > (pattern: cdPattern) [in Lua]</pre> + + <p>Returns the current <i>pattern</i> and its dimensions. Returns NULL if no + <i>pattern</i> was defined.</p> + +<h3>Extras in Lua</h3> +<pre class="function"><a name="cdCreatePattern">cd.CreatePattern</a>(width, height: number) -> (pattern: cdPattern)</pre> + + <p>Creates a pattern in Lua.</p> + +<pre class="function"><a name="cdKillPattern">cd.KillPattern</a>(pattern: cdPattern)</pre> + + <p>Destroys the created pattern and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it.</p> + +<pre class="function"><a name="cdCreateStipple">cd.CreateStipple</a>(width, height: number) -> (stipple: cdStipple)</pre> + + <p>Creates a stipple in Lua.</p> + +<pre class="function"><a name="cdKillStipple">cd.KillStipple</a>(stipple: cdStipple)</pre> + + <p>Destroys the created stipple and liberates allocated memory. If this + function is not called in Lua, the garbage collector will call it.</p> + +<h3><a name="DataAccess">Data Access</a></h3> + + <p>Data access in Lua is done directly using the operator "<font>[y*width + + x]</font>". </p> + <p>All new types can have their values checked or changed directly as if they + were Lua tables:</p> + + <pre>pattern[y*16 + x] = cd.EncodeColor(r, g, b) +... +color = pattern[y*16 + x] +r, g, b = cd.DecodeColor(color) +... +cd.Pattern(pattern)</pre> + + <p>Notice that the type of value returned or received by + <font size="3">pattern[i]</font><font size="2"> </font>is a + <font>lightuserdata</font>, the same type used with functions <b> + <font size="3">cdEncodeColor</font></b>, <b> + <font size="3">cdDecodeColor</font></b>, <b> + <font size="3">cdPixel</font></b>, <b> + <font size="3">cdForeground</font></b><font size="2"> + </font>and <b> <font size="3">cdBackground</font></b>. The value + returned or received by <font>stipple</font><font size="3">[i]</font> + is a number.</p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/init.html b/html/en/func/init.html new file mode 100644 index 0000000..c6e08b3 --- /dev/null +++ b/html/en/func/init.html @@ -0,0 +1,225 @@ +<!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>Canvas Initialization</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Canvas Initialization</h2> +<pre class="function"><span class="mainFunction">cdCanvas *<a name="cdCreateCanvas">cdCreateCanvas(cdContext* ctx, void *data)</a>; [in C]</span> + +cd.CreateCanvas(ctx: number, data: string or userdata) -> (canvas: cdCanvas) [in Lua]</pre> + + <p>Creates a CD canvas for a virtual visualization surface (VVS). A VVS may be the canvas of a user-interface window, + the page of a document sent to a printer, an offscreen image, the clipboard, a metafile, and so on. To create the + canvas, it is necessary to specify the driver in which each canvas is implemented. </p> + <p>The driver is set by the <b>driver</b> variable with additional information provided in the <tt> + <b>data</b></tt> + parameter. Even though it is possible to create more than one canvas with the same <tt> + <b>driver/data</b></tt> pair, + this is not recommended, and its behavior is not specified. Each canvas maintains its own features. </p> + <p>In case of failure, a <b>NULL</b> value is returned. The following predefined drivers are available:</p> + + + <p><b>Window-Base Drivers</b></p> + + + <ul> + <li><a href="../drv/iup.html"><b>CD_IUP</b></a> = IUP Canvas (<b>cdiup.h</b>).</li> + <li><a href="../drv/native.html"><b>CD_NATIVEWINDOW</b></a> = Native + Window (<b>cdnative.h</b>).</li> + </ul> + + + <p><b>Device-Based Drivers</b></p> + + + <ul> + <li><a href="../drv/clipbd.html"><b>CD_CLIPBOARD</b></a> = Clipboard (<b>cdclipbd.h</b>).</li> + <li><a href="../drv/printer.html"><b>CD_PRINTER</b></a> = Printer (<b>cdprint.h</b>).</li> + </ul> + <p><b>Image-Based Drivers</b> </p> + <ul> + <li><a href="../drv/image.html"><b>CD_IMAGE</b></a> = Server-Image + Drawing (<b>cdimage.h</b>).</li> + <li><a href="../drv/irgb.html"><b>CD_IMAGERGB</b></a> = Client-Image + Drawing (<b>cdirgb.h</b>).</li> + <li><a href="../drv/dbuf.html"><b>CD_DBUFFER</b></a> = Offscreen Drawing + (<b>cddbuf.h</b>).</li> + </ul> + <p><b>File-Based Drivers</b> </p> + <ul> + <li><a href="../drv/cgm.html"><b>CD_CGM</b></a> = Computer Graphics + Metafile ISO (<b>cdcgm.h</b>).</li> + <li><a href="../drv/dgn.html"><b>CD_DGN</b></a> = MicroStation Design + File (<b>cddgn.h</b>).</li> + <li><a href="../drv/dxf.html"><b>CD_DXF</b></a> = AutoCad Drawing + Interchange File (<b>cddxf.h</b>).</li> + <li><a href="../drv/emf.html"><b>CD_EMF</b></a> = Microsoft Windows + Enhanced Metafile (<b>cdemf.h</b>). Works only in MS Windows systems.</li> + <li><a href="../drv/mf.html"><b>CD_METAFILE</b></a> = Metafile Canvas + Draw (<b>cdmf.h</b>).</li> + <li><a href="../drv/ps.html"><b>CD_PS</b></a> = PostScript File (<b>cdps.h</b>).</li> + <li><a href="../drv/wmf.html"><b>CD_WMF</b></a> = Microsoft Windows + Metafile (<b>cdwmf.h</b>).</li> + </ul> + +<pre class="function"><span class="mainFunction">cdCanvas* <a name="cdCreateCanvasf">cdCreateCanvasf(cdContext *ctx, const char* format, ...)</a>; [in C] +</span><font> +</font>[There is no equivalent in Lua]</pre> + + <p>Same as <strong><font>cdCreateCanvas</font></strong>, used in the case that the parameter <b> + <font>data</font></b> is a string composed by several parameters. This function can be used with + parameters equivalent to the <b><font>printf</font></b> function from the default C library.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdKillCanvas">cdKillCanvas(cdCanvas *canvas)</a>; [in C]</span> + +cd.KillCanvas(canvas: cdCanvas) [in Lua]</pre> + + <p>Destroys a previously created canvas. If this function is not called in + Lua, the garbage collector will call it.</p> + +<pre class="function"><span class="mainFunction">int <a name="cdCanvasActivate">cdCanvasActivate</a>(cdCanvas *canvas); [in C]</span> + +canvas:Activate(canvas: cdCanvas) -> (status: number) [in Lua]</pre> + + <p>Activates a canvas for drawing. This is used only for a few drivers. Native + Window and IUP drivers will update the canvas size if the window size has + changed. Double Buffer driver will recreate the image buffer if the window + canvas size has changed. In these cases the function MUST be called, for other + drivers is useless. Returns CD_ERROR or CD_OK.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdCanvasDeactivate">cdCanvasDeactivate</a>(cdCanvas* canvas); [in C]</span> + +canvas:Deactivate(canvas: cdCanvas) [in Lua]</pre> + + <p>Called when the application has finished drawing in the canvas. It is + optional, but if used for the Native Window driver in Windows when the handle + can not be retained, the drawing can only be done again after a <strong> + cdCanvasActivate</strong>. On some drivers will simply call + <a href="control.html#cdFlush">Flush</a>.</p> +<pre class="function"><span class="mainFunction">int <a name="cdUseContextPlus">cdUseContextPlus</a>(int use); [in C]</span> + +cd.UseContextPlus(use: number) -> (old_use: number) [in Lua]</pre> +<p>Activates or deactivates the use of an external context for the next calls of the <font face="Courier"><b> + <a href="../func/init.html#cdCreateCanvas">cdCreateCanvas</a></b></font> + function.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdInitContextPlus">cdInitContextPlus</a>(void); [in C] +</span> +cd.InitContextPlus() [in Lua]</pre> +<p>Initializes the context driver to use another context replacing the standard drivers. +This functions is only available when a library containing a "ContextPlus" +context driver is used. See the <a href="../drv/gdiplus.html">GDI+</a> base +driver and the <a href="../drv/xrender.html">XRender</a> base driver.</p> +<p>In Lua, when using require"cdluacontextplus" this function will be +automatically called.</p> + +<hr> +<pre class="function"><span class="mainFunction">cdContext* cdCanvasGetContext(cdCanvas *canvas); [in C]</span> + +canvas:GetContext(canvas: cdCanvas) -> (ctx: number) [in Lua]</pre> + + <p>Returns the context of a given canvas, which can be compared with the predefined contexts, such as "CD_PS".</p> + +<pre class="function"><span class="mainFunction">int cdContextCaps(cdContext* ctx); [in C]</span> + +cd.ContextCaps(ctx: number) -> (caps: number) [in Lua]</pre> + + <p>Returns the resources available for that context. To verify if a given resource is available, perform a binary AND + ('&.html with the following values:</p> + + <p><font>CD_CAP_FLUSH<br> + CD_CAP_CLEAR <br> + CD_CAP_PLAY <br> + CD_CAP_YAXIS</font> - The Y axis has the same orientation as the CD axis.<br> + <font>CD_CAP_CLIPAREA <br> + CD_CAP_CLIPPOLY</font> - Usually is not implemented.<br> + <font>CD_CAP_MARK</font> - Marks are implemented directly in the driver (they are usually simulated).<br> + <font>CD_CAP_RECT</font> - Rectangles are implemented directly in the driver (they are usually + simulated).<br> + <font>CD_CAP_VECTORTEXT</font> - Vector text is implemented directly in the driver (it is usually + simulated).<br> + <font>CD_CAP_IMAGERGB <br> + CD_CAP_IMAGERGBA</font> - If this is not implemented, but <font>cdGetImageRGB</font> is, then it is + simulated using <font>cdGetImageRGB</font> and <font>cdPutImageRGB</font>.<br> + <font>CD_CAP_IMAGEMAP <br> + CD_CAP_GETIMAGERGB <br> + CD_CAP_IMAGESRV</font> - Usually is only implemented in contexts of window graphics systems (Native Window and IUP).<br> + <font>CD_CAP_BACKGROUND <br> + CD_CAP_BACKOPACITY <br> + CD_CAP_WRITEMODE <br> + CD_CAP_LINESTYLE <br> + CD_CAP_LINEWITH <br> + CD_CAP_WD</font> - Functions of world coordinates are implemented directly in the driver (they are usually + simulated).<br> + <font>CD_CAP_HATCH <br> + CD_CAP_STIPPLE <br> + CD_CAP_PATTERN <br> + CD_CAP_FONT <br> + CD_CAP_FONTDIM</font> - If not defined, the function is implemented using an internal heuristics of the library.<br> + <font>CD_CAP_TEXTSIZE</font> - If not defined, the function is implemented using an internal + heuristics of the library.<br> + <font>CD_CAP_TEXTORIENTATION</font> - Usually is not implemented.<br> + <font>CD_CAP_PALETTE</font> - Usually is only implemented in contexts of window graphics systems + (Native Window and IUP).</p> + + +<pre class="function"><span class="mainFunction">int cdCanvasSimulate(cdCanvas* canvas, int mode); [in C]</span> + +canvas:Simulate(mode: number) -> (old_mode: number) [in Lua]</pre> + + <p>Activates the simulation of one or more primitives. It is ignored for the canvas + in the ImageRGB context, because in this case everything is already simulated. It also has no effect for primitives that + are usually simulated. It returns the previous simulation, but does not include primitives that are usually simulated. + The simulation can be activated at any moment. For instance, if a line simulation is required only for a situation, + the simulation can be activated for the line to be drawn, and then deactivated.</p> +<p>If simulation is activated the driver transformation matrix is disabled.</p> + <p>See in the Simulation sub-driver the information on how each simulation is performed.</p> + <p>To activate a given simulation, perform a binary OR ('|.html using one or more of the following values (in Lua, the + values must be added '+.html:</p> + <p><font>CD_SIM_NONE</font> - Deactivates all kinds of simulation.<br> + <font>CD_SIM_LINE <br> + CD_SIM_RECT <br> + CD_SIM_BOX <br> + CD_SIM_ARC <br> + CD_SIM_SECTOR <br> + CD_SIM_CHORD <br> + CD_SIM_POLYLINE <br> + CD_SIM_POLYGON <br> + CD_SIM_TEXT <br> + CD_SIM_ALL</font> - Activates all simulation options. <br> + <font>CD_SIM_LINES</font> - Combination of <font>CD_SIM_LINE, CD_SIM_RECT, CD_SIM_ARC</font> + and <font>CD_SIM_POLYLINE</font>.<br> + <font>CD_SIM_FILLS</font> - Combination of <font>CD_SIM_BOX, CD_SIM_SECTOR, CD_SIM_</font>CHORD and + <font>CD_SIM_POLYGON</font>.<br> + </p> + +<h3>Extras</h3> +<pre class="function">int <strong><span style="font-size: 110%"><a name="cdlua_open">cdlua_open</a></span></strong>(lua_State* L); [for Lua 5]</pre> + + <p>Initializes the CDLua binding. In Lua 5 the binding is lua state safe, this means that several states can be + initialized any time.</p> + +<pre class="function">int <strong><span style="font-size: 110%"><a name="cdlua_close">cdlua_close</a></span></strong>(lua_State* L); [for Lua 5]</pre> + + <p>Releases the memory allocated by the CDLua binding.</p> + +<pre class="function">cdCanvas* <strong><span style="font-size: 110%"><a name="cdlua_getcanvas">cdlua_checkcanvas</a></span></strong>(lua_State* L, int pos); [for Lua 5]</pre> + + <p>Returns the canvas in the Lua stack at position pos. The function will call lua_error if there is not a valid canvas in + the stack at the given position.</p> + + +<pre class="function">void <strong><span style="font-size: 110%">cdlua_pushcanvas</span></strong>(lua_State* L, cdCanvas* canvas);</pre> +<p>Pushes the given canvas into the stack.</p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/lines.html b/html/en/func/lines.html new file mode 100644 index 0000000..33dd7e4 --- /dev/null +++ b/html/en/func/lines.html @@ -0,0 +1,147 @@ +<!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>Lines</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Lines</h2> + + <p>Line are segments that connects 2 or more points. The <strong>Line</strong> + function includes the 2 given points and draws the line using the foreground + color. Line thickness is controlled by the <strong>LineWidth</strong> function. + By using function <strong>LineStyle</strong> you can draw dashed lines with some + variations. Lines with a style other than continuous are affected by the back + opacity attribute and by the background color.</p> + +<hr> +<pre class="function"><span class="mainFunction">void <a name="cdLine">cdCanvasLine</a>(cdCanvas* canvas, int x1, int y1, int x2, int y2); [in C] +</span>void cdfCanvasLine(cdCanvas* canvas, double x1, double y1, double x2, double y2); [in C]<br>void wdCanvasLine(cdCanvas* canvas, double x1, double y1, double x2, double y2); (WC) [in C] + +canvas:Line(x1, y1, x2, y2: <em>number</em>) [in Lua] +canvas:fLine(x1, y1, x2, y2: <em>number</em>) [in Lua] +canvas:wLine(x1, y1, x2, y2: <em>number</em>)<font><font> (WC) [in Lua]</font></font></pre> + + <p>Draws a line from <b>(x1,y1)</b> to <tt><b>(x2,y2)</b></tt> using + the current foreground color and line width and style. Both points are + included in the line. </p> + +<pre class="function"><a name="Polygons"><strong>Polygons</strong></a><strong> and Bezier Lines</strong></pre> + + <p>Open polygons can be created using <font><strong>cdBegin(</strong></font><b>CD_OPEN_LINES</b><font><strong>)/cdVertex(x,y)/.../cdEnd()</strong></font>.</p> + <p>Closed polygons use the same number of vertices but the last point is + automatically connected to the first point. Closed polygons can be created + using <font><strong>cdBegin(</strong></font><tt><b>CD_CLOSED_LINES</b></tt><font><strong>)/cdVertex(x,y)/.../cdEnd()</strong></font>.</p> + <p>Bezier lines can be created using <font><strong>cdBegin(</strong></font><b>CD_BEZIER</b><font><strong>)/cdVertex(x,y)/.../cdEnd()</strong></font>. + At least 4 vertices must be defined. The two vertices of the middle are the + control vertices. A sequence of bezier lines can be defined using more 3 + vertices, two control points and an end point, the last point of the previous + bezier will be used as the start point.</p> + <p>See the documentation of <a href="polygon.html">cdBegin/cdVertex/cdEnd</a>.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdRect">cdCanvasRect</a>(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); [in C]<br></span>void cdfCanvasRect(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); [in C] +void wdCanvasRect(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); (WC) [in C] + +canvas:Rect(xmin, xmax, ymin, ymax: <em>number</em>) [in Lua] +canvas:fRect(xmin, xmax, ymin, ymax: <em>number</em>) [in Lua]<br>canvas:wRect(xmin, xmax, ymin, ymax: <em>number</em>)<font><font> (WC) [in Lua]</font></font></pre> + + <p>Draws a rectangle with no filling. All points in the limits of interval + <font><strong>x_min<=x<=x_max, y_min<=y<=y_max</strong></font> + will be painted. It is affected by line attributes and the foreground color. + If the active driver does not include this primitive, it will be simulated + using the <strong><font>cdLine</font></strong> primitive.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdArc">cdCanvasArc</a></span><span class="mainFunction">(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2); [in C]<br></span>void cdfCanvasArc(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); [in C]<strong> +</strong>void wdCanvasArc(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2); (WC) [in C] + +canvas:Arc(xc, yc, w, h, angle1, angle2: <em>number</em>) [in Lua] +canvas:fArc(xc, yc, w, h, angle1, angle2: <em>number</em>) [in Lua] +canvas:wArc(xc, yc, w, h, angle1, angle2: <em>number</em>)<font><font> (WC) [in Lua]</font></font></pre> + + <p>Draws the arc of an ellipse aligned with the axis, using the current + foreground color and line width and style. It is drawn counter-clockwise. The + coordinate <b>(xc,yc)</b> defines the center of the ellipse. + Dimensions <b>w</b> and <b>h</b> define the elliptic axes X + and Y, respectively. </p> + <p>Angles <b>angle1</b> and <b>angle2</b>, in degrees define + the arc's beginning and end, but they are not the angle relative to the + center, except when w==h and the ellipse is reduced to a circle. The arc + starts at the point <b><b>(xc+(w/2)*cos(angle1),yc+(h/2)*sin(angle1))</b> + </b>and ends at <b>(xc+(w/2)*cos(angle2),yc+(h/2)*sin(angle2))</b>. A + complete ellipse can be drawn using 0 and 360 as the angles. </p> + <p>The angles are specified so if the size of the ellipse (w x h) is changed, + its shape is preserved. So the angles relative to the center are dependent + from the ellipse size. The actual angle can be obtained using <b>rangle = + atan2((h/2</b><b>)*sin(angle),(w/2)*cos(angle))</b>.</p> + <p>The angles are given in degrees. To specify the angle in radians, you can + use the definition <font size="2"><strong>CD_RAD2DEG</strong></font> + to multiply the value in radians before passing the angle to CD.</p> + <p align="center"><font size="4">Arc Parameters<br> + </font> <img src="../../img/arc.gif" border="2" width="161" height="160"></p> + +<h3>Attributes</h3> +<pre class="function"><span class="mainFunction">int <a name="cdLineStyle">cdCanvasLineStyle</a>(cdCanvas* canvas, int style); [in C]</span> + +canvas:LineStyle(style: <em>number</em>) -> (old_style: <em>number</em>) [in Lua]</pre> + + <p>Configures the current line style for: <b>CD_CONTINUOUS</b>, <b>CD_DASHED</b>, + <b>CD_DOTTED</b>, <b>CD_DASH_DOT,</b> <b>CD_DASH_DOT_DOT,</b> or <tt><b>CD_CUSTOM</b></tt>. Returns the + previous value. Default value: <b>CD_CONTINUOUS</b>. Value <b><b> + CD_QUERY</b> </b>simply returns the current value. When <b>CD_CUSTOM</b> + is used the <b>cdLineStyleDahes</b> function must be called before to + initialize the custom dashes. The spaces are drawn with the background color, + except when back opacity is transparent then the background is left unchanged. + See <a href="filled.html#cdBackOpacity">BackOpacity</a>.</p> + <p align="center"><font size="4">Line Styles</font><br> + <img src="../../img/lines.gif" border="2" width="243" height="62"></p> + +<pre class="function"><span class="mainFunction">void <a name="cdLineStyleDashes">cdCanvasLineStyleDashes</a>(cdCanvas* canvas, const int* dashes, int count); [in C]</span> + +canvas:LineStyleDashes(dashes: table, count: number) -> (old_style: number) [in Lua]</pre> + + <p>Defines the custom line style dashes. The first value is the lenght of the + first dash, the second value is the leght of the first space, and so on. For + example: "10 2 5 2" means dash size 10, space size 2, dash size 5, space size + 2, and repeats the pattern. </p> + +<pre class="function"><span class="mainFunction">int <a name="cdLineWidth">cdCanvasLineWidth</a>(cdCanvas* canvas, int width); [in C]<br></span>double wdCanvasLineWidth(double width_mm); (WC) [in C] + +canvas:LineWidth(width: number) -> (old_width: number) [in Lua] +canvas:wLineWidth(width_mm: number) -> (old_width_mm: number) (WC) [in Lua]</pre> + + <p>Configures the width of the current line (in pixels). Returns the previous + value. Default value: 1. Value <b><b>CD_QUERY</b> </b>simply returns the + current value. Valid width interval: >= 1.</p> + <p>In WC, it configures the current line width in millimeters. </p> + +<pre class="function"><span class="mainFunction">int <a name="cdLineJoin">cdCanvasLineJoin</a>(cdCanvas* canvas, int style); [in C]</span> + +canvas:LineJoin(style: number) -> (old_style: number) [in Lua]</pre> + + <p>Configures the current line style for: <b>CD_MITER</b>, <b> + CD_BEVEL</b> or <tt><b>CD_ROUND</b></tt>. Returns the previous value. + Default value: <b>CD_MITER</b>. Value <b><b>CD_QUERY</b> </b>simply + returns the current value.</p> + <p align="center"><font size="4">Line Joins</font><br> + <img src="../../img/linejoin.gif" border="2" width="111" height="138"></p> + +<pre class="function"><span class="mainFunction">int <a name="cdLineCap">cdCanvasLineCap</a>(cdCanvas* canvas, int style); [in C]</span> + +canvas:LineCap(style: number) -> (old_style: number) [in Lua]</pre> + + <p>Configures the current line style for: <b>CD_CAPFLAT</b>, <b> + CD_CAPSQUARE</b> or <tt><b>CD_CAPROUND</b></tt>. Returns the previous + value. Default value: <b>CD_CAPFLAT</b>. Value <b><b>CD_QUERY</b> + </b>simply returns the current value.</p> + <p align="center"><font size="4">Line Caps</font><br> + <img src="../../img/linecap.gif" border="2" width="211" height="166"></p> + + +</body> + +</html> diff --git a/html/en/func/marks.html b/html/en/func/marks.html new file mode 100644 index 0000000..b68db35 --- /dev/null +++ b/html/en/func/marks.html @@ -0,0 +1,85 @@ +<!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>Marks</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Marks</h2> + + <p>A mark is a punctual representation. It can have different sizes and types. + All types are affected only by mark attributes and by the foreground color.</p> +<p>All marks in all drivers are simulated using other CD primitives, except +<strong>cdPixel</strong>.</p> + +<hr> +<pre class="function"><span class="mainFunction">void <a name="cdPixel">cdCanvasPixel</a>(cdCanvas* canvas, int x, int y, long int color); [in C]</span> +void wdCanvasPixel(cdCanvas* canvas, double x, double y, long int color); (WC) [in C] + +canvas:Pixel(x, y: number, color: lightuserdata) [in Lua] +canvas:wPixel(x, y: number, color: lightuserdata) (WC) [in Lua]</pre> + + <p>Configures the pixel <b>(x,y)</b> with the color defined by <b>color</b>. It is the smallest element of the canvas. It depends only + on global attributes of the canvas.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdMark">cdCanvasMark</a>(cdCanvas* canvas, int x, int y); [in C]</span> +void wdCanvasMark(cdCanvas* canvas, double x, double y); (WC) [in C] + +canvas:Mark(x, y: number) [in Lua] +canvas:wMark(x, y: number) (WC) [in Lua]</pre> + + <p>Draws a mark in <b><b>(x,y)</b> </b>using the current foreground color. + It is not possible to use this function between a call to functions + <font><b>cdBegin</b></font> and <font><b>cdEnd</b></font> + if the type of mark is set to <b>CD_DIAMOND</b>. If the active driver + does not include this primitive, it will be simulated using other primitives + from the library, such as <strong><font>cdLine</font></strong>.</p> + <p>If you will call function <strong><font>cdMark</font></strong> + or <strong><font>wdMark</font></strong> several times in a + sequence, then it is recommended that the application changes the filling and + line attributes to those used by the <strong><font>cdMark</font></strong> + function:</p> + +<pre>cdInteriorStyle(CD_SOLID); +cdLineStyle(CD_CONTINUOUS); +cdLineWidth(1);</pre> + + <p>This will greatly increase this function's performance. Also in this case, + if the mark is very small, we suggest using the <font>cdPixel</font> + function so that the application itself draws the mark. In many cases, this + also increases this function's performance.</p> + +<h3>Attributes</h3> +<pre class="function"><span class="mainFunction">int <a name="cdMarkType">cdCanvasMarkType</a>(cdCanvas* canvas, int type); [in C]</span> + +canvas:MarkType(type: number) -> (old_type: number) [in Lua]</pre> + + <p>Configures the current mark type for: <b>CD_PLUS</b>, <b> + CD_STAR</b>, <b>CD_CIRCLE</b>, <b>CD_X</b>, <b> + CD_BOX</b>, <b>CD_DIAMOND</b>, <b>CD_HOLLOW_CIRCLE</b>, + <b>CD_HOLLOW_BOX</b> or <b>CD_HOLLOW_DIAMOND</b>. Returns + the previous value. Default value: <b>CD_STAR</b>. Value <b><b> + CD_QUERY</b> </b>simply returns the current value.</p> + <p align="center"><font size="4">Mark Types</font><br> + <img src="../../img/marks.gif" border="2" width="148" height="193"></p> + +<pre class="function"><span class="mainFunction">int <a name="cdMarkSize">cdCanvasMarkSize</a>(cdCanvas* canvas, int size); [in C]</span> +double wdCanvasMarkSize(cdCanvas* canvas, double size); (WC) [in C] + +canvas:MarkSize(size: number) -> (old_size: number) [in Lua] +canvas:wMarkSize(size: number) -> (old_size: number) (WC) [in Lua]</pre> + + <p>Configures the mark size in pixels. Returns the previous value. Default + value: 10. Value <b><b>CD_QUERY</b> </b>simply returns the current value. + Valid width interval: >= 1.</p> + <p>In WC, it configures the current line width in millimeters. </p> + + +</body> + +</html> diff --git a/html/en/func/other.html b/html/en/func/other.html new file mode 100644 index 0000000..f0d7284 --- /dev/null +++ b/html/en/func/other.html @@ -0,0 +1,119 @@ +<!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>Other</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">System</h2> +<pre class="function"><span class="mainFunction">char* <a name="cdVersion">cdVersion</a>(void); [in C]</span> + +cd.Version() -> (version: string) [in Lua]</pre> + + <p>Returns the current version number of the library. The string with the + version number has a format "<font>major.minor.build</font>". + For instance, the string "2.1.3" has number 2 as the main (major) version + number, 1 as the secondary (minor) version number, and 3 as the build number. + The major version number represents a change in the structure or behavior of + functions; the minor version number represents one or more new drivers and + functions added to the library; and the build version number represents one or + more corrected bugs.</p> + +<pre class="function"><span class="mainFunction">char* cdVersionDate(void); [in C] +</span> +cd.VersionDate() -> (versiondate: string) [in Lua]</pre> +<p>Returns the release date of the current version of the library.</p> +<pre class="function"><span class="mainFunction">int cdVersionNumber(void); [in C] +</span> +cd.VersionNumber() -> (version: number) [in Lua]</pre> +<p>Returns the current version number of the library.</p> +<pre class="function">[in C] +<span class="mainFunction">CD_NAME</span> "CD - Canvas Draw" +<span class="mainFunction">CD_DESCRIPTION</span> "A 2D Graphics Library" +<span class="mainFunction">CD_COPYRIGHT</span> "Copyright (C) 1994-2007 Tecgraf/PUC-Rio and PETROBRAS S/A" +<span class="mainFunction">CD_VERSION</span> "5.0.0" +<span class="mainFunction">CD_VERSION_DATE</span> "2007/04/09" +<span class="mainFunction">CD_VERSION_NUMBER</span> 500000 + +[in Lua] +cd._NAME +cd._DESCRIPTION +cd._COPYRIGHT +cd._VERSION +cd._VERSION_DATE +cd._VERSION_NUMBER</pre> + + <p>Usefull definitions. They have the same value returned by <b>cdVersion</b>* + functions.</p> + +<hr> +<h2 align="center">Metafile Interpretation</h2> +<pre class="function"><span class="mainFunction">int cdCanvasPlay(cdCanvas* canvas, cdContext* ctx, int xmin, int xmax, int ymin, int ymax, void *data); [in C]</span> + +canvas:Play(ctx, xmin, xmax, ymin, ymax: number, data: string) -> (status: number) [in Lua]</pre> + + <p>Interprets the graphical contents (primitives and attributes) in a given + driver and calls equivalent functions of the CD library using the given + canvas. The primitives are drawn inside the region defined by the given + limits. If <font>limits are 0 (xmin</font>, <font>xmax</font>, + <font>ymin</font> and <font>ymax)</font> the primitives will be drawn with their coordinates having the original + values in the file. </p> + + <p>Only some drivers implement this function:</p> + + + <ul> + <li><a href="../drv/clipbd.html"><b> + CD_CLIPBOARD</b></a> = Clipboard, <font>data</font> is + ignored. </li> + <li><a href="../drv/wmf.html"><b> + CD_WMF</b></a> = Windows Metafile, <font>data</font> is + a <b>char*</b> for the string ''<i>filename</i>''. Works only in + the MS Windows system.</li> + <li><a href="../drv/emf.html"><b> + CD_EMF</b></a> = Windows Enhanced Metafile, <font>data</font> + is a <b>char*</b> for the string ''<i>filename</i>''. Works only in + the MS Windows system.</li> + <li><a href="../drv/cgm.html"><b> + CD_CGM</b></a> = Computer Graphics Metafile ISO, <font> + data</font> is a <b>char*</b> for the string ''<i>filename</i>''.</li> + <li><a href="../drv/mf.html"><b> + CD_METAFILE</b></a> = CD Metafile, <font>data</font> + is a <b>char*</b> for the string ''<i>filename</i>''.</li> + <li><a href="../drv/picture.html"><b> + CD_PICTURE</b></a> = CD Picture, <font>data</font> + is a <strong>cdCanvas</strong><b>*</b> of the Picture canvas.</li> + </ul> + +<pre class="function"><span class="mainFunction">int cdContextRegisterCallback(cdContext *ctx, int cb, int(*func)(cdCanvas* canvas, ...)); [in C]</span> + +cd.ContextRegisterCallback(ctx, cb: number, func: function) -> (status: number) [in Lua]</pre> + + <p>Used to customize the behavior of the <b><font>Play</font></b> + function. If you register a known callback function, it will be called during + the processing loop of <font>cdPlay</font>.</p> + <p>The callback should return <font>CD_CONTINUE</font>, if it + returns <font>CD_ABORT</font>, the <font>cdPlay</font> + function is aborted. The callback identifiers of a given driver must be in the + header file relative to that driver, with prefix "<font>CD_XXYYYCB</font>", + where <font>XX</font> identifies that driver and + <font>YYY</font> identifies the callback name.</p> + <p>There is a default callback common to all implementations of + <font>cdPlay</font>, <b>CD_SIZECB</b>. Its definition + is:</p> +<pre>int cdResizeCB(cdCanvas* canvas, int width, int height, double mm_width, double mm_height)</pre> +<p>It returns the size of the image in the + file before any function in the CD library is called, so that you can call the + <font>cdPlay</font> function without an active canvas and + create the canvas inside the callback. It works as a <b> + <font>cdCanvasGetSize</font></b> function.</p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/polygon.html b/html/en/func/polygon.html new file mode 100644 index 0000000..4e18664 --- /dev/null +++ b/html/en/func/polygon.html @@ -0,0 +1,87 @@ +<!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>Polygons</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Open, Closed and Filled Polygons,<br> +Bezier Lines and<br> +Regions Creation</h2> + + <p>The functions <font><strong>cdBegin</strong></font>, + <font><strong>cdVertex</strong></font> and <font> + <strong>cdEnd</strong></font> are use for many situations. + <font><strong>cdBegin</strong></font> is called once, + <font><strong>cdVertex</strong></font> can be called many + times, and <font><strong>cdEnd</strong></font> is called once + to actually do something. If you call <font><strong>cdBegin</strong></font> + again before <font><strong>cdEnd</strong></font> the process is + restarted, except for <strong><font>cdBegin(</font></strong><b>CD_REGION</b><strong><font>)</font></strong> + that can contains one or more polygons inside. </p> + +<hr> +<pre class="function"><span class="mainFunction">void <a name="cdBegin">cdCanvasBegin</a>(cdCanvas* canvas, int mode); [in C]</span> + +canvas:Begin(mode: number) [in Lua]</pre> + + <p>Starts defining a polygon to be drawn (or filled) according to the mode: + <b>CD_CLOSED_LINES</b>, <b>CD_OPEN_LINES</b>, <b>CD_FILL</b><strong><b>, + </b></strong><b>CD_CLIP, CD_REGION</b> or <strong><b>CD_BEZIER</b></strong>. + Do not create embedded polygons, that is, do not call function + <font><strong>cdBegin</strong></font> twice without a call to + <font><strong>cdEnd</strong></font> in between.</p> + +<ul> + <li><strong>CD_OPEN_LINES</strong><b>:</b> connects all the points at cdEnd. Depends + on line width and line style attributes. </li> + <li><b><b>CD_CLOSED_LINES:</b> </b>connects all the points at cdEnd and + connects the last point to the first. Depends on line width and line + style attributes. </li> + <li><b>CD_FILL:</b> connects the last point to the first and fills + the resulting polygon according to the current interior style. When the + interior style <strong><b>CD_HOLLOW</b></strong> is defined the it behaves + as if the mode were <b>CD_CLOSED_LINES</b><strong>.</strong></li> + <li><b>CD_CLIP: i</b>nstead of creating a polygon to be drawn, + creates a polygon to define a polygonal clipping region. </li> + <li><strong><b>CD_BEZIER:</b></strong><b> </b>defines the points of a bezier + curve. There must be at least 4 points: <i>start</i>, <i>control</i>, <i> + control</i> and <i>end</i>. To specify a sequence of curves use 3 more points + for each curve: <i>control</i>, <i>control</i>, <i>end</i>, <i>control</i>, <i> + control</i>, <i>end</i>, ... The end point is used as start point for the next + curve.</li> + <li><strong><b>CD_REGION</b></strong>: starts the creation of a complex + region for clipping. All calls to <font><strong>cdBox</strong></font>, + <font><strong>cdSector</strong></font>, <font> + <strong>cdChord, Filled</strong></font> <font><strong>Polygons</strong></font> + and <font><strong>cdText</strong></font> will be composed in a + region for clipping. See <a href="region.html">Regions</a> documentation.</li> +</ul> +<p align="center"><font size="4">Open, Closed and Filled Polygons<br> +</font><img src="../../img/polygon.gif" border="2" width="249" height="116"></p> +<p align="center"><font size="4">Bezier Lines<br> +</font><img src="../../img/bezier.gif" border="2" width="241" height="220"></p> +<pre class="function"><span class="mainFunction">void <a name="cdVertex">cdCanvasVertex</a>(cdCanvas* canvas, int x, int y); [in C]</span> +void cdfCanvasVertex(cdCanvas* canvas, double x, double y); [in C] +void wdCanvasVertex(cdCanvas* canvas, double x, double y); (WC) [in C] + +canvas:Vertex(x, y: number) [in Lua] +canvas:wVertex(x, y: number) (WC) [in Lua]</pre> + + <p>Adds a vertex to the polygon definition.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdEnd">cdCanvasEnd</a>(cdCanvas* canvas); [in C]</span> + +canvas:End() [in Lua]</pre> + + <p>Ends the polygon's definition and draws it.</p> + + +</body> + +</html> diff --git a/html/en/func/region.html b/html/en/func/region.html new file mode 100644 index 0000000..e503733 --- /dev/null +++ b/html/en/func/region.html @@ -0,0 +1,83 @@ +<!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>Complex Clipping Regions</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Complex Clipping Regions</h2> + + <p>A complex region can composed of boxes, sectors, chords, polygons and + texts. It is implemented only in the Windows GDI, GDI+ and X-Windows base drivers.</p> + + <p>Complex clipping regions can be created using <font><strong> + cdBegin(</strong></font><b><tt>CD_REGION</tt></b><font><strong>)/(filled + primtives)/.../cdEnd()</strong></font>. For more about cdBegin and cdEnd see + <a href="polygon.html">Polygons</a>.</p> + <p>Between a <strong><font>cdBegin(</font></strong><b><tt>CD_REGION</tt></b><strong><font>)</font></strong> + and a <strong><font>cdEnd()</font></strong>, all calls to + <font><strong>cdBox</strong></font>, <font> + <strong>cdSector</strong></font>, <font><strong>cdChord, + cdBegin(CD_FILL)/cdVertex(x,y)/.../cdEnd()</strong></font> and + <font><strong>cdText</strong></font> will be composed in a + region for clipping. This is the only exception when you can call a + <font><strong>cdBegin</strong></font> after another + <font><strong>cdBegin</strong></font>.</p> + <p>When you call <font><strong>cdBegin(</strong></font><b><tt>CD_REGION</tt></b><strong><font>)</font></strong> + a new empty region will be created. So for the first operation you should use + <b><tt>CD_UNION</tt></b> or <b><tt>CD_NOTINTERSECT</tt></b> combine modes. + When you finished to compose the region call <font><strong> + cdEnd()</strong></font>.</p> + <p>To make the region active you must call <strong><font> + cdClip(</font></strong><b><tt>CD_CLIPREGION</tt></b><strong><font>)</font></strong>. + For other clipping regions see <a href="clipping.html">Clipping</a>.</p> +<p>Complex clipping regions are not saved by <strong>cdSaveState</strong>.</p> + +<hr> +<pre class="function"><span class="mainFunction">int cdCanvasRegionCombineMode(cdCanvas* canvas, int mode); [in C]</span> + +canvas:RegionCombineMode(mode: number) -> (old_mode: number) [in Lua]</pre> + + <p>Changes the way regions are combined when created. Returns the previous + status. Values: <b><tt>CD_UNION, CD_INTERSECT, CD_DIFFERENCE or + CD_NOTINTERSECT</tt></b>. The value <b><tt>CD_QUERY</tt></b> simply returns + the current status. Default value: <b><tt>CD_UNION</tt></b>.</p> + <p align="center"><font size="4">Combine Modes<br> + </font><img src="../../img/regions.gif" border="2" width="297" height="361"></p> + +<pre class="function"><span class="mainFunction">int cdCanvasIsPointInRegion(cdCanvas* canvas, int x, int y); [in C]</span> + +canvas:IsPointInRegion(x, y: number) -> (status: number) [in Lua]</pre> + + <p>Returns a non zero value if the point is contained inside the current + region.</p> + +<pre class="function"><span class="mainFunction">void cdCanvasOffsetRegion(cdCanvas* canvas, int dx, int dy); [in C]</span> +void wdCanvasOffsetRegion(cdCanvas* canvas, double dx, double dy); (WC) [in C] + +canvas:OffsetRegion(dx, dy: number) [in Lua] +canvas:wOffsetRegion(dx, dy: number) (WC) [in Lua]</pre> + + <p>Moves the current region by the given offset. In X-Windows, if the region + moves to outside the canvas border, the part moved outside will be lost, the + region will need to be reconstruted.</p> + +<pre class="function"><span class="mainFunction">void cdCanvasGetRegionBox(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax); [in C]</span> +void wdCanvasGetRegionBox(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax); (WC) [in C] + +canvas:GetRegionBox() -> (xmin, xmax, ymin, ymax, status: number) [in Lua] +canvas:wGetRegionBox() -> (xmin, xmax, ymin, ymax, status: number) (WC) [in Lua]</pre> + + <p>Returns the rectangle of the bounding box of the current region. It is not + necessary to provide all return pointers, you can provide only the desired + values and <i><tt>NULL</tt></i> for the others.</p> + + +</body> + +</html> diff --git a/html/en/func/server.html b/html/en/func/server.html new file mode 100644 index 0000000..6663de5 --- /dev/null +++ b/html/en/func/server.html @@ -0,0 +1,84 @@ +<!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>Server Images</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Server Images</h2> + + <p>It is a high performance image compatible with a specific canvas. It is + faster than user image functions, but less flexible. It is commonly used for + off-screen drawing in Window Systems. </p> + <p>You can make gets and puts on several canvases but they must be created + using the same driver. It is possible to specify a part of the image to be + drawn, but it is not possible to zoom.</p> + <p>It is called "server" images because the data is stored in a system private + format, that the application (or the client) does not have access.</p> + <p>To create a server image there must be an active canvas of a driver with + server image support.</p> + +<hr> +<pre class="function"><span class="mainFunction">cdImage* <a name="cdCreateImage">cdCanvasCreateImage</a>(cdCanvas* canvas, int w, int h); [in C]</span> + +canvas:CreateImage(w, h: number) -> (image: cdImage) [in Lua]</pre> + + <p>Creates a compatible image with size = <b><tt>w x h</tt></b> pixels. A + compatible image has the same color representation (number of bits per pixel) + of the active canvas. Once the server image is created it is independent of + the active canvas. The server image can only be used with an other canvas of + the same type as the canvas that was active when the image was created. The + default background is the same as the canvas, <strong><tt>CD_WHITE</tt></strong>.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdKillImage">cdKillImage</a>(cdImage* image); [in C]</span> + +image:KillImage() [in Lua]</pre> + + <p>Liberates memory allocated for the image. If this function is not called in + Lua, the garbage collector will call it.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdGetImage">cdCanvasGetImage</a>(cdCanvas* canvas, cdImage* image, int x, int y); [in C]</span> + +canvas:GetImage(image: cdImage; x, y: number) [in Lua]</pre> + + <p>Copies a rectangular region from the current rectangular context to the + memory <strong>(</strong><b><tt>image</tt></b><strong>)</strong>. <b><tt>(x,y)</tt></b> + is the coordinate of the bottom left corner of the rectangular region. The + width and length of the rectangular region are defined in the image structure + (when the image is created).</p> + +<pre class="function"><span class="mainFunction">void <a name="cdPutImageRect">cdCanvasPutImageRect</a>(cdCanvas* canvas, cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax); [in C]</span> +void wdCanvasPutImageRect(cdCanvas* canvas, cdImage* image, double x, double y, int xmin, int xmax, int ymin, int ymax); (WC) [in C] + +canvas:PutImageRect(image: cdImage; x, y, xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wPutImageRect(image: cdImage; x, y, xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + + <p>Copies an image in a rectangular region of the canvas with the bottom left + corner in <tt><b>(x,y)</b></tt>. Allows specifying a rectangle inside the + image to be drawn, if <strong><font>xmin</font>, + <font>xmax</font>, <font>ymin</font> </strong> + and <strong><font>ymax</font></strong> are 0, then the whole + image is assumed.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdScrollArea">cdCanvasScrollArea</a>(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, int dx, int dy); [in C]</span> + +canvas:ScrollArea(xmin, xmax, ymin, ymax, dx, dy: number) [in Lua]</pre> + + <p>Copies the rectangle defined by the coordinates <b><tt>(xmin,ymin)</tt></b> + and <b><tt>(xmax,ymax)</tt></b> to the rectangle defined by <b><tt> + (xmin+dx,ymin+dy)</tt></b> and <b><tt>(xmax+dx,ymax+dy)</tt></b>. It has the + same effect as <b><tt>cdGetImage</tt></b> followed by <tt><b>cdPutImage</b></tt>, + but it should be faster and does not require the explicit creation of an image + to be executed. Note that the region belonging to the first rectangle, but not + to the second, remains unchanged (the function does not clean this region). + </p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/text.html b/html/en/func/text.html new file mode 100644 index 0000000..6243325 --- /dev/null +++ b/html/en/func/text.html @@ -0,0 +1,192 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<title>Text</title> +<link rel="stylesheet" type="text/css" href="../../style.css"> +</head> + +<body> + +<h2 align="center">Text</h2> + + <p>A raster text using a font with styles. The position the text is drawn depends on the text alignment attribute. </p> + <p>The library has at least 4 standard typefaces: "System" (which depends on the driver and platform), + "Courier" (mono spaced + with serif), "Times" (proportional with serif) and "Helvetica" (proportional without serif). Each typeface can have + some styles: Plain, <strong>Bold</strong>, <em>Italic</em> and a combination of <em><strong>Bold and Italic</strong></em>. + As an alternative to the standard typefaces, you can use other typefaces or native driver typefaces with the function + <strong>NativeFont</strong>, but they may work in a reduced set of drivers. + </p> + <p>You may retrieve the dimensions of the selected font with function <font> + <strong>GetFontDim</strong></font>. Also you + may retrieve the bounding box of a specific text before drawing by using the + <font><strong>GetTextSize</strong></font> + and <font><strong>GetTextBox</strong></font> functions. </p> + <p>The text is drawn using a reference point; you can change the alignment relative to this point using the + <font><strong>TextAligment</strong></font> function. </p> + +<hr> +<pre class="function"><span class="mainFunction">void <a name="cdText">cdCanvasText</a>(cdCanvas* canvas, int x, int y, const char* text); [in C]</span> +void cdfCanvasText(cdCanvas* canvas, double x, double y, const char* text); [in C] +void wdCanvasText(cdCanvas* canvas, double x, double y, const char* text); (WC) [in C] + +canvas:Text(x, y: number, text: string) [in Lua] +canvas:fText(x, y: number, text: string) [in Lua] +canvas:wText(x, y: number, text: string) (WC) [in Lua]</pre> + + <p>Inserts a text in <b><tt>(x,y)</tt></b> according to the current font and + text alignment. It expects an ANSI string with no line breaks.</p> + +<h3>Attributes</h3> +<pre class="function"><span class="mainFunction">void <a name="cdFont">cdCanvasFont</a>(cdCanvas* canvas, const char* typeface, int style, int size); [in C]</span> +void wdCanvasFont(cdCanvas* canvas, const char* typeface, int style, double size); (WD) [in C] + +canvas:Font(typeface, style, size: number) [in Lua] +canvas:wFont(typeface, style, size: number) (WD) [in Lua]</pre> + + <p>Selects a text font. The font type can be one of the standard type faces or + other driver dependent type face. Since font face names are not a standard + between drivers, a few names are specially handled to improve application + portability. If you want to use names that work for all systems we recommend + using: "<strong>Courier</strong>", "<strong>Times</strong>" and "<strong>Helvetica</strong>".</p> +<p>The style can be a combination of: <strong>CD_PLAIN</strong>, + <strong>CD_BOLD</strong>, <strong>CD_ITALIC</strong>, <strong>CD_UNDERLINE</strong> + or <strong>CD_STRIKEOUT</strong>. Only the Windows and PDF drivers support underline and + strikeout. The size is provided in points (1/72 inch) or in pixels (using + negative values). </p> + <p>Default values: "<strong>System</strong>", <b>CD_PLAIN</b>, 12. </p> + <p>You can specify partial parameters using NULL, -1 and 0 for typeface, style + and size. When these parameters are specified the current font parameter is + used. For example: <b>CanvasFont(NULL, -1, 10)</b> will only change the font + size.</p> + <p>To convert between pixels and points use the function <strong> + <font>cdPixel2MM</font> + </strong>to convert from pixels to millimeters and use the formula "<strong>(value in <em>points</em>) = CD_MM2PT * + (value in millimeters)</strong>".</p> + <p>In WC, the size is specified in millimeters, but is internally converted to points.</p> +<p>Fonts can heavily benefit from the ANTIALIAS attribute where available in the +driver.</p> + <div align="center"> + <center> + <table border="0" cellpadding="5" cellspacing="8" style="border-collapse: collapse" bordercolor="#111111"> + <tr> + <td> + <p align="center"><font size="4">Type Faces</font><br> + <img src="../../img/fonts.gif" border="2" width="140" height="125"> </td> + <td> + <p align="center"><font size="4">Font Styles</font><br> + <img src="../../img/font_style.gif" border="2" width="135" height="122"> </td> + </tr> + </table> + </center> + </div> + +<pre class="function"><span class="mainFunction">void <a name="cdGetFont">cdCanvasGetFont</a>(cdCanvas* canvas, char* typeface, int *style, int *size); [in C]</span> +void wdCanvasGetFont(cdCanvas* canvas, char* typeface, int *style, double *size); (WC) [in C] + +canvas:GetFont() -> (typeface: string, style, size: number) [in Lua] +canvas:wGetFont() -> (typeface: string, style, size: number) (WC) [in Lua]</pre> + + <p>Returns the values of the current font. It is not necessary to provide all + return pointers; you can provide only the desired values.</p> + <p>In WC, the size is returned in millimeters.</p> + +<pre class="function"><span class="mainFunction">char* <a name="cdNativeFont">cdCanvasNativeFont</a>(cdCanvas* canvas, const char* nativefont); [in C]</span> + +canvas:NativeFont(font: string) -> (old_font: string) [in Lua]</pre> + + <p>Selects a font based on a string description. The description can depend on the driver + and the platform, but a common definition is available for all drivers. It + does not need to be stored by the application, as it is internally replicated + by the library. The string is case sensitive. It returns the previous string. </p> +<p>The string is parsed and the font typeface, style and size are set according +to the parsed values, as if <strong>cdCanvasFont</strong> was called. The native font string is +cleared when a font is set +using <strong>cdCanvasFont</strong>.</p> +<p>The common format definition is similar to the the <a href="http://www.pango.org/"> +Pango</a> library Font Description, used by GTK+2. It is defined as having 3 parts: <font +family>, <font styles> <font size>. For ex: "Times, Bold 18", or +"Arial,Helvetica, Italic Underline -24". The supported styles include: +Bold, Italic, Underline and Strikeout. Underline, Strikeout, and negative +pixel values are not supported by the standard Pango Font Description. The Pango +format include many other definitions not supported by the CD format, they are +just ignored.</p> +<p>The IUP "FONT" attribute internal formats are also accepted in all drivers +and platforms.</p> + <p>Using "NULL" as a parameter, it only returns the previous string and does not change the font. The value returned + is the last attributed value, which may not correspond exactly to the font selected by the driver.</p> + + <p>Using "(char*)CD_QUERY" as a parameter, it returns the current selected + font in the common format definition.</p> + +<pre class="function"><span class="mainFunction">int <a name="cdTextAlignment">cdCanvasTextAlignment</a>(cdCanvas* canvas, int alignment); [in C]</span> + +canvas:TextAlignment(alignment: number) -> (old_alignment: number) [in Lua]</pre> + + <p>Defines the vertical and horizontal alignment of a text as: <b><tt>CD_NORTH</tt></b>, <b><tt>CD_SOUTH</tt></b>, <b> + <tt>CD_EAST</tt></b>, <b><tt>CD_WEST</tt></b>, <b><tt>CD_NORTH_EAST</tt></b>, <b><tt>CD_NORTH_WEST</tt></b>, <b><tt> + CD_SOUTH_EAST</tt></b>, <b><tt>CD_SOUTH_WEST</tt></b>, <b><tt>CD_CENTER</tt></b>, <b><tt>CD_BASE_LEFT</tt></b>, <b> + <tt>CD_BASE_CENTER</tt></b>, or <b><tt>CD_BASE_RIGHT</tt></b>. Returns the previous value. Default value: <b><tt> + CD_BASE_LEFT</tt></b>. Value <tt><b>CD_QUERY</b> </tt>simply returns the current value.</p> + <p align="center"><font size="4">Text Alignment</font><br> + <img src="../../img/align.gif" border="2" width="273" height="227"></p> + +<pre class="function"><span class="mainFunction">double <a name="cdTextOrientation">cdCanvasTextOrientation</a>(cdCanvas* canvas, double angle); [in C]</span> + +canvas:TextOrientation(angle: number) -> (old_angle: number) [in Lua]</pre> + + <p>Defines the text orientation, which is an angle provided in degrees relative to the horizontal line according to + which the text is drawn. Returns the previous value. Value <tt><b>CD_QUERY</b> </tt>simply returns the current value. + The default value is 0.</p> + +<h3>Properties</h3> +<pre class="function"><span class="mainFunction">void <a name="cdFontDim">cdCanvasGetFontDim</a>(cdCanvas* canvas, int *max_width, int *height, int *ascent, int *descent); [in C]</span> +void wdCanvasGetFontDim(cdCanvas* canvas, double *max_width, double *height, double *ascent, double *descent); (WC) [in C] + +canvas:GetFontDim() -> (max_width, height, ascent, descent: number) [in Lua] +canvas:wGetFontDim() -> (max_width, height, ascent, descent: number) (WC) [in Lua]</pre> + + <p>Returns the maximum width of a character, the line's height, the <i>ascent</i> and <i>descent</i> of the + characters of the currently selected font. The line's height is the sum of the <i> + ascent</i> and <i>descent</i> of a + given additional space (if this is the case). All values are given in pixels + and are positive. It is not necessary to provide all return pointers, you can provide only + the desired values and <i><tt>NULL</tt></i> for the others.</p> + <p align="center"><font size="4">Font Dimension Attributes<br> + </font><img src="../../img/font_dim.gif" border="2" width="300" height="139"></p> + +<pre class="function"><span class="mainFunction">void <a name="cdTextSize">cdCanvasGetTextSize</a>(cdCanvas* canvas, const char* text, int *width, int *height); [in C]</span> +void wdCanvasGetTextSize(cdCanvas* canvas, const char* text, double *width, double *height); (WC) [in C] + +canvas:GetTextSize(text: string) -> (width, heigth: number) [in Lua] +canvas:wGetTextSize(text: string) -> (width, heigth: number) (WC) [in Lua]</pre> + + <p>Returns the width and height of a text's minimum box with the currently selected font. If the driver does not + support this kind of query, the values will be given 0 (zero). It is not necessary to provide all return pointers, you + can provide only the desired values and <i><tt>NULL</tt></i> for the others.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTextBox">cdCanvasGetTextBox</a>(cdCanvas* canvas, int x, int y, const char* text, int *xmin, int *xmax, int *ymin, int *ymax); [in C]</span> +void wdCanvasGetTextBox(cdCanvas* canvas, double x, double y, const char* text, double *xmin, double *xmax, double *ymin, double *ymax); (WC) [in C] + +canvas:GetTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) [in Lua] +canvas:wGetTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) (WC) [in Lua]</pre> + + <p>Returns the horizontal bounding rectangle of a text box, even if the text has an orientation. It is not necessary + to provide all return pointers, you can provide only the desired values and <i><tt>NULL</tt></i> for the others.</p> + +<pre class="function"><span class="mainFunction">void <a name="cdTextBounds">cdCanvasGetTextBounds</a>(cdCanvas* canvas, int x, int y, const char *text, int *rect); [in C]</span> +void wdCanvasGetTextBounds(cdCanvas* canvas, double x, double y, const char* text, double *rect); (WC) [in C] + +canvas:GetTextBounds(x, y: number, text: string) -> (rect0, rect1, rect2, rect3, rect4, rect5, rect6, rect7: number) [in Lua] +canvas:wGetTextBounds(x, y: number, text: string) -> (rect0, rect1, rect2, rect3, rect4, rect5, rect6, rect7: number) (WC) [in Lua]</pre> + + <p>Returns the oriented bounding rectangle of a text box. The rectangle corners are returned in counter-clock wise + order starting with the bottom left corner, (x,y) arranged (x0,y0,x1,y1,x2,y2,x3,y3).</p> + + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/func/vectortext.html b/html/en/func/vectortext.html new file mode 100644 index 0000000..e1b1d6e --- /dev/null +++ b/html/en/func/vectortext.html @@ -0,0 +1,133 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>Vector Text</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">Vector Text</h2> + <p>It is a text that uses a font created only with line segments. It is very + useful to be scaled and very fast. You must set the text size before drawing + any text. The functions ignore the new line character "\n"; only the <font>wdMultiLineVectorText</font> + function will consider this character. The default direction is horizontal from + left to right.</p> + <p align="center"><font size="4">Vector Text Parameters</font><br> + <img src="../../img/vector_text.gif" align="middle" border="2" width="101" height="91"></p> + <p>All vector text drawing in all drivers are simulated using other CD + primitives.</p> + <hr> + <pre class="function"><span class="mainFunction">void <a name="cdVectorText">cdCanvasVectorText</a>(cdCanvas* canvas, int x, int y, const char* text); [in C]</span> +void wdCanvasVectorText(cdCanvas* canvas, double x, double y, const char* text); (WC) [in C] + +canvas:VectorText(x, y: number, text: string) [in Lua] +canvas:wVectorText(x, y: number, text: string) (WC) [in Lua]</pre> + <p>Draws a vector text in position <tt><b>(x,y)</b></tt>, respecting the + alignment defined by <font><strong>cdTextAlignment</strong></font>. It ignores + the configuration <font><strong>cdBackOpacity</strong></font>, being always + transparent. It also ignores strings with multiple lines. It is ESSENTIAL to + call <font><strong>cdVectorTextSize</strong></font> or <font><strong>cdVectorCharSize</strong></font> + before using <font><strong>cdVectorText</strong></font> or <font><strong>cdMultiLineVetorText</strong></font>.</p> + <pre class="function"><span class="mainFunction">void <a name="cdMultiLineVectorText">cdCanvasMultiLineVectorText</a>(cdCanvas* canvas, int x, int y, const char* text); [in C]</span> +void wdCanvasMultiLineVectorText(cdCanvas* canvas, double x, double y, const char* text); (WC) [in C] + +canvas:MultiLineVectorText(x, y: number, text: string) [in Lua] +canvas:wMultiLineVectorText(x, y: number, text: string) (WC) [in Lua]</pre> + <p>Draws a vector text with several lines in position <b><tt>(x,y)</tt></b>, + respecting the alignment defined by <font><strong>cdTextAlignment</strong></font>. + It ignores the configuration <font><strong>cdBackOpacity</strong></font>, being + always transparent. Lines are broken by characters <font>"\n"</font>. Each line + respects the scale defined in <font><strong>cdVectorTextSize</strong></font> or <font> + <strong>cdVectorCharSize</strong></font>. This function's purpose is to make + function <strong><font>cdVectorText</font></strong> more efficient, not being + concerned with multiple lines.</p> + <h3>Attributes</h3> + <pre class="function"><span class="mainFunction">void <a name="cdVectorTextDirection">cdCanvasVectorTextDirection</a>(cdCanvas* canvas, int x1, int y1, int x2, int y2); [in C]</span> +void wdCanvasVectorTextDirection(cdCanvas* canvas, double x1, double y1, double x2, double y2); (WC) [in C] + +canvas:VectorTextDirection(x1, y1, x2, y2: number) [in Lua] +canvas:wVectorTextDirection(x1, y1, x2, y2: number) (WC) [in Lua]</pre> + <p>Defines the text direction by means of two points, <b><tt>(x1,y1)</tt></b> and <b> + <tt>(x2,y2)</tt></b>. The default direction is horizontal from left to right.</p> + <pre class="function"><span class="mainFunction">double* <a name="cdVectorTextTransform">cdCanvasVectorTextTransform</a>(cdCanvas* canvas, const double* matrix); [in C]</span> + +canvas:VectorTextTransform(matrix: table) -> (old_matrix: table) [in Lua] </pre> + <p>Defines a transformation matrix with 6 elements. If the matrix is NULL, no + transformation is set. The default direction is no transformation. The origin + is the left bottom corner of matrix. It returns the previous matrix, and the + returned vector is only valid until the following call to the function.</p> + <p>The matrix contains scale, rotation and translation elements. It is applied after + computing the position and orientation normal to the vector text. We can + describe the elements as follows:</p> + <pre>|x'| | scl_x*cos(ang) -sin(ang) trans_x | |x| | 3 4 5| +|y'| = | sin(ang) scl_y*cos(ang) trans_y | * |y| with indices | 0 1 2| + |1|</pre> + <pre class="function"><span class="mainFunction">void <a name="cdVectorTextSize">cdCanvasVectorTextSize</a>(cdCanvas* canvas, int w, int h, const char * text); [in C]</span> +void wdCanvasVectorTextSize(cdCanvas* canvas, double size_x, double size_y, const char* text); (WC) [in C] + +canvas:VectorTextSize(w, h: number, text: string) [in Lua] +canvas:wVectorTextSize(w, h: number, text: string) (WC) [in Lua]</pre> + <p>Modifies the scale of the vector text so that it corresponds to the string of + the bounding box defined by <b><tt>w</tt></b> and <b><tt>h</tt></b>. It ignores + strings with multiple lines.</p> + <pre class="function"><span class="mainFunction">double <a name="cdVectorCharSize">cdCanvasVectorCharSize</a>(cdCanvas* canvas, int size); [in C]</span> +double wdCanvasVectorCharSize(double size); (WC) [in C] + +canvas:VectorCharSize(size: number) -> (old_size: number) [in Lua] +canvas:wVectorCharSize(size: number) -> (old_size: number) (WC) [in Lua]</pre> + <p>Sets the height of the characters and adjusts the width according to it. + Returns the previous value. <strong><tt>CD_QUERY</tt></strong> returns the + current value.</p> + <pre class="function"><span class="mainFunction">char* <a name="cdVectorFont">cdCanvasVectorFont</a>(cdCanvas* canvas, const char *filename); [in C]</span> + +canvas:VectorFont(filename: string) -> (fontname: string) [in Lua]</pre> + <p>Replaces the current vector font with a font stored in a file with a given + name. Returns the name of the font loaded or NULL, if it fails. If <font>filename</font> + is NULL, it activates the default font "<b>Simplex II</b>" (There is no file + associated to this font, it is an embedded font). The library will attempt to + load a font from the current directory, if it fails then it will try the + directory defined by the environment variable "<strong><tt>CDDIR</tt></strong>", + if it fails, it will attempt to + load it using the <font>filename</font> as a string containing the font as + if the file was loaded into that string, if it fails again the font is reset + to the default font and returns NULL. The file format is + compatible with the GKS file format (text mode).</p> + <h3>Properties</h3> + <pre class="function"><span class="mainFunction">void <a name="cdGetVectorTextSize">cdCanvasGetVectorTextSize</a>(cdCanvas* canvas, const char* text, int *w, int *h); [in C]</span> +void wdCanvasGetVectorTextSize(cdCanvas* canvas, const char* text, double *x, double *y); (WC) [in C] + +canvas:GetVectorTextSize(text: string) -> (w, h: number) [in Lua] +canvas:wGetVectorTextSize(text: string) -> (w, h: number) (WC) [in Lua]</pre> + <p>Queries the string's bounding box. Ignores strings with multiple lines. It is + not necessary to provide all return pointers, you can provide only the desired + values and <font>NULL</font> for the others.</p> + <pre class="function"><span class="mainFunction">void <a name="cdGetVectorTextBounds">cdCanvasGetVectorTextBounds</a>(cdCanvas* canvas, char* text, int px, int py, int *rect); [in C]</span> +void wdCanvasGetVectorTextBounds(cdCanvas* canvas, char* text, double x, double y, double *rect); (WC) [in C] + +canvas:GetVectorTextBounds(text: string, px,py: number) -> (rect: table) [in Lua] +canvas:wGetVectorTextBounds(text: string, px,py: number) -> (rect: table) (WC) [in Lua] </pre> + <p>Returns the bounding rectangle of the text specified in the current vector + font, alignment and direction. Eight values are returned, corresponding to + pairs (x,y) of the rectangle's vertices ordered conter-clockwise, starting by + the bottom left corner.</p> + <h3>Character Codes</h3> + <p>The old GKS format contains ASCII codes so a convertion from ANSI to ASCII is + done when possible, unmapped characters are left unchanged, but some rearrage + was necessary to acomodate the convertion. + </p> + <p>The default vector font was changed from the original Simplex II to contain + all ANSI accented characters. So some ASCII characters were replaced.</p> + <p>Bellow is the character code table of the default font.</p> + <p style="TEXT-ALIGN: center"> + <img src="../../img/vectorfont_default.png" width="717" height="977"><br> + <strong>Default Font</strong></p> + <p>The original Simplex II font is available in the file + "cd/etc/vectorfont00.txt". Bellow is the character code table of the original + font (the table displays the characters after the convertion from ANSI to + ASCII):</p> + <p style="TEXT-ALIGN: center"> + <img src="../../img/vectorfont_simplex2.png" width="723" height="978"><br> + <strong>Original Simplex II</strong></p> + </body> +</html>
\ No newline at end of file diff --git a/html/en/func/wd.html b/html/en/func/wd.html new file mode 100644 index 0000000..9c83ec5 --- /dev/null +++ b/html/en/func/wd.html @@ -0,0 +1,80 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>World Coordinates</title> + <meta http-equiv="Content-Language" content="en-us"> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="../../style.css"> + </head> + <body> + <h2 align="center">World Coordinates</h2> + <p>Allows the use of a World Coordinate System. In this system you can attribute + coordinates to any unit you want. After you define a window (rectangular + region) in your world, each given coordinate is then mapped to canvas + coordinates to draw the primitives. You can define a viewport in your canvas to + change the coordinate mapping from world to canvas. The image below shows the + relation between Window and Viewport.</p> + <p align="center"><font size="4">Window x Viewport</font><br> + <img src="../../img/wc-dc.gif" border="2" width="330" height="182"></p> + <p>If you want to map coordinates from one system to another, use the <font>wdWorld2Canvas</font> + e <font>wdCanvas2World</font> functions. + </p> + <p>The quality of the picture depends on the conversion from World to Canvas, so + if the canvas has a small size the picture quality will be poor. To increase + picture quality create a canvas with a larger size, if possible.</p> + <p>All World Coordinate drawing in all drivers are simulated using other CD + primitives.</p> + <hr> + <pre class="function"><span class="mainFunction">void <a name="wdWindow">wdCanvasWindow</a>(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax); [in C]</span> + +canvas:wWindow(xmin, xmax, ymin, ymax: number) [in Lua]</pre> + <p>Configures a window in the world coordinate system to be used to convert world + coordinates (with values in real numbers) into canvas coordinates (with values + in integers). The default window is the size in millimeters of the whole + canvas.</p> + <pre class="function"><span class="mainFunction">void <a name="wdGetWindow">wdCanvasGetWindow</a>(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax); [in C]</span> + +canvas:wGetWindow() -> (xmin, xmax, ymin, ymax: number) [in Lua]</pre> + <p>Queries the current window in the world coordinate system being used to + convert world coordinates into canvas coordinates (and the other way round). It + is not necessary to provide all return pointers, you can provide only the + desired values.</p> + <pre class="function"><span class="mainFunction">void <a name="wdViewport">wdCanvasViewport</a>(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); [in C]</span> + +canvas:wViewport(xmin, xmax, ymin, ymax: number) [in Lua]</pre> + <p>Configures a viewport in the canvas coordinate system to be used to convert + world coordinates (with values in real numbers) into canvas coordinates (with + values in integers). The default viewport is the whole canvas <font>(0,w-1,0,h-1)</font>. + If the canvas size is changed, the viewport will not be automatically updated. + </p> + <pre class="function"><span class="mainFunction">void <a name="wdGetViewport">wdCanvasGetViewport</a>(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax); [in C]</span> + +canvas:wGetViewport() -> (xmin, xmax, ymin, ymax: number) [in Lua]</pre> + <p>Queries the current viewport in the world coordinate system being used to + convert world coordinates into canvas coordinates (and the other way round). It + is not necessary to provide all return pointers, you can provide only the + desired values and <font>NULL</font> for the others.</p> + <pre class="function"><span class="mainFunction">void <a name="wdWorld2Canvas">wdCanvasWorld2Canvas</a>(cdCanvas* canvas, double xw, double yw, int *xv, int *yv); [in C]</span> + +canvas:wWorld2Canvas(xw, yw: number) -> (xv, yv: number) [in Lua]</pre> + <p>Converts world coordinates into canvas coordinates. It is not necessary to + provide all return pointers, you can provide only the desired values and <font>NULL</font> + for the others.</p> + <pre class="function"><span class="mainFunction">void <a name="wdCanvas2World">wdCanvasCanvas2World</a>(cdCanvas* canvas, int xv, int yv, double *xw, double *yw); [in C]</span> + +canvas:wCanvas2World(xv, yv: number) -> (xw, yw: number) [in Lua]</pre> + <p>Converts canvas coordinates into world coordinates. It is not necessary to + provide all return pointers, you can provide only the desired values and <font>NULL</font> + for the others.</p> + <h3>Extra</h3> + <pre class="function"><span class="mainFunction">void <a name="wdHardcopy">wdCanvasHardcopy</a>(cdCanvas *canvas, cdContext* ctx, void *data, void(*draw_func)(cdCanvas *canvas_copy)); [in C]</span> + +canvas:wCanvasHardcopy(ctx: number, data: string or userdata, draw_func: function) [in Lua]</pre> + <p>Creates a new canvas, prepares Window and Viewport according to + the provided canvas, maintaining the aspect ratio and making the drawing occupy + the largest possible area of the new canvas, calls the drawing function (which + must use routines in WC) and, finally, removes the new canvas.</p> + <p>It is usually used for "hard copies" of drawings (print equivalent copy). The + most common used contexts are Printer, PS and PDF.</p> + </body> +</html> diff --git a/html/en/guide.html b/html/en/guide.html new file mode 100644 index 0000000..e6d393c --- /dev/null +++ b/html/en/guide.html @@ -0,0 +1,161 @@ +<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + +<title>Guide</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +<style type="text/css"> +.style2 { + color: #008000; +} +.style3 { + color: #FF0000; +} +.style4 { + color: #0000FF; +} +</style> +</head> + +<body> + +<h1>Guide</h1> +<h3><a name="start">Getting Started</a></h3> + + <p>The CD library is a basic graphic library (GL). In a GL paradigm you use <strong>primitives</strong>, which have + <strong>attributes</strong>, to draw on a <strong>canvas</strong>. All the library functions reflect this paradigm.</p> + <p>The <strong>canvas</strong> is the basic element. It can have several forms: a paper, a video monitor, a graphic + file format, etc. The virtual drawing surface where the canvas exists is represented by a <strong>driver</strong>. + Only the driver knows how to draw on its surface. The user does not use the driver directly, but only the canvas.</p> + <p>To make the library simple we use the concept of an active canvas, over which all the primitives are drawn. This + also allows the use of an expansion mechanism using function tables. Unfortunately if a function is called without an + active canvas a memory invasion will occur. On the other hand, the mechanism allows the library to be expanded with + new drivers without limits.</p> + <p>The <strong>attributes</strong> are also separated from the primitives. They reside in the canvas in a state + mechanism. If you change the attribute's state in the canvas all the primitives drawn after that canvas and that + depend on the attribute will be drawn in a different way.</p> + <p>The set of <strong>primitives</strong> is very small but complete enough to compose a GL. Some primitives are + system dependent for performance reasons. Some drivers (window and device based) use system functions to optimally + implement the primitives. Sometimes this implies in a in small different behavior of some functions. Also some + primitives do not make sense in some drivers, like server images in file-based drivers.</p> + <p>The set of available functions is such that it can be implemented in most drivers. Some drivers have sophisticated + resources, which cannot be implemented in other drivers but can be made available using a generic attribute mecanism. + </p> + +<h3><a name="buildapp">Building Applications</a></h3> + + <p>All the CD functions are declared in the <tt>cd.h</tt> header file; World Coordinate functions are declared in the + <tt>wd.h</tt> header file; and each driver has a correspondent header file that must be included to create a canvas. + It is important to include each driver header <u>after</u> the inclusion of the <tt>cd.h</tt> header file.</p> + <p>To link the application you must add the <b>cd.lib/libcd.a/libcd.so</b> and <b> + freetype6.lib/libfreetype.a/libfreetype.so </b> libraries to the linker options. If you use + an IUP Canvas then you must also link with the <b>iupcd.lib/libiupcd.a/libiupcd.so</b> library + available in the IUP distribution.</p> + <p>In UNIX, CD uses the Xlib (X11) libraries. To link an application in UNIX, add also the "-lX11" option in the linker call.</p> + <p>The download files list includes the <a href="download_tips.html">Tecgraf/PUC-Rio Library + Download Tips</a> document, with a description of all the available binaries.</p> + +<h3 align="left"><a name="buildlib">Building the Library</a> </h3> + +<p>In the Downloads you will ne able to find pre-compiled binaries for many +platforms, all those binaries were built using Tecmake. Tecmake is a command line multi compiler build tool +based on GNU make, available at + <a target="_blank" href="http://www.tecgraf.puc-rio.br/tecmake">http://www.tecgraf.puc-rio.br/tecmake</a>. Tecmake is + used by all the Tecgraf libraries and many applications.</p> +<p>In UNIX, you do not need to install Tecmake, a compact version of Tecmake for +UNIX is already included in the source code package. Just type "make" in the +command line on the "src" folder and all libraries and executables will be +build. +</p> +<p>In Windows, the easiest way to build everything is to install the Tecmake tool into your system. It is easy and helps a lot. + The Tecmake configuration files (*.mak) available at the "src" folder are very easy to understand also. +Also there are files named +<i>make_uname.bat</i> that build the libraries using <b>Tecmake</b>. To build for Windows using + Visual C 7.0 (2005) for example, just execute <i>"make_uname vc7"</i> , or the +DLLs with Visual C++ 9 (2008) type <i>"make_uname dll9"</i>. The Visual +Studio workspaces with the respective projects available in the source package +is for debugging purposes only.</p> +<p>Make sure you have all the dependencies for the library you want installed, +see the documentation bellow.</p> +<p>If you are going to build all the libraries, +the makefiles and projects expect the following directory tree:</p> +<pre>\mylibs\ + cd\ + im\ + lua5.1\</pre> +<h4>Libraries Dependencies</h4> +<pre>cd -> <strong><span class="style4">gdi32</span></strong> <strong><span class="style4">user32</span></strong> <strong><span class="style4">comdlg32</span></strong> (system - Windows) + -> <strong><span class="style4">X11</span></strong> (system - UNIX) + -> <strong><span class="style2">FreeType</span></strong> (included as separate library) +cdgdiplus -> cd + -> <strong><span class="style4">gdiplus</span></strong> (system - Windows) +cdxrender -> cd + -> <strong><span class="style4">Xrender</span></strong> <strong><span class="style4">Xft</span></strong> (system - UNIX) +cdpdf -> <strong><span class="style2">pdflib</span></strong> (included as separate library) +cdlua51 -> cd + -> <strong><span class="style3">lua5.1</span></strong> +cdluaim51 -> cdlua51 + -> <strong><span class="style3">imlua51</span></strong> +cdluapdf51 -> cdlua51 + -> cdpdf</pre> +<p>As a general rule (excluding system dependencies and included third party +libraries): CD has NO external dependencies, and CDLua depends on Lua and IMLua. +Just notice that not all CDLua libraries depend on IMLua.</p> + +<h3><a name="Environment">Environment Variables</a></h3> + + <p><font face="Courier New"><b>CDDIR</b></font> - This environment variable is used by some drivers to locate useful + data files, such as font definition files. It contains the directory path without the final slash.<br> + <font face="Courier New"><b>CD_QUIET</b></font> - In UNIX, if this variable is defined, it does not show the library's + version info on <em>sdtout</em>.<br> + <font face="Courier New"><b>CD_</b></font><b><font face="Courier New">XERROR</font></b> - In UNIX, if this variable is + defined, it will show the X-Windows error messages on <em>sdterr</em>.</p> + +<h3><a name="NewDriver">Implementing a Driver</a></h3> + + <p>The best way to implement a new driver is based on an existing one. For this reason, we provide + a code of the + simplest driver possible, see <a href="../download/cdxx.h">CDXX.H</a> and <a href="../download/cdxx.c">CDXX.C</a>. + But first you should read the <a href="internal.html">Internal Architecture</a>.</p> + +<h3><a name="Play">Intercepting Primitives</a></h3> + + <p>To fill data structures of library primitives during a <font face="Courier New">cdPlay</font> call you must + implement a driver and activate it before calling <font face="Courier New">cdPlay</font>. Inside your driver + primitives you can fill your data structure with the information interpreted by the <font face="Courier New">cdPlay</font> + function.</p> + +<h3><a name="IUP">IUP Compatibility</a></h3> + + <p>The <strong>IupCanvas</strong> element of the <a target="_blank" href="http://www.tecgraf.puc-rio.br/iup/">IUP</a> + interface toolkit can be used as a visualization surface for a CD canvas. There are two moments in which one must be + careful when an application is using both libraries: when creating the CD canvas, and when changing the size of the + IUP canvas.</p> + <h4>Creating the CD Canvas</h4> + + <p>The CD_IUP driver parameter needs only the Ihandle* of the <strong> + IupCanvas</strong>. But <strong>cdCreateCanvas</strong> must be called <u>after</u> the <strong>IupCanvas</strong> element has been + mapped into the native system.</p> + <p>But a call to <strong>IupShow</strong> generates an ACTION callback. And a + direct call to <strong>IupMap</strong> can generate a RESIZE_CB callback. </p> + <p>So the best way to create a CD canvas for a IUP canvas is to use the + <strong>IupCanvas</strong> MAP_CB callback. This callback will be always called before + any other callback.</p> + + <p>The application must be linked with the <strong>iupcd</strong> + library that it is available in the IUP package.</p> + + <h4>Resizing the IUP Canvas</h4> + + <p>When a IupCanvas is resized the CD canvas must be notified of the size + change. To do that simply call <strong>cdCanvasActivate</strong> in the + RESIZE_CB callback.</p> + + + +</body> + +</html> diff --git a/html/en/history.html b/html/en/history.html new file mode 100644 index 0000000..6042519 --- /dev/null +++ b/html/en/history.html @@ -0,0 +1,932 @@ +<html> + +<head> +<meta http-equiv="content-type" content> +<meta http-equiv="Content-Language" content="en-us"> +<title>History</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>History of Changes</h1> +<h3>Version 5.1 (14/Oct/2008)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> CD_DEBUG driver.</li> + <li><span style="color: #0000FF">New:</span> the "imlua_cd" library moved + from IM to CD under the name "cdluaim". Only the initialization function + name is changed.</li> + <li><span style="color: #0000FF">New:</span> cdluacontextplus library so the + "ContextPlus" base drivers (GDI+ and XRender) can be dinamically loaded + using require.</li> + <li><span style="color: #008000">Changed:</span> + <strong> + <span style="color: #FF0000">IMPORTANT</span></strong> - the "cdiup" and "cdluaiup" + libraries moved from CD to IUP under the name "iupcd" and "iupluacd". But + headers and documentation remains on the CD package. Function names were NOT + changed. This change eliminates a cross-dependency that IUP and CD had, now + only IUP depends on CD.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + <strong> + <span style="color: #FF0000">IMPORTANT</span></strong> - renamed "cdgliplus" + and "cdxrender" libraries to "cdcontextplus".</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + <strong> + <span style="color: #FF0000">IMPORTANT</span></strong> - removed the FreeType + library files from the main library. They now are available as an additional + library that can be replaced by other FreeType distributions. This will + avoid conflicts when using CD and GTK.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + <strong> + <span style="color: #FF0000">IMPORTANT</span></strong> - removed the PDFLib + library files from the cdpdf library. They now are available as an + additional library that can be replaced by other PDFLib distributions.</li> + <li><span style="color: #008000">Changed:</span> + Makefiles for UNIX now uses a compact version of Tecmake that does not need + any installation, just type "make".</li> + <li><span style="color: #008000">Changed:</span> All dll8 and dll9 DLLs now + have a Manifest file that specifies the correct MSVCR*.DLL.</li> + <li><span style="color: #008000">Changed:</span> improved CDLua parameter + checking and error report.</li> + <li><span style="color: #008000">Changed:</span> improved compatibility for + font names in X and Win32.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + Copyright notice modified to reflect the registration at INPI (National + Institute of Intellectual Property in Brazil). License continues under the + same terms.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + improved pattern and stipple resize in <strong>wdCanvasPattern</strong> and + <strong>wdCanvasStipple</strong>.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + pattern creation in Win32 to a more faster method.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + optimized font search in X-Windows base driver for size variations.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + the number of bits per pixel returned by the CD_PRINTER driver when the + printer is a PDF Writer was 1, now we add a workaround to return 24.</li> + <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> + improved the color convertion when drawing a RGB image in a CD_PRINTER + canvas with 1 bpp (usually a laser printer).</li> + <li><span style="color: #008000">Changed</span>: (UNDONE from 5.0) in Lua + canvases are NOT + garbage collected anymore. Since there can be different Lua canvases pointing + to the same canvas.</li> + <li><span style="color: #008000">Changed</span>: font map in simulation + driver is not case sensitive anymore.</li> + <li><span style="color: #008000">Changed</span>: premake files are used now + only internally and were removed from the distribution.</li> + <li><span style="color: #FF0000">Fixed:</span> added missing + CD_NO_OLD_INTERFACE definition on Linux makefiles.</li> + <li><span style="color: #FF0000">Fixed:</span> attributes not being + preserved after changing clipping or adding a new page in CD_PDF.</li> + <li><span style="color: #FF0000">Fixed:</span> polygon clipping in + CD_IMAGERGB driver when polygon is larger than the canvas.</li> + <li><span style="color: #FF0000">Fixed:</span> <strong>cdCanvasVertex</strong> + when adding two reference points with the same coordinates in a bezier.</li> + <li><span style="color: #FF0000">Fixed:</span> client image zoom in + CD_IMAGERGB driver.</li> + <li><span style="color: #FF0000">Fixed:</span> text draw position and + gettextsize in Xrender base driver.</li> + <li><span style="color: #FF0000">Fixed:</span> double buffer driver invalid + memory access when using the Xrender base driver.</li> +</ul> +<h3>Version 5.0 (26/Nov/2007)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> attributes "OPAQUE", "PATTERN" + and "PDF" in the CD_PDF driver.</li> + <li><span style="color: #0000FF">New:</span> XRender base driver.</li> + <li><span style="color: #008000">Changed:</span> PDF Lite library updated to + version "7.0.2".</li> + <li><span style="color: #008000">Changed:</span> FreeType library updated to + version "2.3.5".</li> + <li><span style="color: #008000">Changed</span>: now using "(char*)CD_QUERY" + as the parameter in <b>cdCanvasNativeFont</b>, it returns the current selected font in + the common format definition.</li> + <li><span style="color: #008000">Changed</span>: avoid setting X-Windows color + background when calling <b>cdCanvasClear</b> for NativeWindow driver. Now all + X-Windows drivers will use only XFillRectangle.</li> + <li><span style="color: #008000">Changed</span>: in Lua canvases are now + garbage collected.</li> + <li><span style="color: #008000">Changed:</span> metatable names in Lua are + now the same as the C struct names.</li> + <li><span style="color: #FF0000">Fixed:</span> function cdlua_checkcanvas that + affects the creation of the cd.DBUFFER canvas. Thanks to Martin Saerbeck.</li> + <li><span style="color: #FF0000">Fixed:</span> vertical text alignment in PDF + and PS + drivers.</li> + <li><span style="color: #FF0000">Fixed:</span> ascent and descent font + dimensions in PDF driver.</li> + <li><span style="color: #FF0000">Fixed:</span> check for mark size and font + size when given size is 0.</li> +</ul> +<h3>Version 5.0 RC2 (09/Apr/2007)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> function <b>cdCanvasInvertYAxis</b> that + will invert the given y coordinate even if the canvas is not internally + inverted.</li> + <li><span style="color: #008000">Changed:</span> PDF Lite library updated to + version "7.0.0p3".</li> + <li><span style="color: #008000">Changed:</span> FreeType library updated to + version "2.2.1".</li> + <li><span style="color: #008000">Changed:</span> In the new API <strong> + cdCanvasFont</strong> you can specify partial parameters using NULL, -1 and 0 + for typeface, style and size. When these parameters are specified the current + font parameter is used. For example, <b>cdCanvasFont(NULL, -1, 10)</b> will only + change the font size.</li> +</ul> +<h3>Version 5.0 RC1 (08/Mar/2007)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> attribute HATCHBOXSIZE in CD_PDF + driver, to control the hatch spacing.</li> + <li><span style="color: #0000FF">New:</span> attribute ADDFONTMAP in + simulation base driver to accept a map between a font name and a font file + name.</li> + <li><span style="color: #0000FF">New:</span> Pango Font Description string is + now accepted in <strong>NativeFont</strong> and replace the previous CD format is most + drivers.<br> + <strong> + <span style="color: #FF0000">INCOMPATIBILITY</span> -</strong> + If style is not used, most drivers had a format compatible with the new + format. But please check your <strong>NativeFont</strong> usage. The IUP + format is still supported.</li> + <li><span style="color: #0000FF">New:</span> API using canvas as a parameter. + Old API still exists. Library is backward compatible with previous versions, + but the documentation shows only the new names. + The new functions add a "Canvas" to the function prefix, for ex: the <strong> + cdLine</strong> equivalent is <strong>cdCanvasLine</strong>. For these + functions <strong>cdActivate</strong> is not required. But <strong> + cdCanvasActivate</strong> exists for special cases where the canvas must be + updated if an external factor was changed, like a window resize. + To facilitate the migration to the new API use the definition CD_NO_OLD_INTERFACE + to exclude the old API definitions and check if you are using only the new + functions.</li> + <li><span style="color: #0000FF">New:</span> support for primitives using + "double" floating point precision and not related to WC functions.</li> + <li><span style="color: #0000FF">New:</span> "cd_canvas.hpp" header file which + defines a C++ class cdCanvasC that wraps the cdCanvas structure API.</li> + <li><span style="color: #0000FF">New:</span> ROTATE attribute in CD_PDF + driver.</li> + <li><span style="color: #0000FF">New:</span> binding Lua of the CD_PDF driver.</li> + <li><span style="color: #0000FF">New:</span> support for alpha channel in + CD_IMAGERGB driver. Also support for alpha in color coding in the CD_IMAGERGB + driver primitives.</li> + <li><span style="color: #0000FF">New:</span> attribute ANTIALIAS in the + CD_IMAGERGB driver. Text is always antialiased as before.</li> + <li><span style="color: #0000FF">New: </span>implemented <strong>Chord</strong> primitive in + simulation base + driver.</li> + <li><span style="color: #0000FF">New: </span>implemented CD_WINDING fill mode + in the simulation base driver.</li> + <li><span style="color: #0000FF">New: </span>implemented complex clipping + regions in CD_IMAGERGB driver. Fixed polygon clipping and other clipping + errors in the CD_IMAGERGB driver.</li> + <li><span style="color: #0000FF">New:</span> driver CD_DBUFFERRGB that uses + the CD_IMAGERGB driver for double buffer, and can be a double buffer for any + other driver (CD_DBUFFER works only for Window based drivers). </li> + <li><span style="color: #0000FF">New:</span> CD_PICTURE driver to store + primitives and attributes in memory that can be played and resized in any + other driver.</li> + <li><span style="color: #0000FF">New:</span> functions to set color foreground + and background without query support (cdCanvasSetForeground and + cdCanvasSetBackground). CD_QUERY conflicts with color RGBA=(255,255,255,255) + (full transparent white).</li> + <li><span style="color: #0000FF">New:</span> support for generic canvas + transformations using <strong>Transform</strong>, <strong>TransformTranslate</strong>, + <strong>TransformRotate</strong> and <strong>TransformScale</strong> functions.</li> + <li><span style="color: #0000FF">New:</span> attribute "GDI+" for all GDI+ + based drivers that returns "1". So it can be detected if the driver uses the + GDI+ base driver.</li> + <li><span style="color: #008000">Changed:</span> <strong> + <span style="color: #FF0000">INCOMPATIBILITY</span></strong> - removed + clipping simulation from the simulation base driver. It is not possible + anymore to simulate clipping, only primitives can be simulated.</li> + <li><span style="color: #008000">Changed:</span> canvas internal pointer allocation so it can be checked for valid canvas in + all external API function calls.</li> + <li><span style="color: #008000">Changed:</span> <strong>NativeFont</strong>("-d") to set also the foreground color from the color in the dialog, and + initialize the font in the dialog with the current selected font.</li> + <li><span style="color: #008000">Changed:</span> In the new API <strong> + cdCanvasFont</strong> changed the typeface parameter type from a small set of + integer values to a more flexible string.</li> + <li><span style="color: #008000">Changed:</span> all accented characters are + now available in the default vector text font.</li> + <li><span style="color: #008000">Changed:</span> all functions in the API now + use "const" when applicable.</li> + <li><span style="color: #008000">Changed:</span> server image defintion from + "void*" to "cdImage*". This will affect C++ applications that must update + their code.</li> + <li><span style="color: #008000">Changed:</span> removed <strong>cdGetClipPoly</strong> + and <strong>wdGetClipPoly</strong> functions.</li> + <li><span style="color: #008000">Changed:</span> <strong>UpdateYAxis</strong> + now also returns the changed value.</li> + <li><span style="color: #008000">Changed:</span> <strong> + <span style="color: #FF0000">INCOMPATIBILITY</span> - cdCallback</strong> + definition used in <strong>RegisterCallback</strong>, called from <strong>Play</strong>. Replaced the "cdContext*" by a "cdCanvas*". + If you do not use the pointer it can be simply ignored.</li> + <li><span style="color: #008000">Changed:</span> WC functions now are only + client functions of the CD API.</li> + <li><span style="color: #008000">Changed:</span> removed old support for + Windows 9x.</li> + <li><span style="color: #008000">Changed:</span> removed the <strong>cdInitGdiPlusIUP</strong> function and the "<strong>cdiupgdiplus</strong>" + library. They are not necessary anymore. Althougth the CD_IUP driver still + works with GDI+ support.</li> + <li><span style="color: #008000">Changed:</span> improved speed and precision + of the bezier polygon of the simulation base driver.</li> + <li><span style="color: #008000">Changed:</span> renamed distribution folder + name from "cd/data" to "cd/etc".</li> + <li><span style="color: #008000">Changed:</span> CD Lua for Lua 3 library name + changed to include "3" as a suffix.</li> + <li><span style="color: #FF0000">Fixed:</span> conversion from ANSI to ASCII + in vector text fonts. </li> + <li><span style="color: #FF0000">Fixed:</span> Sector primitive in simulation + base + driver.</li> + <li><span style="color: #FF0000">Fixed:</span> deactivation of internal canvas in Double Buffer driver over a Native Windows driver for Win32.</li> + <li><span style="color: #FF0000">Fixed:</span> EPS compatibility in PostScript driver.</li> + <li><span style="color: #FF0000">Fixed:</span> the default values in <strong>cdCreateCanvas</strong> for CD_DGN, CD_DXF and CD_CGM.</li> + <li><span style="color: #FF0000">Fixed:</span> <strong>Play</strong> for CD_EMF when data contains poly-polygons or poly-polylines.</li> + <li><span style="color: #FF0000">Fixed:</span> <strong>LineWidth</strong> in + WC when updating the + size in pixels.</li> + <li><span style="color: #FF0000">Fixed:</span> <strong>TextSize</strong> and + <strong>FontDim</strong> in driver DXF.</li> + <li><span style="color: #FF0000">Fixed:</span> <strong>Font</strong> in the + X-Windows base driver, size parameter was incorrectly passed to the X-Windows. + <span style="color: #FF0000"><strong>WARNING</strong></span>: the result font + will have a size different than previous CD versions in X-Windows. </li> + <li><span style="color: #FF0000">Fixed:</span> <strong>Flush</strong> in + CD_DBUFFER driver, it was affected by the write mode state of the + buffered canvas.</li> + <li><span style="color: #FF0000">Fixed:</span> WC tranformation update when + the Window is invalid. Thanks to Marian Trifon.</li> + <li><span style="color: #FF0000">Fixed:</span> polygon filling in simulation + base driver.</li> + <li><span style="color: #FF0000">Fixed:</span> invalid resample in <strong> + PutImageRect</strong>* in GDI+ base driver cause a band with a mix of the + background color appear on right and bottom when image is zoomed in (larger + than original size).</li> +</ul> +<h3>Version 4.4 (12/Dec/2005)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> CDLua for Lua 5. The CDLua for Lua 3 is now also totally compatible with the "cd." name space used in the + CDLUA for Lua 5. So the documentation now reflects only the new nomenclature although the old CDLua 3 names are still + valid<font color="#FF0000">.</font></li> + <li><span style="color: #0000FF">New:</span> attribute <font face="Courier New">"WINDOWRGN"</font> for the Native Windows and IUP drivers to set the shape + of a window to the current complex clipping region.</li> + <li><span style="color: #0000FF">New:</span> <b><font face="Courier New">cdlua_close</font></b> function to release the memory allocated by the <b> + <font face="Courier New">cdlua_open</font></b>.</li> + <li><span style="color: #0000FF">New:</span> <font face="Courier New">"ROTATE"</font> attribute for PS driver, GDI+ base driver and GDI base driver.</li> + <li><span style="color: #0000FF">New:</span> <font face="Courier New">CD_FILLSPLINE</font> and <font face="Courier New">CD_SPLINE</font> parameters for + cdBegin in GDI+ base driver.</li> + <li><span style="color: #0000FF">New:</span> support for complex regions for clipping using: <b><font face="Courier New">cdBox</font></b>, <b> + <font face="Courier New">cdSector</font></b>, <b><font face="Courier New">Polygons</font></b> and <b> + <font face="Courier New">cdText</font></b>. New: parameter <font face="Courier New">CD_REGION</font> for <b> + <font face="Courier New">cdBegin</font></b> to create the region, new parameter <font face="Courier New">CD_CLIPREGION</font> + for <b><font face="Courier New">cdClip</font></b> to select the region for clipping. + New: funtions to control regions: + <b><font face="Courier New">cdPointInRegion</font></b>, <b><font face="Courier New">cdOffsetRegion</font></b>, <b> + <font face="Courier New">cdRegionBox</font></b> and <b><font face="Courier New">cdRegionCombineMode</font></b>. + Valid only for the Windows GDI, GDI+ and X-Windows base drivers and their derived drives.</li> + <li><span style="color: #0000FF">New:</span> mode for <b><font face="Courier New">cdBegin</font></b>, <font face="Courier New">CD_BEZIER</font>.</li> + <li><span style="color: #0000FF">New:</span> filled primitive <b><font face="Courier New">cdChord</font></b>.</li> + <li><span style="color: #0000FF">New:</span> polygon fill rule control using <b><font face="Courier New">cdFillMode</font></b> with + <font face="Courier New">CD_EVENODD</font> (the default) and <font face="Courier New">CD_WINDING</font> parameters.</li> + <li><span style="color: #0000FF">New:</span> line cap and line join styles using <b><font face="Courier New">cdLineCap</font></b> and <b> + <font face="Courier New">cdLineJoin</font></b>.</li> + <li><span style="color: #0000FF">New:</span> typeface <font face="Courier New">CD_NATIVE</font> to indicate that a native font has been selected.</li> + <li><span style="color: #0000FF">New:</span> custom line style using <b><font face="Courier New">cdLineStyleDashes</font></b> and <b> + <font face="Courier New">cdLineStyle</font></b>(<font face="Courier New">CD_CUSTOM</font>). This replaces the + attribute "<font face="Courier New">USERLINESTYLE</font>".<br> + (All New:, when not specified the divers, are valid for all the drivers, except DXF, DGN e CGM.)</li> + <li><span style="color: #0000FF">New:</span> text utility function <b><font face="Courier New">cdTextBounds</font></b> that returns the oriented bounding + rectangle<font color="#FF0000">.</font> </li> + <li><span style="color: #0000FF">New:</span> <font face="Courier New">"IMAGEFORMAT"</font> and <font face="Courier New">"IMAGEALPHA"</font> attributes for + the Windows base driver.</li> + <li><span style="color: #0000FF">New:</span> In GDI+, the <font face="Courier New">CD_CLIPBOARD</font> driver supports EMF and BMP formats.</li> + <li><span style="color: #0000FF">New:</span> function <b><font face="Courier New">cdReleaseState</font></b> to release the memory allocated by a state. + The <b><font face="Courier New">cdRestoreState</font></b> does not release the memory anymore so it can be used + several times for the same state.</li> + <li><span style="color: #FF0000">Fixed:</span> Invalid cdKillImage in X-Windows when active canvas is not the canvas where the image was created.</li> + <li><span style="color: #FF0000">Fixed:</span> Text clipping for <font face="Courier New">CD_IMAGERGB</font> driver.</li> + <li><span style="color: #FF0000">Fixed:</span> fixed size in milimeter of <b><font face="Courier New">cdGetScreenSize</font></b> in Win32.</li> + <li><span style="color: #FF0000">Fixed:</span> fixed size of the EMF picture.</li> + <li><span style="color: #FF0000">Fixed:</span> fixed the parse of filenames with spaces for all file based drivers. The filename must be inside + double quotes (") if it has spaces.</li> + <li><span style="color: #FF0000">Fixed:</span> <b><font face="Courier New">cdSetAttribute</font></b> in Lua now can set nil values.</li> + <li><span style="color: #FF0000">Fixed:</span> fixed <b><font face="Courier New">cdSector</font></b> when interior style is <font face="Courier New"> + CD_HOLLOW</font>, to include two lines connecting to the center point.</li> + <li><span style="color: #FF0000">Fixed:</span> In GDI+, the NATIVEWINDOW driver ignored other data pointer configurations in <b> + <font face="Courier New">cdCreateCanvas</font></b>.</li> + <li><span style="color: #FF0000">Fixed:</span> In GDI+, <b><font face="Courier New">cdStipple</font></b> was not updated when the foreground or + background colors where changed.</li> + <li><span style="color: #FF0000">Fixed:</span> In GDI+, <b><font face="Courier New">cdSector</font></b> and <b><font face="Courier New">cdArc</font></b> + have incorrect angles.</li> + <li><span style="color: #FF0000">Fixed:</span> "simple.c" and "simple.zip" were outdated. Now new makefiles were added.</li> + <li><span style="color: #FF0000">Fixed:</span> in Windows base driver small incompatibility in cdNativeFont with the IUP FONT attribute.</li> + <li><span style="color: #008000">Changed:</span> Optimization flags now are ON when building the library in all platforms.</li> + <li><span style="color: #008000">Changed:</span> Upgraded Freetype to version 2.1.10. The CD library file size increased because of this. But we gain + a better text rendering for images.</li> + <li><span style="color: #008000">Changed:</span> Better organization of the documentation.</li> + <li><span style="color: #008000">Changed:</span> In Windows the NATIVEWINDOW driver now accepts a NULL pointer to draw in the entire screen.</li> + <li><span style="color: #008000">Changed:</span> Optimized <b><font face="Courier New">cdPutImageRGBARect</font></b> in Windows base driver.</li> + <li><span style="color: #008000">Changed:</span> Now by default CD will not print X-Windows messages. To enable you must set the CD_XERROR environment + variable.</li> + <li><span style="color: #008000">Changed:</span> The default fill rule for polygons in CD_PS is now the Even-Odd rule. Matching the other drivers.</li> + <li><span style="color: #008000">Changed:</span> Line Styles in GDI+ was corrected again to match GDI line styles when line width is not 1.</li> + <li><span style="color: #008000">Changed:</span> The native WC support in GDI+ was removed because of alignment and size problems, simulation will be used.</li> + <li><span style="color: #008000">Changed:</span> the EMF drivers now ignore the resolution parameter. For EMFs, the resolution is always the screen + resolution.</li> + <li><span style="color: #008000">Changed:</span> the value of following attributes were changed to strings <font face="Courier New">"IMAGEMASK"</font>, + <font face="Courier New">"IMAGEPOINTS"</font>, <font face="Courier New">"ROTATE"</font>, <font face="Courier New"> + "GRADIENTCOLOR"</font>, <font face="Courier New">"IMAGETRANSP"</font> and <font face="Courier New">"IMAGEFORMAT"</font>. + </li> + <li><span style="color: #008000">Changed:</span> in GDI+ base driver, the <b><font face="Courier New">cdBegin</font></b> modes <font face="Courier New"> + CD_IMAGEWARP</font> and <font face="Courier New">CD_GRADIENT</font> were moved to attributes <font face="Courier New"> + "IMAGEPOINTS"</font> and <font face="Courier New">"LINEGRADIENT"</font>. Mode <font face="Courier New">CD_PATHGRADIENT</font> + was renamed to <font face="Courier New">CD_FILLGRADIENT</font>, and <font face="Courier New">"PATHGRADIENT"</font> + attribute was renamed to <font face="Courier New">"GRADIENTCOLOR"</font>. Their definition was also changed.</li> + <li><span style="color: #008000">Changed:</span> <b><font face="Courier New">cdImageEx</font></b> was renamed to <b><font face="Courier New">cdBitmap</font></b>, + and now supports only client images. This will cause a conflict with a macro definition in <font face="Courier New"> + "im_image.h"</font> header of the IM toolkit. Include this header before <font face="Courier New">"cd.h"</font> and + inbetween set <font face="Courier New">"#undef cdPutBitmap"</font>. The IM macro will be changed in the next IM + version.</li> + <li><span style="color: #008000">Changed:</span> <b><font face="Courier New">cdText</font></b> is not dependent on the <b><font face="Courier New"> + cdBackOpacity</font></b> anymore. Text now is always transparent. If you need a box under the text use <b> + <font face="Courier New">cdTextBox</font></b> to calculate the dimensions for <b><font face="Courier New">cdBox</font></b>.</li> +</ul> +<h3>Version 4.3.3 (25/Aug/2004)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> "USERLINESTYLE" attribute for the base GDI and X11 drivers.</li> + <li><span style="color: #0000FF">New:</span> "GC" attribute for the base X11 driver.</li> + <li><span style="color: #008000">Changed:</span> in the Native Window driver for the Windows system, the creation using a HDC can have an addicional + parameter for the canvas size.</li> + <li><span style="color: #008000">Changed:</span> in cdTextSize for the GDI+ base driver we now compensates the height in -10% to match the GDI height.</li> + <li><span style="color: #008000">Changed:</span> The GDI+ printer driver now returns the HDC attribute.</li> + <li><span style="color: #FF0000">Fixed:</span> fixed a bug in <b><font face="Courier New">cdNativeFont</font></b> for the GDI+ base driver.</li> + <li><span style="color: #FF0000">Fixed:</span> again fixed a rounding error in <b><font face="Courier New">cdPutImage*</font></b> for big zooms.</li> +</ul> +<h3>Version 4.3.2 (14/Apr/2004)</h3> +<ul> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 and X-Win drivers the <font face="Courier New"><b>cdPutImageRGB</b></font> and + <font face="Courier New"><b>cdPutImageMap</b></font> functions when zooming bigger then the canvas where incorrectly + positioning the image by some pixels because of round errors.</li> +</ul> +<h3>Version 4.3.1 (07/Nov/2003)</h3> +<ul> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 driver the clipping of <font face="Courier New"><b>cdPutImage*</b></font> functions when + zooming was wrong. In the DoubleBuffer driver the main canvas <font face="Courier New"><b>cdOrigin</b></font> can be + used to move the image in the swap operation (<font face="Courier New"><b>cdFlush</b></font>). In the GDI+ + DoubleBuffer driver there was an error in the <font face="Courier New"><b>cdFlush</b></font> when some primitive used + world coordinates directly in the main canvas.</li> +</ul> +<h3>Version 4.3 (06/Mar/2003)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> the function <font face="Courier New"><b>cdlua_getcanvas</b></font> retreives the pointer of a canvas created + in Lua.</li> + <li><span style="color: #0000FF">New:</span> in Win32 the function <font face="Courier New"><b>cdUseContextPlus</b></font> change the behavior of the + Windows drivers NativeWindow, IUP, Image, Printer, EMF and Double Buffer to make them use the GDI+ for drawing. GDI+ + does not have support for XOR Write Mode, but it has other resources like: transparency, anti-aliasing, gradient + filling, bezier lines and filled cardinal splines. WC functions are directly implemented in the base driver. Two new + functions were created to support transparency in the CD color coding: <font face="Courier New"><b>cdEncodeAlpha</b></font> + and <font face="Courier New"><b>cdDecodeAlpha.</b></font>Check the documentation for more information.</li> + <li><span style="color: #008000">Changed:</span> the Lua binding is now distributed in the same package. There is only one version number.</li> + <li><span style="color: #FF0000">Fixed:</span> the PS header had same flaws, the character ":" was missing in some DCS attributes.</li> + <li><span style="color: #FF0000">Fixed:</span> screen resolution was wrong in the Win32 driver, this afects the size of the canvas in milimeters.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 driver the creation of a polygon for clipping does not activate the clipping.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 driver the function <font face="Courier New"><b>cdNativeFont</b></font> using "-d" + parameter need some ajusts. Also the returned string does not contains all the used parameters.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 driver the function <font face="Courier New"><b>cdPutImageRectRGBA</b></font> had a + positioning error.</li> +</ul> +<h3>Version 4.2 (20/July/2001)</h3> +<ul> + <li><span style="color: #008000">Changed:</span> in driver Win32, <font face="Courier New"><b>cdNativeFont</b></font> accepts parameter + <font face="Courier New">"-d"</font> on the font name to show the font-selection dialog.</li> + <li><span style="color: #008000">Changed:</span> the whole code can now be compiled as C++.</li> + <li><span style="color: #008000">Changed:</span> functions <font face="Courier New"><b>wdPattern</b></font> and <b><font face="Courier New">wdStipple</font></b> + were changed to make pattern deformation more uniform.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Clipboard driver on Win32, when parameter <font face="Courier New">"-b"</font> was used the + image was not correctly copied.</li> + <li><span style="color: #FF0000">Fixed:</span> in certain moments, color vectors were being allocated with size 4 and should be + <font face="Courier New">"sizeof(long)"</font>. This was done to improve the compatibility with 64-bit systems.</li> + <li><span style="color: #FF0000">Fixed:</span> <font face="Courier New"><b>cdPutImageRectRGB</b></font> in driver ImageRGB had a memory-invasion + error in some cases when the image was placed in a negative coordinate.</li> +</ul> +<h3>Version 4.1.10 (04/May/2000)</h3> +<ul> + <li><span style="color: #008000">Changed:</span> the driver Native Windows in Win32 now also accepts an already created HDC handle as a parameter.</li> + <li><span style="color: #008000">Changed:</span> in the <font face="Courier New"><strong>cdPutImageMap</strong></font>* functions, in case the color + vector is null, a vector with 256 gray shades in assumed.</li> + <li><span style="color: #FF0000">Fixed:</span> <font face="Courier New"><b>cdRegisterAttribute</b></font> was not verifying whether the attribute had + already been registered.</li> + <li><span style="color: #FF0000">Fixed:</span> function <font face="Courier New"><b>cdArc</b></font> in the simulation driver (includes <strong> + ImageRGB</strong>) was returning without drawing anything in an incorrect test.</li> + <li><span style="color: #FF0000">Fixed:</span> function <font face="Courier New"><b>cdTextBox</b></font> was returning incorrect values when the text + had an orientation different from the default one in some alignment instances.</li> + <li><span style="color: #FF0000">Fixed:</span> in function <font face="Courier New"><b>cdRGB2Map</b></font> there was a memory invasion.</li> + <li><span style="color: #FF0000">Fixed:</span> the vector text simulation was not freeing the memory used for fonts loaded from files.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Doubled Buffer driver in X-Windows there was an invalid memory liberation.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Lua binding, in several functions receiving or returning tables, the first index was being + considered as 0, but in Lua they must be 1. This correction includes <font face="Courier New"><strong> + cdVectorTextTransform</strong>, <strong>cdGetVectorTextBounds</strong>, <strong>wdGetVectorTextBounds</strong>, + <strong>cdGetClipPoly</strong> </font>and<font face="Courier New"> <strong>wdGetClipPoly</strong></font>.</li> + <li><span style="color: #FF0000">Fixed:</span> when the PS driver generated EPS, it did not correctly add the description of the bounding box (a line + break was missing).</li> + <li><span style="color: #FF0000">Fixed:</span> the vector text drawing functions did not take into account the fact that the default font and the GKS + fonts were in ASCII standard. Now a conversion from ANSI to ASCII is made before these fonts are used for drawing.</li> + <li><span style="color: #FF0000">Fixed:</span> in the X-Win driver, an error in the X-Vertex library caused the texts in 90/270 degrees to be drawn + incorrectly.</li> + <li><span style="color: #FF0000">Fixed:</span> in the X-Win driver, the <font face="Courier New"><strong>cdPutImageMap</strong></font> functions were + generating a memory invasion when the X was in 16 bits.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Win32 driver, very large non-filled polygons were not being drawn in Windows 9x. To correct + that, they were divided into smaller polygons.</li> +</ul> +<h3>Version 4.1 (24/Nov/99)</h3> +<ul> + <li><span style="color: #0000FF">New:</span> new basic Windows driver attributes that allow controling the internal simulation of pattern/stipple, XOR + text, and filled polygon ("<font face="Courier New">SIMXORTEXT</font>", "<font face="Courier New">SIMPATTERN8X8</font>", + "<font face="Courier New">PENFILLPOLY</font>"). New: attribute for returning the HDC of the Windows canvas.</li> + <li><span style="color: #0000FF">New:</span> the PS driver accepts landscape orientation as a parameter. + New: "<font face="Courier New">POLYHOLE</font>" + attribute allows controling the number of holes in a closed polygon. New: "<font face="Courier New">-1</font>" + parameter forces a level 1 Postscript. New: "<font face="Courier New">-g</font>" parameter adds comments to the PS file + in order to better explain what is done. New: "<font face="Courier New">CMD</font>" attribute saves a string to the + file.</li> + <li><span style="color: #0000FF">New:</span> new environment variable, <font face="Courier New">CD_QUIET</font>, does not display in <em>stdout</em> the + library's version information.</li> + <li><span style="color: #0000FF">New:</span> two new exclusive functions for the Native Window driver: <font face="Courier New"><b>cdGetScreenColorPlanes</b></font> + and <font face="Courier New"><b>cdGetScreenSize</b></font>.</li> + <li><span style="color: #0000FF">New:</span> new CD_DBUFFER driver implements a <em>double buffer</em> using a server image.</li> + <li><span style="color: #0000FF">New:</span> new attributes in the ImageRGB driver: "<font face="Courier New">REDIMAGE</font>", "<font face="Courier New">GREENIMAGE</font>" + and "<font face="Courier New">BLUEIMAGE</font>".</li> + <li><span style="color: #0000FF">New:</span> new functions <font face="Courier New"><b>wdGetVectorTextBounds</b></font> and <font face="Courier New"><b> + cdGetVectorTextBounds</b></font> to obtain the bounding box of the vector text.</li> + <li><span style="color: #0000FF">New:</span> new <font face="Courier New"><b>wdGetFont</b></font> function. It is equivalent to <font face="Courier New"> + <strong>cdGetFont</strong></font>, but the returned size is in millimeters.</li> + <li><span style="color: #FF0000">Fixed:</span> the management of WD functions was incomplete for functions <font face="Courier New"><strong>cdPixel</strong>, + <strong>cdVertex</strong> </font>and<font face="Courier New"> <strong>cdPutImage</strong></font>*. This resulted in a + wrong or out of the canvas positioning. It only affects drivers PS and METAFILE.</li> + <li><span style="color: #FF0000">Fixed:</span> function <font face="Courier New"><b>cdActivate</b></font> in Lua was not returning the correct + values.</li> + <li><span style="color: #FF0000">Fixed:</span> when the image was partially out of the window, above or below, functions <font face="Courier New"> + <strong>cdPutImageMap</strong></font> and <font face="Courier New"><strong>RGB</strong></font> were drawing a wrong + portion of the image.</li> + <li><span style="color: #FF0000">Fixed:</span> in the CGM driver, after opening the file of the <font face="Courier New"><strong>cdPlay</strong></font> + function, the check to see if the opening had been successful was not being done.</li> + <li><span style="color: #FF0000">Fixed:</span> when the active canvas was already <font face="Courier New">NULL</font>, the activation of a + <font face="Courier New">NULL</font> canvas was generating a memory invasion.</li> + <li><span style="color: #FF0000">Fixed:</span> in the creation of EPS, the PS driver was adding a wrong call to <font face="Courier New"> + setpagedevice</font>. The <font face="Courier New"><strong>cdPutImageMap</strong></font> function was modifying the + wrong PS parameter in the file. The margin clipping was not saved when the drawing's clipping area was changed. The + clipping area, when drawing in WD, was being incorrectly modified.</li> + <li><span style="color: #FF0000">Fixed:</span> in the IMAGERGB driver, functions <font face="Courier New"><b>cdRedImage</b>, <b>cdBlueImage</b> + </font>and<font face="Courier New"> <b>cdGreenImage</b></font> were returning invalid pointers.</li> + <li><span style="color: #FF0000">Fixed:</span> when initializing text simulation functions, the opened font file was not being closed. This affected + all CD drivers, but was only apparent in the application that opened and closed many drivers.</li> + <li><span style="color: #FF0000">Fixed:</span> the approximate computation of the text size was not accepting sizes in pixels.</li> + <li><span style="color: #FF0000">Fixed:</span> the creation of the IMAGERGB driver in Lua was incorrect when the resolution parameter (which is + optional) was not specified.</li> + <li><span style="color: #FF0000">Fixed:</span> functions <font face="Courier New"><b>cdGetClipPoly</b></font> and <font face="Courier New"><b> + wdGetClipPoly</b></font> in Lua were causing memory invasion.</li> + <li><span style="color: #008000">Changed:</span> in the PS driver, when the Map image is actually a grayscale, function <font face="Courier New"> + <strong>cdPutImageMap</strong></font> uses an 8 bit image, thus saving memory. Level 2 Postscript functions + <font face="Courier New">rectfill, rectstroke</font> and <font face="Courier New">rectclip</font> are now used. The + comments in DCS were updated to DCS version 3 and were increased to improve the document's portability.</li> + <li><span style="color: #008000">Changed:</span> in driver X-Windows, the text drawing attribute was implemented with any orientation.</li> + <li><span style="color: #008000">Changed:</span> function <font face="Courier New"><b>cdVersion</b></font> in Lua now behaves just like in C. A global Lua + variable, <font face="Courier New"><b>CDLUA_VERSION</b></font>, was created containing the version of the Lua binding + library - for example: "CDLua 1.3.0".</li> + <li><span style="color: #008000">Changed:</span> function <font face="Courier New"><b>cdVectorTextTransform</b></font> now returns the previsous + transformation matrix.</li> +</ul> +<h3>Version 4.0.1 (05/Mar/99)</h3> +<ul> + <li><span style="color: #FF0000">Fixed:</span> in the Windows driver, the polygon simulation with pattern was corrected to polygons with repeated + points.</li> + <li><span style="color: #FF0000">Fixed:</span> in the Windows driver, function <font face="Courier New"><strong>cdNativeFont</strong></font> was + corrected for IUP fonts. It was affecting the Matrix's visualization.</li> + <li><span style="color: #FF0000">Fixed:</span> function <font face="Courier New"><strong>cdNativeFont</strong></font> was wrongly testing its input + parameter and always returning.</li> + <li><span style="color: #FF0000">Fixed:</span> in the drivers IUP and Native Window, the <font face="Courier New"><strong>cdGetCanvasSize</strong></font> + function was corrected. When the window size was changed, the values in millimeters were not updated to + <font face="Courier New"><strong>cdActivate</strong></font>.</li> + <li><span style="color: #FF0000">Fixed:</span> in the CGM driver, function <font face="Courier New"><strong>cdPlay</strong></font> was generating + problems in reading and displaying cell arrays. When the <font face="Courier New"><strong>cdCreateCanvas</strong></font> + function used the default values for dimensions and resolution, it generated files with errors.</li> + <li><span style="color: #008000">Changed:</span> in the X-Windows driver, function <font face="Courier New"><strong>cdPixel</strong></font> was + optimized. It now compares the color to the foreground color and reuses the value.</li> +</ul> +<h3>Version 4.0 (18/Feb/99)</h3> +<ul> + <li><b>Summary</b>: (necessary due to the great number of changes).<br> + - Update of the Lua binding.<br> + - Several changes in the internal structure (most bringing benefits only to the driver developer).<br> + - Countless corrections. <br> + - Small changes in the functions <font face="Courier New"><b>cdHatch</b>, <b>cdScrollImage</b>, <b>cdFont</b> </font> + and<font face="Courier New"> <b>cdPlay</b></font>. <br> + - Optimization of functions <font face="Courier New"><b>wdVectorFont</b></font> and <font face="Courier New"><b> + cdMark</b></font>. <br> + - New: functions: <br> + <font face="Courier New"><b>cdCreateCanvasf, cdGetContext,</b> <strong>cdContextCaps</strong>, <strong> + cdSaveState, cdRestoreState</strong>, <strong> cdSetAttribute, cdGetAttribute</strong><br> + <b> cdOrigin, cdRect, wdRect, cdGetFont,</b> <strong>cdGetStipple</strong>, <strong>cdGetPattern</strong>, <strong> + cdTextBox</strong><br> + <b> cdPutImageRectRGB</b>, <b>cdPutImageRectRGBA</b>, <b>cdPutImageRectMap,</b> <br> + <b> cdCreateImageEx</b>, <b>cdKillImageEx</b>, <b>cdPutImageEx</b>, <b>cdGetImageEx</b></font>. <br> + - New: WD functions: <font face="Courier New"><b>wdHardcopy, wdPattern, wdStipple, wdPixel, wdPutImageRect, + wdPutImageRectRGB</b>, <b>wdPutImageRectRGBA</b> </font>and<font face="Courier New"> <b>wdPutImageRectMap</b></font>. + <br> + - New: vector text functions: <font face="Courier New"><strong>cdVectorFont, cdVectorTextDirection, + cdVectorTextTransform, cdVectorTextSize, cdGetVectorTextSize, cdVectorCharSize, cdVectorText </strong></font>and<font face="Courier New"><strong> + cdMultiLineVectorText</strong></font>.<br> + - <font face="Courier New"><b>wdActivate</b></font> is no longer necessary. <br> + <b>-</b> Driver IMAGERGB complete.<br> + - Driver SIMULATE no longer exists; now function <font face="Courier New"><strong>cdSimulate</strong></font> must be + used. <br> + - New: driver DIRECTDRAW. <br> + - Policy change of <font face="Courier New"><b>cdPalette</b></font> in the X-Windows driver<br> + - IUP driver is now in a separate library.</li> +</ul> +<p>IMPORTANT NOTE: This version is not totally compatible to the previous one. The applications using the driver IUP +must be relinked, as this driver is now in a separate library, "<strong>cdiup</strong>". The Lua applications must also +be modified to include a call to function <font face="Courier New"><strong>cdluaiup_open</strong></font> after +<font face="Courier New"><strong>cdlua_open</strong></font>, and must be linked with the "<strong>cdluaiup</strong>" +library. The SIMULATE driver no longer exists, therefore the applications that used it must be modified to use the new +function, <font face="Courier New"><strong>cdSimulate</strong></font>, without the need for creating a new driver.</p> +<ul> + <li>Changed: the internal structure of the library was changed once again. One of the purposes is to make the + drivers become independent from the function table. With this change, adding a new function to the function table does + not imply editing the old drivers. We also allowed the drivers not to implement functions that do not make sense in + their context. Another modification simplifying the work in the drivers was to bring the attribute query mechanism to + the library's control part, freeing the drivers from this obligation. Taking the chance, we determined that a change + in an attribute to a value equal to the current one will not be effective, thus saving calls to the driver. Now, the + value of an attribute is changed even if the driver function is not implemented, as the driver can query this + attribute later on. The management of default values of the attributes is also done by the library's control part. All + these changes prepare the library to a new philosophy: before, if a driver did not contain a certain feature, it + simply did nothing. The new philosophy will be: if a driver does not contain a certain feature, then the simulation of + this feature will be activated.</li> + <li>Changed: when a canvas which is already active is activated again, an internal driver function is now called, + notifying an update instead of an activation.</li> + <li>Changed: the use of the CD canvas with a IUP canvas is better described in the manual, showing the various + ways of treating the canvas creation prooblem.</li> + <li>Changed: all functions in the control module now have <font face="Courier New">ASSERT</font> directives. Thus, + using the library with depuration information, one can better detect simple errors.</li> + <li>Changed: in order to use the IUP driver, it must be linked with the "<strong>cdiup</strong>" library, apart + from the "<strong>cd</strong>" library (<font face="Courier New">cdiup.lib</font> in Windows, <font face="Courier New"> + cdiuplib.a</font> in UNIX).</li> + <li>Changed: the IMAGERGB driver is now implemented using the simulation functions.</li> + <li>Changed: the <font face="Courier New"><b>cdMark</b></font> function is back to the function table, so that the + drivers in which the primitive can be implemented can profit from it.</li> + <li>Changed: in order to assure that the use of server images is done only between canvases of the same driver, or + of the same basic driver, an internal structure was defined for the server image containing the functions of the + driver from which the image was created. Thus, if the <font face="Courier New"><b>cdKillImage</b></font> function is + called with an active canvas of a different kind from that in which the image was created, the + <font face="Courier New"><b>KillImage</b></font> function of the correct driver will be called.</li> + <li>Changed: in the X-Windows driver, the XV code was used to optimize functions <font face="Courier New"><strong> + cdPutImageRectRGB</strong></font> and <font face="Courier New"><strong>cdPutImageRectMap</strong></font>.</li> + <li>Changed: the Lua binding was updated. Now the user guide contains Lua function together with C functions.</li> + <li>Changed: in the X-Windows driver, <font face="Courier New"><b>cdPalette</b></font>'s policy was changed to fulfill + the requirements of some applications, which wanted to force a palette. Please see the function's documentation in the + driver.</li> + <li>Changed: the CGM driver used to always store the <font face="Courier New"><strong>cdForeground</strong></font> + attribute before drawing a primitive; now it stores the attribute only when it is changed. The + <font face="Courier New"><strong>cdBackOpacity</strong></font> function was not implemented. The + <font face="Courier New"><strong>cdFlush</strong></font> function was not preserving the canvas attributes. Now when + the canvas size is not specified in the <font face="Courier New"><strong>cdCreateCanvas</strong></font> function, the + VDC Extension saved to the file is the figure's bounding rectangle. The patterns and/or stipples selected were being + stored in a way so that only the first one was valid.</li> + <li>Changed: the documentation of the old DOS driver was removed from the user guide.</li> + <li>Changed: the default resolution for drivers DGN, DXF, METAFILE, CGM and ImageRGB is no longer 1 but 3.8 points per + mm (96 DPI).</li> + <li>Changed: in the <font face="Courier New"><b>cdInteriorStyle</b></font> function, if stipple or pattern are not + defined, the state of the attribute is not modified. There is no longer a default 32x32 pattern or stipple.</li> + <li>Changed: in functions <font face="Courier New"><b>cdFontDim</b></font> and <font face="Courier New"><b>cdTextSize</b></font>, + if the driver does not support this kind of query, the values are estimated.</li> + <li>Changed: function <font face="Courier New"><b>cdHatch</b></font> now returns the previous value.</li> + <li>Changed: function <font face="Courier New"><b>cdScrollImage</b></font> is now called <font face="Courier New"><b> + cdScrollArea</b></font>, better reflecting its functionality, since it does not require any explicitly defined image + to be performed. The old function is maintained to assure compatibility with old applications.</li> + <li>Changed: the <font face="Courier New"><b>cdPlay</b></font> function now accepts all window parameters null. In this + case, the primitives in the file are interpreted without scaling.</li> + <li>Changed: <font face="Courier New"><b>cdFont</b></font>now accepts font sizes in pixels when negative values are + used as a parameter.</li> + <li>Changed: the WD functions were included in the library's function table, so that the drivers can use floating point + precision when storing primitives. Presently, only the drivers PS and METAFILE have this resource directly + implemented. With this change, the <font face="Courier New"><b>wdActivate</b></font> function became obsolete and is + no longer necessary. For purposes of compatibility with other applications, it was maintained only as a call to + function <font face="Courier New"><b>cdActivate</b></font>.</li> + <li>Changed: drivers EMF and WMF now accept the resolution as a parameter.</li> + <li>New: internal modification of the Windows driver to allow the creation of the DirectDraw driver.</li> + <li>New: DirectDraw driver to accelerate video access to high-performance applications.</li> + <li>New: function <font face="Courier New"><b>cdInteriorStyle</b></font> now accepts style <font face="Courier New"> + CD_HOLLOW</font>. When this style is defined, the <font face="Courier New"><b>cdBox</b></font> and + <font face="Courier New"><b>cdSector</b></font> functions behave like their equivalents <font face="Courier New"><b> + cdRect</b></font> and <font face="Courier New"><b>cdArc</b></font>, and the polygons with the <font face="Courier New"> + CD_FILL</font> style behave like <font face="Courier New">CD_CLOSED_LINES</font>.</li> + <li>New: new functions:<br> + - <font face="Courier New"><b>cdCreateCanvasf</b></font> accepts parameters equivalent to <font face="Courier New"><b> + sprintf</b></font>, helping in the creation of some canvases.<br> + - <font face="Courier New"><b>cdOrigin</b></font> allows translating the origin - for instance, to the center of the + canvas.<br> + - <font face="Courier New"><b>cdGetContext</b></font> returns the context of a given canvas; it can be compared with + predefined contexts, such as "<font face="Courier New">CD_PS</font>".<br> + - <strong><font face="Courier New">cdSaveState</font> </strong>and<strong> <font face="Courier New">cdRestoreState</font></strong> + allow saving and restoring the state of attributes of the active canvas.<br> + <strong>- <font face="Courier New">cdSetAttribute</font> </strong>and<strong> <font face="Courier New">cdGetAttribute</font></strong> + allow passing customized attributes to the driver, which are ignored if the driver does not have the attribute + defined.<br> + - <font face="Courier New"><strong>cdContextCaps</strong></font> returns a combination of several flags informing the + available resources of the canvas in that context.<br> + - Driver SIMULATE no longer exists. Now function <font face="Courier New"><strong>cdSimulate</strong></font> must be + used. The simulation can be activated and deactivated at any moment.<br> + - <font face="Courier New"><b>cdRect</b></font> and <font face="Courier New"><b>wdRect</b></font> allow drawing a box + with no filling.<br> + - <font face="Courier New"><b>cdGetFont</b></font> returns the values of the font modified by function + <font face="Courier New"><b>cdFont</b></font> and ignores those modified by <font face="Courier New"><b>cdNativeFont</b></font>.<br> + - <font face="Courier New"><strong>cdTextBox</strong></font> returns the horizontal bounding rectangle of the text + box, even if it is bended.<br> + - <font face="Courier New"><strong>cdGetStipple</strong></font> and <font face="Courier New"><strong>cdGetPattern</strong></font> + return current stipple and pattern. With these functions and with function <font face="Courier New"><strong>cdGetFont</strong></font>, + one can now totally change and restore the attributes of a given canvas.<br> + - <font face="Courier New"><b>wdPattern</b></font> and <font face="Courier New"><b>wdStipple</b></font> allow + specifying the style in world coordinates. The size of the image is modified to the specified size in millimeters.<br> + - functions <font face="Courier New"><b>cdPutImageRectRGB</b>, <b>cdPutImageRectRGBA</b> and <b> + cdPutImageRectMap</b></font> allow specifying a rectangle in the image to be used for the drawing instead of the whole + image.<br> + - <font face="Courier New"><b>wdPixel, wdPutImageRect</b>,<b> wdPutImageRectRGB</b>, <b>wdPutImageRectRGBA</b> </font> + and<font face="Courier New"> <b>wdPutImageRectMap</b></font> are equivalent to <font face="Courier New"><b>cdPixel</b>,<b> + cdPutImageRect</b>,<b> cdPutImageRectRGB</b>, <b>cdPutImageRectRGBA</b> </font>and<font face="Courier New"> <b> + cdPutImageRectMap</b></font>, respectively, but the target coordinates are specified in world coordinates.<br> + - New: vector text functions: <font face="Courier New"><strong>cdVectorFont</strong>,<strong> cdVectorTextDirection</strong>,<strong> + cdVectorTextTransform</strong>,<strong> cdVectorTextSize</strong>,<strong> cdGetVectorTextSize</strong>,<strong> + cdVectorCharSize</strong>,<strong> cdVectorText</strong>,<strong> cdMultiLineVectorText</strong></font>. The vector + text can now be used without the need of world coordinates. Functions <strong><font face="Courier New">wdVectorFont</font> + </strong>and<strong> <font face="Courier New">wdVectorTextTransform</font></strong> have become obsolete, though they + still exist for compatibility reasons.<br> + - <font face="Courier New"><strong>wdHarcopy</strong></font> helps drawing WD primitives in devices, adjusting Window + and Viewport.<br> + - Auxiliary functions were created to manipulate all sorts of images in a single way, being either client, RGB, RGBA, + MAP, or server images: <font face="Courier New"><b>cdCreateImageEx</b>, <b>cdKillImageEx</b>, <b>cdPutImageEx</b>, <b> + cdGetImageEx</b></font>, etc.</li> +</ul> +<ul> + <li>Fixed: the documentation of function <font face="Courier New"><b>cdFont</b></font> was confusing, causing + errors in the conversion from pixels to points.</li> + <li>Fixed: function <font face="Courier New"><b>wdFont</b></font> was making a wrong conversion of the font size + parameter from millimeters to points.</li> + <li>Fixed: functions <font face="Courier New"><b>wdVectorText</b></font> and <font face="Courier New"><b> + wdMultiLineVectorText</b></font> were generating an extra polygon when the text contained blank spaces in certain + positions.</li> + <li>Fixed: the PS driver was not prepared for marked texts. Function <font face="Courier New"><strong>cdFlush</strong></font> + did not preserve current attributes. The interior style was affecting line drawing. The text alignment now takes into + account an estimation for the baseline. Function <font face="Courier New"><strong>cdTextOrientation</strong></font> + was implemented. The world coordinate functions were implemented directly in the driver. Hatch and stipple interior + styles were implemented, but they are still only opaque.</li> + <li>Fixed: in the X-Windows driver, function <font face="Courier New"><b>cdGetColorPlanes</b></font> was + returning 8 bpp even if the canvas was 24 bbp when the default visualization was different from the canvas' + visualization in that X server. Text position on the screen was above the one entered. Function + <font face="Courier New"><b>cdFont</b></font> was looping in certain conditions. Function <font face="Courier New"><b> + cdEnd</b></font> in the X-Windows driver in the AIX system was generating an error and aborting the program if only + one point of the polygon was specified. Dashed lines were always opaque, ignoring the <font face="Courier New"> + <strong>cdBackOpacity</strong></font> attribute.</li> + <li>Fixed: in the Clipboard driver for X-Windows, a parameter was missing which prevented it from working + properly. Before the update, it used that of the IUP/Native Window active canvas.</li> + <li>Fixed: in the Windows driver, the text position on the screen was above the position provided. Filled + polygons had a one pixel error to the right and below due to the small <font face="Courier New">NULL</font> used. + Fillings with hatch, pattern and stipple still contain errors. The internal simulation of polygons filled with pattern + and stipple was also corrected; they had one additional pixel to the right and below. Text alignment treatment was + improved.</li> + <li>Fixed: driver WMF now has text alignment.</li> + <li>Fixed: in the PRINTER (Windows) driver, function<font face="Courier New"><strong> cdFlush</strong></font> was + not preserving current attributes.</li> + <li>Fixed: in the CGM driver, the text align interpretation was corrected. The <font face="Courier New"><strong> + cdMark</strong></font> function is implemented directly in the driver. Function <font face="Courier New"><strong> + cdBackOpacity</strong></font> was implemented. Mark interpretation was also corrected.</li> + <li>OPTIMIZATION: function <font face="Courier New"><b>wdVectorFont</b></font> only loads the new font if it is + different from the current one.</li> + <li>OPTIMIZATION: function <font face="Courier New"><b>cdMark</b></font> now modifies fill and line attributes only if + they are different from the one needed to draw the mark.</li> +</ul> +<h3>Version 3.6 (05/May/98)</h3> +<ul> + <li>Fixed: / Win32: every time the clipping region changed the old region was not deleted.</li> + <li>New: new function <font face="Courier New"><strong>cdRGB2Map</strong></font>, which converts an RGB image into a + 256 indexed-colors image. It is the same algorithm used in the IM library - in fact, it is the same code.</li> + <li>Changed: the <font face="Courier New"><strong>cdMark</strong></font> function now uses the <strong> + <font face="Courier New">cdPixel</font></strong> function when drawing a mark of 1 pixel size.</li> + <li>Changed: / Win32: the <font face="Courier New"><strong>cdPixel</strong></font> function now uses the <strong> + <font face="Courier New">SetPixelV</font></strong> function when not under Win32s. This function is faster than the + <strong><font face="Courier New">SetPixel</font></strong> function because it does not return the old value.</li> + <li>Changed: / Win32: the polygon used for clipping is now optimized to not include 3 points that are in the same + horizontal or vertical line.</li> + <li>Fixed: / WD: the <font face="Courier New"><strong>wdVectorText</strong></font> function was not drawing + correctly when extended characters (>128) were used.</li> + <li>Fixed: / X: the <font face="Courier New"><strong>cdPalette</strong></font> function and the color management + for canvases with only 256 colors were wrong. Each canvas had its own management, now all canvases in the same + aplication use the same management.</li> + <li>Fixed: / X: several resource and memory leaks were corrected.</li> + <li>Fixed: / IMAGERGB: functions <font face="Courier New"><strong>cdRedImage</strong></font>, + <font face="Courier New"><strong>cdGreenImage</strong></font> and <font face="Courier New"><strong>cdBlueImage</strong></font> + were not returning the correct pointer.</li> + <li>Fixed: / SunOS: drivers IMAGERGB, SIMULATE and NATIVEWINDOW use the "%p" format string, but in the SunOS + they use "%d" because of an internal bug of the run time library of this OS.</li> + <li>Changed: / IUP: driver IUP sets the <strong><font face="Courier New">cdCanvas</font></strong> function as an + attribute of the <strong><font face="Courier New">IupCanvas</font></strong> passed as a parameter using the name + "_CD_CANVAS".</li> + <li>MANUAL: the manual appearance was changed to match the new Tecgraf standard.</li> +</ul> +<h3>Version 3.5 (07/Jan/98)</h3> +<ul> + <li>New: the <font face="Courier New"><strong>cdTextDirection</strong></font> function allows raster text to be drawn + in any direction. Up to now it is implemented only in the basic Win32 driver.</li> + <li>Fixed: / X / NativeWindow: the canvas was not created if the screen was 0.</li> + <li>Fixed: / Win32 / NativeWindow: now the driver considers the existence of non owner-draw device contexts.</li> + <li>Fixed: / Win32: function <font face="Courier New"><strong>cdClipArea</strong></font> was not including + <font face="Courier New">xmax</font> and <font face="Courier New">xmin</font> in the clipping area.</li> + <li>Changed: the <font face="Courier New"><strong>cdCallback</strong></font> typedef was defined, being useful for + type casting when calling the <font face="Courier New"><strong>cdRegisterCallback</strong></font> function.</li> + <li>Fixed: / Win32: a compatibility problem with the <font face="Courier New"><strong>cdNativeFont</strong></font> + string and the <font face="Courier New">WINFONT IUP</font> attribute was corrected.</li> + <li>Changed: / Win32: the <font face="Courier New"><strong>cdPutImageRGB</strong></font> and + <font face="Courier New"><strong>cdPutImageMap</strong></font> functions use a cache memory for best performance.</li> + <li>Fixed: text size estimation for the CGM and PS drivers now uses Courier + New: as the "System" font. As it was, + it was causing a memory invasion.</li> +</ul> +<h3>Version 3.4 (12/Nov/97)</h3> +<ul> + <li>Changed: / X: memory use of the <font face="Courier New"><strong>cdPutImageRGB</strong></font>, + <font face="Courier New"><strong>cdPutImageRGBA</strong></font> and <font face="Courier New"><strong>cdPutImageMap</strong></font> + functions was optimized, as well as the performance of the <font face="Courier New"><strong>cdPutImageMap</strong></font> + function.</li> + <li>Changed: / X and Win32: when the canvas has bpp <= 8, function <strong><font face="Courier New">cdPutImageRGB</font> + </strong>converts the image into Map before displaying it.</li> + <li>Changed: / X and Win32: if a font's parameters are the same as the current parameters, the + <font face="Courier New"><strong>cdFont</strong></font> function does nothing.</li> + <li>DOC / PS: the "-d" parameter for the EPS option was not documented.</li> + <li>Fixed: / PS: parameters "-w" and "-h" were incorrectly interpreted.</li> + <li>Fixed: / X: the internal function names were generating an error in the VMS plataform.</li> + <li>Fixed: / X: the <font face="Courier New"><strong>cdKillCanvas</strong></font> function was freeing some + pointers of the active canvas.</li> + <li>Changed: / Win32: the <font face="Courier New"><strong>cdVertex</strong></font> function now ignores duplicate + points.</li> + <li>Changed: / Win32: the <font face="Courier New"><strong>cdNativeFont</strong></font> function also accepts the + font string of the <font face="Courier New">WINFONT IUP</font> attribute.</li> + <li>Fixed: / DXF: corrections in color conversion and in the <strong><font face="Courier New">cdArc</font></strong> + function for small radius were made, and an unnecessary identation was removed.</li> +</ul> +<h3>Version 3.3 (19/Sep/97)</h3> +<ul> + <li>Changed: / X: the <strong><font face="Courier New">cdFont</font></strong> function now has a better heuristic + to find a closer font if the requested font does not match an available one.</li> + <li>Changed: / X: the <strong><font face="Courier New">cdPattern</font></strong> and <strong> + <font face="Courier New">cdStipple</font></strong> functions now use a bitmap cache to store the <em>pixmap</em> and + do not recreate it if the size is not changed.</li> + <li>Fixed: / X and Win32: the <strong><font face="Courier New">cdPutImageRect</font></strong> function was placing + the bitmap in a wrong position.</li> + <li>Fixed: / Win32: the <strong><font face="Courier New">cdCreateImage</font></strong> function did not return + <font face="Courier New">NULL</font> when the creating failed.</li> + <li>Changed: / Win32: the <font face="Courier New"><strong>cdPutImageRGB</strong></font>, <font face="Courier New"> + <strong>cdPutImageRGBA</strong></font> and <font face="Courier New"><strong>cdPutImageMap</strong></font> functions + were largely optimized when the picture displayed is larger than the screen.</li> + <li>Changed: / WMF: using the <font face="Courier New"><strong>cdPlay</strong></font> function we discovered that + the size of the picture was incorrect in the header file, so we first had to calculate the bounding box and then + interpret the picture.</li> + <li>Changed: / PS and CGM: now the <font face="Courier New"><strong>cdFontDim</strong></font> and + <font face="Courier New"><strong>cdTextSize</strong></font> functions return approximate dimensions, instead of + nothing.</li> + <li>Fixed: / PS: the default font was not being set when the canvas was created.</li> + <li>Fixed: / PS: text alignment was incorrect in the vertical direction.</li> + <li>Fixed: / SIM: the clipping algorithm of the <font face="Courier New"><strong>cdPixel</strong></font> function + of the Simulation driver was corrected.</li> + <li>Fixed: / CD: now you can activate a <font face="Courier New">NULL</font> canvas. When you get the active + canvas and restore it, if it was <font face="Courier New">NULL</font> the <strong><font face="Courier New">cdActivate</font></strong> + function was accessing an invalid pointer.</li> + <li>MANUAL: several changes were made on the online manual structure, and were added to the CDLua page.</li> +</ul> +<h3>Version 3.2</h3> +<ul> + <li>A problem in the <font face="Courier New"><strong>cdFlush</strong></font> function in the Postscript driver was + corrected. It was not setting the scale.</li> + <li>Functions <font face="Courier New"><strong>wdFontDim</strong></font> and <font face="Courier New"><strong> + wdTextSize</strong></font> now check if the return pointers are not <font face="Courier New">NULL</font>.</li> + <li>An internal function in the DGN driver was drawing an ellipse with two times the axis size.</li> + <li>The <font face="Courier New"><strong>cdFont</strong></font> function was corrected to store the font names in the + CGM driver.</li> +</ul> +<h3>Version 3.1</h3> +<ul> + <li>Several minor bugs in the Win32 Printer driver and in the Postscript driver were corrected. The EPS mode of the PS + driver now generates a "showpage" PS function so it can be printed.</li> + <li>The Clipboard driver was implemented in Motif. The <font face="Courier New"><strong>cdPlay</strong></font> + function was implemented in the Motif and Win32 Clipboard drivers.</li> + <li>The <font face="Courier New"><strong>cdRegisterCallback</strong></font> function was added to allow the + customization of the <font face="Courier New"><strong>cdPlay</strong></font> function's behavior.</li> + <li>The <font face="Courier New"><strong>wdVectorTextTransform</strong></font> function allows a 2D transformation + applied to any vector text.</li> + <li>Now the Simulation driver has several levels of simulation, and the simulation was improved with pattern and + clipping simulation.</li> +</ul> +<h3>Version 3.0</h3> +<ul> + <li>The library's architecture underwent several changes. The function tables are no longer public, only the drivers + know its structure. This means that we have eliminated the need to recompile applications that use the dynamic library + when we change something in the function table. There are some other benefits, like the fact that the Windows DLL can + now be implemented and that it is more simple to explain the library to new users, so they will not be confused by the + <font face="Courier New">cdprivat.h</font> header.</li> + <li>Corrections to the text alignment of the <font face="Courier New"><strong>wdVectortext</strong></font> function + were made.</li> + <li>Memory allocation of the <font face="Courier New"><strong>cdPattern</strong></font> and <font face="Courier New"> + <strong>cdStipple</strong></font> functions in the basic Windows driver was corrected.</li> + <li>Memory release of the <font face="Courier New"><strong>cdKillCanvas</strong></font> function in the basic Windows + driver was corrected.</li> + <li>The <font face="Courier New"><strong>cdPattern</strong></font> function was implemented in the Postscript driver, + and the <font face="Courier New"><strong>cdPutImageRGB</strong></font> and <font face="Courier New"><strong> + cdPutImageMap</strong></font> functions now write color images.</li> + <li>The <font face="Courier New"><strong>cdPattern</strong></font> function was corrected in the basic X-Windows + driver for use with clipping.</li> + <li>The compiler directive <font face="Courier New">#include<<strong>malloc.h</strong>></font> was changed to + <font face="Courier New">#include<<strong>stdlib.h</strong>></font> in several modules for better compatibility with + other compilers.</li> + <li>The <font face="Courier New"><strong>cdPlay</strong></font> function now accepts the viewport rectangle where the + drawing will be rendered.</li> + <li>Several navigation changes were made to the user guide pages.</li> + <li>A <strong>new</strong> CD_SIMULATE driver was created. Use it to replace some primitives and to handle attributes + of another driver. It can be used with any other driver. Basically, it substitutes the interior style of dependent + primitives: box, sector and filled polygons. It also substitutes the clipping methods of these primitives.</li> + <li>The Windows DLL version of the library was created.</li> +</ul> +<h3>Version 2.2.1</h3> +<ul> + <li>Interrnal macros that affect <font face="Courier New"><strong>wdArc</strong></font> and <font face="Courier New"> + <strong>wdSector</strong></font> were corrected.</li> + <li>The CGM driver now supports some client image functions.</li> + <li>Hatch styles in the Image RGB driver were corrected.</li> +</ul> +<h3>Version 2.2.0</h3> + + <p><strong>New: Functions:</strong></p> + + <p><font face="Courier New"><strong>cdVersion</strong></font> - returns the current library version.<br> + <font face="Courier New"><strong>cdNativeFont</strong></font> - sets a native font.<br> + <font face="Courier New"><strong>cdPutImageRect</strong></font> - same as <strong><font face="Courier New"> + cdPutImage</font></strong> but you may specify a part of the image.<br> + <font face="Courier New"><strong>cdPutImageRGBA</strong></font> - <strong><font face="Courier New">cdPutImageRGB</font></strong> + with transparency.<br> + <font face="Courier New"><strong>wdFont</strong></font> - <strong><font face="Courier New">cdFont</font></strong> + for the WD client, the size parameter is in millimeters.</p> + + <p><strong>New: Drivers:</strong></p> + + <p><strong>NativeWindow</strong> - now the library can work with other Interface libraries.<br> + <strong>DGN</strong> - MicroStation Design File.<br> + <strong>EMF</strong> - Windows Enhanced Metafile.<br> + <strong>CD Metafile</strong> - our own metafile.<br> + <strong>Client Image RGB</strong> - now you can write in an RGB image.</p> + + +<ul> + <li><strong>DGN</strong>, <strong>CGM</strong> and <strong>DXF</strong> file-based drivers now have a default size in + pixels (<strong>INT_MAX</strong> = 2.147.483.647) and are optional. In fact the size is irrelevant in these file + formats. The <font face="Courier New"><strong>cdCreateCanvas</strong></font> data string may contain the size in + millimeters and the resolution in pixels per millimeters. Both are real values. The default resolution is 1.</li> + <li>The <font face="Courier New"><strong>cdPlay</strong></font> function now works on the CGM and on the CD Metafile + drivers.</li> + <li>The interior style attributes were implemented in the <strong>CGM</strong> driver.</li> + <li>On the Clipboard driver: limitations are considered if creating a WMF under Win32s.</li> + <li>Now the Printer Driver shows the Printer's Dialog Box (Win32 & Mac) if the parameter "-d" is specified.</li> + <li>On the PS driver: all the dimensions in the Data parameter string are now in millimeters.</li> + <li>On the WMF driver: several functions were disabled because of WMF limitations. Picture size was corrected.</li> + <li>On the basic X-Windows driver: <font face="Courier New"><strong>cdLineWidth</strong>(1)</font> uses + <font face="Courier New">width 0</font> for better performance. Stipple was being incorrectly interpreted. + <font face="Courier New"><strong>cdGetImageRGB</strong></font> was swapping red and blue channels on true color + canvas.</li> + <li>The clipping region now can be a polygon on some systems/drivers (Win32, Mac, X-Win and PS). Use + <font face="Courier New"><strong>cdClip</strong>(CD_CLIPPOLYGON)</font> to use the polygon defined by a + <font face="Courier New"><strong>cdBegin</strong>(CD_CLIP)</font>,<font face="Courier New"> <strong>cdVertex</strong>(...)</font>,<font face="Courier New"> + <strong>cdEnd</strong>()</font> sequence.</li> + <li>The functions <strong><font face="Courier New">wdMM2Pixel</font></strong> and <strong><font face="Courier New"> + wdPixel2MM</font></strong> became <font face="Courier New"><strong>cdMM2Pixel</strong></font> and + <font face="Courier New"><strong>cdPixel2MM</strong></font>, respectively.</li> + <li>Minor bugs in the <font face="Courier New"><strong>wdFontDim</strong></font>, <font face="Courier New"><strong> + wdLineWidth</strong></font> and <font face="Courier New"><strong>wdMarkSize</strong></font> functions were corrected.</li> + <li><font face="Courier New"><strong>wdVectorCharSize</strong></font> now returns the previous value.</li> +</ul> +<h3>Up to Version 2.1</h3> +<ul> + <li>The <font face="Courier New"><strong>cdActiveCanvas</strong></font>, <font face="Courier New"><strong>cdPlay</strong></font> + and the <font face="Courier New"><strong>wdVectorFont</strong></font> functions were added, and the + <font face="Courier New"><strong>cdKillCanvas</strong></font> function was corrected when destroying the current + canvas.</li> + <li>The <font face="Courier New"><strong>cdMark</strong></font> function no longer depends on line style, line width + and interior style attributes, and it is the same for all drivers because it is implemented only with CD functions.</li> + <li>The <font face="Courier New"><strong>wdLineWidth</strong></font> and <font face="Courier New"><strong>wdMarkSize</strong></font> + functions now use millimeters.</li> + <li>The functions <font face="Courier New"><strong>cdEncodeColor</strong></font> and <font face="Courier New"><strong> + cdDecodeColor</strong></font> now can be called without an active canvas. The DXF driver was added.</li> + <li>WD can now access files with vector font definitions.</li> + <li>Minor bugs in the <font face="Courier New"><strong>wdTextSize</strong></font> function were corrected.</li> +</ul> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/home.html b/html/en/home.html new file mode 100644 index 0000000..1e3c084 --- /dev/null +++ b/html/en/home.html @@ -0,0 +1,32 @@ +<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"> +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Home</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<div class="homeTitle">CD</div> +<div class="homeDescription">Canvas Draw, A 2D Graphics Library</div> +<div class="homeVersion">Version 5.1</div> + <hr> + + <p><strong>CD</strong> (Canvas Draw) is a platform-independent graphics library. It is implemented in several + platforms using native graphics libraries: Microsoft Windows (GDI) and X-Windows (XLIB).</p> + <p>The library contains functions to support both vector and image applications, and the visualization surface can be + either a window or a more abstract surface, such as Image, Clipboard, Metafile, PS, and so on.</p> + <p>This work was developed at Tecgraf/PUC-Rio by means of the partnership with PETROBRAS/CENPES.</p> + + <h2>Project Management:</h2> + + <p class="info">Antonio Escaño Scuri</p> + +<p style="margin-left:0">Tecgraf - Computer Graphics Technology Group, PUC-Rio, Brazil <br> +<a href="http://www.tecgraf.puc-rio.br/cd">http://www.tecgraf.puc-rio.br/cd</a> </p> + +</body> + +</html> diff --git a/html/en/internal.html b/html/en/internal.html new file mode 100644 index 0000000..d919b84 --- /dev/null +++ b/html/en/internal.html @@ -0,0 +1,207 @@ +<html> + +<head> +<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> +<title>Internal Architecture</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Internal Architecture</h1> + +<h3>Modularity</h3> + + + <p>Apart from the several drivers, the CD library is composed of a few modules, the public + header files <b>cd.h</b> and <b>wd.h</b>, those which implement the functions + independently from drivers,<b> cd*.c</b> and <b>wd.c</b>, and the header file <b>cd_private.h</b>, + apart from some other modules which implement non-exported specific functions. Such + modules are totally independent from the implemented drivers, as well as every driver + independs from one another, unless there is an intentional dependency.</p> + + +<h3>Linking</h3> + + + <p>Since the drivers independ from one another, we could create a library for each of + them. For the drivers provided with CD it was easy to include them in their own library, + thus simplifying the application's linking process. Note: Internally, the drivers are + called "context".</p> + <p>In order to establish this dependency, when creating a canvas in a given driver the + user must specify the driver to be used. This specification is done by means of a macro + which is actually a function with no parameter, which passes the function table from that + driver to the canvas creation function. For instance:</p> + + <pre><b>CD_PS</b> <em>(is in fact)</em> cdContextPS() +cdCreateCanvas(<b>CD_PS</b>, "teste.ps"); <em>(will do)</em> canvas-><b>Line</b> = context-><b>Line</b></pre> +<p>If the context function is not invoqued then that driver does not need to be +linked with the application. This is usefull if the application uses a custom +build of the CD library and usefull for additional drivers not included in the +main library, like IUP and PDF, that have external dependencies.</p> + + + +<h3>Structures</h3> + + + <p>The core implementation defines the structures declared in the cd.h header. + But declares an undefined structure called cdCtxCanvas. This structure is + defined in each driver according to their needs. But the first member of this + structure must be a pointer to the cdCanvas structure.</p> + <p>The drivers need not to implement all functions from the function table, + only a few are required.</p> + <p>Here is the definition of the cdContext and cdCanvas structures: </p> + <table BORDER="1" CELLPADDING="5"> + <tr> + <td><pre>struct <b>_cdContext +</b>{ + unsigned long caps; + + /* can NOT be NULL */ + void (*CreateCanvas)(cdCanvas* canvas, void *data); + void (*InitTable)(cdCanvas* canvas); + + /* can be NULL */ + int (*Play)(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, void *data); + int (*RegisterCallback)(int cb, cdCallback func); +};</pre> + </td> + </tr> + <tr> + <td><pre>struct <b>_cdCanvas +</b>{ + ... + void (*Line)(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2); + void (*Rect)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax); + void (*Box)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax); + ... + + ... + int mark_type, mark_size; + int line_style, line_width; + int interior_style, hatch_style; + ... + + cdVectorFont* vector_font; + cdSimulation* simulation; + cdCtxCanvas* ctxcanvas; // context dependent defintion + cdContext* context; +};</pre> + </td> + </tr> + </table> + + + + <p>Internally each driver defines its cdCtxCanvas strcuture:</p> +<pre>struct _cdCtxCanvas +{ + cdCanvas* canvas; + + char* filename; + + int last_line_style; + int last_fill_mode; + FILE* file; +};</pre> +<p>Then it must implement the cdcreatecanvas and cdinittable functions:</p> +<pre>/* In the driver implementation file */ + +static void cdcreatecanvas(cdCanvas *canvas, void *data) +{ + cdCtxCanvas* ctxcanvas = (cdCtxCanvas *)malloc(sizeof(cdCtxCanvas)); + + // parse data parameters + ... + + ctxcanvas->canvas = canvas; + canvas->ctxcanvas = ctxcanvas; + + /* update canvas context */ + canvas->w = (int)(w_mm * res); + canvas->h = (int)(h_mm * res); + canvas->w_mm = w_mm; + canvas->h_mm = h_mm; + canvas->bpp = 24; + canvas->xres = res; + canvas->yres = res; +} + +static void cdinittable(cdCanvas* canvas) +{ + canvas->Flush = cdflush; + canvas->Clear = cdclear; + canvas->Pixel = cdpixel; + canvas->Line = cdline; + canvas->Poly = cdpoly; + ... + } + +static cdContext cdMetafileContext = +{ + CD_CAP_ALL & ~(CD_CAP_GETIMAGERGB|CD_CAP_IMAGESRV|CD_CAP_REGION|CD_CAP_FONTDIM|CD_CAP_TEXTSIZE), + cdcreatecanvas, + cdinittable, + cdplay, + cdregistercallback, +}; + +cdContext* cdContextMetafile(void) +{ + return &cdMetafileContext; +}</pre> +<p>To simplify driver administration, the context structure's linking is done as follows:</p> + + <pre>/* In the header file */ +#define <b>CD_METAFILE</b> <b><i>cdContextMetafile() +</i>cdContext</b>* <b><i>cdContextMetafile</i></b>(void) +</pre> + + + + +<h3>Attributes</h3> + + + <p>The query mechanism of an attribute is done in the core and does not + depends on the driver. Due to this fact, the attributes which are modified several times for the same + value are not updated in the drivers, thus saving processing. Similarly, if an attribute + modification in a driver was not successful, its value is not updated. Nevertheless, the + fact that a driver does not implement the attribute's modification function does not mean + that it rejects that attribute - the driver just does not need to do anything with this + attribute on that moment and will query it later, before drawing the primitive.</p> + <p>The creation of customized attributes for each driver is made generically, using + string-like attributes. A structure with the attribute's name and its <em>set</em> and <em>get</em> + functions must be declared, as in the example below:</p> + + <pre>static void set_fill_attrib(cdCtxCanvas* ctxcanvas, char* data) +{ + ctxcanvas->fill_attrib[0] = data[0]; +} + +static char* get_fill_attrib(cdCtxCanvas* ctxcanvas) +{ + return ctxcanvas->fill_attrib; +} + +static cdAttribute fill_attrib = +{ + "SIMPENFILLPOLY", + set_fill_attrib, + get_fill_attrib +}; </pre> + + <p>At <em>createcanvas</em> in the driver: </p> + + <pre>ctxcanvas->fill_attrib[0] = '1'; +ctxcanvas->fill_attrib[1] = 0; + +cdRegisterAttribute(canvas, &fill_attrib);</pre> + + <p>, for instance, must exist, thus initializing the attribute and registering it in the + canvas' attribute list.</p> + + +</body> +</html> diff --git a/html/en/prod.html b/html/en/prod.html new file mode 100644 index 0000000..391be97 --- /dev/null +++ b/html/en/prod.html @@ -0,0 +1,146 @@ +<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>CD</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h3><a name="Overview">Overview</a></h3> + + <p>CD is a platform-independent graphics library. It is implemented in several + platforms using native graphics libraries: Microsoft Windows (GDI and GDI+) + and X-Windows (XLIB). </p> + <p>The library contains functions to support both vector and image + applications, and the visualization surface can be either a canvas or a more + abstract surface, such as Clipboard, Metafile, PS, and so on.</p> + <p>To make the Application Programmers Interface (API) simple, all data are + standard C types (int, double or char). Thus the application program does not + have to maintain parallel data structures to deal with the graphic library. + </p> + <p>Furthermore, the list of parameters of the CD primitive functions contains + only the geometrical descriptions of the objects (line, circle, text, etc.). + Where these objects should appear and what is the their color, thickness, etc. + are defined as current state variables stored in the visualization surfaces. + That is, the library is visualization-surface oriented, meaning that all + attributes are stored in each visualization surface. </p> + <p>CD is free software, can be used for public and commercial applications.</p> + +<h3><a name="Availability">Availability</a></h3> + + <p>The library is available for several <strong>compilers</strong>:</p> + <ul> + <li>GCC and CC, in the UNIX environment</li> + <li>Visual C++, Borland C++, Watcom C++ and GCC (Cygwin and MingW), in the + Windows environment</li> + </ul> + <p>The library is available for several <strong>operating systems</strong>:</p> + <ul> + <li>UNIX (SunOS, IRIX, AIX, FreeBSD and Linux)</li> + <li>Microsoft Windows NT/2K/XP</li> + </ul> + +<h3><a name="Suport">Support</a></h3> + + <p>The official support mechanism is by e-mail, using <u> + <a href="mailto:cd@tecgraf.puc-rio.br?subject=[CD]"><b>cd</b></a></u><a href="mailto:cd@tecgraf.puc-rio.br?subject=[CD]"><u><b>@tecgraf.puc-rio.br</b></u></a>. Before sending your + message:</p> + <ul> + <li>Check if the reported behavior is not described in the user guide.</li> + <li>Check if the reported behavior is not described in the specific driver + characteristics.</li> + <li>Check the History to see if your version is updated.</li> + <li>Check the To Do list to see if your problem has already been reported.</li> + </ul> + <p>After all of the above have been checked, report the problem, including in + your message: <strong>function, element, driver, platform, and compiler.</strong></p> + <p>We host <b>CD</b> support features at <b><a href="http://luaforge.net/"> + LuaForge</a></b>. It provides us Lists, News, CVS and Files. The <b> + CD</b> page at <b>LuaForge</b> is available at: + <a target="_blank" href="http://luaforge.net/projects/cdlib/"> + http://luaforge.net/projects/cdlib/</a>.</p> + + <p align="left">The discussion list is available at: + <a href="http://lists.luaforge.net/mailman/listinfo/cdlib-users"> + http://lists.luaforge.net/mailman/listinfo/cdlib-users</a>.<br> + Source code, pre-compiled binaries and samples can be downloaded at: + <a href="http://luaforge.net/frs/?group_id=88"> + http://luaforge.net/frs/?group_id=88</a>.<br> + The CVS can be browsed at: <a href="http://luaforge.net/scm/?group_id=88"> + http://luaforge.net/scm/?group_id=88</a>.</p> + + <p>If you want us to develop a specific feature for the library, Tecgraf is + available for partnerships and cooperation. Please contact <u><b>tcg@tecgraf.puc-rio.br</b></u>.</p> + <p>Lua documentation and resources can be found at + <a href="http://www.lua.org/">http://www.lua.org/</a>.</p> + +<h3><a name="Acknowledgments">Credits</a></h3> + + <p>This work was developed at Tecgraf by means of the partnership with + PETROBRAS/CENPES.</p> + <p>Library Authors:</p> +<ul> + <li>Marcelo Gattass</li> + <li>Luiz Henrique de Figueiredo</li> + <li>Luiz Fernando Martha</li> + <li>Antonio Scuri</li> +</ul> + <p>Thanks to the people that worked and contributed to the library:</p> +<ul> + <li>Alexandre Ferreira<br> + <li>André Derraik</li> + <li>Camilo Freire</li> + <li>Carlos Augusto Mendes</li> + <li>Carlos Cassino</li> + <li>Carlos Henrique Levy</li> + <li>Carolina Alfaro</li> + <li>Danilo Tuler</li> + <li>Diego Fernandes Nehab</li> + <li>Erick de Moura Ferreira</li> + <li>Marcelo Cohen</li> + <li>Milton Jonathan</li> + <li>Pedro Miller</li> + <li>Rafael Rieder</li> + <li>Renato Borges</li> + <li>Vinicius da Silva Almendra</li> +</ul> + <p>We also thank the developers of the + <a target="_blank" href="http://www.freetype.org/">FreeType</a>, + <a href="http://www.ijg.org/">libJPEG</a> and + <a href="http://www.ssec.wisc.edu/~brianp/Mesa.html" target="_blank">Mesa</a> + libraries, for making the source code available, which helped us improve our + implementation of the Simulation driver and of the X-Windows driver. Thanks to + Alan Richardson for the XVertex rotines. Thanks to + Jason Perkins for the <a href="http://premake.sourceforge.net/">Premake</a> + tool.</p> + <p>The CD distribution includes the FreeType library, this is a third party + library not developed at Tecgraf. But its license is also free and have the + same freedom as the <a href="copyright.html">Tecgraf Library License</a>. You + can read the Free Type license and copyright in the file + <a href="freetype.txt">freetype.txt</a>. FreeType is copyright David Turner, + Robert Wilhelm, and Werner Lemberg.</p> +<p>Mesa X-Windows utilities source code copyright Brian Paul. libJPEG +quantization source code copyright Thomas G. Lane. XVertex rotines source code +copyright Alan Richardson.</p> +<p>CD is registered at the National Institute of Intellectual Property in Brazil +(INPI) under the number 07571-1, and so it is protected against illegal use. See +the <a href="copyright.html">Tecgraf Library License</a> for further usage +information and Copyright.</p> + +<h3><a name="About">Documentation</a></h3> + + <p>This library is available at + <a href="http://www.tecgraf.puc-rio.br/cd" target="_blank"> + http://www.tecgraf.puc-rio.br/cd</a>. </p> + <p>The full documentation can be downloaded from the <a href="download.html"> + Download Files</a>. The documentation is also available in Adobe Acrobat and Windows HTML Help formats.</p> + <p>The HTML navigation uses the WebBook tool, available at + <a href="http://www.tecgraf.puc-rio.br/webbook" target="_blank"> + http://www.tecgraf.puc-rio.br/webbook</a>.</p> + + +</body> + +</html> diff --git a/html/en/samples.html b/html/en/samples.html new file mode 100644 index 0000000..1759ddc --- /dev/null +++ b/html/en/samples.html @@ -0,0 +1,99 @@ +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<title>Samples</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Samples</h1> +<h3><a name="Simple Draw">Simple Draw</a></h3> + + <p>This is an example of a simple drawing program using a IUP canvas: </p> + + + + <pre>cdCanvas* canvas = cdCreateCanvas(CD_NATIVEWINDOW, IupGetAttribute(IupCanvas,"CONID")); <br>cdCanvasLineStyle(canvas, CD_DASHED);<br>cdCanvasLine(canvas, 0, 0, 100, 100);<br>cdCanvasKillCanvas(canvas);</pre> + + + + <p>If you want to use <a name="World Coordinates"><strong>World Coordinates</strong></a>: </p> + + + + <pre>cdCanvas* canvas = cdCreateCanvas(CD_NATIVEWINDOW, IupGetAttribute(IupCanvas,"CONID")); <br>wdCanvasViewport(canvas, 0, 100, 0, 100); <br>wdCanvasWindow(canvas, -1.5, 1.5, -3000, 3000); <br>cdCanvasLineStyle(canvas, CD_DASHED); <br>wdCanvasLine(canvas, -0.5, -500, 1.0, 1000); <br>cdKillCanvas(canvas);<code> </code></pre> + + +<h3><a name="Off Screen Drawing">Off Screen Drawing</a> (Double Buffering) </h3> + + <p>To draw in the background and later on transfer the drawing to the screen, use: </p> + + + + <pre>cdCanvas* canvas = cdCreateCanvas(CD_NATIVEWINDOW, IupGetAttribute(IupCanvas,"CONID")); <br>cdCanvas* db_canvas = cdCreateCanvas(CD_DBUFFER, canvas); cdCanvasActivate(db_canvas); // update canvas size, window could be resized<br>cdCanvasLineStyle(db_canvas, CD_DASHED); <br>cdCanvasLine(db_canvas, 10, 10, 50, 50); <br>cdCanvasFlush(db_canvas); // swap to the window canvas <br>cdKillCanvas(db_canvas); <br>cdKillCanvas(canvas); </pre> + + <p>To draw in a RGB image, use:</p> + + <pre><code>cdCanvas* canvas = cdCreateCanvasf(CD_IMAGERGB, "%dx%d", width, height); +</code>cd<code>Canvas</code>LineStyle(<code>canvas, </code>CD_DASHED); +cd<code>Canvas</code>Line(<code>canvas, </code>10, 10, 50, 50); +unsigned char* red = cdCanvasGetAttribute(canvas, "REDIMAGE"); +// do something with the raw image data +cdKillCanvas(canvas); +</pre> + + +<h3>Lua Samples</h3> + + <p>To draw in a RGB image in CDLua for Lua 5:</p> + + <pre>bitmap = cd.CreateBitmap(200,200,cd.RGB) +canvas = cd.CreateCanvas(cd.IMAGERGB, bitmap) +canvas:Font("Times", cd.BOLD, 12) +canvas:Text(10, 10, "Test") +canvas:KillCanvas()</pre> + + <p>Check the file <a href="../download/samples_cdlua5.zip">samples_cdlua5.zip</a> or <a href="../download/samples_cdlua5.tar.gz">samples_cdlua5.tar.gz</a> for several samples in Lua. + For some of them you will need also the IUP libraries. </p> + +<h3>Screen Capture in Windows</h3> + + <p>Using a NULL parameter to the NATIVEWINDOW driver you can get access to the entire screen:</p> + + <pre>cdCanvas *canvas = cdCreateCanvas(CD_NATIVEWINDOW, NULL); +cdCanvasGetSize(canvas, &width, &height, NULL, NULL); +// allocate red, green and blue pointers +cdCanvasGetImageRGB(canvas, red, green, blue, 0, 0, width, height); +cdKillCanvas(canvas);</pre> + + +<h3>Generating an EMF file that contains an IM Image in Lua</h3> + +<pre> +image = im.FileImageLoadBitmap(image_filename) +canvas = cd.CreateCanvas(cd.EMF,emf_filename.." "..image:Width().."x"..image:Height()) +image:cdCanvasPutImageRect(canvas,0,0,0,0) +cd.KillCanvas(canvas) +</pre> + + +<h3><a name="Complete Example">Complete Example</a></h3> + + <p>We have created an application called Simple Draw that illustrates the use of all functions in the CD library + (including WD). You can see the source code in the <a href="../download/simple.c">simple.c</a> file, or take the file + <a href="../download/simple.zip">simple.zip</a> for a complete set of files including makefiles for all platforms. + Extract the files creating subfolders, using parameter "<font face="Courier New">-d</font>".</p> + +<h3>Example for Tests</h3> + + <p>The <a href="../download/cdtest.zip">CDTEST</a> example is actually one of the applications used to test virtually + all functions of the CD library. Its interface uses the IUP library, and it can run in several platforms. You can take + either the .EXE files or the source code. Extract the files creating subfolders, using parameter "<font face="Courier New">-d</font>". + Warning: This application is not didactic. </p> + + +</body> + +</html> diff --git a/html/en/to_do.html b/html/en/to_do.html new file mode 100644 index 0000000..e2b7299 --- /dev/null +++ b/html/en/to_do.html @@ -0,0 +1,86 @@ +<!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=windows-1252"> +<title>To Do</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +<style type="text/css"> +.style1 { + color: #FF0000; +} +</style> +</head> + +<body> + +<h1>To Do</h1> +<h3>CD</h3> +<ul> + <li class="style1">A new GDK base driver.</li> + <li>A new SVG driver.</li> + <li>libEMF in UNIX.</li> +</ul> +<h3>MAC</h3> +<ul> + <li><font color="#008000">Build a native Mac OS X driver using Quartz 2D.</font></li> + <li>Macintosh Picture (PICT) file.</li> +</ul> +<h3>X-WIN</h3> +<ul> + <li>Xp: X Printer Extension driver</li> + <li>XShm: Double Buffering and MIT-Shared Memory extensions for server images ?</li> + <li>XIE: X Imaging Extensions ?</li> + <li>Shape Extension and XShapeCombineMask to implement "WINDOWRGN" attribute + (non rectangular windows from regions)</li> +</ul> +<h3>Simulation</h3> +<ul> + <li>Implement line styles, line cap and line join for line with > 1.</li> + <li>Improve Sector rasterization.</li> +</ul> +<h3>PS</h3> +<ul> + <li>Allow functions <b><font face="Courier New">cdPutImageMap</font>...</b> to be implemented using <em>indexed color + space</em>.</li> + <li>Check the possibility of <b><font face="Courier New">cdHatch</font></b> and <font face="Courier New"><b>cdStipple</b></font>, + which are always opaque, having transparency, using <em>shading </em>from PS Version 3 or <em>mask images</em>. Same for + <font face="Courier New"><b>cdPutImageRGBA</b></font>.</li> +</ul> +<hr> + + <h1 style="color: #FF0000">Not likely to be updated anymore, although they are still supported.</h1> + +<h3>DXF</h3> +<ul> + <li>Implement Arch and Sector functions as DXF primitives, and not as polygons. Update all other primitives according + to the new DXF manual, as there are several limitations in the current implementation.</li> +</ul> +<h3>CGM</h3> +<ul> + <li>Make <strong><font face="Courier New">cdPlay</font></strong> treat the possibility of <font face="Courier New"> + xmax</font> and <font face="Courier New">ymax</font> being 0.</li> + <li>Check the possibility of implementing function <b>cdTextOrientation</b>.</li> + <li>Implement World Coordinate functions directly in the driver.</li> + <li>Correct the <strong><font face="Courier New">cdPlay</font></strong> function, which is generating several extra + lines.</li> + <li>Correct the <strong><font face="Courier New">cdPlay</font></strong> function, which should not preserve the aspect + ratio.</li> + <li>Allow <strong><font face="Courier New">cdPutImageRGBA</font></strong> to be partially implemented using <em> + transparent cell color</em>.</li> +</ul> +<h3>DGN</h3> +<ul> + <li>Improve the driver using the DGNlib third party library.</li> + <li>Implement the interior style attributes: <i>hatch</i>, <i>stipple</i> and<i> pattern</i>. They depend on the new + DGN specification, which we do not have yet.</li> + <li>Check the possibility of implementing functions <font face="Courier New"><b>cdTextOrientation</b></font> and + <font face="Courier New"><b>cdRect</b></font>.</li> + <li>Correct function <font face="Courier New"><strong>cdKillCanvas</strong></font>, which generates "<em>assertion + failed</em>" when the library is used with debug information and the Seed file is not included.</li> +</ul> + +</body> + +</html>
\ No newline at end of file diff --git a/html/en/toolkits.html b/html/en/toolkits.html new file mode 100644 index 0000000..d80c7af --- /dev/null +++ b/html/en/toolkits.html @@ -0,0 +1,69 @@ +<!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>Other Toolkits</title> +<link rel="stylesheet" type="text/css" href="../style.css"> +</head> + +<body> + +<h1>Comparing CD with Other Graphics Libraries</h1> + + <p>There are other graphics libraries, with some portability among operational + systems, available on the Internet. Among them we can highlight:</p> + <ul> + <li><strong>GKS</strong> - Very complete 2D and 3D graphics library, but + with limited image resources. It is an ISO standard, and it implementations + are usually commercial. Tecgraf has an implementation of GKS which is no + longer used, being replaced by CD. <a href="http://www.bsi.org.uk/sc24/"> + http://www.bsi.org.uk/sc24/</a>.<br> + --------------------</li> + <li><strong>Mesa</strong> - 3D graphics library with support to the OpenGL + standard. Implemented in C. Aimed only at display, with attribute functions + for illumination and shading features. + <a href="http://www.mesa3d.org/" target="_blank">http://www.mesa3d.org/</a>.</li> + <li><strong>OpenGL</strong> - 3D graphics library with some 2D support. + Aimed only at display. A window CD canvas can coexist with an OpenGL canvas + at the same time. Note: When Double Buffer is used, do not forget to swap + buffer before redrawing with the CD library. <a href="http://www.opengl.org"> + http://www.opengl.org</a>.<br> + --------------------</li> + <li><strong>GGI</strong> - 2D graphics library aimed only at display. + <a href="http://www.ggi-project.org/">http://www.ggi-project.org/</a>.</li> + <li><strong>GD</strong> - Library only for drawing on images, saves PNG + files. Implemented in C. <a href="http://www.boutell.com/gd/"> + http://www.boutell.com/gd/</a>.</li> + <li><strong>GDK</strong> - Used by the GTK user interface toolkit. + Implemented in C. Aimed only at display, and contains several functions for + managing windows, keyboard and mouse. <a href="http://www.gtk.org/"> + http://www.gtk.org/</a>.</li> + <li><b>CAIRO</b> - A vector graphics library designed to provide + high-quality display and print output. Very interesting, lots of functions, + usually render in bitmaps on native systems. Display hardware acceleration is used + almost only to display the bitmaps. Although it can reach high quality + rendering. + <a href="http://cairographics.org/">http://cairographics.org/</a>.</li> + <li><strong>AGG</strong> - The AGG Project (Anti-Grain Geometry). High + Fidelity 2D Graphics A High Quality Rendering Engine for C++. Renders to a + bitmap then transfer it to the native system, just like Cairo. GNU GPL + license. <a href="http://www.antigrain.com/">http://www.antigrain.com/</a> </li> + </ul> + <p>Most of them are aimed only at one type of driver, usually display or + images, and sometimes user interface routines were also included. Others add + 3D drawing routines, as well as scene illumination routines. All this + unnecessarily increases their complexity and does not make them more complete + as 2D graphic libraries.</p> + <p>There are also several Graphics User Interface libraries that contain + drawing functions, like Qt and wxWidgets. </p> + <p>As to performance, CD is as good as any other, in some cases having a + better performance. Thus, the CD library offers unique features and quality as + a portable 2D graphic library.</p> + + +</body> + +</html> |