summaryrefslogtreecommitdiff
path: root/html
diff options
context:
space:
mode:
Diffstat (limited to 'html')
-rw-r--r--html/download/.cvsignore4
-rw-r--r--html/download/cdtest.zipbin0 -> 40518 bytes
-rw-r--r--html/download/cdxx.c49
-rw-r--r--html/download/cdxx.h16
-rw-r--r--html/download/samples_cdlua5.tar.gzbin0 -> 2324 bytes
-rw-r--r--html/download/samples_cdlua5.zipbin0 -> 3799 bytes
-rw-r--r--html/download/simple.c717
-rw-r--r--html/download/simple.zipbin0 -> 12690 bytes
-rw-r--r--html/en/canvas.html47
-rw-r--r--html/en/cdlua.html117
-rw-r--r--html/en/cdluaim.html54
-rw-r--r--html/en/copyright.html45
-rw-r--r--html/en/cvs.html22
-rw-r--r--html/en/download.html30
-rw-r--r--html/en/download_tips.html363
-rw-r--r--html/en/drv.html25
-rw-r--r--html/en/drv/cgm.html184
-rw-r--r--html/en/drv/clipbd.html68
-rw-r--r--html/en/drv/dbuf.html71
-rw-r--r--html/en/drv/dbufrgb.html60
-rw-r--r--html/en/drv/debug.html64
-rw-r--r--html/en/drv/dgn.html161
-rw-r--r--html/en/drv/dxf.html180
-rw-r--r--html/en/drv/emf.html84
-rw-r--r--html/en/drv/gdiplus.html200
-rw-r--r--html/en/drv/image.html57
-rw-r--r--html/en/drv/irgb.html117
-rw-r--r--html/en/drv/iup.html65
-rw-r--r--html/en/drv/mf.html80
-rw-r--r--html/en/drv/native.html91
-rw-r--r--html/en/drv/pdf.html227
-rw-r--r--html/en/drv/picture.html81
-rw-r--r--html/en/drv/printer.html83
-rw-r--r--html/en/drv/ps.html208
-rw-r--r--html/en/drv/sim.html90
-rw-r--r--html/en/drv/win32.html137
-rw-r--r--html/en/drv/wmf.html116
-rw-r--r--html/en/drv/xrender.html152
-rw-r--r--html/en/drv/xwin.html129
-rw-r--r--html/en/freetype.txt169
-rw-r--r--html/en/func/attributes.html49
-rw-r--r--html/en/func/client.html255
-rw-r--r--html/en/func/clipping.html62
-rw-r--r--html/en/func/color.html137
-rw-r--r--html/en/func/control.html63
-rw-r--r--html/en/func/coordinates.html148
-rw-r--r--html/en/func/filled.html272
-rw-r--r--html/en/func/init.html225
-rw-r--r--html/en/func/lines.html147
-rw-r--r--html/en/func/marks.html85
-rw-r--r--html/en/func/other.html119
-rw-r--r--html/en/func/polygon.html87
-rw-r--r--html/en/func/region.html83
-rw-r--r--html/en/func/server.html84
-rw-r--r--html/en/func/text.html192
-rw-r--r--html/en/func/vectortext.html133
-rw-r--r--html/en/func/wd.html80
-rw-r--r--html/en/guide.html161
-rw-r--r--html/en/history.html932
-rw-r--r--html/en/home.html32
-rw-r--r--html/en/internal.html207
-rw-r--r--html/en/prod.html146
-rw-r--r--html/en/samples.html99
-rw-r--r--html/en/to_do.html86
-rw-r--r--html/en/toolkits.html69
-rw-r--r--html/img/align.gifbin0 -> 4456 bytes
-rw-r--r--html/img/arc.gifbin0 -> 1633 bytes
-rw-r--r--html/img/bezier.gifbin0 -> 1404 bytes
-rw-r--r--html/img/chord.gifbin0 -> 1644 bytes
-rw-r--r--html/img/fillmode.gifbin0 -> 1997 bytes
-rw-r--r--html/img/font_dim.gifbin0 -> 2322 bytes
-rw-r--r--html/img/font_style.gifbin0 -> 892 bytes
-rw-r--r--html/img/fonts.gifbin0 -> 1820 bytes
-rw-r--r--html/img/hatch.gifbin0 -> 2383 bytes
-rw-r--r--html/img/linecap.gifbin0 -> 1779 bytes
-rw-r--r--html/img/linejoin.gifbin0 -> 1530 bytes
-rw-r--r--html/img/lines.gifbin0 -> 720 bytes
-rw-r--r--html/img/marks.gifbin0 -> 1226 bytes
-rw-r--r--html/img/opacity.gifbin0 -> 2640 bytes
-rw-r--r--html/img/polygon.gifbin0 -> 2065 bytes
-rw-r--r--html/img/regions.gifbin0 -> 4010 bytes
-rw-r--r--html/img/sector.gifbin0 -> 1659 bytes
-rw-r--r--html/img/vector_text.gifbin0 -> 1381 bytes
-rw-r--r--html/img/vectorfont_default.pngbin0 -> 65900 bytes
-rw-r--r--html/img/vectorfont_simplex2.pngbin0 -> 65499 bytes
-rw-r--r--html/img/wc-dc.gifbin0 -> 2974 bytes
-rw-r--r--html/index.html28
-rw-r--r--html/logo.gifbin0 -> 1551 bytes
-rw-r--r--html/ssSearch.classbin0 -> 5109 bytes
-rw-r--r--html/ssSearch.html22
-rw-r--r--html/ssSearchThread.classbin0 -> 3108 bytes
-rw-r--r--html/style.css118
-rw-r--r--html/wb/.cvsignore2
-rw-r--r--html/wb/make_hh.lua274
-rw-r--r--html/wb/template_index.html28
-rw-r--r--html/wb/template_ssSearch.html22
-rw-r--r--html/wb/template_wb_bar.html26
-rw-r--r--html/wb/template_wb_title.html64
-rw-r--r--html/wb/template_wb_tree.html220
-rw-r--r--html/wb/wb2hh.bat29
-rw-r--r--html/wb/wb_build.bat1
-rw-r--r--html/wb/wb_build.lua364
-rw-r--r--html/wb/wb_usr.lua1043
-rw-r--r--html/wb_bar.html26
-rw-r--r--html/wb_img/barlineleft.pngbin0 -> 169 bytes
-rw-r--r--html/wb_img/barlineright.pngbin0 -> 165 bytes
-rw-r--r--html/wb_img/blank.pngbin0 -> 219 bytes
-rw-r--r--html/wb_img/google.gifbin0 -> 1468 bytes
-rw-r--r--html/wb_img/hideall.pngbin0 -> 204 bytes
-rw-r--r--html/wb_img/hideall_over.pngbin0 -> 294 bytes
-rw-r--r--html/wb_img/lng_en.pngbin0 -> 280 bytes
-rw-r--r--html/wb_img/lng_en_over.pngbin0 -> 288 bytes
-rw-r--r--html/wb_img/lng_es.pngbin0 -> 293 bytes
-rw-r--r--html/wb_img/lng_es_over.pngbin0 -> 298 bytes
-rw-r--r--html/wb_img/lng_pt.pngbin0 -> 296 bytes
-rw-r--r--html/wb_img/lng_pt_over.pngbin0 -> 300 bytes
-rw-r--r--html/wb_img/minusnode.pngbin0 -> 227 bytes
-rw-r--r--html/wb_img/minusnodelast.pngbin0 -> 223 bytes
-rw-r--r--html/wb_img/next.pngbin0 -> 330 bytes
-rw-r--r--html/wb_img/next_over.pngbin0 -> 334 bytes
-rw-r--r--html/wb_img/node.pngbin0 -> 248 bytes
-rw-r--r--html/wb_img/nodelast.pngbin0 -> 248 bytes
-rw-r--r--html/wb_img/plusnode.pngbin0 -> 231 bytes
-rw-r--r--html/wb_img/plusnodelast.pngbin0 -> 227 bytes
-rw-r--r--html/wb_img/previous.pngbin0 -> 330 bytes
-rw-r--r--html/wb_img/previous_over.pngbin0 -> 336 bytes
-rw-r--r--html/wb_img/sepblank.pngbin0 -> 209 bytes
-rw-r--r--html/wb_img/sepnode.pngbin0 -> 264 bytes
-rw-r--r--html/wb_img/sepvertline.pngbin0 -> 233 bytes
-rw-r--r--html/wb_img/showall.pngbin0 -> 220 bytes
-rw-r--r--html/wb_img/showall_over.pngbin0 -> 328 bytes
-rw-r--r--html/wb_img/sync.pngbin0 -> 288 bytes
-rw-r--r--html/wb_img/sync_over.pngbin0 -> 348 bytes
-rw-r--r--html/wb_img/title_background.pngbin0 -> 2700 bytes
-rw-r--r--html/wb_img/vertline.pngbin0 -> 240 bytes
-rw-r--r--html/wb_img/webbook.pngbin0 -> 608 bytes
-rw-r--r--html/wb_img/webbook_over.pngbin0 -> 612 bytes
-rw-r--r--html/wb_search.txt56
-rw-r--r--html/wb_title.html64
-rw-r--r--html/wb_tree.html543
140 files changed, 11246 insertions, 0 deletions
diff --git a/html/download/.cvsignore b/html/download/.cvsignore
new file mode 100644
index 0000000..5be812c
--- /dev/null
+++ b/html/download/.cvsignore
@@ -0,0 +1,4 @@
+*.chm
+*.pdf
+gdiplus.*
+PDFlib-license.pdf
diff --git a/html/download/cdtest.zip b/html/download/cdtest.zip
new file mode 100644
index 0000000..c46f356
--- /dev/null
+++ b/html/download/cdtest.zip
Binary files differ
diff --git a/html/download/cdxx.c b/html/download/cdxx.c
new file mode 100644
index 0000000..ff6a132
--- /dev/null
+++ b/html/download/cdxx.c
@@ -0,0 +1,49 @@
+/*
+ Canvas Draw - CD_XX Driver
+*/
+
+#include "cd.h"
+#include "cdxx.h"
+#include "cd_private.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <memory.h>
+
+
+struct _cdCtxCanvas
+{
+ cdCanvas* canvas;
+};
+
+
+static void cdkillcanvas(cdCtxCanvas *ctxcanvas)
+{
+ free(ctxcanvas);
+}
+
+static void cdcreatecanvas(cdCanvas *canvas, void *data)
+{
+ cdCtxCanvas* ctxcanvas = (cdCtxCanvas *)malloc(sizeof(cdCtxCanvas));
+
+ ctxcanvas->canvas = canvas;
+ canvas->ctxcanvas = ctxcanvas;
+}
+
+static void cdinittable(cdCanvas* canvas)
+{
+ canvas->KillCanvas = cdkillcanvas;
+}
+
+static cdContext cdXXContext =
+{
+ 0,
+ cdcreatecanvas,
+ cdinittable,
+ NULL,
+ NULL,
+};
+
+cdContext* cdContextXX(void)
+{
+ return &cdXXContext;
+}
diff --git a/html/download/cdxx.h b/html/download/cdxx.h
new file mode 100644
index 0000000..e87ac51
--- /dev/null
+++ b/html/download/cdxx.h
@@ -0,0 +1,16 @@
+#ifndef __CD_XX_H
+#define __CD_XX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+cdContext* cdContextXX(void);
+
+#define CD_XX cdContextXX()
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/html/download/samples_cdlua5.tar.gz b/html/download/samples_cdlua5.tar.gz
new file mode 100644
index 0000000..f52bbe2
--- /dev/null
+++ b/html/download/samples_cdlua5.tar.gz
Binary files differ
diff --git a/html/download/samples_cdlua5.zip b/html/download/samples_cdlua5.zip
new file mode 100644
index 0000000..126474b
--- /dev/null
+++ b/html/download/samples_cdlua5.zip
Binary files differ
diff --git a/html/download/simple.c b/html/download/simple.c
new file mode 100644
index 0000000..ba5faf9
--- /dev/null
+++ b/html/download/simple.c
@@ -0,0 +1,717 @@
+/*
+
+ Simple Draw Application
+
+ Shows the same picture on several canvas. Used to quick test the CD library and
+ to demonstrate the use of CD library functions.
+
+ This module uses only the CD library, there is another module to initialize the Window and its menus.
+
+*/
+
+
+#include "cd.h"
+#include "cdnative.h"
+#include "cdcgm.h"
+#include "cddgn.h"
+#include "cddxf.h"
+#include "cdclipbd.h"
+#include "cdemf.h"
+#include "cdimage.h"
+#include "cdirgb.h"
+#include "cdmf.h"
+#include "cdprint.h"
+#include "cdps.h"
+#include "cdwmf.h"
+
+#include "simple.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+#include <string.h>
+
+/* A small pattern and stipple size */
+#define SIZE 20
+
+/* Global variables */
+
+cdCanvas *myCanvas = NULL; /* The window drawing canvas */
+cdContext* simple_drv = NULL; /* The window driver */
+char* simple_data = NULL; /* The window driver data */
+
+int clipping; /* Clipping flag, same as the CD */
+int write_mode; /* Write Mode flag, same as the CD */
+
+long pattern[SIZE*SIZE]; /* Pattern buffer */
+unsigned char stipple[SIZE*SIZE]; /* Stipple buffer */
+unsigned char red[100*100]; /* Red image buffer */
+unsigned char green[100*100]; /* Green image buffer */
+unsigned char blue[100*100]; /* Blue image buffer */
+unsigned char alpha[100*100]; /* Alpha image buffer */
+
+
+/* Prototype of the function that makes the drawing independent of canvas. */
+void SimpleDraw(void);
+
+
+void SimpleCreateCanvas(cdContext* drv, char* data)
+{
+ int c, l;
+
+ simple_drv = drv;
+ simple_data = data;
+
+ /* creates the canvas based in an existing window */
+ myCanvas = cdCreateCanvas(drv, data);
+ clipping = CD_CLIPOFF;
+ write_mode = CD_REPLACE;
+
+ /* initialize the pattern buffer with a grey degrade */
+ for (l = 0; l < SIZE; l++)
+ for (c = 0; c < SIZE; c++)
+ {
+ unsigned char gray = (unsigned char)((l * 255) / (SIZE - 1));
+ pattern[l*20 + c] = cdEncodeColor(gray, gray, gray);
+ }
+
+ /* initialize the stipple buffer with cross pattern */
+ for (l = 0; l < SIZE; l++)
+ for (c = 0; c < SIZE; c++)
+ stipple[l*SIZE + c] = (c % 4) == 0? 1: 0;
+
+ /* initialize the alpha image buffer with a degrade from transparent to opaque */
+ for (l = 0; l < 100; l++)
+ for (c = 0; c < 100; c++)
+ alpha[l*100 + c] = (unsigned char)c;
+}
+
+int SimplePlayClipboard(void)
+{
+ /* interprets the contents of the clipboard */
+ int w, h;
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_CLIPBOARD, 100, w-100, 100, h-100, NULL);
+ return 0;
+}
+
+int SimplePlayCGMBin(void)
+{
+ /* interprets the contents of the CGM file */
+ int w, h;
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_CGM, 100, w-100, 100, h-100, "simple_b.cgm");
+ return 0;
+}
+
+
+int SimplePlayCGMText(void)
+{
+ /* interprets the contents of the CGM file */
+ int w, h;
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_CGM, 100, w-100, 100, h-100, "simple_t.cgm");
+ return 0;
+}
+
+
+int SimplePlayMetafile(void)
+{
+ int w, h;
+ /* interprets the contents of the CD Metafile */
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_METAFILE, 100, w-100, 100, h-100, "simple.cdmf");
+ return 0;
+}
+
+int SimplePlayWMF(void)
+{
+ int w, h;
+ /* interprets the contents of the WMF file */
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_WMF, 100, w-100, 100, h-100, "simple.wmf");
+ return 0;
+}
+
+int SimplePlayEMF(void)
+{
+ int w, h;
+ /* interprets the contents of the EMF file */
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdGetCanvasSize(&w, &h, 0, 0);
+ cdPlay(CD_EMF, 100, w-100, 100, h-100, "simple.emf");
+ return 0;
+}
+
+int SimpleDrawWindow(void)
+{
+ /* draws in the window */
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleDrawCGMText(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple_t.cgm %gx%g 1 -t", (double)w, (double)h);
+
+ /* draws in the CGM file */
+ tmpCanvas = cdCreateCanvas(CD_CGM, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawCGMBin(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple_b.cgm %gx%g", (double)w, (double)h);
+
+ /* draws in the CGM file */
+ tmpCanvas = cdCreateCanvas(CD_CGM, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawDXF(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple.dxf %gx%g", (double)w, (double)h);
+
+ /* draws in the DXF file */
+ tmpCanvas = cdCreateCanvas(CD_DXF, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawDGN(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple.dgn %gx%g", (double)w, (double)h);
+
+ /* draws in the DGN file */
+ tmpCanvas = cdCreateCanvas(CD_DGN, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawEMF(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple.emf %dx%d", w, h);
+
+ /* draws in the EMF file */
+ tmpCanvas = cdCreateCanvas(CD_EMF, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawMetafile(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple.cdmf %gx%g", (double)w, (double)h);
+
+ /* draws in the CD Metafile */
+ tmpCanvas = cdCreateCanvas(CD_METAFILE, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawPS(void)
+{
+ /* draws in the PS file */
+ cdCanvas* tmpCanvas = cdCreateCanvas(CD_PS, "simple.ps");
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawEPS(void)
+{
+ /* draws in the EPS file */
+ cdCanvas* tmpCanvas = cdCreateCanvas(CD_PS, "simple.eps -e");
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawWMF(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "simple.wmf %dx%d", w, h);
+
+ /* draws in the WMF file */
+ tmpCanvas = cdCreateCanvas(CD_WMF, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawPrint(void)
+{
+ /* draws in the Printer canvas */
+ cdCanvas* tmpCanvas = cdCreateCanvas(CD_PRINTER, "simple");
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawPrintDialog(void)
+{
+ /* draws in the Printer canvas, but first shows the printer dialog */
+ cdCanvas* tmpCanvas = cdCreateCanvas(CD_PRINTER, "simple -d");
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawClipboardBitmap(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "%dx%d -b", w, h);
+
+ /* draws in the CLipboard canvas as a bitmap */
+ tmpCanvas = cdCreateCanvas(CD_CLIPBOARD, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawClipboardMetafile(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "%dx%d -m", w, h);
+
+ /* draws in the CLipboard canvas as a metafile */
+ tmpCanvas = cdCreateCanvas(CD_CLIPBOARD, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleDrawClipboardWMFEMF(void)
+{
+ char StrData[100];
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+ sprintf(StrData, "%dx%d", w, h);
+
+ /* draws in the CLipboard canvas as a metafile */
+ tmpCanvas = cdCreateCanvas(CD_CLIPBOARD, StrData);
+ if (tmpCanvas == NULL) return 0;
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+ return 0;
+}
+
+int SimpleReplace(void)
+{
+ write_mode = CD_REPLACE;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleXor(void)
+{
+ write_mode = CD_XOR;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleNotXor(void)
+{
+ write_mode = CD_NOT_XOR;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleClippingOff(void)
+{
+ clipping = CD_CLIPOFF;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleClippingArea(void)
+{
+ clipping = CD_CLIPAREA;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleClippingPolygon(void)
+{
+ clipping = CD_CLIPPOLYGON;
+ cdActivate(myCanvas);
+ SimpleDraw();
+ return 0;
+}
+
+int SimpleDrawImage(void)
+{
+ void* myImage;
+ int w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+
+ myImage = cdCreateImage(w, h);
+ if (myImage == NULL) return 0;
+
+ /* draws in the Server Image canvas */
+ tmpCanvas = cdCreateCanvas(CD_IMAGE, myImage);
+ if (tmpCanvas == NULL)
+ {
+ cdKillImage(myImage);
+ return 0;
+ }
+
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+
+ /* transfer the contents of the image to the window canvas */
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdPutImage(myImage, 0, 0);
+
+ cdKillImage(myImage);
+ return 0;
+}
+
+int SimpleDrawImageRGB(void)
+{
+ char StrData[100];
+ unsigned char *r, *g, *b;
+ int size, w, h;
+ cdCanvas* tmpCanvas;
+ cdActivate(myCanvas);
+ cdGetCanvasSize(&w, &h, 0, 0);
+
+ size = w * h;
+ r = (unsigned char*)malloc(size);
+ if (r == NULL) return 0;
+
+ g = (unsigned char*)malloc(size);
+ if (g == NULL)
+ {
+ free(g);
+ return 0;
+ }
+
+ b = (unsigned char*)malloc(size);
+ if (b == NULL)
+ {
+ free(r);
+ free(g);
+ return 0;
+ }
+
+ sprintf(StrData, "%dx%d %p %p %p", w, h, r, g, b);
+
+ /* draws in the Client Image canvas */
+ tmpCanvas = cdCreateCanvas(CD_IMAGERGB, StrData);
+ if (tmpCanvas == NULL)
+ {
+ free(r);
+ free(g);
+ free(b);
+ return 0;
+ }
+
+ cdActivate(tmpCanvas);
+ SimpleDraw();
+ cdKillCanvas(tmpCanvas);
+
+ /* transfer the contents of the image to the window canvas */
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+ cdPutImageRGB(w, h, r, g, b, 0, 0, w, h);
+
+ free(r);
+ free(g);
+ free(b);
+ return 0;
+}
+
+int SimpleDrawSimulate(void)
+{
+ cdActivate(myCanvas);
+ cdBackground(CD_WHITE);
+ cdClear();
+
+ cdSimulate(CD_SIM_ALL);
+
+ SimpleDraw();
+
+ cdSimulate(CD_SIM_NONE);
+
+ return 0;
+}
+
+void SimpleKillCanvas(void)
+{
+ if (myCanvas != NULL)
+ {
+ cdKillCanvas(myCanvas);
+ myCanvas = NULL;
+ }
+}
+
+
+static void SimpleDraw(void)
+{
+ int w, h;
+
+ cdGetCanvasSize(&w, &h, 0, 0);
+
+ switch(clipping)
+ {
+ case CD_CLIPOFF:
+ cdClip(CD_CLIPOFF);
+ break;
+ case CD_CLIPAREA:
+ /* Defines the clipping area equals the canvas area minus a 100 pixels margin. */
+ cdClipArea(100, w - 100, 100, h - 100);
+ cdClip(CD_CLIPAREA);
+ break;
+ case CD_CLIPPOLYGON:
+ cdBegin(CD_CLIP);
+ cdVertex(100, 100);
+ cdVertex(w - 100, 100);
+ cdVertex(w / 2, h - 100);
+ cdEnd();
+ cdClip(CD_CLIPPOLYGON);
+ break;
+ }
+
+ switch(write_mode)
+ {
+ case CD_REPLACE:
+ cdWriteMode(CD_REPLACE);
+ break;
+ case CD_XOR:
+ cdWriteMode(CD_XOR);
+ break;
+ case CD_NOT_XOR:
+ cdWriteMode(CD_NOT_XOR);
+ break;
+ }
+
+ /* Clear the background to be white */
+ cdInteriorStyle(CD_SOLID);
+ cdBackground(CD_WHITE);
+ cdClear();
+
+ cdForeground(CD_RED);
+ cdLineWidth(1);
+ cdLineStyle(CD_DASHED);
+ cdLine(0, 0, w, h);
+
+ cdForeground(CD_BLUE);
+ cdLineWidth(10);
+ cdLineStyle(CD_DOTTED);
+ cdLine(0, h, w, 0);
+
+ cdLineStyle(CD_CONTINUOUS);
+ cdLineWidth(1);
+
+ cdForeground(CD_GREEN);
+ cdArc(100, 100, 100, 100, 0, 180);
+ cdSector(w - 100, 100, 100, 100, 0, 180);
+
+ cdForeground(CD_YELLOW);
+ cdBox(w/2 - 100, w/2 + 100, h/2 - 100, h/2 + 100);
+
+ /* transparent text */
+ cdForeground(CD_BLUE);
+ cdBackOpacity(CD_TRANSPARENT);
+ cdTextAlignment(CD_CENTER);
+ cdFont(CD_TIMES_ROMAN, CD_BOLD, 24);
+ cdText(w/2, h/2, "Simple Draw");
+
+ /* draws all the mark type possibilities */
+ cdForeground(CD_RED);
+ cdMarkSize(30);
+ cdMarkType(CD_PLUS);
+ cdMark(200, 200);
+ cdMarkType(CD_CIRCLE);
+ cdMark(w - 200, 200);
+ cdMarkType(CD_HOLLOW_CIRCLE);
+ cdMark(200, h - 200);
+ cdMarkType(CD_DIAMOND);
+ cdMark(w - 200, h - 200);
+
+ /* draws all the line style possibilities */
+ cdLineWidth(1);
+ cdLineStyle(CD_CONTINUOUS);
+ cdLine(0, 10, w, 10);
+ cdLineStyle(CD_DASHED);
+ cdLine(0, 20, w, 20);
+ cdLineStyle(CD_DASH_DOT);
+ cdLine(0, 30, w, 30);
+ cdLineStyle(CD_DASH_DOT_DOT);
+ cdLine(0, 40, w, 40);
+
+ /* draws all the hatch style possibilities */
+ cdInteriorStyle(CD_HATCH);
+ cdHatch(CD_VERTICAL);
+ cdBox(0, 50, h - 60, h);
+ cdHatch(CD_FDIAGONAL);
+ cdBox(50, 100, h - 60, h);
+ cdHatch(CD_BDIAGONAL);
+ cdBox(100, 150, h - 60, h);
+ cdHatch(CD_CROSS);
+ cdBox(150, 200, h - 60, h);
+ cdHatch(CD_HORIZONTAL);
+ cdBox(200, 250, h - 60, h);
+ cdHatch(CD_DIAGCROSS);
+ cdBox(250, 300, h - 60, h);
+
+ /* closed polygon */
+ cdBegin(CD_CLOSED_LINES);
+ cdVertex(w/2, h - 100);
+ cdVertex(w/2 + 50, h - 150);
+ cdVertex(w/2, h - 200);
+ cdVertex(w/2 - 50, h - 150);
+ cdEnd();
+
+ /* hatch filled polygon */
+ cdInteriorStyle(CD_HATCH);
+ cdHatch(CD_DIAGCROSS);
+
+ cdBegin(CD_FILL);
+ cdVertex(100, h/2);
+ cdVertex(150, h/2 + 50);
+ cdVertex(200, h/2);
+ cdVertex(150, h/2 - 50);
+ cdEnd();
+
+ /* pattern filled polygon */
+ cdInteriorStyle(CD_PATTERN);
+ cdPattern(SIZE, SIZE, pattern);
+
+ cdBegin(CD_FILL);
+ cdVertex(w - 100, h/2);
+ cdVertex(w - 150, h/2 + 50);
+ cdVertex(w - 200, h/2);
+ cdVertex(w - 150, h/2 - 50);
+ cdEnd();
+
+ /* stipple filled polygon */
+ cdInteriorStyle(CD_STIPPLE);
+ cdStipple(SIZE, SIZE, stipple);
+
+ cdBegin(CD_FILL);
+ cdVertex(w/2, 100);
+ cdVertex(w/2 + 50, 150);
+ cdVertex(w/2, 200);
+ cdVertex(w/2 - 50, 150);
+ cdEnd();
+
+
+ /* always clear the image buffer contents */
+ memset(red, 0xFF, 100*100);
+ memset(green, 0xFF, 100*100);
+ memset(blue, 0xFF, 100*100);
+
+ cdGetImageRGB(red, green, blue, w - 200, 100, 100, 100);
+ cdPutImageRGB(100, 100, red, green, blue, 100, h - 200, 100, 100);
+ cdPutImageRGBA(100, 100, red, green, blue, alpha, w - 300, h - 300, 200, 200);
+}
+
diff --git a/html/download/simple.zip b/html/download/simple.zip
new file mode 100644
index 0000000..8d06244
--- /dev/null
+++ b/html/download/simple.zip
Binary files differ
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>&nbsp; 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 &lt;lua.h&gt;
+#include &lt;lualib.h&gt;
+#include &lt;lauxlib.h&gt;
+<b><font color="#FF0000">#include &lt;cdlua.h&gt;</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(&quot;myprog.lua&quot;);
+
+ <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 &quot;loadlib&quot; 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(&quot;cdlua51.dll&quot;, &quot;cdlua_open&quot;)
+cdlua_open()</pre>
+<p><strong>Lua</strong> 5.1 &quot;require&quot; can be used for all the <strong>
+CDLua</strong>
+libraries. You can use <b>require</b>&quot;<b>cdlua</b>&quot; 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>&quot;<b>cd</b>&quot;
+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 &quot;cd&quot; all the functions and definitions have their names prefix changed. The
+ general rule is quite simple:</p>
+
+ <pre>cdXxx -&gt; cd.Xxx
+wdXxx -&gt; cd.wXxx
+CD_XXX -&gt; 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.&nbsp;All the
+ metatables have the &quot;tostring&quot; 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 &quot;cdlua.h&quot;:</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&quot;cdluaim&quot; 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() -&gt; image: imImage [in Lua]
+</pre>
+<p>Creates an imImage from a cdBitmap.</p>
+<pre class="function">image:cdCreateBitmap() -&gt; bitmap: cdBitmap [in Lua]</pre>
+<p>Creates a cdBitmap from an imImage. The imImage must be a bitmap image, see
+&quot;image:<strong>IsBitmap</strong>&quot;. </p>
+<pre class="function">image:cdInitBitmap() -&gt; 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>&nbsp;&nbsp;&nbsp; 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]) -&gt; canvas: cdCanvas [in Lua] </pre>
+ <p>&nbsp;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 &quot;copyleft&quot; 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 &quot;Software&quot;), 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 &quot;AS IS&quot;, 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>&nbsp;
+</p>
+<p>Current version can be obtained from module &quot;cd&quot;.</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
+ &quot;config.mak&quot; 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 &quot;uname -a&quot;. 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 &quot;cc&quot;. Binaries for 64-bits receive the suffix: &quot;_64&quot;. 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: &quot;g3&quot; for gcc 3 and &quot;g4&quot; 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 &quot;_bin&quot; 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) &quot;-I/mylibs/iup/include&quot; to find include files
+2) &quot;-L/mylibs/iup/lib/Linux26&quot; to find library files
+3) &quot;-liup&quot; 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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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&nbsp; </b></td>
+ <td bgcolor="#DDDDDD">&nbsp;Red Hat E.L. WS 3 (x64)&nbsp; (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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;Microsoft Visual C++ 6 (static RTL/single thread)</td>
+ </tr>
+ <tr>
+ <td bgcolor="#DDDDDD" align="right"><b>Win32_vc7</b></td>
+ <td bgcolor="#DDDDDD">&nbsp;Microsoft Visual C++ 7.1 (.NET 2003) (static RTL/single thread)<br>
+ &nbsp;Also compatible with Microsoft Visual C++ Toolkit 2003 -<br>
+ &nbsp;<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">&nbsp;Microsoft Visual C++ 8.0 (2005) (static RTL/multithread)<br>
+ &nbsp;Also compatible with Microsoft Visual C++ 2005 Express Edition -<br>
+ &nbsp;<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">&nbsp;Microsoft Visual C++ 9.0 (2008) (static RTL/multithread)<br>
+ &nbsp;Also compatible with Microsoft Visual C++ 2008 Express Edition -<br>
+ &nbsp;<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">&nbsp;built using vc6, creates dependency with MSVCRT.DLL<br>
+ &nbsp;(either other libraries or new applications).</td>
+ </tr>
+ <tr>
+ <td bgcolor="#C0C0C0" align="right"><b>Win32_dll7</b></td>
+ <td bgcolor="#C0C0C0">&nbsp;built using vc7, creates dependency with MSVCR71.DLL<br>
+ &nbsp;(either other libraries or new applications).</td>
+ </tr>
+ <tr>
+ <td bgcolor="#C0C0C0" align="right"><b>Win32_dll8</b></td>
+ <td bgcolor="#C0C0C0">&nbsp;built using vc8, creates dependency with MSVCR80.DLL<br>
+ &nbsp;(either other libraries or new applications).</td>
+ </tr>
+ <tr>
+ <td bgcolor="#C0C0C0" align="right"><b>Win32_dll9</b></td>
+ <td bgcolor="#C0C0C0">&nbsp;built using vc9, creates dependency with MSVCR90.DLL<br>
+ &nbsp;(either other libraries or new applications).</td>
+ </tr>
+ <tr>
+ <td bgcolor="#DDDDDD" align="right"><b>Win64_vc8</b></td>
+ <td bgcolor="#DDDDDD">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp;Cygwin gcc 3.4&nbsp; (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">&nbsp;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">&nbsp;MingW gcc 3.4 -
+ <a href="http://www.mingw.org/" style="text-decoration: none">http://www.mingw.org/</a>
+ ¹<br>
+ &nbsp;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">&nbsp;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">&nbsp;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">&nbsp;Borland C++ BuilderX 1.0 / Borland C++ 5.6 Compiler -
+ <br />
+ &nbsp;<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>
+ &nbsp;(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">&nbsp;Executables only for Windows NT/2000/XP</td>
+ </tr>
+ <tr>
+ <td bgcolor="#DDDDDD" align="right"><b>Win64_bin</b></td>
+ <td bgcolor="#DDDDDD">&nbsp;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">&nbsp;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
+ &#39;experimental&#39; 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>&quot;filename [widthxheight] [resolution] [-t] -p[precision]&quot; or in C style &quot;<strong><tt>%s %gx%g %g %s</tt></strong>&quot;</em></pre>
+
+ <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (&quot;)
+ if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters
+ (note the lowercase &quot;x&quot; 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 &quot;3.78 pixels/mm&quot; (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 &quot;<font face="Courier">-t</font>&quot; 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&nbsp; </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>&quot;System&quot;</td>
+ <td>&quot;SYSTEM&quot;</td>
+ <td>&quot;SYSTEM_BOLD&quot;</td>
+ <td>&quot;SYSTEM_ITALIC&quot;</td>
+ <td>&quot;SYSTEM_BOLDITALIC&quot;</td>
+ </tr>
+ <tr>
+ <td>&quot;Courier&quot;</td>
+ <td>&quot;COURIER&quot; </td>
+ <td>&quot;COURIER_BOLD&quot; </td>
+ <td>&quot;COURIER_ITALIC&quot; </td>
+ <td>&quot;COURIER_BOLDITALIC&quot;</td>
+ </tr>
+ <tr>
+ <td>&quot;Times&quot;</td>
+ <td>&quot;TIMES_ROMAN&quot; </td>
+ <td>&quot;TIMES_ROMAN_BOLD&quot;</td>
+ <td>&quot;TIMES_ROMAN_ITALIC&quot;</td>
+ <td>&quot;TIMES_ROMAN_BOLDITALIC&quot; </td>
+ </tr>
+ <tr>
+ <td>&quot;Helvetica&quot;</td>
+ <td>&quot;HELVETICA&quot; </td>
+ <td>&quot;HELVETICA_BOLD&quot;</td>
+ <td>&quot;HELVETICA_ITALIC&quot;</td>
+ <td>&quot;HELVETICA_BOLDITALIC&quot;</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&nbsp; </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">&quot;filename&quot;.</font></p>
+ <p>In the Windows environment, if the string &quot;<font face="Courier">-b</font>&quot;
+ is present, it means that a <b>Bitmap</b> must be created instead of a
+ metafile, and, if the string <font face="Courier">&quot;-m&quot;</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>&quot;-b
+ widthxheight [resolution]&quot;</em> or in C &quot;<tt><em><strong>%dx%d %g&quot;</strong></em></tt>,
+ the resolution default is the screen resolution.</p>
+ <p>In the X-Windows environment, the Display <font face="Courier">(&quot;%p&quot;)</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">&quot;data&quot;</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>&nbsp;</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>&nbsp;</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
+ &quot;CD_XXX&quot;.</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>&quot;<i>filename </i>[widthxheight resolution]&quot; or in <em>C use &quot;<strong><tt>%s %gx%g %g</tt></strong>&quot;</em></pre>
+
+ <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (&quot;)
+ if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters
+ (note the lowercase &quot;x&quot; 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
+ &quot;3.78 pixels/mm&quot; (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>&quot;filename [widthxheight] [resolution] [-f] [-sseedfile]&quot; </em>or in C <em>&quot;<strong><tt>%s %gx%g %g %s</tt></strong>&quot;</em></pre>
+
+ <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (&quot;)
+ if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters
+ (note the lowercase &quot;x&quot; 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
+ &quot;3.78 pixels/mm&quot; (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.&nbsp;</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 &quot;<font face="Courier">-f</font>&quot; 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 &quot;SEED2D.DGN&quot;. 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>&quot;filename [widthxheight] [resolution]&quot; </em>or in C <em>&quot;<strong><tt>%s %gx%g %g</tt></strong>&quot;</em></pre>
+
+ <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (&quot;)
+ if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters
+ (note the lowercase &quot;x&quot; 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
+ &quot;3.78 pixels/mm&quot; (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.&nbsp;</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 &quot;hollow&quot; 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&nbsp; 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>&nbsp; in the fixed palette
+ (AutoCAD uses a 256-color palette -&nbsp; 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>&nbsp;</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 &quot;*.emf&quot;.</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>&quot;filename widthxheight&quot; </em>or in C <em>&quot;<strong><tt>%s %dx%d</tt></strong>&quot;</em></pre>
+
+ <p>It must include the filename and the canvas' dimensions.<font face="Courier">
+ </font>The filename must be inside double quotes (&quot;) if it has spaces.<font face="Courier">
+ Width</font> and <font face="Courier">height</font> are provided in pixels
+ (note the lowercase &quot;x&quot; 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&nbsp;</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 &quot;<strong>cdcontextplus.lib</strong>&quot; and &quot;<strong>gdiplus.lib</strong>&quot;.
+ Also the file &quot;<strong>gdiplus.dll</strong>&quot; 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 &quot;.lib&quot; 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&quot;cdluacontextplus&quot;</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 &quot;<strong><tt>GRADIENTCOLOR</tt></strong>&quot;
+ 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 &quot;W&quot;.</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>&quot;-d&quot;</strong></em><strong>
+ </strong>&nbsp;to show the font-selection dialog box.</li>
+ <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>:
+ &quot;System&quot; is mapped to &quot;MS Sans Serif&quot;, &quot;Courier&quot; is mapped to &quot;Courier New&quot;,
+ &quot;Helvetica&quot; is mapped to &quot;Arial&quot;, and &quot;Times&quot; is mapped to &quot;Times New Roman&quot;.
+ 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> &amp;
+ <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>&quot;<span style="font-family: Courier"><strong>GDI+</strong></span>&quot;:
+ returns &quot;1&quot;. 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>&quot;<b><font face="Courier">HDC</font></b>&quot;: 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>&quot;<b><font face="Courier">ANTIALIAS</font></b>&quot;: controls the use of anti-aliasing
+ for the text, image zoom and line
+ drawing primitives. Assumes values &quot;1&quot; (active) and &quot;0&quot; (inactive). Default value: &quot;1&quot;. </li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">GRADIENTCOLOR</font></b>&quot;: 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&quot; = r g b). It can not be retrieved (set only).</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">IMAGETRANSP</font></b>&quot;: 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 (&quot;%d %d %d %d %d %d&quot; = r1
+ g1 b1 r2 g3 b3). Use NULL to remove the attribute. </li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">IMAGEFORMAT</font></b>&quot;: defines the number of bits per pixel used to create server
+ images. It uses 1 integer that can have the values: &quot;32&quot; or &quot;24&quot; (%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>&quot;<strong><font face="Courier">IMAGEALPHA</font></strong>&quot;:&nbsp; 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>&quot;<b><font face="Courier">IMAGEPOINTS</font></b>&quot;:&nbsp; 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 (&quot;%d %d %d %d %d %d&quot; = 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>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = angle x y).</li>
+</ul>
+<ul>
+ <li><b><font face="Courier">&quot;LINEGRADIENT&quot;: </font></b>defines a filled interior style that uses a line gradient
+ between two colors. It uses 2 points (&quot;%d %d %d %d&quot; = 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">&quot;LINECAP&quot;: </font></b>defines addicional line cap styles. It can have the following
+ values: &quot;Triangle&quot;, &quot;NoAnchor&quot;, &quot;SquareAnchor&quot;, &quot;RoundAnchor&quot;, &quot;DiamondAnchor&quot;, or &quot;ArrowAnchor&quot;. 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&nbsp;
+ <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>&quot;width<strong>x</strong>height [r g b] -<strong>r</strong>[resolution]&quot;</em> in C &quot;<em><strong><tt>%dx%d %p %p %p -r%g&quot;
+or
+</tt></strong>&quot;width<strong>x</strong>height [r g b a] -<strong>r</strong>[resolution] -<strong>a</strong>&quot;</em> in C &quot;<em><strong><tt>%dx%d %p %p %p %p -r%g -a&quot;</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 &quot;x&quot; 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 &quot;3.78 pixels/mm&quot; (96 DPI).&nbsp;</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) -&gt; (imagergb: cdImageRGB
+or cdImageRGBA) [in Lua]<br>
+cd.ImageRGBBitmap(canvas: cdCanvas) -&gt; (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> &amp;
+ <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>&quot;<strong><font face="Courier">REDIMAGE</font></strong>&quot;, &quot;<strong><font face="Courier">GREENIMAGE</font></strong>&quot;,
+ &quot;<strong><font face="Courier">BLUEIMAGE</font></strong>&quot;, &quot;<span style="font-family: Courier"><strong>ALPHA</strong></span><strong><font face="Courier">IMAGE</font></strong>&quot;: return the respective pointers of the canvas image (read-only). Not accessible in Lua.</li>
+</ul>
+
+<ul>
+ <li>&quot;<b><font face="Courier">ANTIALIAS</font></b>&quot;: controls the use of anti-aliasing
+ for line primitives. Assumes values &quot;1&quot; (active) and &quot;0&quot; (inactive). Default value: &quot;1&quot;.
+ Notice that text is always antialiased.</li>
+</ul>
+
+<ul>
+ <li>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = 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>&quot;<font face="Courier">_CD_CANVAS</font>&quot;</strong>
+ attribute.</p>
+
+
+
+ <p>To use this driver, it must be linked with the &quot;<b><font face="Courier">iupcd</font></b>&quot;
+ 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 &quot;<strong><font face="Courier">iupluacd</font></strong>&quot;
+ library. To use with require must be require&quot;iupluacd&quot; or require&quot;iupluacd51&quot;.</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&nbsp;</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>&quot;<b><font face="Courier">WINDOWRGN</font></b>&quot;: 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>&quot;<i>filename </i>[widthxheight resolution]&quot; or in <em>C use &quot;<strong><tt>%s %gx%g %g</tt></strong>&quot;</em></pre>
+
+ <p>Only the parameter <font face="Courier">filename</font> is required. The filename must be inside double quotes (&quot;)
+ if it has spaces.<font face="Courier"> Width</font> and <font face="Courier">height</font> are provided in millimeters
+ (note the lowercase &quot;x&quot; 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
+ &quot;3.78 pixels/mm&quot; (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 &quot;.MF&quot;.</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 &quot;<font face="Courier">hdc width height</font>&quot; or, in C, &quot;<font face="Courier">%p %d %d</font>&quot;.
+ To get the entire screen use a NULL data.<br>
+ <strong>X-Windows</strong>: It is a string in the format &quot;<font face="Courier">display window</font>&quot; or, in C, &quot;<font face="Courier"><tt>%p
+ %lu</tt></font>&quot; (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()
+-&gt; (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() -&gt; (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>&quot;<b><font face="Courier">WINDOWRGN</font></b>&quot;: 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.&nbsp;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>&quot;<em>filename -p[paper] -w[width] -h[height] -s[resolution] [-o]</em>&quot;
+or in C<em>
+&quot;<strong><tt>%s -p%d -w%g -h%g -s%d -o</tt></strong>&quot;</em></pre>
+
+ <p>The filename must be inside double quotes (&quot;) 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 &quot;<strong>cdpdf</strong>&quot;
+ and &quot;<strong>pdflib</strong>&quot; 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 &quot;<font face="Courier">-p</font>&quot;. It is also possible to define a paper in a
+ particular size by using parameters &quot;<font face="Courier">-w</font>&quot; e &quot;<font face="Courier">-h</font>&quot;. 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>&nbsp;</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 &quot;<font face="Courier">-s</font>&quot; 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 &quot;-o&quot; 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 &quot;<strong><font face="Courier">cdluapdf</font></strong>&quot;
+ 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&nbsp;&amp; 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 &quot;System&quot; font is mapped to the &quot;Courier&quot; 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">&quot;POLYHOLE&quot;</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 (&quot;%d&quot;). If the value of the attribute passed is NULL, all holes will no longer be
+ considered.&nbsp;When consulted returns the current number of holes (&quot;%d&quot;). It can have a maximum of 500 holes.
+ Default: NULL.</li>
+</ul>
+<ul>
+ <li><strong><span style="font-family: Courier">&quot;HATCHBOXSIZE&quot;</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 (&quot;%d&quot;). If the value of the attribute passed is NULL, the value is
+ rest to the default. When consulted returns the current value (&quot;%d&quot;). Default:
+ &quot;8&quot;.</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = angle x y).</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">OPAQUE</font></b>&quot;:&nbsp; allows the usage of a global
+ opacity value. The value passed must be a string containing an integer
+ (&quot;%d&quot;) [0=full transparent, 255=full opaque]. Use NULL to reset to the
+ default. Default: 255.</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">PATTERN</font></b>&quot;:&nbsp; creates a pattern with
+ regular primitives (except images). The value passed must be a string
+ containing two integeres with the pattern size (&quot;%dx%d&quot;) [widthxheight].
+ Just call regular primitives. Use NULL to end the pattern creation and set
+ the interior style.</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">PDF</font></b>&quot;:&nbsp;Returns the &quot;PDF*&quot; 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>&quot;[resolution]&quot; or in <em>C use &quot;<strong><tt>%lg</tt></strong>&quot;</em></pre>
+
+ <p><font face="Courier">Resolution </font>is the number of pixels per millimeter; its default value is
+ &quot;3.78 pixels/mm&quot; (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">&quot;</span><i>name </i>[-d]&quot; <em> or in C style &quot;</em><em><strong><tt>%s -d</tt></strong></em><em>&quot;</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>&quot;<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>&quot;<em><br>
+</em>or in C<em><br>
+&quot;<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>&quot;</em></pre>
+
+ <p>The filename must be inside double quotes (&quot;) 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 &quot;<font face="Courier">-p</font>&quot;. It is also possible to define a paper in a
+ particular size by using parameters &quot;<font face="Courier">-w</font>&quot; e &quot;<font face="Courier">-h</font>&quot;. 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>&nbsp;</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 &quot;<font face="Courier">-l</font>&quot; &quot;<font face="Courier">-r</font>&quot;
+ &quot;<font face="Courier">-t</font>&quot; and &quot;<font face="Courier">-b</font>&quot; (<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 &quot;<font face="Courier">-s</font>&quot; 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 &quot;-o&quot; 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 &quot;<font face="Courier">-e</font>&quot;. It is useful for other applications to import the
+ PostScript file. You can define the margins of the bounding box by means of parameter &quot;<font face="Courier">-d</font>&quot;,
+ in millimeters.</p>
+ <p><b>Debug -</b> Parameter &quot;<font face="Courier">-g</font>&quot; 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 &quot;<font face="Courier">-1</font>&quot; 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&nbsp;&amp; 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 &quot;System&quot; is mapped to &quot;Courier&quot;. 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>&quot;<strong><font face="Courier">POLYHOLE</font></strong>&quot;: 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 (&quot;%d&quot;). If the value of the attribute passed is NULL, all holes will no longer be
+ considered.&nbsp;When consulted returns the current number of holes (&quot;%d&quot;). It can have a maximum of 500 holes.</li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">CMD</font></b>&quot;: 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>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = 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 &quot;client&quot;), 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 &quot;System&quot; is mapped to &quot;Courier&quot;. For the know font names &quot;Courier&quot; (<font face="Courier">cour</font>),
+ &quot;Times&quot; (<font face="Courier">times</font>) and &quot;Helvetica&quot; (<font face="Courier">arial</font>),
+ the styles are added to the font file name as a suffix: &quot;bd&quot;, &quot;i&quot; and &quot;bi&quot; 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 &quot;.ttf&quot;
+ 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>&quot;<strong>ADDFONTMAP</strong>&quot;: Add a font map between a type face
+ name and a file name. It has the format &quot;Type Face=filename&quot;, For ex: &quot;Arial
+ Narrow Bold=ARIALNB&quot;. &quot;Type Face&quot; 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&nbsp;</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>&quot;-d&quot;</strong></em><strong>
+ </strong>&nbsp;to show the font-selection dialog box.</li>
+ <li><a href="../func/text.html#cdFont"><font face="Courier"><strong>Font</strong></font></a>:
+ &quot;Courier&quot; is mapped to &quot;Courier New&quot;, &quot;Helvetica&quot; is mapped to &quot;Arial&quot;, and
+ &quot;Times&quot; is mapped to &quot;Times New Roman&quot;. 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>&quot;<b><font face="Courier">HDC</font></b>&quot;: 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>&quot;<strong><font face="Courier">PENFILLPOLY</font></strong>&quot;: controls the polygon filling outline. Assumes values
+ &quot;1&quot; (active) and &quot;0&quot; (inactive). Default value: &quot;1&quot;. 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>&quot;<b><font face="Courier">IMAGEFORMAT</font></b>&quot;: defines the number of bits per pixel used to create server
+ images. It uses 1 integer that can have the values: &quot;32&quot; or &quot;24&quot; (%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>&quot;<strong><font face="Courier">IMAGEALPHA</font></strong>&quot;:&nbsp; 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>&quot;<strong><font face="Courier">IMAGEMASK</font></strong>&quot;:&nbsp; 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 (&quot;%d %d %p&quot;). 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>&quot;<b><font face="Courier">IMAGEPOINTS</font></b>&quot;:&nbsp; define 3 coordinates of a paralelogram that will be used
+ to warp server images. Use 6 integer values inside a string (&quot;%d %d %d %d %d %d&quot; = 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 &quot;IMAGEMASK&quot; attribute. It will use the <font face="Courier"><strong>
+ PlgBlt</strong></font> GDI function. </li>
+</ul>
+<ul>
+ <li>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = 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 &quot;*.wmf&quot;.</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>&quot;filename widthxheight </em>[resolution]<em>&quot; </em>or in C <em>&quot;<strong><tt>%s
+ %dx%d</tt></strong> <strong>%g</strong>&quot;</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 &quot;x&quot; 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&nbsp;</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&nbsp;</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 &quot;<strong>cdcontextplus</strong>&quot;, &quot;<strong>Xrender</strong>&quot and &quot;<strong>Xft</strong>&quot;.
+ Also the libraries &quot;<strong>Xrender</strong>&quot and &quot;<strong>Xft</strong>&quot;
+ 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&quot;cdluacontextplus&quot;</strong> can be used when
+ using dynamic libraries.</p>
+
+<h3>Behavior of Functions</h3>
+<h4>Control&nbsp; </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: &quot;-*-times-bold-r-*-*-24-*-*-*-*-*-*-*&quot; (equivalent of <strong>Font</strong>(&quot;Times&quot;,
+ 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>&quot;<b><font face="Courier">GC</font></b>&quot;:&nbsp; returns the X11 graphics
+ context (get only). In Lua is returned as a user data.</li>
+</ul>
+
+<ul>
+ <li>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = angle x y). In this driver will change the
+ current transformation matrix, if removed will reset the current
+ transformation matrix.</li>
+</ul>
+
+<ul>
+ <li>&quot;<b><font face="Courier">ANTIALIAS</font></b>&quot;: controls the use of anti-aliasing
+ for the text, image zoom and line
+ drawing primitives. Assumes values &quot;1&quot; (active) and &quot;0&quot; (inactive). Default value: &quot;1&quot;. </li>
+</ul>
+
+<ul>
+ <li><b><font face="Courier">&quot;LINEGRADIENT&quot;: </font></b>defines a filled interior style that uses a line gradient
+ between two colors. It uses 2 points (&quot;%d %d %d %d&quot; = 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 &gt;= 0.10)</li>
+</ul>
+
+<ul>
+ <li><b><font face="Courier">&quot;XRENDERVERSION&quot;: </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&nbsp; </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&nbsp;
+ 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: &quot;-*-times-bold-r-*-*-24-*-*-*-*-*-*-*&quot; (equivalent of <strong>Font</strong>(&quot;Times&quot;,
+ CD_BOLD, -24).</li>
+ <li><a href="../func/text.html#cdFont">
+ <font face="Courier"><strong>Font</strong></font></a>: the old name &quot;System&quot;
+ is mapped to &quot;fixed&quot;.</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>&quot;<b><font face="Courier">GC</font></b>&quot;:&nbsp; returns the X11 graphics
+ context (get only). In Lua is returned as a user data.</li>
+</ul>
+
+<ul>
+ <li>&quot;<b><font face="Courier">ROTATE</font></b>&quot;:&nbsp; 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 (&quot;%g %d %d&quot; = 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) -&gt; (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) -&gt; (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) -&gt; (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 &lt;=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&nbsp; <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&nbsp; <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&nbsp; <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.&nbsp;</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) -&gt; (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) -&gt; (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>.&nbsp;
+ </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&nbsp; 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&nbsp; <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) -&gt; (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) -&gt; (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) -&gt; (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&nbsp;cdCanvasClip(cdCanvas* canvas, int mode); [in C]</span>
+
+canvas:Clip(mode: number) -&gt; (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&lt;=
+ x &lt;= xmax</b></i> and<b> </b><i><b>ymin &lt;= y &lt;= ymax</b></i> will
+ be printed. Default region: (0, w-1, 0, h-1).
+ </p>
+ <pre class="function"><span class="mainFunction">int&nbsp;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() -&gt; (xmin, xmax, ymin, ymax, status: number) [in Lua]
+canvas:wGetClipArea() -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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() -&gt; (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&nbsp; <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) -&gt; (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&nbsp;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&nbsp;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() -&gt; (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&nbsp; 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) -&gt; (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&nbsp;<a name="cdGetCanvasSize">cdCanvasGetSize</a>(cdCanvas* canvas, int *width, int *height, double *width_mm, double *height_mm); [in C]</span>
+
+canvas:GetSize() -&gt; (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&nbsp;<a name="cdUpdateYAxis">cdCanvasUpdateYAxis</a>(cdCanvas* canvas, int *y); [in C]</span>
+double&nbsp;cdfCanvasUpdateYAxis(cdCanvas* canvas, double&nbsp;*y); [in C]
+int&nbsp;cdCanvasInvertYAxis(cdCanvas* canvas, int y); [in C]
+double&nbsp;cdfCanvasInvertYAxis(cdCanvas* canvas, double&nbsp;y); [in C]
+
+canvas:UpdateYAxis(yc: number) -&gt; (yr: number) [in Lua]
+canvas:InvertYAxis(yc: number) -&gt; (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>&quot;y = height-1 -
+ y&quot;</font>. It returns the changed value. The &quot;Invert&quot; will always invert
+ the given value, the &quot;Update&quot; function will invert only if the canvas has the
+ Y axis inverted.</p>
+
+<pre class="function"><span class="mainFunction">void&nbsp;cdCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, int *dx, int *dy); [in C]</span>
+void&nbsp;cdfCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, double *dx, double *dy); [in C]
+
+canvas:MM2Pixel(mm_dx, mm_dy: number) -&gt; (dx, dy: number) [in Lua]
+canvas:fMM2Pixel(mm_dx, mm_dy: number) -&gt; (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&nbsp;cdCanvasPixel2MM(cdCanvas* canvas, int dx, int dy, double *mm_dx, double *mm_dy); [in C]</span>
+void&nbsp;cdfCanvasPixel2MM(cdCanvas* canvas, double dx, double dy, double *mm_dx, double *mm_dy); [in C]
+
+canvas:Pixel2MM(dx, dy: number) -&gt; (mm_dx, mm_dy: number) [in Lua]
+canvas:fPixel2MM(dx, dy: number) -&gt; (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&nbsp;cdCanvasOrigin(cdCanvas* canvas, int x, int y); [in C]</span>
+void&nbsp;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&nbsp;cdCanvasGetOrigin(cdCanvas* canvas, int *x, int *y); [in C]</span>
+void&nbsp;cdfCanvasGetOrigin(cdCanvas* canvas, double *x, double *y); [in C]
+
+canvas:GetOrigin() -&gt; (x, y: number) [in Lua]
+canvas:fGetOrigin() -&gt; (x, y: number) [in Lua]</pre>
+
+ <p>Returns the origin.</p>
+
+
+<h3>Transformation Matrix</h3>
+
+<pre class="function"><span class="mainFunction">void&nbsp;<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*&nbsp;<a name="cdGetTransform">cdCanvasGetTransform</a>(cdCanvas* canvas); [in C]</span>
+
+canvas:GetTransformation() -&gt; (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&nbsp;<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&nbsp;<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&nbsp;<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&nbsp;<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&nbsp;<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) -&gt; (tx, ty: number) [in Lua]
+canvas:fTransformPoint(x, y: number) -&gt; (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&lt;=x&lt;=x_max, y_min&lt;=y&lt;=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) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (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.&nbsp; 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() - &gt; (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() - &gt; (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) -&gt; (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) -&gt; (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 &quot;<font>[y*width
+ + x]</font>&quot;. </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) -&gt; (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&nbsp; <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>&nbsp; </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>&nbsp; </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*&nbsp;<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&nbsp;<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&nbsp;<a name="cdCanvasActivate">cdCanvasActivate</a>(cdCanvas *canvas); [in C]</span>
+
+canvas:Activate(canvas: cdCanvas) -&gt; (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&nbsp;<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) -&gt; (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 &quot;ContextPlus&quot;
+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&quot;cdluacontextplus&quot; this function will be
+automatically called.</p>
+
+<hr>
+<pre class="function"><span class="mainFunction">cdContext*&nbsp;cdCanvasGetContext(cdCanvas *canvas); [in C]</span>
+
+canvas:GetContext(canvas: cdCanvas) -&gt; (ctx: number) [in Lua]</pre>
+
+ <p>Returns the context of a given canvas, which can be compared with the predefined contexts, such as &quot;CD_PS&quot;.</p>
+
+<pre class="function"><span class="mainFunction">int&nbsp;cdContextCaps(cdContext* ctx); [in C]</span>
+
+cd.ContextCaps(ctx: number) -&gt; (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
+ ('&amp;.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&nbsp;cdCanvasSimulate(cdCanvas* canvas, int mode); [in C]</span>
+
+canvas:Simulate(mode: number) -&gt; (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&lt;=x&lt;=x_max, y_min&lt;=y&lt;=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>.&nbsp;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>&nbsp;<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>) -&gt; (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) -&gt; (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: &quot;10 2 5 2&quot; 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) -&gt; (old_width: number) [in Lua]
+canvas:wLineWidth(width_mm: number) -&gt; (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: &gt;= 1.</p>
+ <p>In WC, it configures the current line width in millimeters.&nbsp;</p>
+
+<pre class="function"><span class="mainFunction">int <a name="cdLineJoin">cdCanvasLineJoin</a>(cdCanvas* canvas, int style); [in C]</span>
+
+canvas:LineJoin(style: number) -&gt; (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) -&gt; (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) -&gt; (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) -&gt; (old_size: number) [in Lua]
+canvas:wMarkSize(size: number) -&gt; (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: &gt;= 1.</p>
+ <p>In WC, it configures the current line width in millimeters.&nbsp;</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*&nbsp;<a name="cdVersion">cdVersion</a>(void); [in C]</span>
+
+cd.Version() -&gt; (version: string) [in Lua]</pre>
+
+ <p>Returns the current version number of the library. The string with the
+ version number has a format &quot;<font>major.minor.build</font>&quot;.
+ For instance, the string &quot;2.1.3&quot; 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() -&gt; (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() -&gt; (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> &quot;CD - Canvas Draw&quot;
+<span class="mainFunction">CD_DESCRIPTION</span> &quot;A 2D Graphics Library&quot;
+<span class="mainFunction">CD_COPYRIGHT</span> &quot;Copyright (C) 1994-2007 Tecgraf/PUC-Rio and PETROBRAS S/A&quot;
+<span class="mainFunction">CD_VERSION</span> &quot;5.0.0&quot;
+<span class="mainFunction">CD_VERSION_DATE</span> &quot;2007/04/09&quot;
+<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&nbsp;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) -&gt; (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&nbsp;cdContextRegisterCallback(cdContext *ctx, int cb, int(*func)(cdCanvas* canvas, ...)); [in C]</span>
+
+cd.ContextRegisterCallback(ctx, cb: number, func: function) -&gt; (status: number) [in Lua]</pre>
+
+ <p>Used to customize the behavior of the&nbsp; <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 &quot;<font>CD_XXYYYCB</font>&quot;,
+ 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&nbsp;
+ <font>cdPlay</font> function without an active canvas and
+ create the canvas inside the callback. It works as a&nbsp; <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:&nbsp;
+ <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.&nbsp; 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&nbsp;cdCanvasRegionCombineMode(cdCanvas* canvas, int mode); [in C]</span>
+
+canvas:RegionCombineMode(mode: number) -&gt; (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&nbsp;cdCanvasIsPointInRegion(cdCanvas* canvas, int x, int y); [in C]</span>
+
+canvas:IsPointInRegion(x, y: number) -&gt; (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&nbsp;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&nbsp;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() -&gt; (xmin, xmax, ymin, ymax, status: number) [in Lua]
+canvas:wGetRegionBox() -&gt; (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 &quot;server&quot; 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) -&gt; (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: &quot;System&quot; (which depends on the driver and platform),
+ &quot;Courier&quot; (mono spaced
+ with serif), &quot;Times&quot; (proportional with serif) and &quot;Helvetica&quot; (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: &quot;<strong>Courier</strong>&quot;, &quot;<strong>Times</strong>&quot; and &quot;<strong>Helvetica</strong>&quot;.</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: &quot;<strong>System</strong>&quot;, <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 &quot;<strong>(value in <em>points</em>) = CD_MM2PT *
+ (value in millimeters)</strong>&quot;.</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() -&gt; (typeface: string, style, size: number) [in Lua]
+canvas:wGetFont() -&gt; (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) -&gt; (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: &lt;font
+family&gt;, &lt;font styles&gt; &lt;font size&gt;. For ex: &quot;Times, Bold 18&quot;, or
+&quot;Arial,Helvetica, Italic Underline -24&quot;. 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 &quot;FONT&quot; attribute internal formats are also accepted in all drivers
+and platforms.</p>
+ <p>Using &quot;NULL&quot; 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 &quot;(char*)CD_QUERY&quot; 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) -&gt; (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) -&gt; (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() -&gt; (max_width, height, ascent, descent: number) [in Lua]
+canvas:wGetFontDim() -&gt; (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) -&gt; (width, heigth: number) [in Lua]
+canvas:wGetTextSize(text: string) -&gt; (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) -&gt; (xmin, xmax, ymin, ymax: number) [in Lua]
+canvas:wGetTextBox(x, y: number, text: string) -&gt; (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) -&gt; (rect0, rect1, rect2, rect3, rect4, rect5, rect6, rect7: number) [in Lua]
+canvas:wGetTextBounds(x, y: number, text: string) -&gt; (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) -&gt; (old_matrix: table) [in Lua]&nbsp;</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) -&gt; (old_size: number) [in Lua]
+canvas:wVectorCharSize(size: number) -&gt; (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) -&gt; (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>&quot;,
+ 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) -&gt; (w, h: number) [in Lua]
+canvas:wGetVectorTextSize(text: string) -&gt; (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) -&gt; (rect: table) [in Lua]
+canvas:wGetVectorTextBounds(text: string, px,py: number) -&gt; (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() -&gt; (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() -&gt; (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) -&gt; (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) -&gt; (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 &quot;-lX11&quot; 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 &quot;make&quot; in the
+command line on the &quot;src&quot; 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 &quot;src&quot; 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>&quot;make_uname vc7&quot;</i> , or the
+DLLs with Visual C++ 9 (2008) type <i>&quot;make_uname dll9&quot;</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 -&gt; <strong><span class="style4">gdi32</span></strong> <strong><span class="style4">user32</span></strong> <strong><span class="style4">comdlg32</span></strong> (system - Windows)
+ -&gt; <strong><span class="style4">X11</span></strong> (system - UNIX)
+ -&gt; <strong><span class="style2">FreeType</span></strong> (included as separate library)
+cdgdiplus -&gt; cd
+ -&gt; <strong><span class="style4">gdiplus</span></strong> (system - Windows)
+cdxrender -&gt; cd
+ -&gt; <strong><span class="style4">Xrender</span></strong> <strong><span class="style4">Xft</span></strong> (system - UNIX)
+cdpdf -&gt; <strong><span class="style2">pdflib</span></strong> (included as separate library)
+cdlua51 -&gt; cd
+ -&gt; <strong><span class="style3">lua5.1</span></strong>
+cdluaim51 -&gt; cdlua51
+ -&gt; <strong><span class="style3">imlua51</span></strong>
+cdluapdf51 -&gt; cdlua51
+ -&gt; 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.&nbsp; </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 &quot;imlua_cd&quot; library moved
+ from IM to CD under the name &quot;cdluaim&quot;. Only the initialization function
+ name is changed.</li>
+ <li><span style="color: #0000FF">New:</span> cdluacontextplus library so the
+ &quot;ContextPlus&quot; 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 &quot;cdiup&quot; and &quot;cdluaiup&quot;
+ libraries moved from CD to IUP under the name &quot;iupcd&quot; and &quot;iupluacd&quot;. 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 &quot;cdgliplus&quot;
+ and &quot;cdxrender&quot; libraries to &quot;cdcontextplus&quot;.</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 &quot;make&quot;.</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 &quot;OPAQUE&quot;, &quot;PATTERN&quot;
+ and &quot;PDF&quot;&nbsp;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 &quot;7.0.2&quot;.</li>
+ <li><span style="color: #008000">Changed:</span> FreeType library updated to
+ version &quot;2.3.5&quot;.</li>
+ <li><span style="color: #008000">Changed</span>: now using &quot;(char*)CD_QUERY&quot;
+ 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 &quot;7.0.0p3&quot;.</li>
+ <li><span style="color: #008000">Changed:</span> FreeType library updated to
+ version &quot;2.2.1&quot;.</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 &quot;Canvas&quot; 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
+ &quot;double&quot; floating point precision and not related to WC functions.</li>
+ <li><span style="color: #0000FF">New:</span> &quot;cd_canvas.hpp&quot; 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 &quot;GDI+&quot; for all GDI+
+ based drivers that returns &quot;1&quot;. 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>(&quot;-d&quot;) 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 &quot;const&quot; when applicable.</li>
+ <li><span style="color: #008000">Changed:</span> server image defintion from
+ &quot;void*&quot; to &quot;cdImage*&quot;. 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 &quot;cdContext*&quot; by a &quot;cdCanvas*&quot;.
+ 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 &quot;<strong>cdiupgdiplus</strong>&quot;
+ 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 &quot;cd/data&quot; to &quot;cd/etc&quot;.</li>
+ <li><span style="color: #008000">Changed:</span> CD Lua for Lua 3 library name
+ changed to include &quot;3&quot; 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 &quot;cd.&quot; 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">&quot;WINDOWRGN&quot;</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">&quot;ROTATE&quot;</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&nbsp; <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 &quot;<font face="Courier New">USERLINESTYLE</font>&quot;.<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">&quot;IMAGEFORMAT&quot;</font> and <font face="Courier New">&quot;IMAGEALPHA&quot;</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 (&quot;) 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> &quot;simple.c&quot; and &quot;simple.zip&quot; 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">&quot;IMAGEMASK&quot;</font>,
+ <font face="Courier New">&quot;IMAGEPOINTS&quot;</font>, <font face="Courier New">&quot;ROTATE&quot;</font>, <font face="Courier New">
+ &quot;GRADIENTCOLOR&quot;</font>, <font face="Courier New">&quot;IMAGETRANSP&quot;</font> and&nbsp; <font face="Courier New">&quot;IMAGEFORMAT&quot;</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">
+ &quot;IMAGEPOINTS&quot;</font> and <font face="Courier New">&quot;LINEGRADIENT&quot;</font>. Mode <font face="Courier New">CD_PATHGRADIENT</font>
+ was renamed to <font face="Courier New">CD_FILLGRADIENT</font>, and <font face="Courier New">&quot;PATHGRADIENT&quot;</font>
+ attribute was renamed to <font face="Courier New">&quot;GRADIENTCOLOR&quot;</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">
+ &quot;im_image.h&quot;</font> header of the IM toolkit. Include this header before <font face="Courier New">&quot;cd.h&quot;</font> and
+ inbetween set <font face="Courier New">&quot;#undef cdPutBitmap&quot;</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> &quot;USERLINESTYLE&quot; attribute for the base GDI and X11 drivers.</li>
+ <li><span style="color: #0000FF">New:</span> &quot;GC&quot; 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 &quot;:&quot; 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 &quot;-d&quot;
+ 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">&quot;-d&quot;</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">&quot;-b&quot;</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">&quot;sizeof(long)&quot;</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 (&quot;<font face="Courier New">SIMXORTEXT</font>&quot;, &quot;<font face="Courier New">SIMPATTERN8X8</font>&quot;,
+ &quot;<font face="Courier New">PENFILLPOLY</font>&quot;). 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: &quot;<font face="Courier New">POLYHOLE</font>&quot;
+ attribute allows controling the number of holes in a closed polygon. New: &quot;<font face="Courier New">-1</font>&quot;
+ parameter forces a level 1 Postscript. New: &quot;<font face="Courier New">-g</font>&quot; parameter adds comments to the PS file
+ in order to better explain what is done. New: &quot;<font face="Courier New">CMD</font>&quot; 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: &quot;<font face="Courier New">REDIMAGE</font>&quot;, &quot;<font face="Courier New">GREENIMAGE</font>&quot;
+ and &quot;<font face="Courier New">BLUEIMAGE</font>&quot;.</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>&nbsp;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: &quot;CDLua 1.3.0&quot;.</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&nbsp; <font face="Courier New"><b>wdVectorFont</b></font> and <font face="Courier New"><b>
+ cdMark</b></font>. <br>
+ - New: functions: <br>
+&nbsp;&nbsp; <font face="Courier New"><b>cdCreateCanvasf, cdGetContext,</b> <strong>cdContextCaps</strong>, <strong>
+ cdSaveState, cdRestoreState</strong>, <strong>&nbsp; cdSetAttribute, cdGetAttribute</strong><br>
+ <b>&nbsp;cdOrigin, cdRect, wdRect, cdGetFont,</b> <strong>cdGetStipple</strong>, <strong>cdGetPattern</strong>, <strong>
+ cdTextBox</strong><br>
+ <b>&nbsp;cdPutImageRectRGB</b>, <b>cdPutImageRectRGBA</b>, <b>cdPutImageRectMap,</b> <br>
+ <b>&nbsp;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, &quot;<strong>cdiup</strong>&quot;. 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 &quot;<strong>cdluaiup</strong>&quot;
+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 &quot;<strong>cdiup</strong>&quot; library, apart
+ from the &quot;<strong>cd</strong>&quot; 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 &quot;<font face="Courier New">CD_PS</font>&quot;.<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&nbsp; <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&nbsp; <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 (&gt;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&nbsp; the &quot;%p&quot; format string, but in the SunOS
+ they use &quot;%d&quot; 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
+ &quot;_CD_CANVAS&quot;.</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 &quot;System&quot; 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 &lt;= 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 &quot;-d&quot; parameter for the EPS option was not documented.</li>
+ <li>Fixed: / PS: parameters &quot;-w&quot; and &quot;-h&quot; 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 &quot;showpage&quot; 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&lt;<strong>malloc.h</strong>&gt;</font> was changed to
+ <font face="Courier New">#include&lt;<strong>stdlib.h</strong>&gt;</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 &amp; Mac) if the parameter &quot;-d&quot; 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 &quot;context&quot;.</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>, &quot;teste.ps&quot;); <em>(will do)</em> canvas-&gt;<b>Line</b> = context-&gt;<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:&nbsp; </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>{
+&nbsp; ...
+&nbsp; void (*Line)(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
+&nbsp; void (*Rect)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
+&nbsp; void (*Box)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
+&nbsp; ...
+
+&nbsp; ...
+&nbsp; int mark_type, mark_size;
+&nbsp; int line_style, line_width;
+&nbsp; int interior_style, hatch_style;
+&nbsp; ...
+
+ 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-&gt;canvas = canvas;
+ canvas-&gt;ctxcanvas = ctxcanvas;
+
+ /* update canvas context */
+ canvas-&gt;w = (int)(w_mm * res);
+ canvas-&gt;h = (int)(h_mm * res);
+ canvas-&gt;w_mm = w_mm;
+ canvas-&gt;h_mm = h_mm;
+ canvas-&gt;bpp = 24;
+ canvas-&gt;xres = res;
+ canvas-&gt;yres = res;
+}
+
+static void cdinittable(cdCanvas* canvas)
+{
+ canvas-&gt;Flush = cdflush;
+ canvas-&gt;Clear = cdclear;
+ canvas-&gt;Pixel = cdpixel;
+ canvas-&gt;Line = cdline;
+ canvas-&gt;Poly = cdpoly;
+ ...
+ }
+
+static cdContext cdMetafileContext =
+{
+ CD_CAP_ALL &amp; ~(CD_CAP_GETIMAGERGB|CD_CAP_IMAGESRV|CD_CAP_REGION|CD_CAP_FONTDIM|CD_CAP_TEXTSIZE),
+ cdcreatecanvas,
+ cdinittable,
+ cdplay,
+ cdregistercallback,
+};
+
+cdContext* cdContextMetafile(void)
+{
+ return &amp;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-&gt;fill_attrib[0] = data[0];
+}
+
+static char* get_fill_attrib(cdCtxCanvas* ctxcanvas)
+{
+ return ctxcanvas-&gt;fill_attrib;
+}
+
+static cdAttribute fill_attrib =
+{
+ &quot;SIMPENFILLPOLY&quot;,
+ set_fill_attrib,
+ get_fill_attrib
+}; </pre>
+
+ <p>At <em>createcanvas</em> in the driver: </p>
+
+ <pre>ctxcanvas-&gt;fill_attrib[0] = '1';
+ctxcanvas-&gt;fill_attrib[1] = 0;
+
+cdRegisterAttribute(canvas, &amp;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>.&nbsp;</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,&quot;CONID&quot;)); <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,&quot;CONID&quot;)); <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,&quot;CONID&quot;)); <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, &quot;%dx%d&quot;, 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, &quot;REDIMAGE&quot;);
+// 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(&quot;Times&quot;, cd.BOLD, 12)
+canvas:Text(10, 10, &quot;Test&quot;)
+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.&nbsp; </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, &amp;width, &amp;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 &quot;<font face="Courier New">-d</font>&quot;.</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 &quot;<font face="Courier New">-d</font>&quot;.
+ 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 &quot;WINDOWRGN&quot; attribute
+ (non rectangular windows from regions)</li>
+</ul>
+<h3>Simulation</h3>
+<ul>
+ <li>Implement line styles, line cap and line join for line with &gt; 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 &quot;<em>assertion
+ failed</em>&quot; 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.&nbsp; <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>
diff --git a/html/img/align.gif b/html/img/align.gif
new file mode 100644
index 0000000..f3f0123
--- /dev/null
+++ b/html/img/align.gif
Binary files differ
diff --git a/html/img/arc.gif b/html/img/arc.gif
new file mode 100644
index 0000000..a9f9a0f
--- /dev/null
+++ b/html/img/arc.gif
Binary files differ
diff --git a/html/img/bezier.gif b/html/img/bezier.gif
new file mode 100644
index 0000000..0c99da6
--- /dev/null
+++ b/html/img/bezier.gif
Binary files differ
diff --git a/html/img/chord.gif b/html/img/chord.gif
new file mode 100644
index 0000000..ee5a50c
--- /dev/null
+++ b/html/img/chord.gif
Binary files differ
diff --git a/html/img/fillmode.gif b/html/img/fillmode.gif
new file mode 100644
index 0000000..fd968f4
--- /dev/null
+++ b/html/img/fillmode.gif
Binary files differ
diff --git a/html/img/font_dim.gif b/html/img/font_dim.gif
new file mode 100644
index 0000000..d69caa3
--- /dev/null
+++ b/html/img/font_dim.gif
Binary files differ
diff --git a/html/img/font_style.gif b/html/img/font_style.gif
new file mode 100644
index 0000000..4578282
--- /dev/null
+++ b/html/img/font_style.gif
Binary files differ
diff --git a/html/img/fonts.gif b/html/img/fonts.gif
new file mode 100644
index 0000000..5b8b047
--- /dev/null
+++ b/html/img/fonts.gif
Binary files differ
diff --git a/html/img/hatch.gif b/html/img/hatch.gif
new file mode 100644
index 0000000..9ab3c9b
--- /dev/null
+++ b/html/img/hatch.gif
Binary files differ
diff --git a/html/img/linecap.gif b/html/img/linecap.gif
new file mode 100644
index 0000000..f30a577
--- /dev/null
+++ b/html/img/linecap.gif
Binary files differ
diff --git a/html/img/linejoin.gif b/html/img/linejoin.gif
new file mode 100644
index 0000000..de65c54
--- /dev/null
+++ b/html/img/linejoin.gif
Binary files differ
diff --git a/html/img/lines.gif b/html/img/lines.gif
new file mode 100644
index 0000000..fecf136
--- /dev/null
+++ b/html/img/lines.gif
Binary files differ
diff --git a/html/img/marks.gif b/html/img/marks.gif
new file mode 100644
index 0000000..fcdbeda
--- /dev/null
+++ b/html/img/marks.gif
Binary files differ
diff --git a/html/img/opacity.gif b/html/img/opacity.gif
new file mode 100644
index 0000000..7272d17
--- /dev/null
+++ b/html/img/opacity.gif
Binary files differ
diff --git a/html/img/polygon.gif b/html/img/polygon.gif
new file mode 100644
index 0000000..91e4820
--- /dev/null
+++ b/html/img/polygon.gif
Binary files differ
diff --git a/html/img/regions.gif b/html/img/regions.gif
new file mode 100644
index 0000000..a82e085
--- /dev/null
+++ b/html/img/regions.gif
Binary files differ
diff --git a/html/img/sector.gif b/html/img/sector.gif
new file mode 100644
index 0000000..ff6632f
--- /dev/null
+++ b/html/img/sector.gif
Binary files differ
diff --git a/html/img/vector_text.gif b/html/img/vector_text.gif
new file mode 100644
index 0000000..7a5e130
--- /dev/null
+++ b/html/img/vector_text.gif
Binary files differ
diff --git a/html/img/vectorfont_default.png b/html/img/vectorfont_default.png
new file mode 100644
index 0000000..27e8085
--- /dev/null
+++ b/html/img/vectorfont_default.png
Binary files differ
diff --git a/html/img/vectorfont_simplex2.png b/html/img/vectorfont_simplex2.png
new file mode 100644
index 0000000..c87c752
--- /dev/null
+++ b/html/img/vectorfont_simplex2.png
Binary files differ
diff --git a/html/img/wc-dc.gif b/html/img/wc-dc.gif
new file mode 100644
index 0000000..d94899e
--- /dev/null
+++ b/html/img/wc-dc.gif
Binary files differ
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..03d035c
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title>CD - Canvas Draw</title>
+</head>
+
+<frameset rows="51,*" frameborder="0" framespacing="0" bordercolor="#0B6DCE">
+ <frame name="wb_title" scrolling="no" noresize="noresize" src="wb_title.html"
+ frameborder="0" marginheight="0" marginwidth="0" target="wb_cont">
+ <frameset cols="180,*" frameborder="1" framespacing="4" bordercolor="#0B6DCE" border="4">
+ <frameset rows="27,*" frameborder="0" framespacing="0" bordercolor="#0B6DCE">
+ <frame name="wb_bar" scrolling="no" src="wb_bar.html" frameborder="0" target="wb_cont">
+ <frame name="wb_tree" src="wb_tree.html" frameborder="1" target="wb_cont">
+ </frameset>
+ <frame name="wb_cont" src="en/home.html" frameborder="0">
+ </frameset>
+ <noframes>
+ <body>
+
+ <p>This page uses frames, but your browser doesn&#39;t support them.</p>
+
+ </body>
+ </noframes>
+</frameset>
+
+</html>
diff --git a/html/logo.gif b/html/logo.gif
new file mode 100644
index 0000000..295fb11
--- /dev/null
+++ b/html/logo.gif
Binary files differ
diff --git a/html/ssSearch.class b/html/ssSearch.class
new file mode 100644
index 0000000..a535c74
--- /dev/null
+++ b/html/ssSearch.class
Binary files differ
diff --git a/html/ssSearch.html b/html/ssSearch.html
new file mode 100644
index 0000000..ac67d30
--- /dev/null
+++ b/html/ssSearch.html
@@ -0,0 +1,22 @@
+<html>
+<head>
+<title>ssSearch</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<h3>Simple Search</h3>
+<blockquote>
+<center>
+ <applet code="ssSearch.class" width="640" height="480">
+ <param name="BGCOLOR" value="0B6DCE">
+ <param name="LISTAREACOLOR" value="ffffff">
+ <!-- Use "_self", "_blank", "_parent", "_top" or any other user-defined name -->
+ <param name="TARGETFRAME" value="_self">
+ <param name="DATAFILE" value="wb_search.txt">
+ <!-- The APPLETHOME param is just an acknowledgement -->
+ <!-- Do not edit the value of APPLETHOME param -->
+ <param name="APPLETHOME" value="http://www.geocities.com/SiliconValley/Lakes/5365/index.html">
+ </applet>
+</center>
+</blockquote>
+</body></html>
diff --git a/html/ssSearchThread.class b/html/ssSearchThread.class
new file mode 100644
index 0000000..5a86b80
--- /dev/null
+++ b/html/ssSearchThread.class
Binary files differ
diff --git a/html/style.css b/html/style.css
new file mode 100644
index 0000000..a3ae33f
--- /dev/null
+++ b/html/style.css
@@ -0,0 +1,118 @@
+ body {
+ margin-left: 1em;
+ margin-right: 1em;
+ font-family: tahoma, verdana, arial, helvetica, geneva, sans-serif;
+ background-color:#ffffff;
+ }
+ p {
+ margin-left: 1em;
+ line-height: 130%;
+ }
+ h2 {
+ color: #3366CC;
+ }
+ h3 {
+ padding: 4px;
+ background-color: #E1E1E1;
+ border: 1px solid #808080;
+ color: #5C5C5C;
+ }
+ pre {
+ background-color: #CEE7FF;
+ border: 1px solid #62A0FF;
+ padding: 10px;
+ font-family: 'Monotype.com', "Courier New", Courier, monospace;
+ font-size: 90%;
+ line-height: 125%;
+ margin-left: 3em;
+ margin-right: 3em;
+ }
+ p.info {
+ margin-left: 3em;
+ }
+ ul {
+ margin-left: 2em;
+ }
+ h4 {
+ background-color: #E1E1E1;
+ padding: 3px;
+ margin-right: 2em;
+ margin-left: 2em;
+ }
+h4.function {
+ font-family: "Courier New", Courier, monospace;
+ background-color: #E1E1E1;
+ border: 1px solid #B1B1B1;
+ padding: 10px;
+ line-height: 125%;
+ margin-left: 0.5em;
+ margin-right: 3em;
+ font-weight: normal;
+}
+pre.function {
+ font-family: "Courier New", Courier, monospace;
+ background-color: #E1E1E1;
+ border: 1px solid #B1B1B1;
+ padding: 10px;
+ font-size: 100%;
+ line-height: 125%;
+ margin-left: 0.5em;
+ margin-right: 3em;
+ font-weight: normal;
+}
+.mainFunction {
+ font-size: 110%;
+ font-weight: bold;
+}
+ h1 {
+ text-align: center;
+ }
+ .homeTitle {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 36pt;
+ font-weight: bold;
+ color: #003399;
+ text-align: center;
+ }
+ .homeDescription {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 20pt;
+ color: #003399;
+ text-align: center;
+ }
+ .homeVersion {
+ margin: 10px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 16pt;
+ color: #003399;
+ text-align: center;
+ }
+ #navigation {
+ position: fixed;
+ top: 0;
+ right: 0;
+ background-color: #E1E1E1;
+ }
+ #navigation ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ }
+ #navigation li {
+ float: left;
+ }
+ #navigation a {
+ color: #5C5C5C;
+ text-decoration: none;
+ display: block;
+ padding: 3px;
+ border: 1px solid #808080;
+ background-color: #E1E1E1;
+ font-size: small;
+ }
+ #navigation a:hover {
+ color: #E1E1E1;
+ text-decoration: none;
+ border: 1px solid #808080;
+ background-color: #5C5C5C;
+ }
diff --git a/html/wb/.cvsignore b/html/wb/.cvsignore
new file mode 100644
index 0000000..2f42317
--- /dev/null
+++ b/html/wb/.cvsignore
@@ -0,0 +1,2 @@
+wb_en.hhp
+wb_tree_en.hhc \ No newline at end of file
diff --git a/html/wb/make_hh.lua b/html/wb/make_hh.lua
new file mode 100644
index 0000000..c7a5b6c
--- /dev/null
+++ b/html/wb/make_hh.lua
@@ -0,0 +1,274 @@
+---------------------------------------------------------------------
+-- This program converts from Tecgraf's WebBook to HTML Help Project Files.
+-- by Mark Stroetzel Glasberg and Antonio Scuri
+-- 09 Dec, 2004
+---------------------------------------------------------------------
+
+languages_description = {
+ en = "0x0409 English - United States",
+ es = "0x040A Spanish - Standard",
+ fr = "0x040C French - Standard",
+ de = "0x0407 German - Standard",
+-- pt = "0x0816 Portuguese - Standard",
+ pt = "0x0416 Portuguese - Brazil",
+ it = "0x0410 Italian - Standard"
+}
+
+-- INITIALIZATION ---------------------------------------------------
+
+function isinlist(lng, list)
+ local i = 1
+ local n = #list
+ while i <= n do
+ if list[i] == lng then
+ return 1
+ end
+ i = i + 1;
+ end
+ return nil
+end
+
+-- BASIC FUNCTIONS --------------------------------------------------
+
+function out(string)
+ file:write(string)
+end
+
+function outln(string)
+ local i = ident + 1
+ while i>0 do
+ file:write(" ")
+ i = i - 1
+ end
+ file:write(string.."\n")
+end
+
+-- HHP FILE FUNCTIONS ------------------------------------------------
+
+files = {}
+
+function add2files(v)
+ if v then
+ -- only up to "#"
+ local j = string.find(v, "#")
+ if j then
+ f = string.sub(v, 0, j-1)
+ else
+ f = v
+ end
+
+ files[f] = f
+ end
+end
+
+function writehhpheader()
+ out("[OPTIONS]\n")
+ outln("Binary Index=No")
+ outln("Compatibility=1.0")
+ outln("Compiled file=" .. wb_usr.file_title .. "_" .. lng .. ".chm")
+ outln("Contents file=wb_tree" .. "_" .. lng .. ".hhc")
+ outln("Default topic=" .. lng .. "/" .. wb_usr.tree.link)
+ outln("Display compile notes=Yes")
+ outln("Display compile progress=Yes")
+ outln("Full-text search=Yes")
+ outln("Language="..languages_description[lng])
+ outln("Title="..wb_usr.messages[lng].title)
+ out("\n")
+ out("[FILES]\n")
+ outln(lng .. "/" .. wb_usr.tree.link)
+end
+
+function writehhpfooter()
+ local tmp = [[
+[INFOTYPES]
+ ]]
+ out(tmp)
+end
+
+function writehhpcenter()
+ if (not files) then return end
+
+ local v = next(files, nil)
+ while v ~= nil do
+ outln(dir..v)
+ v = next(files, v)
+ end
+end
+
+function writehhp()
+ writehhpheader()
+ writehhpcenter()
+ writehhpfooter()
+end
+
+
+-- HHC FILE FUNCTIONS ------------------------------------------------
+
+function writeheader()
+ out("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n")
+ out("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n")
+ out("<HTML>\n")
+ out("<HEAD>\n")
+ out("<meta name=\"GENERATOR\" content=\"Microsoft&reg; HTML Help Workshop 4.1\">\n")
+ out("<!-- Sitemap 1.0 -->\n")
+ out("<!-- Generated by WebBook -->\n")
+ out("</HEAD><BODY>\n")
+ out(" <UL>\n")
+ out(" <LI> <OBJECT type=\"text/sitemap\">\n")
+ out(" <param name=\"Name\" value=\""..wb_usr.messages[lng].title.."\">\n")
+ out(" <param name=\"Local\" value=\""..lng .. "/" .. wb_usr.tree.link .. "\">\n")
+ out(" </OBJECT>\n")
+end
+
+function type_string (o)
+ return type(o) == "string"
+end
+
+function writeend()
+ out(" </UL>\n")
+ out("</BODY>\n")
+ out("</HTML>\n")
+end
+
+function writesubitems(tree, mainlink)
+ if (not tree) then
+ return
+ end
+ local i = 1
+ local n = #tree
+ while i <= n do
+ writetopic(tree[i], mainlink)
+ i = i + 1
+ end
+ ident = ident - 1
+end
+
+-- mainlink is the link of the father -> if no link is specified
+-- this is the one that is used.
+function writetopic(t, mainlink)
+ local link
+ local topic_name
+
+ add2files(mainlink)
+
+ if t.name == nil then
+ print("ERROR: Title is nil.")
+ return
+ end
+
+ if (t.name[lng]) then
+ topic_name = t.name[lng]
+ else
+ topic_name = t.name["nl"]
+ end
+
+ if topic_name == nil then
+ print("ERROR: Title is nil in language [" .. lng .. "].")
+ return
+ end
+
+ if t.link and t.link ~= "" then
+ link = t.link
+ else
+ link = nil
+ end
+
+ add2files(link)
+
+ if t.bookmark then
+ if link == nil and mainlink == nil then
+ print("Error saving bookmark!!!")
+ return
+ end
+
+ if link then
+ linkB = link .. "#" .. t.bookmark
+ else
+ linkB = mainlink .. "#" .. t.bookmark
+ end
+ else
+ linkB = nil
+ end
+
+ outln("<LI> <OBJECT type=\"text/sitemap\">")
+ outln("<param name=\"Name\" value=\""..topic_name.."\">")
+ if linkB then
+ outln("<param name=\"Local\" value=\""..dir..linkB.."\">")
+ else
+ if link then
+ outln("<param name=\"Local\" value=\""..dir..link.."\">")
+ end
+ end
+ if useimage == 1 then
+ if t.folder then
+ if ident == 0 then
+ outln("<param name=\"ImageNumber\" value=\"1\">")
+ else
+ outln("<param name=\"ImageNumber\" value=\"6\">")
+ end
+ else
+ outln("<param name=\"ImageNumber\" value=\"11\">")
+ end
+ end
+ outln("</OBJECT>")
+
+ -- Write folder --
+ if t.folder then
+ ident = ident + 1
+ outln("<UL>")
+ if link == nil then
+ writesubitems(t.folder, mainlink)
+ else
+ writesubitems(t.folder, link)
+ end
+ outln("</UL>")
+ end
+
+end
+
+function writetopics(tree)
+ if (not tree) then return end
+ local i = 1;
+ local n = #tree
+ while i <= n do
+ outln("<UL>")
+ writetopic(tree[i], nil)
+ outln("</UL>")
+ i = i + 1
+ end
+end
+
+-- MAIN -------------------------------------------------------------
+
+-- lng -> from the command line
+
+dofile("wb_usr.lua")
+
+if (not arg[1]) then
+ error("Missing language parameter.")
+end
+
+lng = arg[1]
+dir = lng.."/"
+ident = 0
+useimage = 1 -- Use images based on given information
+file = nil
+
+print("Writing \"wb_tree" .. "_" .. lng .. ".hhc\" file.")
+file = io.open("wb_tree" .. "_" .. lng .. ".hhc", "w")
+writeheader()
+writetopics(wb_usr.tree.folder)
+writeend()
+file:close()
+
+if ident ~= 0 then
+ print("Ident not correct!")
+end
+
+print("Writing \"wb" .. "_" .. lng .. ".hhp\" file.")
+file = io.open("wb" .. "_" .. lng .. ".hhp", "w")
+writehhp()
+file:close()
+
+print("done.")
+
diff --git a/html/wb/template_index.html b/html/wb/template_index.html
new file mode 100644
index 0000000..75c72e0
--- /dev/null
+++ b/html/wb/template_index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title>WB_TITLE</title>
+</head>
+
+<frameset rows="51,*" frameborder="0" framespacing="0" bordercolor="#0B6DCE">
+ <frame name="wb_title" scrolling="no" noresize="noresize" src="wb_titleWB_LNG.html"
+ frameborder="0" marginheight="0" marginwidth="0" target="wb_cont">
+ <frameset cols="WB_START_SIZE,*" frameborder="1" framespacing="4" bordercolor="#0B6DCE" border="4">
+ <frameset rows="27,*" frameborder="0" framespacing="0" bordercolor="#0B6DCE">
+ <frame name="wb_bar" scrolling="no" src="wb_barWB_LNG.html" frameborder="0" target="wb_cont">
+ <frame name="wb_tree" src="wb_treeWB_LNG.html" frameborder="1" target="wb_cont">
+ </frameset>
+ <frame name="wb_cont" src="WB_START_PAGE" frameborder="0">
+ </frameset>
+ <noframes>
+ <body>
+
+ <p>This page uses frames, but your browser doesn&#39;t support them.</p>
+
+ </body>
+ </noframes>
+</frameset>
+
+</html>
diff --git a/html/wb/template_ssSearch.html b/html/wb/template_ssSearch.html
new file mode 100644
index 0000000..23d93ea
--- /dev/null
+++ b/html/wb/template_ssSearch.html
@@ -0,0 +1,22 @@
+<html>
+<head>
+<title>ssSearch</title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+<body>
+<h3>WB_SEARCH</h3>
+<blockquote>
+<center>
+ <applet code="ssSearch.class" width="640" height="480">
+ <param name="BGCOLOR" value="0B6DCE">
+ <param name="LISTAREACOLOR" value="ffffff">
+ <!-- Use "_self", "_blank", "_parent", "_top" or any other user-defined name -->
+ <param name="TARGETFRAME" value="_self">
+ <param name="DATAFILE" value="wb_searchWB_LNG.txt">
+ <!-- The APPLETHOME param is just an acknowledgement -->
+ <!-- Do not edit the value of APPLETHOME param -->
+ <param name="APPLETHOME" value="http://www.geocities.com/SiliconValley/Lakes/5365/index.html">
+ </applet>
+</center>
+</blockquote>
+</body></html>
diff --git a/html/wb/template_wb_bar.html b/html/wb/template_wb_bar.html
new file mode 100644
index 0000000..46b98d8
--- /dev/null
+++ b/html/wb/template_wb_bar.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us" >
+ <title>Bar</title>
+ <base target="wb_cont">
+ <style type="text/css">
+ .navigation{
+ padding: 0;
+ margin: 0;
+ white-space: nowrap;
+ border: 1px solid #7F93C7;
+ background-color: #FFFFFF;
+ line-height: 19px;
+ }
+ .navigation p { margin: 1px; white-space: nowrap; }
+ .navigation img { vertical-align: middle; }
+ </style>
+</head>
+
+<body style="margin: 2px; background-color: #F1F1F1">
+ <div class="navigation">
+ <p><a target="_blank" href="http://www.tecgraf.puc-rio.br/webbook"><img src="wb_img/webbook.png" onmouseover="this.src='wb_img/webbook_over.png'" onmouseout="this.src='wb_img/webbook.png'" style="border-width: 0px"></a><img src="wb_img/barlineleft.png"><img alt="WB_EXPALL_ALT" src="wb_img/showall.png" onclick="parent.wb_tree.showAllFolders()" onmouseover="this.src='wb_img/showall_over.png'" onmouseout="this.src='wb_img/showall.png'"><img alt="WB_CONTALL_ALT" src="wb_img/hideall.png" onclick="parent.wb_tree.hideAllFolders()" onmouseover="this.src='wb_img/hideall_over.png'" onmouseout="this.src='wb_img/hideall.png'"><img alt="WB_SYNC_ALT" src="wb_img/sync.png" onclick="parent.wb_tree.syncContents()" onmouseover="this.src='wb_img/sync_over.png'" onmouseout="this.src='wb_img/sync.png'"><img alt="WB_NEXT_ALT" src="wb_img/next.png" onclick="parent.wb_tree.nextContents()" onmouseover="this.src='wb_img/next_over.png'" onmouseout="this.src='wb_img/next.png'"><img alt="WB_PREV_ALT" src="wb_img/previous.png" onclick="parent.wb_tree.prevContents()" onmouseover="this.src='wb_img/previous_over.png'" onmouseout="this.src='wb_img/previous.png'">WB_LNG_BUTTON</p>
+ </div>
+</body>
+</html>
diff --git a/html/wb/template_wb_title.html b/html/wb/template_wb_title.html
new file mode 100644
index 0000000..e35662c
--- /dev/null
+++ b/html/wb/template_wb_title.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title>Title</title>
+<base target="wb_cont">
+<style type="text/css">
+td.title {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 16pt;
+ font-weight: bold;
+ color: #FFFFFF;
+ text-align: left;
+ vertical-align: middle;
+}
+td.contact {
+ text-align: center;
+ vertical-align: middle;
+ width: 11em;
+}
+a.contact {
+ font-family: Arial, Helvetica, sans-serif;
+ color: #0962BB;
+ font-size: 9pt;
+ text-decoration: none;
+ font-weight: bold;
+}
+a.contact:hover {
+ text-decoration: underline;
+}
+</style>
+</head>
+
+<body style="background-color: WB_TITLE_BGCOLOR; margin-left: 3px; margin-right: 3px; margin-top: 2px; margin-bottom: 0; background-image: url('wb_img/title_background.png');">
+
+<table style="width: 100%" cellspacing="0" cellpadding="0">
+ <tr>
+ <td style="width: 50px;"><img src="logo.gif"></td>
+ <td class="title">WB_BAR_TITLE</td>
+ <td style="width: 3.5em">
+ <a class="contact" href="ssSearchWB_LNG.html">SimpleSearch</a>
+ </td>
+ <td style="width: 11em">
+ <FORM method=GET action="http://www.google.com/search" style="margin-bottom: 0; margin: 0; text-align: center; ">
+ <input type=hidden name=ie value=UTF-8>
+ <input type=hidden name=oe value=UTF-8>
+ <INPUT TYPE=text name=q size=21 maxlength=255 value=""><br>
+ <A HREF="http://www.google.com/"><IMG SRC="wb_img/google.gif" border="0" ALT="Google"></A>
+ <INPUT type=submit name=btnG VALUE="Search" style="height: 21px; vertical-align: top; font-size: x-small;">
+ <input type=hidden name=domains value="WB_SEARCH_LINK">
+ <input type=hidden name=sitesearch value="WB_SEARCH_LINK" checked>
+ <input type=hidden name=sitesearch value="">
+ </FORM>
+ </td>
+ <td class="contact">
+ <a class="contact" target="_blank" href="WB_COPYRIGHT_LINK">© WB_COPYRIGHT_NAME</a>
+ <br>
+ <a class="contact" href="mailto:WB_CONTACT">(WB_CONTACT)</a>
+ </td>
+ </tr>
+</table>
+
+</body>
+
+</html>
diff --git a/html/wb/template_wb_tree.html b/html/wb/template_wb_tree.html
new file mode 100644
index 0000000..4e45163
--- /dev/null
+++ b/html/wb/template_wb_tree.html
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us" >
+ <title>Tree</title>
+ <base target="wb_cont">
+ <style type="text/css">
+ .tree { font-family: helvetica, sans-serif; font-size: 10pt; }
+ .tree h3 {
+ margin: 5px 0px 0px 0px;
+ font-size: 12pt;
+ }
+ .tree p { margin: 0px; white-space: nowrap; }
+ .tree p.sep { margin: 0px; white-space: nowrap; line-height: 8px; font-size: 5px; }
+ .tree div { display: none; margin: 0px; }
+ .tree img { vertical-align: middle; }
+ .tree a.el { text-decoration: none; margin-left: 4px; color: #003366; }
+ .tree a:hover { text-decoration: none; background-color: #e0e0ff }
+ </style>
+ <script type="text/javascript">
+ lastLink = null;
+
+ function hideFolder(folder, id)
+ {
+ var imageNode = document.images["img" + id];
+ if (imageNode != null)
+ {
+ var len = imageNode.src.length;
+ if (imageNode.src.substring(len-8,len-4) == "last")
+ imageNode.src = "wb_img/plusnodelast.png";
+ else if (imageNode.src.substring(len-8,len-4) == "node")
+ imageNode.src = "wb_img/plusnode.png";
+ }
+ folder.style.display = "none";
+ }
+
+ function showFolder(folder, id)
+ {
+ var imageNode = document.images["img" + id];
+ if (imageNode != null)
+ {
+ var len = imageNode.src.length;
+ if (imageNode.src.substring(len-8,len-4) == "last")
+ imageNode.src = "wb_img/minusnodelast.png";
+ else if (imageNode.src.substring(len-8,len-4) == "node")
+ imageNode.src = "wb_img/minusnode.png";
+ }
+ folder.style.display = "block";
+ }
+
+ function toggleFolder(id)
+ {
+ var folder = document.getElementById(id);
+ if (folder.style.display == "block")
+ hideFolder(folder, id);
+ else
+ showFolder(folder, id);
+ }
+
+ function setFoldersAtLevel(level, show)
+ {
+ var i = 1;
+ do
+ {
+ var folder_id = level + "." + i;
+ var id = "folder" + folder_id;
+ var folder = document.getElementById(id);
+ if (folder != null)
+ {
+ setFoldersAtLevel(folder_id, show);
+
+ if (show)
+ showFolder(folder, id);
+ else
+ hideFolder(folder, id);
+ }
+ i++;
+ } while(folder != null);
+ }
+
+ function showAllFolders()
+ {
+ setFoldersAtLevel("", true);
+ }
+
+ function hideAllFolders()
+ {
+ setFoldersAtLevel("", false);
+ }
+
+ function getFolderId(name)
+ {
+ return name.substring(name.indexOf("folder"), name.length);
+ }
+
+ function showFolderRec(id)
+ {
+ var folder = document.getElementById(id);
+ if (folder != null)
+ {
+ showFolder(folder, id);
+
+ var parent_id = id.substring(0, id.lastIndexOf("."))
+ if (parent_id != null && parent_id != "folder")
+ {
+ showFolderRec(parent_id)
+ }
+ }
+ }
+
+ function clearLastLink()
+ {
+ if (lastLink != null)
+ {
+ lastLink.style.color = ""
+ lastLink = null;
+ }
+ }
+
+ function goToLink(link)
+ {
+ var id = getFolderId(link.name);
+ showFolderRec(id);
+ location.hash = "#" + link.name;
+ link.style.color = "#ff0000";
+
+ clearLastLink();
+ lastLink = link;
+ }
+
+ function syncContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ goToLink(link)
+ return
+ }
+ }
+ }
+
+ function nextContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ if (i == document.links.length-1)
+ link = document.links[0];
+ else
+ link = document.links[i+1];
+
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+
+ function prevContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+ var prev_link = document.links[document.links.length-1]
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ if (i == 0)
+ link = document.links[document.links.length-1];
+ else
+ link = document.links[i-1];
+
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+
+ function showStartPage()
+ {
+ var full_url = parent.document.URL;
+ if (full_url == null)
+ return;
+
+ var param = full_url.substring(full_url.indexOf("?") + 1, full_url.length);
+ if (param == null)
+ return;
+
+ var param_url = param.substring(param.indexOf("url=") + 4, param.length);
+ if (param_url == null)
+ return;
+
+ var param_len = param_url.length;
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ var link_url = link.href.substring(link.href.length-param_len, link.href.length)
+ if (link_url == param_url)
+ {
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+ </script>
+</head>
+
+<body style="margin: 2px; background-color: #F1F1F1" onload="showStartPage()">
+ <div class="tree" onmouseout="clearLastLink()">
diff --git a/html/wb/wb2hh.bat b/html/wb/wb2hh.bat
new file mode 100644
index 0000000..94c4459
--- /dev/null
+++ b/html/wb/wb2hh.bat
@@ -0,0 +1,29 @@
+@echo off
+
+Echo Building...
+lua5.1 make_hh.lua %1
+Echo .
+pause
+
+Echo Preparing...
+move wb_%1.hhp ..
+move wb_tree_%1.hhc ..
+cd ..
+move download download.old
+Echo .
+pause
+
+Echo Compiling...
+hhc wb_%1.hhp
+Echo .
+pause
+
+Echo Finishing...
+move wb_%1.hhp wb
+move wb_tree_%1.hhc wb
+move download.old download
+move /y *.chm download
+cd wb
+Echo .
+
+Echo Done.
diff --git a/html/wb/wb_build.bat b/html/wb/wb_build.bat
new file mode 100644
index 0000000..9cf43fc
--- /dev/null
+++ b/html/wb/wb_build.bat
@@ -0,0 +1 @@
+@lua5.1 wb_build.lua
diff --git a/html/wb/wb_build.lua b/html/wb/wb_build.lua
new file mode 100644
index 0000000..1963158
--- /dev/null
+++ b/html/wb/wb_build.lua
@@ -0,0 +1,364 @@
+
+dofile("wb_usr.lua")
+
+lngCount = nil
+lngSuffix = nil
+lngIndex = nil
+lngNext = nil
+linkCount = 1
+
+function readFile(filename)
+ local file = io.open(filename)
+ local text = file:read("*a")
+ file:close()
+ return text
+end
+
+function writeFile(filename, text)
+ local file = io.open(filename, "w")
+ file:write(text)
+ file:close()
+end
+
+-- #####################################################################
+
+htmlFiles = {}
+
+function addHtmlFile(v)
+ if v then
+ -- only up to "#"
+ local j = string.find(v, "#")
+ if j then
+ f = string.sub(v, 0, j-1)
+ else
+ f = v
+ end
+
+ htmlFiles[f] = f
+ end
+end
+
+-- #####################################################################
+
+function writeIndexFile()
+ print("Writing \"../index"..lngSuffix..".html\".")
+
+ local wb_index = readFile("template_index.html")
+
+ wb_index = string.gsub(wb_index, "WB_TITLE", wb_usr.messages[lngIndex].title)
+ wb_index = string.gsub(wb_index, "WB_START_SIZE", wb_usr.start_size)
+ wb_index = string.gsub(wb_index, "WB_START_PAGE", lngIndex.."/"..wb_usr.tree.link)
+ if (lngCount > 1) then
+ wb_index = string.gsub(wb_index, "WB_LNG", lngSuffix)
+ else
+ wb_index = string.gsub(wb_index, "WB_LNG", "")
+ end
+
+ writeFile("../index"..lngSuffix..".html", wb_index)
+end
+
+-- #####################################################################
+
+function writeTitleFile()
+ print("Writing \"../wb_title"..lngSuffix..".html\".")
+
+ local wb_title = readFile("template_wb_title.html")
+
+ wb_title = string.gsub(wb_title, "WB_BAR_TITLE", wb_usr.messages[lngIndex].bar_title)
+ wb_title = string.gsub(wb_title, "WB_TITLE_BGCOLOR", wb_usr.title_bgcolor)
+ wb_title = string.gsub(wb_title, "WB_SEARCH_LINK", wb_usr.search_link)
+ wb_title = string.gsub(wb_title, "WB_COPYRIGHT_LINK", wb_usr.copyright_link)
+ wb_title = string.gsub(wb_title, "WB_COPYRIGHT_NAME", wb_usr.copyright_name)
+ wb_title = string.gsub(wb_title, "WB_CONTACT", wb_usr.contact)
+
+ if (lngCount > 1) then
+ wb_title = string.gsub(wb_title, "WB_LNG", lngSuffix)
+ else
+ wb_title = string.gsub(wb_title, "WB_LNG", "")
+ end
+
+ writeFile("../wb_title"..lngSuffix..".html", wb_title)
+end
+
+-- #####################################################################
+
+function writeIndent(file, level)
+ -- base identation
+ file:write(" ")
+
+ for i = 1, level*2, 1 do
+ file:write(" ")
+ end
+end
+
+function getNodeName(node)
+ local name = nil
+ if (node.name[lngIndex]) then
+ name = node.name[lngIndex]
+ else
+ name = node.name["nl"]
+ end
+
+ if not name then
+ error("Name not found.")
+ end
+
+ return name
+end
+
+function writeNode(file, node, opened, level, folder_index, folder_suffix, node_suffix, child_prefix)
+ if (node.folder) then -- folder
+ -- box image
+ writeIndent(file, level)
+ file:write("<p>")
+
+ folder_suffix = folder_suffix .. "." .. folder_index
+
+ file:write(child_prefix.."<img name=\"imgfolder"..folder_suffix.."\" ")
+
+ if (opened) then
+ file:write("src=\"wb_img/minusnode"..node_suffix..".png\" ")
+ else
+ file:write("src=\"wb_img/plusnode"..node_suffix..".png\" ")
+ end
+
+ file:write("onclick=\"toggleFolder('folder"..folder_suffix.."')\">")
+
+ if (node.link) then
+ file:write("<a name=\"link"..linkCount.."folder"..folder_suffix.."\" class=\"el\" href=\""..lngIndex.."/"..node.link.."\">"..getNodeName(node).."</a>")
+ addHtmlFile(node.link)
+ linkCount = linkCount + 1
+ else
+ file:write(" "..getNodeName(node))
+ end
+
+ file:write("</p>\n")
+
+ -- folder div
+ writeIndent(file, level)
+ if (opened) then
+ file:write("<div id=\"folder"..folder_suffix.."\" style=\"display:block\">\n")
+ else
+ file:write("<div id=\"folder"..folder_suffix.."\">\n")
+ end
+
+ local n = #(node.folder)
+ local next_folder_index = 0
+ local next_node_suffix = ""
+ local next_child_prefix = "<img src=\"wb_img/vertline.png\">"
+ if (node_suffix == "last") then
+ next_child_prefix = "<img src=\"wb_img/blank.png\">"
+ end
+ for i = 1, n, 1 do
+ if (i == n) then
+ next_node_suffix = "last"
+ end
+ if (node.folder[i].folder) then
+ next_folder_index = next_folder_index + 1
+ end
+ writeNode(file, node.folder[i], false, level+1, next_folder_index, folder_suffix, next_node_suffix, child_prefix..next_child_prefix)
+ end
+
+ writeIndent(file, level)
+ file:write("</div>\n")
+ else -- leaf
+ if (node.link and node.link ~= "") then -- normal leaf
+ writeIndent(file, level)
+ file:write("<p>"..child_prefix.."<img src=\"wb_img/node"..node_suffix..".png\"><a class=\"el\" name=\"link"..linkCount.."folder"..folder_suffix.."\" href=\""..lngIndex.."/"..node.link.."\">"..getNodeName(node).."</a></p>\n")
+ addHtmlFile(node.link)
+ linkCount = linkCount + 1
+ else -- separator leaf
+ writeIndent(file, level)
+ file:write("<p class=\"sep\">")
+
+ local sep_child_prefix = string.gsub(child_prefix, "/vertline", "/sepvertline")
+ sep_child_prefix = string.gsub(sep_child_prefix, "/blank", "/sepblank")
+
+ file:write(sep_child_prefix.."<img src=\"wb_img/sepnode.png\"></p>\n")
+ end
+ end
+end
+
+function writeTree(file)
+ -- root node
+ file:write(" <h3><a name=\"link0folder.0\" class=\"el\" href=\""..lngIndex.."/"..wb_usr.tree.link.."\">"..getNodeName(wb_usr.tree).."</a></h3>\n")
+ addHtmlFile(wb_usr.tree.link)
+
+ local folder = wb_usr.tree.folder
+ local n = #folder
+ local node_suffix = ""
+ local folder_index = 0
+ for i = 1, n, 1 do
+ if (i == n) then
+ node_suffix = "last"
+ end
+ if (folder[i].folder) then
+ folder_index = folder_index + 1
+ end
+ if (i == 1 and wb_usr.start_open) then
+ writeNode(file, folder[i], true, 1, folder_index, "", node_suffix, "")
+ else
+ writeNode(file, folder[i], false, 1, folder_index, "", node_suffix, "")
+ end
+ end
+end
+
+function writeTreeFile()
+ print("Writing \"../wb_tree"..lngSuffix..".html\".")
+
+ local file = io.open("../wb_tree"..lngSuffix..".html", "w")
+
+ -- Write Header
+ local wb_tree = readFile("template_wb_tree.html")
+ file:write(wb_tree)
+
+ -- Write Tree Nodes and Leafs
+ writeTree(file)
+
+ -- Write Footer
+ file:write(" </div>\n")
+ file:write("</body>\n")
+ file:write("</html>\n")
+
+ file:close()
+end
+
+-- #####################################################################
+
+lngMessages =
+{
+ search= {
+ en= "Simple Search",
+ pt= "Busca Simples",
+ es= "Busca Simples",
+ },
+ exp_all= {
+ en= "Expand All Nodes",
+ pt= "Expande Todos os Nós",
+ es= "Ensanchar Todos Nodos",
+ },
+ cont_all= {
+ en= "Contract All Nodes",
+ pt= "Contrai Todos os Nós",
+ es= "Contrato Todos Nodos",
+ },
+ sync= {
+ en= "Sync Tree with Contents",
+ pt= "Sincroniza Árvore com Conteúdo",
+ es= "Sincroniza Árbol con el Contenido",
+ },
+ lang= {
+ en= "Switch Language",
+ pt= "Troca Idioma",
+ es= "Cambie Idioma",
+ },
+ next= {
+ en= "Next Link",
+ pt= "Próximo Link",
+ es= "Próximo Link",
+ },
+ prev= {
+ en= "Previous Link",
+ pt= "Link Anterior",
+ es= "Link Anterior",
+ },
+}
+
+function writeBarFile()
+ print("Writing \"../wb_bar"..lngSuffix..".html\".")
+
+ local file = io.open("../wb_bar"..lngSuffix..".html", "w")
+
+ local wb_bar = readFile("template_wb_bar.html")
+
+ wb_bar = string.gsub(wb_bar, "WB_EXPALL_ALT", lngMessages.exp_all[lngIndex])
+ wb_bar = string.gsub(wb_bar, "WB_CONTALL_ALT", lngMessages.cont_all[lngIndex])
+ wb_bar = string.gsub(wb_bar, "WB_SYNC_ALT", lngMessages.sync[lngIndex])
+ wb_bar = string.gsub(wb_bar, "WB_NEXT_ALT", lngMessages.next[lngIndex])
+ wb_bar = string.gsub(wb_bar, "WB_PREV_ALT", lngMessages.prev[lngIndex])
+
+ if (lngCount > 1) then
+ local lng_button = "<img src=\"wb_img/barlineright.png\">"
+ lng_button = lng_button .. "<a target=\"_top\" href=\"index_"..lngNext..".html\"><img alt=\""..lngMessages.lang[lngIndex].."\" src=\"wb_img/lng"..lngSuffix..".png\" onmouseover=\"this.src='wb_img/lng"..lngSuffix.."_over.png'\" onmouseout=\"this.src='wb_img/lng"..lngSuffix..".png'\" style=\"border-width: 0px\"></a>"
+ wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", lng_button)
+ else
+ wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", "")
+ end
+
+ file:write(wb_bar)
+ file:close()
+end
+
+-- #####################################################################
+
+function writeSearchFile()
+ print("Writing \"../ssSearch"..lngSuffix..".html\".")
+
+ local file = io.open("../ssSearch"..lngSuffix..".html", "w")
+
+ local wb_search = readFile("template_ssSearch.html")
+
+ wb_search = string.gsub(wb_search, "WB_SEARCH", lngMessages.search[lngIndex])
+
+ if (lngCount > 1) then
+ wb_search = string.gsub(wb_search, "WB_LNG", lngSuffix)
+ else
+ wb_search = string.gsub(wb_search, "WB_LNG", "")
+ end
+
+ file:write(wb_search)
+ file:close()
+end
+
+function writeSearchIndexFile()
+ print("Writing \"../wb_search"..lngSuffix..".txt\".")
+
+ local file = io.open("../wb_search"..lngSuffix..".txt", "w")
+
+ local v = next(htmlFiles, nil)
+ while v ~= nil do
+ file:write(lngIndex.."/"..v.."\n")
+ v = next(htmlFiles, v)
+ end
+
+ file:close()
+end
+
+-- #####################################################################
+
+lngCount = 0
+local first_name = nil
+local prev_elem = nil
+for name, elem in pairs(wb_usr.messages) do
+ if (lngCount == 0) then
+ first_name = name
+ end
+ lngCount = lngCount + 1
+ if (prev_elem) then
+ prev_elem.next = name
+ end
+ prev_elem = elem
+end
+prev_elem.next = first_name
+
+print("Building...")
+
+for name, elem in pairs(wb_usr.messages) do
+ lngIndex = name
+ lngNext = elem.next
+
+ if (lngCount > 1) then
+ lngSuffix = "_"..lngIndex
+ else
+ lngSuffix = ""
+ end
+
+ writeIndexFile()
+ writeTitleFile()
+ writeBarFile()
+ writeTreeFile()
+ writeSearchFile()
+ writeSearchIndexFile()
+end
+
+print("Done.")
diff --git a/html/wb/wb_usr.lua b/html/wb/wb_usr.lua
new file mode 100644
index 0000000..bcbaeec
--- /dev/null
+++ b/html/wb/wb_usr.lua
@@ -0,0 +1,1043 @@
+wb_usr = {
+ contact = "cd@tecgraf.puc-rio.br",
+ title_bgcolor = "#3366CC",
+ copyright_link = "http://www.tecgraf.puc-rio.br",
+ search_link = "http://www.tecgraf.puc-rio.br/cd",
+ start_size = "180",
+ langs = {"en"},
+ copyright_name = "Tecgraf/PUC-Rio",
+ file_title = "cd",
+ start_open = "1"
+}
+
+wb_usr.messages = {
+ en = {
+ bar_title = "CD - Version 5.1",
+ title = "CD - Canvas Draw",
+ }
+}
+
+wb_usr.tree =
+{
+ name= {nl= "CD"},
+ link= "home.html",
+ folder=
+ {
+ {
+ name= {en= "Product", pt= "Produto"},
+ link= "prod.html",
+ folder=
+ {
+ {
+ name= {en= "Overview", pt= "Visão Geral"},
+ link= "prod.html#Overview"
+ },
+ {
+ name= {en= "Availability", pt= "Disponibilidade"},
+ link= "prod.html#Availability"
+ },
+ {
+ name= {en= "Support", pt= "Suporte"},
+ link= "prod.html#Suport"
+ },
+ {
+ name= {en= "Credits", pt= "Créditos"},
+ link= "prod.html#Acknowledgments"
+ },
+ {
+ name= {en= "Documentation", pt= "Documentação"},
+ link= "prod.html#About"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "Copyright/License"},
+ link= "copyright.html"
+ },
+ {
+ name= {nl= "Download"},
+ link= "download.html",
+ folder=
+ {
+ {
+ name= {en= "Library Download Tips"},
+ link= "download_tips.html"
+ }
+ }
+ },
+ {
+ name= {nl= "CVS"},
+ link= "cvs.html"
+ },
+ {
+ name= {en= "History", pt= "Histórico"},
+ link= "history.html"
+ },
+ {
+ name= {en= "To Do", pt= "Pendências"},
+ link= "to_do.html"
+ },
+ {
+ name= {en= "Comparing", pt= "Outras Bibliotecas Gráficas"},
+ link= "toolkits.html"
+ }
+ }
+ },
+ {
+ name= {en= "Guide", pt= "Guia"},
+ link= "guide.html",
+ folder=
+ {
+ {
+ name= {en= "Getting Started", pt= "Notas de Implementação"},
+ link= "guide.html#start"
+ },
+ {
+ name= {en= "Building Applications", pt= "Arquivos de Inclusão"},
+ link= "guide.html#buildapp"
+ },
+ { name= {en= "Building the Library"}, link= "guide.html#buildlib" },
+ {
+ name= {en= "Environment Variables", pt= "Variável de Ambiente"},
+ link= "guide.html#Environment"
+ },
+ {
+ name= {en= "Implementing a Driver", pt= "Implementando um Driver"},
+ link= "guide.html#NewDriver"
+ },
+ {
+ name= {en= "Intercepting Primitives", pt= "Interceptando Primitivas"},
+ link= "guide.html#Play"
+ },
+ {
+ name= {en= "IUP Compatibility", pt= "Uso com a Biblioteca IUP"},
+ link= "guide.html#IUP"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {en= "Internal Architecture", pt= "Arquitetura Interna"},
+ link= "internal.html"
+ },
+ {
+ name= {en= "Samples", pt= "Exemplos"},
+ link= "samples.html"
+ },
+ {
+ name= {en= "Lua Binding", pt= "Ligação com Lua"},
+ link= "cdlua.html"
+ },
+ {
+ name= {en= "CDLua+IMLua", pt= "Ligação com Lua"},
+ link= "cdluaim.html"
+ }
+ }
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {en= "Canvas"},
+ link= "canvas.html",
+ folder=
+ {
+ {
+ name= {en= "Initialization"},
+ folder=
+ {
+ {
+ name= {nl= "CreateCanvas"},
+ link= "func/init.html#cdCreateCanvas"
+ },
+ {
+ name= {nl= "CreateCanvasf"},
+ link= "func/init.html#cdCreateCanvasf"
+ },
+ {
+ name= {nl= "KillCanvas"},
+ link= "func/init.html#cdKillCanvas"
+ },
+ {
+ name= {nl= "Activate"},
+ link= "func/init.html#cdCanvasActivate"
+ },
+ {
+ name= {nl= "Deactivate"},
+ link= "func/init.html#cdCanvasDeactivate"
+ },
+ {
+ name= {nl= "UseContextPlus"},
+ link= "func/init.html#cdUseContextPlus"
+ },
+ {
+ name= {nl= "InitContextPlus"},
+ link= "func/init.html#cdInitContextPlus"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "GetContext"},
+ link= "func/init.html#cdGetContext"
+ },
+ {
+ name= {nl= "ContextCaps"},
+ link= "func/init.html#cdContextCaps"
+ },
+ {
+ name= {nl= "Simulate"},
+ link= "func/init.html#cdSimulate"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "cdlua_open"},
+ link= "func/init.html#cdlua_open"
+ },
+ {
+ name= {nl= "cdlua_close"},
+ link= "func/init.html#cdlua_close"
+ },
+ {
+ name= {nl= "cdlua_getcanvas"},
+ link= "func/init.html#cdlua_getcanvas"
+ }
+ }
+ },
+ {
+ name= {en= "Control"},
+ folder=
+ {
+ {
+ name= {nl= "Clear"},
+ link= "func/control.html#cdClear"
+ },
+ {
+ name= {nl= "Flush"},
+ link= "func/control.html#cdFlush"
+ },
+ {
+ name= {nl= "SaveState"},
+ link= "func/control.html#cdSaveState"
+ },
+ {
+ name= {nl= "RestoreState"},
+ link= "func/control.html#cdRestoreState"
+ },
+ {
+ name= {nl= "ReleaseState"},
+ link= "func/control.html#cdReleaseState"
+ },
+ {
+ name= {nl= "SetAttribute"},
+ link= "func/control.html#cdSetAttribute"
+ },
+ {
+ name= {nl= "SetfAttribute"},
+ link= "func/control.html#cdSetfAttribute"
+ },
+ {
+ name= {nl= "GetAttribute"},
+ link= "func/control.html#cdGetAttribute"
+ }
+ }
+ },
+ {
+ name= {en= "Coordinate System"},
+ folder=
+ {
+ {
+ name= {nl= "GetCanvasSize"},
+ link= "func/coordinates.html#cdGetCanvasSize"
+ },
+ {
+ name= {nl= "UpdateYAxis"},
+ link= "func/coordinates.html#cdUpdateYAxis"
+ },
+ {
+ name= {nl= "MM2Pixel"},
+ link= "func/coordinates.html#cdMM2Pixel"
+ },
+ {
+ name= {nl= "Pixel2MM"},
+ link= "func/coordinates.html#cdPixel2MM"
+ },
+ {
+ name= {nl= "Origin"},
+ link= "func/coordinates.html#cdOrigin"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "Transform"},
+ link= "func/coordinates.html#cdTransform"
+ },
+ {
+ name= {nl= "GetTransform"},
+ link= "func/coordinates.html#cdGetTransform"
+ },
+ {
+ name= {nl= "TransformMultiply"},
+ link= "func/coordinates.html#cdTransformMultiply"
+ },
+ {
+ name= {nl= "TransformTranslate"},
+ link= "func/coordinates.html#cdTransformTranslate"
+ },
+ {
+ name= {nl= "TransformScale"},
+ link= "func/coordinates.html#cdTransformScale"
+ },
+ {
+ name= {nl= "TransformRotate"},
+ link= "func/coordinates.html#cdTransformRotate"
+ }
+ }
+ },
+ {
+ name= {en= "World Coordinates"},
+ link= "func/wd.html",
+ folder=
+ {
+ {
+ name= {nl= "Window"},
+ link= "func/wd.html#wdWindow"
+ },
+ {
+ name= {nl= "GetWindow"},
+ link= "func/wd.html#wdGetWindow"
+ },
+ {
+ name= {nl= "Viewport"},
+ link= "func/wd.html#wdViewport"
+ },
+ {
+ name= {nl= "GetViewport"},
+ link= "func/wd.html#wdGetViewport"
+ },
+ {
+ name= {nl= "World2Canvas"},
+ link= "func/wd.html#wdWorld2Canvas"
+ },
+ {
+ name= {nl= "Canvas2World"},
+ link= "func/wd.html#wdCanvas2World"
+ },
+ {
+ name= {en= "Extra"},
+ folder=
+ {
+ {
+ name= {nl= "Hardcopy"},
+ link= "func/wd.html#wdHardcopy"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "General Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "Foreground"},
+ link= "func/attributes.html#cdForeground"
+ },
+ {
+ name= {nl= "Background"},
+ link= "func/attributes.html#cdBackground"
+ },
+ {
+ name= {nl= "WriteMode"},
+ link= "func/attributes.html#cdWriteMode"
+ }
+ }
+ },
+ {
+ name= {nl= "Clipping"},
+ link= "func/clipping.html",
+ folder=
+ {
+ {
+ name= {nl= "Clip"},
+ link= "func/clipping.html#cdClip"
+ },
+ {
+ name= {nl= "ClipArea"},
+ link= "func/clipping.html#cdClipArea"
+ },
+ {
+ name= {nl= "GetClipArea"},
+ link= "func/clipping.html#cdGetClipArea"
+ },
+ {
+ name= {nl= "Polygons"},
+ link= "func/clipping.html#Polygons"
+ },
+ {
+ name= {nl= "Regions"},
+ link= "func/region.html",
+ folder=
+ {
+ {
+ name= {nl= "Creating"},
+ link= "func/region.html#Creating"
+ },
+ {
+ name= {nl= "RegionCombineMode"},
+ link= "func/region.html#cdRegionCombineMode"
+ },
+ {
+ name= {nl= "RegionCombineMode"},
+ link= "func/region.html#cdRegionCombineMode"
+ },
+ {
+ name= {nl= "PointInRegion"},
+ link= "func/region.html#cdPointInRegion"
+ },
+ {
+ name= {nl= "OffsetRegion"},
+ link= "func/region.html#cdOffsetRegion"
+ },
+ {
+ name= {nl= "RegionBox"},
+ link= "func/region.html#cdRegionBox"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Primitives"},
+ folder=
+ {
+ {
+ name= {en= "Marks"},
+ link= "func/marks.html",
+ folder=
+ {
+ {
+ name= {nl= "Pixel"},
+ link= "func/marks.html#cdPixel"
+ },
+ {
+ name= {nl= "Mark"},
+ link= "func/marks.html#cdMark"
+ },
+ {
+ name= {en= "Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "MarkType"},
+ link= "func/marks.html#cdMarkType"
+ },
+ {
+ name= {nl= "MarkSize"},
+ link= "func/marks.html#cdMarkSize"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Lines"},
+ link= "func/lines.html",
+ folder=
+ {
+ {
+ name= {nl= "Line"},
+ link= "func/lines.html#cdLine"
+ },
+ {
+ name= {nl= "Line Polygons/Bezier Curves"},
+ link= "func/lines.html#Polygons",
+ folder=
+ {
+ {
+ name= {nl= "Polygons and Regions"},
+ link= "func/polygon.html"
+ }
+ }
+ },
+ {
+ name= {nl= "Rect"},
+ link= "func/lines.html#cdRect"
+ },
+ {
+ name= {nl= "Arc"},
+ link= "func/lines.html#cdArc"
+ },
+ {
+ name= {en= "Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "LineStyle"},
+ link= "func/lines.html#cdLineStyle"
+ },
+ {
+ name= {nl= "LineStyleDashes"},
+ link= "func/lines.html#cdLineStyleDashes"
+ },
+ {
+ name= {nl= "LineWidth"},
+ link= "func/lines.html#cdLineWidth"
+ },
+ {
+ name= {nl= "LineJoin"},
+ link= "func/lines.html#cdLineJoin"
+ },
+ {
+ name= {nl= "LineCap"},
+ link= "func/lines.html#cdLineCap"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Filled Areas"},
+ link= "func/filled.html",
+ folder=
+ {
+ {
+ name= {nl= "Polygons"},
+ link= "func/filled.html#Polygons"
+ },
+ {
+ name= {nl= "Box"},
+ link= "func/filled.html#cdBox"
+ },
+ {
+ name= {nl= "Sector"},
+ link= "func/filled.html#cdSector"
+ },
+ {
+ name= {nl= "Chord"},
+ link= "func/filled.html#cdChord"
+ },
+ {
+ name= {en= "Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "BackOpacity"},
+ link= "func/filled.html#cdBackOpacity"
+ },
+ {
+ name= {nl= "FillMode"},
+ link= "func/filled.html#cdFillMode"
+ },
+ {
+ name= {nl= "InteriorStyle"},
+ link= "func/filled.html#cdInteriorStyle"
+ },
+ {
+ name= {nl= "Hatch"},
+ link= "func/filled.html#cdHatch"
+ },
+ {
+ name= {nl= "Stipple"},
+ link= "func/filled.html#cdStipple"
+ },
+ {
+ name= {nl= "Stipple (WC)"},
+ link= "func/filled.html#wdStipple"
+ },
+ {
+ name= {nl= "GetStipple"},
+ link= "func/filled.html#cdGetStipple"
+ },
+ {
+ name= {nl= "Pattern"},
+ link= "func/filled.html#cdPattern"
+ },
+ {
+ name= {nl= "Pattern (WC)"},
+ link= "func/filled.html#wdPattern"
+ },
+ {
+ name= {nl= "GetPattern"},
+ link= "func/filled.html#cdGetPattern"
+ },
+ {
+ name= {nl= "Data Access"},
+ link= "func/filled.html#DataAccess"
+ }
+ }
+ },
+ {
+ name= {en= "Extras in Lua"},
+ folder=
+ {
+ {
+ name= {nl= "CreatePattern"},
+ link= "func/filled.html#cdCreatePattern"
+ },
+ {
+ name= {nl= "KillPattern"},
+ link= "func/filled.html#cdKillPattern"
+ },
+ {
+ name= {nl= "CreateStipple"},
+ link= "func/filled.html#cdCreateStipple"
+ },
+ {
+ name= {nl= "KillStipple"},
+ link= "func/filled.html#cdKillStipple"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Text"},
+ link= "func/text.html",
+ folder=
+ {
+ {
+ name= {nl= "Text"},
+ link= "func/text.html#cdText"
+ },
+ {
+ name= {en= "Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "Font"},
+ link= "func/text.html#cdFont"
+ },
+ {
+ name= {nl= "GetFont"},
+ link= "func/text.html#cdGetFont"
+ },
+ {
+ name= {nl= "NativeFont"},
+ link= "func/text.html#cdNativeFont"
+ },
+ {
+ name= {nl= "TextAlignment"},
+ link= "func/text.html#cdTextAlignment"
+ },
+ {
+ name= {nl= "TextOrientation"},
+ link= "func/text.html#cdTextOrientation"
+ }
+ }
+ },
+ {
+ name= {en= "Properties"},
+ folder=
+ {
+ {
+ name= {nl= "FontDim"},
+ link= "func/text.html#cdFontDim"
+ },
+ {
+ name= {nl= "TextSize"},
+ link= "func/text.html#cdTextSize"
+ },
+ {
+ name= {nl= "TextBox"},
+ link= "func/text.html#cdTextBox"
+ },
+ {
+ name= {nl= "TextBounds"},
+ link= "func/text.html#cdTextBounds"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Vector Text"},
+ link= "func/vectortext.html",
+ folder=
+ {
+ {
+ name= {nl= "VectorText"},
+ link= "func/vectortext.html#cdVectorText"
+ },
+ {
+ name= {nl= "MultiLineVectorText"},
+ link= "func/vectortext.html#cdMultiLineVectorText"
+ },
+ {
+ name= {en= "Attributes"},
+ folder=
+ {
+ {
+ name= {nl= "VectorTextDirection"},
+ link= "func/vectortext.html#cdVectorTextDirection"
+ },
+ {
+ name= {nl= "VectorTextTransform"},
+ link= "func/vectortext.html#cdVectorTextTransform"
+ },
+ {
+ name= {nl= "VectorTextSize"},
+ link= "func/vectortext.html#cdVectorTextSize"
+ },
+ {
+ name= {nl= "VectorCharSize"},
+ link= "func/vectortext.html#cdVectorCharSize"
+ },
+ {
+ name= {nl= "VectorFont"},
+ link= "func/vectortext.html#cdVectorFont"
+ }
+ }
+ },
+ {
+ name= {en= "Properties"},
+ folder=
+ {
+ {
+ name= {nl= "GetVectorTextSize"},
+ link= "func/vectortext.html#cdGetVectorTextSize"
+ },
+ {
+ name= {nl= "GetVectorTextBounds"},
+ link= "func/vectortext.html#cdGetVectorTextBounds"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Client Images"},
+ link= "func/client.html",
+ folder=
+ {
+ {
+ name= {nl= "GetImageRGB"},
+ link= "func/client.html#cdGetImageRGB"
+ },
+ {
+ name= {nl= "PutImageRectRGB"},
+ link= "func/client.html#cdPutImageRectRGB"
+ },
+ {
+ name= {nl= "PutImageRectRGBA"},
+ link= "func/client.html#cdPutImageRectRGBA"
+ },
+ {
+ name= {nl= "PutImageRectMap"},
+ link= "func/client.html#cdPutImageRectMap"
+ },
+ {
+ name= {nl= "RGB2Map"},
+ link= "func/client.html#cdRGB2Map"
+ },
+ {
+ name= {en= "Extras"},
+ folder=
+ {
+ {
+ name= {nl= "CreateBitmap"},
+ link= "func/client.html#cdCreateBitmap"
+ },
+ {
+ name= {nl= "InitBitmap"},
+ link= "func/client.html#cdInitBitmap"
+ },
+ {
+ name= {nl= "KillBitmap"},
+ link= "func/client.html#cdKillBitmap"
+ },
+ {
+ name= {nl= "BitmapGetData"},
+ link= "func/client.html#cdBitmapGetData"
+ },
+ {
+ name= {nl= "BitmapSetRect"},
+ link= "func/client.html#cdBitmapSetRect"
+ },
+ {
+ name= {nl= "GetBitmap"},
+ link= "func/client.html#cdGetBitmap"
+ },
+ {
+ name= {nl= "PutBitmap"},
+ link= "func/client.html#cdPutBitmap"
+ },
+ {
+ name= {nl= "BitmapRGB2Map"},
+ link= "func/client.html#cdBitmapRGB2Map"
+ }
+ }
+ },
+ {
+ name= {en= "Extras in Lua"},
+ folder=
+ {
+ {
+ name= {nl= "CreateImageRGB"},
+ link= "func/client.html#cdCreateImageRGB"
+ },
+ {
+ name= {nl= "KillImageRGB"},
+ link= "func/client.html#cdKillImageRGB"
+ },
+ {
+ name= {nl= "CreateImageRGBA"},
+ link= "func/client.html#cdCreateImageRGBA"
+ },
+ {
+ name= {nl= "KillImageRGBA"},
+ link= "func/client.html#cdKillImageRGBA"
+ },
+ {
+ name= {nl= "CreateImageMap"},
+ link= "func/client.html#cdCreateImageMap"
+ },
+ {
+ name= {nl= "KillImageMap"},
+ link= "func/client.html#cdKillImageMap"
+ },
+ {
+ name= {nl= "Data Access"},
+ link= "func/client.html#DataAccess"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Server Images"},
+ link= "func/server.html",
+ folder=
+ {
+ {
+ name= {nl= "CreateImage"},
+ link= "func/server.html#cdCreateImage"
+ },
+ {
+ name= {nl= "KillImage"},
+ link= "func/server.html#cdKillImage"
+ },
+ {
+ name= {nl= "GetImage"},
+ link= "func/server.html#cdGetImage"
+ },
+ {
+ name= {nl= "PutImageRect"},
+ link= "func/server.html#cdPutImageRect"
+ },
+ {
+ name= {nl= "ScrollArea"},
+ link= "func/server.html#cdScrollArea"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {en= "Other"},
+ folder=
+ {
+ {
+ name= {en= "System", pt= "Sistema"},
+ folder=
+ {
+ {
+ name= {nl= "Version"},
+ link= "func/other.html#cdVersion"
+ }
+ }
+ },
+ {
+ name= {en= "Metafile Interpretation", pt= "Interpretação de Metafiles"},
+ folder=
+ {
+ {
+ name= {nl= "Play"},
+ link= "func/other.html#cdPlay"
+ },
+ {
+ name= {nl= "RegisterCallback"},
+ link= "func/other.html#cdRegisterCallback"
+ }
+ }
+ },
+ {
+ name= {en= "Color Coding", pt= "Codificação de Cores"},
+ folder=
+ {
+ {
+ name= {nl= "EncodeColor"},
+ link= "func/color.html#cdEncodeColor"
+ },
+ {
+ name= {nl= "DecodeColor"},
+ link= "func/color.html#cdDecodeColor"
+ },
+ {
+ name= {nl= "EncodeAlpha"},
+ link= "func/color.html#cdEncodeAlpha"
+ },
+ {
+ name= {nl= "DecodeAlpha"},
+ link= "func/color.html#cdDecodeAlpha"
+ },
+ {
+ name= {nl= "Red"},
+ link= "func/color.html#cdRed"
+ },
+ {
+ name= {nl= "Green"},
+ link= "func/color.html#cdGreen"
+ },
+ {
+ name= {nl= "Blue"},
+ link= "func/color.html#cdBlue"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "GetColorPlanes"},
+ link= "func/color.html#cdGetColorPlanes"
+ },
+ {
+ name= {nl= "Palette"},
+ link= "func/color.html#cdPalette"
+ },
+ {
+ name= {nl= "CreatePalette"},
+ link= "func/color.html#cdCreatePalette"
+ },
+ {
+ name= {nl= "KillPalette"},
+ link= "func/color.html#cdKillPalette"
+ }
+ }
+ }
+ }
+ },
+ {
+ name= {nl= "Drivers"},
+ link= "drv.html",
+ folder=
+ {
+ {
+ name= {en= "Window Systems", pt= "Sistemas de Janelas"},
+ folder=
+ {
+ {
+ name= {nl= "IUP"},
+ link= "drv/iup.html"
+ },
+ {
+ name= {nl= "Native Window"},
+ link= "drv/native.html"
+ }
+ }
+ },
+ {
+ name= {en= "Devices", pt= "Dispositivos"},
+ folder=
+ {
+ {
+ name= {nl= "Clipboard"},
+ link= "drv/clipbd.html"
+ },
+ {
+ name= {en= "Printer", pt= "Impressora"},
+ link= "drv/printer.html"
+ },
+ {
+ name= {en= "Picture"},
+ link= "drv/picture.html"
+ }
+ }
+ },
+ {
+ name= {en= "Images", pt= "Memória"},
+ folder=
+ {
+ {
+ name= {en= "Client Image", pt= "Imagem de Cliente"},
+ link= "drv/irgb.html"
+ },
+ {
+ name= {en= "Server Image", pt= "Imagem de Servidor"},
+ link= "drv/image.html"
+ },
+ {
+ name= {nl= "Client Double Buffer"},
+ link= "drv/dbufrgb.html"
+ },
+ {
+ name= {nl= "Server Double Buffer"},
+ link= "drv/dbuf.html"
+ }
+ }
+ },
+ {
+ name= {en= "File", pt= "Arquivo"},
+ folder=
+ {
+ {
+ name= {nl= "PDF"},
+ link= "drv/pdf.html"
+ },
+ {
+ name= {nl= "PS"},
+ link= "drv/ps.html"
+ },
+ {
+ name= {nl= "MF"},
+ link= "drv/mf.html"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "CGM"},
+ link= "drv/cgm.html"
+ },
+ {
+ name= {nl= "DGN"},
+ link= "drv/dgn.html"
+ },
+ {
+ name= {nl= "DXF"},
+ link= "drv/dxf.html"
+ },
+ { link= "", name= {en= "" } },
+ {
+ name= {nl= "EMF"},
+ link= "drv/emf.html"
+ },
+ {
+ name= {nl= "WMF"},
+ link= "drv/wmf.html"
+ },
+ {
+ name= {nl= "DEBUG"},
+ link= "drv/debug.html"
+ }
+ }
+ },
+ {
+ name= {en= "Base Drivers"},
+ folder=
+ {
+ {
+ name= {en= "Simulation"},
+ link= "drv/sim.html"
+ },
+ {
+ name= {nl= "Win32"},
+ link= "drv/win32.html"
+ },
+ {
+ name= {nl= "Win32 GDI+"},
+ link= "drv/gdiplus.html"
+ },
+ {
+ name= {nl= "X-Win"},
+ link= "drv/xwin.html"
+ },
+ {
+ name= {nl= "XRender"},
+ link= "drv/xrender.html"
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/html/wb_bar.html b/html/wb_bar.html
new file mode 100644
index 0000000..0061ea8
--- /dev/null
+++ b/html/wb_bar.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us" >
+ <title>Bar</title>
+ <base target="wb_cont">
+ <style type="text/css">
+ .navigation{
+ padding: 0;
+ margin: 0;
+ white-space: nowrap;
+ border: 1px solid #7F93C7;
+ background-color: #FFFFFF;
+ line-height: 19px;
+ }
+ .navigation p { margin: 1px; white-space: nowrap; }
+ .navigation img { vertical-align: middle; }
+ </style>
+</head>
+
+<body style="margin: 2px; background-color: #F1F1F1">
+ <div class="navigation">
+ <p><a target="_blank" href="http://www.tecgraf.puc-rio.br/webbook"><img src="wb_img/webbook.png" onmouseover="this.src='wb_img/webbook_over.png'" onmouseout="this.src='wb_img/webbook.png'" style="border-width: 0px"></a><img src="wb_img/barlineleft.png"><img alt="Expand All Nodes" src="wb_img/showall.png" onclick="parent.wb_tree.showAllFolders()" onmouseover="this.src='wb_img/showall_over.png'" onmouseout="this.src='wb_img/showall.png'"><img alt="Contract All Nodes" src="wb_img/hideall.png" onclick="parent.wb_tree.hideAllFolders()" onmouseover="this.src='wb_img/hideall_over.png'" onmouseout="this.src='wb_img/hideall.png'"><img alt="Sync Tree with Contents" src="wb_img/sync.png" onclick="parent.wb_tree.syncContents()" onmouseover="this.src='wb_img/sync_over.png'" onmouseout="this.src='wb_img/sync.png'"><img alt="Next Link" src="wb_img/next.png" onclick="parent.wb_tree.nextContents()" onmouseover="this.src='wb_img/next_over.png'" onmouseout="this.src='wb_img/next.png'"><img alt="Previous Link" src="wb_img/previous.png" onclick="parent.wb_tree.prevContents()" onmouseover="this.src='wb_img/previous_over.png'" onmouseout="this.src='wb_img/previous.png'"></p>
+ </div>
+</body>
+</html>
diff --git a/html/wb_img/barlineleft.png b/html/wb_img/barlineleft.png
new file mode 100644
index 0000000..3b8858e
--- /dev/null
+++ b/html/wb_img/barlineleft.png
Binary files differ
diff --git a/html/wb_img/barlineright.png b/html/wb_img/barlineright.png
new file mode 100644
index 0000000..39f03eb
--- /dev/null
+++ b/html/wb_img/barlineright.png
Binary files differ
diff --git a/html/wb_img/blank.png b/html/wb_img/blank.png
new file mode 100644
index 0000000..5303313
--- /dev/null
+++ b/html/wb_img/blank.png
Binary files differ
diff --git a/html/wb_img/google.gif b/html/wb_img/google.gif
new file mode 100644
index 0000000..91a5efd
--- /dev/null
+++ b/html/wb_img/google.gif
Binary files differ
diff --git a/html/wb_img/hideall.png b/html/wb_img/hideall.png
new file mode 100644
index 0000000..c738bab
--- /dev/null
+++ b/html/wb_img/hideall.png
Binary files differ
diff --git a/html/wb_img/hideall_over.png b/html/wb_img/hideall_over.png
new file mode 100644
index 0000000..91ccc55
--- /dev/null
+++ b/html/wb_img/hideall_over.png
Binary files differ
diff --git a/html/wb_img/lng_en.png b/html/wb_img/lng_en.png
new file mode 100644
index 0000000..e57fee9
--- /dev/null
+++ b/html/wb_img/lng_en.png
Binary files differ
diff --git a/html/wb_img/lng_en_over.png b/html/wb_img/lng_en_over.png
new file mode 100644
index 0000000..180df61
--- /dev/null
+++ b/html/wb_img/lng_en_over.png
Binary files differ
diff --git a/html/wb_img/lng_es.png b/html/wb_img/lng_es.png
new file mode 100644
index 0000000..7fdf889
--- /dev/null
+++ b/html/wb_img/lng_es.png
Binary files differ
diff --git a/html/wb_img/lng_es_over.png b/html/wb_img/lng_es_over.png
new file mode 100644
index 0000000..5fada13
--- /dev/null
+++ b/html/wb_img/lng_es_over.png
Binary files differ
diff --git a/html/wb_img/lng_pt.png b/html/wb_img/lng_pt.png
new file mode 100644
index 0000000..65424e7
--- /dev/null
+++ b/html/wb_img/lng_pt.png
Binary files differ
diff --git a/html/wb_img/lng_pt_over.png b/html/wb_img/lng_pt_over.png
new file mode 100644
index 0000000..5f78935
--- /dev/null
+++ b/html/wb_img/lng_pt_over.png
Binary files differ
diff --git a/html/wb_img/minusnode.png b/html/wb_img/minusnode.png
new file mode 100644
index 0000000..06a3f95
--- /dev/null
+++ b/html/wb_img/minusnode.png
Binary files differ
diff --git a/html/wb_img/minusnodelast.png b/html/wb_img/minusnodelast.png
new file mode 100644
index 0000000..c2175e8
--- /dev/null
+++ b/html/wb_img/minusnodelast.png
Binary files differ
diff --git a/html/wb_img/next.png b/html/wb_img/next.png
new file mode 100644
index 0000000..4ab1ea8
--- /dev/null
+++ b/html/wb_img/next.png
Binary files differ
diff --git a/html/wb_img/next_over.png b/html/wb_img/next_over.png
new file mode 100644
index 0000000..38e99e0
--- /dev/null
+++ b/html/wb_img/next_over.png
Binary files differ
diff --git a/html/wb_img/node.png b/html/wb_img/node.png
new file mode 100644
index 0000000..a2bb501
--- /dev/null
+++ b/html/wb_img/node.png
Binary files differ
diff --git a/html/wb_img/nodelast.png b/html/wb_img/nodelast.png
new file mode 100644
index 0000000..e76fce1
--- /dev/null
+++ b/html/wb_img/nodelast.png
Binary files differ
diff --git a/html/wb_img/plusnode.png b/html/wb_img/plusnode.png
new file mode 100644
index 0000000..f7184fe
--- /dev/null
+++ b/html/wb_img/plusnode.png
Binary files differ
diff --git a/html/wb_img/plusnodelast.png b/html/wb_img/plusnodelast.png
new file mode 100644
index 0000000..cd71b58
--- /dev/null
+++ b/html/wb_img/plusnodelast.png
Binary files differ
diff --git a/html/wb_img/previous.png b/html/wb_img/previous.png
new file mode 100644
index 0000000..4f2e084
--- /dev/null
+++ b/html/wb_img/previous.png
Binary files differ
diff --git a/html/wb_img/previous_over.png b/html/wb_img/previous_over.png
new file mode 100644
index 0000000..8d0f5d5
--- /dev/null
+++ b/html/wb_img/previous_over.png
Binary files differ
diff --git a/html/wb_img/sepblank.png b/html/wb_img/sepblank.png
new file mode 100644
index 0000000..1d0f883
--- /dev/null
+++ b/html/wb_img/sepblank.png
Binary files differ
diff --git a/html/wb_img/sepnode.png b/html/wb_img/sepnode.png
new file mode 100644
index 0000000..ba21cda
--- /dev/null
+++ b/html/wb_img/sepnode.png
Binary files differ
diff --git a/html/wb_img/sepvertline.png b/html/wb_img/sepvertline.png
new file mode 100644
index 0000000..9df6565
--- /dev/null
+++ b/html/wb_img/sepvertline.png
Binary files differ
diff --git a/html/wb_img/showall.png b/html/wb_img/showall.png
new file mode 100644
index 0000000..4c9d7bf
--- /dev/null
+++ b/html/wb_img/showall.png
Binary files differ
diff --git a/html/wb_img/showall_over.png b/html/wb_img/showall_over.png
new file mode 100644
index 0000000..5192a15
--- /dev/null
+++ b/html/wb_img/showall_over.png
Binary files differ
diff --git a/html/wb_img/sync.png b/html/wb_img/sync.png
new file mode 100644
index 0000000..672f0af
--- /dev/null
+++ b/html/wb_img/sync.png
Binary files differ
diff --git a/html/wb_img/sync_over.png b/html/wb_img/sync_over.png
new file mode 100644
index 0000000..9b85701
--- /dev/null
+++ b/html/wb_img/sync_over.png
Binary files differ
diff --git a/html/wb_img/title_background.png b/html/wb_img/title_background.png
new file mode 100644
index 0000000..c91c6b1
--- /dev/null
+++ b/html/wb_img/title_background.png
Binary files differ
diff --git a/html/wb_img/vertline.png b/html/wb_img/vertline.png
new file mode 100644
index 0000000..f123aea
--- /dev/null
+++ b/html/wb_img/vertline.png
Binary files differ
diff --git a/html/wb_img/webbook.png b/html/wb_img/webbook.png
new file mode 100644
index 0000000..db94ca6
--- /dev/null
+++ b/html/wb_img/webbook.png
Binary files differ
diff --git a/html/wb_img/webbook_over.png b/html/wb_img/webbook_over.png
new file mode 100644
index 0000000..79c1c71
--- /dev/null
+++ b/html/wb_img/webbook_over.png
Binary files differ
diff --git a/html/wb_search.txt b/html/wb_search.txt
new file mode 100644
index 0000000..6c1523f
--- /dev/null
+++ b/html/wb_search.txt
@@ -0,0 +1,56 @@
+en/download.html
+en/drv/debug.html
+en/func/server.html
+en/func/wd.html
+en/func/client.html
+en/func/region.html
+en/drv/sim.html
+en/drv/native.html
+en/func/control.html
+en/drv/xrender.html
+en/func/vectortext.html
+en/cvs.html
+en/func/init.html
+en/drv/irgb.html
+en/drv/picture.html
+en/func/attributes.html
+en/drv/gdiplus.html
+en/func/text.html
+en/func/filled.html
+en/prod.html
+en/drv/win32.html
+en/samples.html
+en/drv/ps.html
+en/drv/emf.html
+en/to_do.html
+en/func/marks.html
+en/drv.html
+en/internal.html
+en/drv/cgm.html
+en/drv/mf.html
+en/drv/wmf.html
+en/drv/pdf.html
+en/drv/dxf.html
+en/copyright.html
+en/drv/dbufrgb.html
+en/drv/iup.html
+en/drv/xwin.html
+en/drv/printer.html
+en/cdluaim.html
+en/guide.html
+en/drv/dgn.html
+en/drv/image.html
+en/func/color.html
+en/cdlua.html
+en/drv/clipbd.html
+en/func/coordinates.html
+en/func/lines.html
+en/func/polygon.html
+en/drv/dbuf.html
+en/func/other.html
+en/toolkits.html
+en/func/clipping.html
+en/home.html
+en/canvas.html
+en/history.html
+en/download_tips.html
diff --git a/html/wb_title.html b/html/wb_title.html
new file mode 100644
index 0000000..ac9ee27
--- /dev/null
+++ b/html/wb_title.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title>Title</title>
+<base target="wb_cont">
+<style type="text/css">
+td.title {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 16pt;
+ font-weight: bold;
+ color: #FFFFFF;
+ text-align: left;
+ vertical-align: middle;
+}
+td.contact {
+ text-align: center;
+ vertical-align: middle;
+ width: 11em;
+}
+a.contact {
+ font-family: Arial, Helvetica, sans-serif;
+ color: #0962BB;
+ font-size: 9pt;
+ text-decoration: none;
+ font-weight: bold;
+}
+a.contact:hover {
+ text-decoration: underline;
+}
+</style>
+</head>
+
+<body style="background-color: #3366CC; margin-left: 3px; margin-right: 3px; margin-top: 2px; margin-bottom: 0; background-image: url('wb_img/title_background.png');">
+
+<table style="width: 100%" cellspacing="0" cellpadding="0">
+ <tr>
+ <td style="width: 50px;"><img src="logo.gif"></td>
+ <td class="title">CD - Version 5.1</td>
+ <td style="width: 3.5em">
+ <a class="contact" href="ssSearch.html">SimpleSearch</a>
+ </td>
+ <td style="width: 11em">
+ <FORM method=GET action="http://www.google.com/search" style="margin-bottom: 0; margin: 0; text-align: center; ">
+ <input type=hidden name=ie value=UTF-8>
+ <input type=hidden name=oe value=UTF-8>
+ <INPUT TYPE=text name=q size=21 maxlength=255 value=""><br>
+ <A HREF="http://www.google.com/"><IMG SRC="wb_img/google.gif" border="0" ALT="Google"></A>
+ <INPUT type=submit name=btnG VALUE="Search" style="height: 21px; vertical-align: top; font-size: x-small;">
+ <input type=hidden name=domains value="http://www.tecgraf.puc-rio.br/cd">
+ <input type=hidden name=sitesearch value="http://www.tecgraf.puc-rio.br/cd" checked>
+ <input type=hidden name=sitesearch value="">
+ </FORM>
+ </td>
+ <td class="contact">
+ <a class="contact" target="_blank" href="http://www.tecgraf.puc-rio.br">© Tecgraf/PUC-Rio</a>
+ <br>
+ <a class="contact" href="mailto:cd@tecgraf.puc-rio.br">(cd@tecgraf.puc-rio.br)</a>
+ </td>
+ </tr>
+</table>
+
+</body>
+
+</html>
diff --git a/html/wb_tree.html b/html/wb_tree.html
new file mode 100644
index 0000000..74cbc45
--- /dev/null
+++ b/html/wb_tree.html
@@ -0,0 +1,543 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Language" content="en-us" >
+ <title>Tree</title>
+ <base target="wb_cont">
+ <style type="text/css">
+ .tree { font-family: helvetica, sans-serif; font-size: 10pt; }
+ .tree h3 {
+ margin: 5px 0px 0px 0px;
+ font-size: 12pt;
+ }
+ .tree p { margin: 0px; white-space: nowrap; }
+ .tree p.sep { margin: 0px; white-space: nowrap; line-height: 8px; font-size: 5px; }
+ .tree div { display: none; margin: 0px; }
+ .tree img { vertical-align: middle; }
+ .tree a.el { text-decoration: none; margin-left: 4px; color: #003366; }
+ .tree a:hover { text-decoration: none; background-color: #e0e0ff }
+ </style>
+ <script type="text/javascript">
+ lastLink = null;
+
+ function hideFolder(folder, id)
+ {
+ var imageNode = document.images["img" + id];
+ if (imageNode != null)
+ {
+ var len = imageNode.src.length;
+ if (imageNode.src.substring(len-8,len-4) == "last")
+ imageNode.src = "wb_img/plusnodelast.png";
+ else if (imageNode.src.substring(len-8,len-4) == "node")
+ imageNode.src = "wb_img/plusnode.png";
+ }
+ folder.style.display = "none";
+ }
+
+ function showFolder(folder, id)
+ {
+ var imageNode = document.images["img" + id];
+ if (imageNode != null)
+ {
+ var len = imageNode.src.length;
+ if (imageNode.src.substring(len-8,len-4) == "last")
+ imageNode.src = "wb_img/minusnodelast.png";
+ else if (imageNode.src.substring(len-8,len-4) == "node")
+ imageNode.src = "wb_img/minusnode.png";
+ }
+ folder.style.display = "block";
+ }
+
+ function toggleFolder(id)
+ {
+ var folder = document.getElementById(id);
+ if (folder.style.display == "block")
+ hideFolder(folder, id);
+ else
+ showFolder(folder, id);
+ }
+
+ function setFoldersAtLevel(level, show)
+ {
+ var i = 1;
+ do
+ {
+ var folder_id = level + "." + i;
+ var id = "folder" + folder_id;
+ var folder = document.getElementById(id);
+ if (folder != null)
+ {
+ setFoldersAtLevel(folder_id, show);
+
+ if (show)
+ showFolder(folder, id);
+ else
+ hideFolder(folder, id);
+ }
+ i++;
+ } while(folder != null);
+ }
+
+ function showAllFolders()
+ {
+ setFoldersAtLevel("", true);
+ }
+
+ function hideAllFolders()
+ {
+ setFoldersAtLevel("", false);
+ }
+
+ function getFolderId(name)
+ {
+ return name.substring(name.indexOf("folder"), name.length);
+ }
+
+ function showFolderRec(id)
+ {
+ var folder = document.getElementById(id);
+ if (folder != null)
+ {
+ showFolder(folder, id);
+
+ var parent_id = id.substring(0, id.lastIndexOf("."))
+ if (parent_id != null && parent_id != "folder")
+ {
+ showFolderRec(parent_id)
+ }
+ }
+ }
+
+ function clearLastLink()
+ {
+ if (lastLink != null)
+ {
+ lastLink.style.color = ""
+ lastLink = null;
+ }
+ }
+
+ function goToLink(link)
+ {
+ var id = getFolderId(link.name);
+ showFolderRec(id);
+ location.hash = "#" + link.name;
+ link.style.color = "#ff0000";
+
+ clearLastLink();
+ lastLink = link;
+ }
+
+ function syncContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ goToLink(link)
+ return
+ }
+ }
+ }
+
+ function nextContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ if (i == document.links.length-1)
+ link = document.links[0];
+ else
+ link = document.links[i+1];
+
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+
+ function prevContents()
+ {
+ var cur_topic = parent.wb_cont.location.href
+ var prev_link = document.links[document.links.length-1]
+
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ if (cur_topic == link.href)
+ {
+ if (i == 0)
+ link = document.links[document.links.length-1];
+ else
+ link = document.links[i-1];
+
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+
+ function showStartPage()
+ {
+ var full_url = parent.document.URL;
+ if (full_url == null)
+ return;
+
+ var param = full_url.substring(full_url.indexOf("?") + 1, full_url.length);
+ if (param == null)
+ return;
+
+ var param_url = param.substring(param.indexOf("url=") + 4, param.length);
+ if (param_url == null)
+ return;
+
+ var param_len = param_url.length;
+ for (var i = 0; i < document.links.length; i++)
+ {
+ var link = document.links[i];
+ var link_url = link.href.substring(link.href.length-param_len, link.href.length)
+ if (link_url == param_url)
+ {
+ goToLink(link)
+ parent.wb_cont.location.href = link.href;
+ return
+ }
+ }
+ }
+ </script>
+</head>
+
+<body style="margin: 2px; background-color: #F1F1F1" onload="showStartPage()">
+ <div class="tree" onmouseout="clearLastLink()">
+ <h3><a name="link0folder.0" class="el" href="en/home.html">CD</a></h3>
+ <p><img name="imgfolder.1" src="wb_img/minusnode.png" onclick="toggleFolder('folder.1')"><a name="link1folder.1" class="el" href="en/prod.html">Product</a></p>
+ <div id="folder.1" style="display:block">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link2folder.1" href="en/prod.html#Overview">Overview</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link3folder.1" href="en/prod.html#Availability">Availability</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link4folder.1" href="en/prod.html#Suport">Support</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link5folder.1" href="en/prod.html#Acknowledgments">Credits</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link6folder.1" href="en/prod.html#About">Documentation</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link7folder.1" href="en/copyright.html">Copyright/License</a></p>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.1.1')"><a name="link8folder.1.1" class="el" href="en/download.html">Download</a></p>
+ <div id="folder.1.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link9folder.1.1" href="en/download_tips.html">Library Download Tips</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link10folder.1" href="en/cvs.html">CVS</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link11folder.1" href="en/history.html">History</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link12folder.1" href="en/to_do.html">To Do</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link13folder.1" href="en/toolkits.html">Comparing</a></p>
+ </div>
+ <p><img name="imgfolder.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2')"><a name="link14folder.2" class="el" href="en/guide.html">Guide</a></p>
+ <div id="folder.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link15folder.2" href="en/guide.html#start">Getting Started</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link16folder.2" href="en/guide.html#buildapp">Building Applications</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link17folder.2" href="en/guide.html#buildlib">Building the Library</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link18folder.2" href="en/guide.html#Environment">Environment Variables</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link19folder.2" href="en/guide.html#NewDriver">Implementing a Driver</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link20folder.2" href="en/guide.html#Play">Intercepting Primitives</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link21folder.2" href="en/guide.html#IUP">IUP Compatibility</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link22folder.2" href="en/internal.html">Internal Architecture</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link23folder.2" href="en/samples.html">Samples</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link24folder.2" href="en/cdlua.html">Lua Binding</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link25folder.2" href="en/cdluaim.html">CDLua+IMLua</a></p>
+ </div>
+ <p class="sep"><img src="wb_img/sepnode.png"></p>
+ <p><img name="imgfolder.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3')"><a name="link26folder.3" class="el" href="en/canvas.html">Canvas</a></p>
+ <div id="folder.3">
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3.1')"> Initialization</p>
+ <div id="folder.3.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link27folder.3.1" href="en/func/init.html#cdCreateCanvas">CreateCanvas</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link28folder.3.1" href="en/func/init.html#cdCreateCanvasf">CreateCanvasf</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link29folder.3.1" href="en/func/init.html#cdKillCanvas">KillCanvas</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link30folder.3.1" href="en/func/init.html#cdCanvasActivate">Activate</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link31folder.3.1" href="en/func/init.html#cdCanvasDeactivate">Deactivate</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link32folder.3.1" href="en/func/init.html#cdUseContextPlus">UseContextPlus</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link33folder.3.1" href="en/func/init.html#cdInitContextPlus">InitContextPlus</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link34folder.3.1" href="en/func/init.html#cdGetContext">GetContext</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link35folder.3.1" href="en/func/init.html#cdContextCaps">ContextCaps</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link36folder.3.1" href="en/func/init.html#cdSimulate">Simulate</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link37folder.3.1" href="en/func/init.html#cdlua_open">cdlua_open</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link38folder.3.1" href="en/func/init.html#cdlua_close">cdlua_close</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link39folder.3.1" href="en/func/init.html#cdlua_getcanvas">cdlua_getcanvas</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3.2')"> Control</p>
+ <div id="folder.3.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link40folder.3.2" href="en/func/control.html#cdClear">Clear</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link41folder.3.2" href="en/func/control.html#cdFlush">Flush</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link42folder.3.2" href="en/func/control.html#cdSaveState">SaveState</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link43folder.3.2" href="en/func/control.html#cdRestoreState">RestoreState</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link44folder.3.2" href="en/func/control.html#cdReleaseState">ReleaseState</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link45folder.3.2" href="en/func/control.html#cdSetAttribute">SetAttribute</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link46folder.3.2" href="en/func/control.html#cdSetfAttribute">SetfAttribute</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link47folder.3.2" href="en/func/control.html#cdGetAttribute">GetAttribute</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3.3')"> Coordinate System</p>
+ <div id="folder.3.3">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link48folder.3.3" href="en/func/coordinates.html#cdGetCanvasSize">GetCanvasSize</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link49folder.3.3" href="en/func/coordinates.html#cdUpdateYAxis">UpdateYAxis</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link50folder.3.3" href="en/func/coordinates.html#cdMM2Pixel">MM2Pixel</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link51folder.3.3" href="en/func/coordinates.html#cdPixel2MM">Pixel2MM</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link52folder.3.3" href="en/func/coordinates.html#cdOrigin">Origin</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link53folder.3.3" href="en/func/coordinates.html#cdTransform">Transform</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link54folder.3.3" href="en/func/coordinates.html#cdGetTransform">GetTransform</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link55folder.3.3" href="en/func/coordinates.html#cdTransformMultiply">TransformMultiply</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link56folder.3.3" href="en/func/coordinates.html#cdTransformTranslate">TransformTranslate</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link57folder.3.3" href="en/func/coordinates.html#cdTransformScale">TransformScale</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link58folder.3.3" href="en/func/coordinates.html#cdTransformRotate">TransformRotate</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3.4')"><a name="link59folder.3.4" class="el" href="en/func/wd.html">World Coordinates</a></p>
+ <div id="folder.3.4">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link60folder.3.4" href="en/func/wd.html#wdWindow">Window</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link61folder.3.4" href="en/func/wd.html#wdGetWindow">GetWindow</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link62folder.3.4" href="en/func/wd.html#wdViewport">Viewport</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link63folder.3.4" href="en/func/wd.html#wdGetViewport">GetViewport</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link64folder.3.4" href="en/func/wd.html#wdWorld2Canvas">World2Canvas</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link65folder.3.4" href="en/func/wd.html#wdCanvas2World">Canvas2World</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.3.4.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.3.4.1')"> Extra</p>
+ <div id="folder.3.4.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link66folder.3.4.1" href="en/func/wd.html#wdHardcopy">Hardcopy</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3.5')"> General Attributes</p>
+ <div id="folder.3.5">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link67folder.3.5" href="en/func/attributes.html#cdForeground">Foreground</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link68folder.3.5" href="en/func/attributes.html#cdBackground">Background</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link69folder.3.5" href="en/func/attributes.html#cdWriteMode">WriteMode</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.3.6" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.3.6')"><a name="link70folder.3.6" class="el" href="en/func/clipping.html">Clipping</a></p>
+ <div id="folder.3.6">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link71folder.3.6" href="en/func/clipping.html#cdClip">Clip</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link72folder.3.6" href="en/func/clipping.html#cdClipArea">ClipArea</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link73folder.3.6" href="en/func/clipping.html#cdGetClipArea">GetClipArea</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link74folder.3.6" href="en/func/clipping.html#Polygons">Polygons</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img name="imgfolder.3.6.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.3.6.1')"><a name="link75folder.3.6.1" class="el" href="en/func/region.html">Regions</a></p>
+ <div id="folder.3.6.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link76folder.3.6.1" href="en/func/region.html#Creating">Creating</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link77folder.3.6.1" href="en/func/region.html#cdRegionCombineMode">RegionCombineMode</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link78folder.3.6.1" href="en/func/region.html#cdRegionCombineMode">RegionCombineMode</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link79folder.3.6.1" href="en/func/region.html#cdPointInRegion">PointInRegion</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link80folder.3.6.1" href="en/func/region.html#cdOffsetRegion">OffsetRegion</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link81folder.3.6.1" href="en/func/region.html#cdRegionBox">RegionBox</a></p>
+ </div>
+ </div>
+ </div>
+ <p><img name="imgfolder.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4')"> Primitives</p>
+ <div id="folder.4">
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.1')"><a name="link82folder.4.1" class="el" href="en/func/marks.html">Marks</a></p>
+ <div id="folder.4.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link83folder.4.1" href="en/func/marks.html#cdPixel">Pixel</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link84folder.4.1" href="en/func/marks.html#cdMark">Mark</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.1.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.1.1')"> Attributes</p>
+ <div id="folder.4.1.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link85folder.4.1.1" href="en/func/marks.html#cdMarkType">MarkType</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link86folder.4.1.1" href="en/func/marks.html#cdMarkSize">MarkSize</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.2')"><a name="link87folder.4.2" class="el" href="en/func/lines.html">Lines</a></p>
+ <div id="folder.4.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link88folder.4.2" href="en/func/lines.html#cdLine">Line</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.2.1')"><a name="link89folder.4.2.1" class="el" href="en/func/lines.html#Polygons">Line Polygons/Bezier Curves</a></p>
+ <div id="folder.4.2.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link90folder.4.2.1" href="en/func/polygon.html">Polygons and Regions</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link91folder.4.2" href="en/func/lines.html#cdRect">Rect</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link92folder.4.2" href="en/func/lines.html#cdArc">Arc</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.2.2')"> Attributes</p>
+ <div id="folder.4.2.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link93folder.4.2.2" href="en/func/lines.html#cdLineStyle">LineStyle</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link94folder.4.2.2" href="en/func/lines.html#cdLineStyleDashes">LineStyleDashes</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link95folder.4.2.2" href="en/func/lines.html#cdLineWidth">LineWidth</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link96folder.4.2.2" href="en/func/lines.html#cdLineJoin">LineJoin</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link97folder.4.2.2" href="en/func/lines.html#cdLineCap">LineCap</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.3')"><a name="link98folder.4.3" class="el" href="en/func/filled.html">Filled Areas</a></p>
+ <div id="folder.4.3">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link99folder.4.3" href="en/func/filled.html#Polygons">Polygons</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link100folder.4.3" href="en/func/filled.html#cdBox">Box</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link101folder.4.3" href="en/func/filled.html#cdSector">Sector</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link102folder.4.3" href="en/func/filled.html#cdChord">Chord</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.3.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.3.1')"> Attributes</p>
+ <div id="folder.4.3.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link103folder.4.3.1" href="en/func/filled.html#cdBackOpacity">BackOpacity</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link104folder.4.3.1" href="en/func/filled.html#cdFillMode">FillMode</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link105folder.4.3.1" href="en/func/filled.html#cdInteriorStyle">InteriorStyle</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link106folder.4.3.1" href="en/func/filled.html#cdHatch">Hatch</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link107folder.4.3.1" href="en/func/filled.html#cdStipple">Stipple</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link108folder.4.3.1" href="en/func/filled.html#wdStipple">Stipple (WC)</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link109folder.4.3.1" href="en/func/filled.html#cdGetStipple">GetStipple</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link110folder.4.3.1" href="en/func/filled.html#cdPattern">Pattern</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link111folder.4.3.1" href="en/func/filled.html#wdPattern">Pattern (WC)</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link112folder.4.3.1" href="en/func/filled.html#cdGetPattern">GetPattern</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link113folder.4.3.1" href="en/func/filled.html#DataAccess">Data Access</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.3.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.3.2')"> Extras in Lua</p>
+ <div id="folder.4.3.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link114folder.4.3.2" href="en/func/filled.html#cdCreatePattern">CreatePattern</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link115folder.4.3.2" href="en/func/filled.html#cdKillPattern">KillPattern</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link116folder.4.3.2" href="en/func/filled.html#cdCreateStipple">CreateStipple</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link117folder.4.3.2" href="en/func/filled.html#cdKillStipple">KillStipple</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.4')"><a name="link118folder.4.4" class="el" href="en/func/text.html">Text</a></p>
+ <div id="folder.4.4">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link119folder.4.4" href="en/func/text.html#cdText">Text</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.4.1')"> Attributes</p>
+ <div id="folder.4.4.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link120folder.4.4.1" href="en/func/text.html#cdFont">Font</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link121folder.4.4.1" href="en/func/text.html#cdGetFont">GetFont</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link122folder.4.4.1" href="en/func/text.html#cdNativeFont">NativeFont</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link123folder.4.4.1" href="en/func/text.html#cdTextAlignment">TextAlignment</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link124folder.4.4.1" href="en/func/text.html#cdTextOrientation">TextOrientation</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.4.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.4.2')"> Properties</p>
+ <div id="folder.4.4.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link125folder.4.4.2" href="en/func/text.html#cdFontDim">FontDim</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link126folder.4.4.2" href="en/func/text.html#cdTextSize">TextSize</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link127folder.4.4.2" href="en/func/text.html#cdTextBox">TextBox</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link128folder.4.4.2" href="en/func/text.html#cdTextBounds">TextBounds</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.5')"><a name="link129folder.4.5" class="el" href="en/func/vectortext.html">Vector Text</a></p>
+ <div id="folder.4.5">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link130folder.4.5" href="en/func/vectortext.html#cdVectorText">VectorText</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link131folder.4.5" href="en/func/vectortext.html#cdMultiLineVectorText">MultiLineVectorText</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.5.1')"> Attributes</p>
+ <div id="folder.4.5.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link132folder.4.5.1" href="en/func/vectortext.html#cdVectorTextDirection">VectorTextDirection</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link133folder.4.5.1" href="en/func/vectortext.html#cdVectorTextTransform">VectorTextTransform</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link134folder.4.5.1" href="en/func/vectortext.html#cdVectorTextSize">VectorTextSize</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link135folder.4.5.1" href="en/func/vectortext.html#cdVectorCharSize">VectorCharSize</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link136folder.4.5.1" href="en/func/vectortext.html#cdVectorFont">VectorFont</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.5.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.5.2')"> Properties</p>
+ <div id="folder.4.5.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link137folder.4.5.2" href="en/func/vectortext.html#cdGetVectorTextSize">GetVectorTextSize</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link138folder.4.5.2" href="en/func/vectortext.html#cdGetVectorTextBounds">GetVectorTextBounds</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.6')"><a name="link139folder.4.6" class="el" href="en/func/client.html">Client Images</a></p>
+ <div id="folder.4.6">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link140folder.4.6" href="en/func/client.html#cdGetImageRGB">GetImageRGB</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link141folder.4.6" href="en/func/client.html#cdPutImageRectRGB">PutImageRectRGB</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link142folder.4.6" href="en/func/client.html#cdPutImageRectRGBA">PutImageRectRGBA</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link143folder.4.6" href="en/func/client.html#cdPutImageRectMap">PutImageRectMap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link144folder.4.6" href="en/func/client.html#cdRGB2Map">RGB2Map</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4.6.1')"> Extras</p>
+ <div id="folder.4.6.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link145folder.4.6.1" href="en/func/client.html#cdCreateBitmap">CreateBitmap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link146folder.4.6.1" href="en/func/client.html#cdInitBitmap">InitBitmap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link147folder.4.6.1" href="en/func/client.html#cdKillBitmap">KillBitmap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link148folder.4.6.1" href="en/func/client.html#cdBitmapGetData">BitmapGetData</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link149folder.4.6.1" href="en/func/client.html#cdBitmapSetRect">BitmapSetRect</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link150folder.4.6.1" href="en/func/client.html#cdGetBitmap">GetBitmap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link151folder.4.6.1" href="en/func/client.html#cdPutBitmap">PutBitmap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link152folder.4.6.1" href="en/func/client.html#cdBitmapRGB2Map">BitmapRGB2Map</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.4.6.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.6.2')"> Extras in Lua</p>
+ <div id="folder.4.6.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link153folder.4.6.2" href="en/func/client.html#cdCreateImageRGB">CreateImageRGB</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link154folder.4.6.2" href="en/func/client.html#cdKillImageRGB">KillImageRGB</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link155folder.4.6.2" href="en/func/client.html#cdCreateImageRGBA">CreateImageRGBA</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link156folder.4.6.2" href="en/func/client.html#cdKillImageRGBA">KillImageRGBA</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link157folder.4.6.2" href="en/func/client.html#cdCreateImageMap">CreateImageMap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link158folder.4.6.2" href="en/func/client.html#cdKillImageMap">KillImageMap</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link159folder.4.6.2" href="en/func/client.html#DataAccess">Data Access</a></p>
+ </div>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.4.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.4.7')"><a name="link160folder.4.7" class="el" href="en/func/server.html">Server Images</a></p>
+ <div id="folder.4.7">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link161folder.4.7" href="en/func/server.html#cdCreateImage">CreateImage</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link162folder.4.7" href="en/func/server.html#cdKillImage">KillImage</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link163folder.4.7" href="en/func/server.html#cdGetImage">GetImage</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link164folder.4.7" href="en/func/server.html#cdPutImageRect">PutImageRect</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link165folder.4.7" href="en/func/server.html#cdScrollArea">ScrollArea</a></p>
+ </div>
+ </div>
+ <p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"> Other</p>
+ <div id="folder.5">
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"> System</p>
+ <div id="folder.5.1">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link166folder.5.1" href="en/func/other.html#cdVersion">Version</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"> Metafile Interpretation</p>
+ <div id="folder.5.2">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link167folder.5.2" href="en/func/other.html#cdPlay">Play</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link168folder.5.2" href="en/func/other.html#cdRegisterCallback">RegisterCallback</a></p>
+ </div>
+ <p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.3')"> Color Coding</p>
+ <div id="folder.5.3">
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link169folder.5.3" href="en/func/color.html#cdEncodeColor">EncodeColor</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link170folder.5.3" href="en/func/color.html#cdDecodeColor">DecodeColor</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link171folder.5.3" href="en/func/color.html#cdEncodeAlpha">EncodeAlpha</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link172folder.5.3" href="en/func/color.html#cdDecodeAlpha">DecodeAlpha</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link173folder.5.3" href="en/func/color.html#cdRed">Red</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link174folder.5.3" href="en/func/color.html#cdGreen">Green</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link175folder.5.3" href="en/func/color.html#cdBlue">Blue</a></p>
+ <p class="sep"><img src="wb_img/sepvertline.png"><img src="wb_img/sepblank.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link176folder.5.3" href="en/func/color.html#cdGetColorPlanes">GetColorPlanes</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link177folder.5.3" href="en/func/color.html#cdPalette">Palette</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link178folder.5.3" href="en/func/color.html#cdCreatePalette">CreatePalette</a></p>
+ <p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link179folder.5.3" href="en/func/color.html#cdKillPalette">KillPalette</a></p>
+ </div>
+ </div>
+ <p><img name="imgfolder.6" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6')"><a name="link180folder.6" class="el" href="en/drv.html">Drivers</a></p>
+ <div id="folder.6">
+ <p><img src="wb_img/blank.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"> Window Systems</p>
+ <div id="folder.6.1">
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link181folder.6.1" href="en/drv/iup.html">IUP</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link182folder.6.1" href="en/drv/native.html">Native Window</a></p>
+ </div>
+ <p><img src="wb_img/blank.png"><img name="imgfolder.6.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.2')"> Devices</p>
+ <div id="folder.6.2">
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link183folder.6.2" href="en/drv/clipbd.html">Clipboard</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link184folder.6.2" href="en/drv/printer.html">Printer</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link185folder.6.2" href="en/drv/picture.html">Picture</a></p>
+ </div>
+ <p><img src="wb_img/blank.png"><img name="imgfolder.6.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.3')"> Images</p>
+ <div id="folder.6.3">
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link186folder.6.3" href="en/drv/irgb.html">Client Image</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link187folder.6.3" href="en/drv/image.html">Server Image</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link188folder.6.3" href="en/drv/dbufrgb.html">Client Double Buffer</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link189folder.6.3" href="en/drv/dbuf.html">Server Double Buffer</a></p>
+ </div>
+ <p><img src="wb_img/blank.png"><img name="imgfolder.6.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.4')"> File</p>
+ <div id="folder.6.4">
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link190folder.6.4" href="en/drv/pdf.html">PDF</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link191folder.6.4" href="en/drv/ps.html">PS</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link192folder.6.4" href="en/drv/mf.html">MF</a></p>
+ <p class="sep"><img src="wb_img/sepblank.png"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link193folder.6.4" href="en/drv/cgm.html">CGM</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link194folder.6.4" href="en/drv/dgn.html">DGN</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link195folder.6.4" href="en/drv/dxf.html">DXF</a></p>
+ <p class="sep"><img src="wb_img/sepblank.png"><img src="wb_img/sepvertline.png"><img src="wb_img/sepnode.png"></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link196folder.6.4" href="en/drv/emf.html">EMF</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link197folder.6.4" href="en/drv/wmf.html">WMF</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link198folder.6.4" href="en/drv/debug.html">DEBUG</a></p>
+ </div>
+ <p><img src="wb_img/blank.png"><img name="imgfolder.6.5" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.5')"> Base Drivers</p>
+ <div id="folder.6.5">
+ <p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link199folder.6.5" href="en/drv/sim.html">Simulation</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link200folder.6.5" href="en/drv/win32.html">Win32</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link201folder.6.5" href="en/drv/gdiplus.html">Win32 GDI+</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link202folder.6.5" href="en/drv/xwin.html">X-Win</a></p>
+ <p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link203folder.6.5" href="en/drv/xrender.html">XRender</a></p>
+ </div>
+ </div>
+ </div>
+</body>
+</html>