summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--html/en/drv/cairo.html56
-rw-r--r--html/en/drv/gdk.html8
-rw-r--r--html/en/drv/svg.html2
-rw-r--r--html/en/drv/xwin.html4
-rw-r--r--html/en/guide.html27
-rw-r--r--html/en/history.html8
-rw-r--r--include/cdcairo.h2
-rw-r--r--src/cdluacairo5.mak38
-rw-r--r--src/config.mak11
-rw-r--r--src/lua5/cdluacairo5.c108
-rw-r--r--src/lua5/cdluacairo5.def4
-rw-r--r--src/lua5/cdluapdf5.c4
12 files changed, 242 insertions, 30 deletions
diff --git a/html/en/drv/cairo.html b/html/en/drv/cairo.html
index 2e04833..adb65ac 100644
--- a/html/en/drv/cairo.html
+++ b/html/en/drv/cairo.html
@@ -10,6 +10,9 @@
.style1 {
font-family: Courier;
}
+.style3 {
+ text-decoration: underline;
+}
</style>
</head>
@@ -19,8 +22,7 @@
<p>This driver represents a basic driver for all system-dependent drivers
implemented in the X-Windows and MS-Windows systems. The implementation uses the
- <a href="http://library.gnome.org/devel/pango/">Cairo</a> API
- functions and Pango functions to support Unicode text. This driver can be
+ <a href="http://library.gnome.org/devel/pango/">Cairo</a> and Pango functions. This driver can be
compiled and used in all systems Cairo is supported. The drivers <b>Native Window</b>,
<b>Image</b>, <b>Printer</b> and <b>Double Buffer</b> were implemented.</p>
<p>The main motivation for the use of Cairo was transparency for all the
@@ -40,15 +42,49 @@ for complex clipping regions.</p>
<span style="font-family: Courier">CD_DBUFFER</span></strong>, because they are
function calls and not static defines.</p>
<p>Using Cairo 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 GD, Win32 or X-Windows canvas.</p>
+ with a standard GDK, Win32 or X-Windows canvas.</p>
<p>To enable the use of Cairo based drivers you must call the initialization function <font face="Courier"><strong>
- cdInitContextPlus()</strong></font> once and link to the libraries &quot;<strong>cdcairo</strong>&quot; and &quot;<strong>cairo</strong>&quot;.
- When using the GDK base driver you do not need to link with the &quot;<strong>cdcairo</strong>&quot;
- library. Also the Cairo library must be installed in your system.</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>
+ cdInitContextPlus()</strong></font> once and link to the libraries &quot;<strong>cdcairo</strong>&quot; and &quot;<strong>cairo</strong>&quot;. Also the Cairo library must be installed in your system.
+ When using the GDK base driver you do not need to link with the &quot;<strong>cdcairo</strong>&quot;
+ library. </p>
+ <p>In CDLua it is not necessary any additional initialization, and <strong>require&quot;cdluacairo&quot;</strong> can be used when
+ using dynamic libraries. But when using require there are some restrictions,
+ in Win32 the GDK base driver can NOT be used, in Linux the X11 base driver
+ can NOT be used, and in other UNICES the GDK base driver can NOT be used.</p>
+
+<h3>Extra Drivers (cdcairo.h)</h3>
+<p>Only available in Lua when <strong>require&quot;cdluacairo&quot;</strong> is
+used.</p>
+
+<h4>CD_CAIRO_PS - PostScript Driver</h4>
+
+ <p>Similar to <a href="ps.html">CD_PS</a>, uses the same creation parameters.
+ But margins are not supported and Postscript level can be 2 (parameter -2)
+ or 3 (parameter -3).</p>
+
+<h4>CD_CAIRO_PDF - PDF Driver</h4>
+
+ <p>Similar to <a href="pdf.html">CD_PDF</a>, uses the same creation
+ parameters. The driver also does not depends on the PDFLib. The additional
+ attributes &quot;OPACITY&quot;, &quot;PATTERN&quot;, &quot;PDF&quot;, &quot;PDFLIBVERSION&quot; and the description
+ strings, are not supported.</p>
+<h4>CD_CAIRO_SVG - Scalable Vector Graphics Driver</h4>
+
+ <p>Similar to <a href="svg.html">CD_SVG</a>, uses the same creation
+ parameters. The additional attributes &quot;OPACITY&quot; and &quot;CMD&quot; are not supported.</p>
+
+<h4>CD_CAIRO_IMAGERGB - RGB Client Image Driver</h4>
+
+ <p>Similar to <a href="irgb.html">CD_IMAGERGB</a>, uses <span class="style3">
+ almost</span> the same creation parameters. The main difference is that the
+ data pointers are packed in RGBARGBARGBA... format. So it is used only 1
+ pointer for data, instead of 3. Also the attributes &quot;REDIMAGE&quot;,
+ &quot;GREENIMAGE&quot;, &quot;BLUEIMAGE&quot; and &quot;ALPHAIMAGE are not supported and replaced by
+ the &quot;RGBDATA&quot; attribute. There are also two new attributes, &quot;STRIDE&quot; that
+ returns the line size in bytes, when data is specified during creation then
+ stride is always width*32. Even when there is not alpha channel, data is
+ stored in 32 bits per pixel. Image data is also organized in top-bottom
+ orientation, it means the data pointer points to the top-left corner.</p>
<h3>Behavior of Functions</h3>
<h4>Control&nbsp; </h4>
diff --git a/html/en/drv/gdk.html b/html/en/drv/gdk.html
index 694a22c..e54d6e0 100644
--- a/html/en/drv/gdk.html
+++ b/html/en/drv/gdk.html
@@ -6,11 +6,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>GDK</title>
<link rel="stylesheet" type="text/css" href="../../style.css">
-<style type="text/css">
-.style1 {
- font-family: monospace;
-}
-</style>
</head>
<body>
@@ -23,6 +18,9 @@
<a href="http://library.gnome.org/devel/pango/">Pango</a> API
functions. This driver was designed for the GTK+ version 2, and can be
compiled and used in all systems GDK is supported.</p>
+<p>This is included in the main library in Linux and BSD. To use it in other
+Unices and in Win32 you must link with the <strong>cdgdk</strong> library
+instead of the <strong>cd</strong> main library.</p>
<h3>Behavior of Functions</h3>
<h4>Control&nbsp; </h4>
diff --git a/html/en/drv/svg.html b/html/en/drv/svg.html
index 10a0952..31a5f4a 100644
--- a/html/en/drv/svg.html
+++ b/html/en/drv/svg.html
@@ -10,7 +10,7 @@
<body>
-<h2 style="text-align: left">CD_SVG - CD Scalable Vector Graphics Driver (cdsvg.h)</h2>
+<h2 style="text-align: left">CD_SVG - Scalable Vector Graphics Driver (cdsvg.h)</h2>
<p>This driver allows the generation of a SVG file, a modularized language for
describing two-dimensional vector and mixed vector/raster graphics in XML. The
diff --git a/html/en/drv/xwin.html b/html/en/drv/xwin.html
index 3049da9..86d57ed 100644
--- a/html/en/drv/xwin.html
+++ b/html/en/drv/xwin.html
@@ -21,6 +21,10 @@
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>This is included in the main library in AIX, SunOS and IRIX. To use it in
+Linux and BSD you must link with the <strong>cdx11</strong> library instead of
+the <strong>cd</strong> main library.</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>
diff --git a/html/en/guide.html b/html/en/guide.html
index d52c633..b09e2a3 100644
--- a/html/en/guide.html
+++ b/html/en/guide.html
@@ -91,23 +91,29 @@ the makefiles and projects expect the following directory tree:</p>
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)
-cdgdk -&gt; <strong><span class="style1">gdk-win32-2.0</span></strong>(system - Windows)
- -&gt; <strong><span class="style1">gdk-x11-2.0</span></strong> (system - UNIX)
- -&gt; <span class="style1"><strong>cairo-2</strong></span> (system - Windows/UNIX)
-cdgdiplus -&gt; cd
+<pre>cd -&gt; <strong><span class="style2">FreeType</span></strong> (included as separate library)
+<em> cdwin*</em> -&gt; <strong><span class="style4">gdi32</span></strong> <strong><span class="style4">user32</span></strong> <strong><span class="style4">comdlg32</span></strong> (system - Windows)
+<em> cdx11*</em> -&gt; <strong><span class="style4">X11</span></strong> (system - UNIX)
+<em> </em><em>cdgdk</em><em>*</em> -&gt; <strong><span class="style1">gdk-win32-2.0 pangowin32-1.0</span></strong>(system - Windows)
+<em> </em> -&gt; <strong><span class="style1">gdk-x11-2.0</span></strong> <strong><span class="style1">pangox-1.0 </span></strong>(system - UNIX)
+ -&gt; <span class="style1"><strong>cairo-2 </strong></span><strong><span class="style1">gdk_pixbuf-2.0 pango-1.0 gobject-2.0</span></strong> <strong><span class="style1">gmodule-2.0 glib-2.0</span></strong> (system - Windows/UNIX)
+<em>cdgdiplus*</em> -&gt; cd
-&gt; <strong><span class="style4">gdiplus</span></strong> (system - Windows)
-cdxrender -&gt; cd
+<em>cdxrender*</em> -&gt; cd
-&gt; <strong><span class="style4">Xrender</span></strong> <strong><span class="style4">Xft</span></strong> (system - UNIX)
+<em>cdcairo*</em> -&gt; <span class="style1"><strong>cairo-2</strong></span> (system - Windows/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>
+ -&gt; cdpdf
+
+(*) In Windows, &quot;<strong>cdwin</strong>&quot; is called &quot;<strong>cd</strong>&quot;.
+ In Linux and BSD &quot;<strong>cdgdk</strong>&quot; is called &quot;<strong>cd</strong>&quot;.
+ In IRIX, AIX and SunOS &quot;<strong>cdx11</strong>&quot; is called &quot;<strong>cd</strong>&quot;.</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>
@@ -121,7 +127,8 @@ LUALIB and LUABINDIR definitions before using Tecmake or Tecmake Compact.</p>
<pre>libx11-dev
libxpm-dev
libxmu-dev
-libxft-dev</pre>
+libxft-dev (for the XRender driver)
+libgtk2.0-dev (for the GDK driver)</pre>
<h3><a name="Environment">Environment Variables</a></h3>
diff --git a/html/en/history.html b/html/en/history.html
index 1f693f1..1b1ac36 100644
--- a/html/en/history.html
+++ b/html/en/history.html
@@ -24,7 +24,7 @@
<body>
<h2>History of Changes</h2>
-<h3><a href="http://sourceforge.net/projects/canvasdraw/files/5.4/">Version 5.4</a> (XX/XX/2010)</h3>
+<h3><a href="http://sourceforge.net/projects/canvasdraw/files/5.4/">Version 5.4</a> (XX/June/2010)</h3>
<ul>
<li><span class="hist_new">New:</span> context plus driver Cairo.</li>
<li><span class="hist_new">New:</span> &quot;CMD&quot;, &quot;OPACITY&quot; and &quot;HATCHBOXSIZE&quot;
@@ -43,6 +43,12 @@
<span class="hist_changed">Changed:</span>
removed compatibility with require&quot;cdlua51&quot;, now LuaBinaries must be used
or LUA_CPATH must be set.</li>
+ <li dir="ltr">
+ <span class="hist_changed">Changed:</span>
+ <strong>
+ <span style="color: #FF0000">IMPORTANT</span></strong> - the main library in
+ Linux and BSD is now the GDK base driver. The X11 base driver library
+ was renamed to <strong>cdx11</strong> on those systems.</li>
<li>
<span class="hist_fixed">Fixed:</span> PDF driver documentation,
<strong>CanvasBackOpacity</strong> and <strong>CanvasBackground</strong> are
diff --git a/include/cdcairo.h b/include/cdcairo.h
index 2d01f2e..f417086 100644
--- a/include/cdcairo.h
+++ b/include/cdcairo.h
@@ -14,7 +14,7 @@ extern "C" {
/* Some of these context can be used directly or by cdInitContextPlus,
as CD_NATIVEWINDOW, CD_IMAGE and CD_DBUFFER.
- The other only directly.
+ The others only directly.
*/
cdContext* cdContextCairoPS(void);
diff --git a/src/cdluacairo5.mak b/src/cdluacairo5.mak
new file mode 100644
index 0000000..691046c
--- /dev/null
+++ b/src/cdluacairo5.mak
@@ -0,0 +1,38 @@
+PROJNAME = cd
+LIBNAME = cdluacairo
+
+OPT = YES
+
+DEFINES = CD_NO_OLD_INTERFACE
+SRCDIR = lua5
+SRC = cdluacairo5.c
+DEF_FILE = cdluacairo5.def
+
+ifneq ($(findstring Win, $(TEC_SYSNAME)), )
+ # In Win32 will work only for the Win32 base driver,
+ # it will NOT work for the GDK base driver.
+ LIBS = cdcairo
+else
+ ifdef GTK_DEFAULT
+ # In Linux will work only for the GDK base driver,
+ # it will NOT work for the X11 base driver.
+ # The main cd library already includes the Cairo driver.
+ LIBS =
+ else
+ # In Other Unices will work only for the X11 base driver,
+ # it will NOT work for the GDK base driver.
+ LIBS = cdcairo
+ endif
+endif
+
+ifdef USE_LUA52
+ LIBNAME := $(LIBNAME)52
+else
+ USE_LUA51 = Yes
+ LIBNAME := $(LIBNAME)51
+endif
+
+NO_LUALINK = Yes
+USE_CD = YES
+USE_CDLUA = YES
+CD = ..
diff --git a/src/config.mak b/src/config.mak
index ec852fb..d9af743 100644
--- a/src/config.mak
+++ b/src/config.mak
@@ -41,7 +41,7 @@ SRC = $(SRCCOMM) $(SRCSVG) $(SRCINTCGM) $(SRCDRV) $(SRCSIM)
ifneq ($(findstring Win, $(TEC_SYSNAME)), )
ifdef USE_GDK
SRC += $(SRCGDK) $(SRCNULL) $(SRCCAIRO)
- LIBNAME := cdgdk
+ LIBNAME := $(LIBNAME)gdk
USE_GTK = Yes
LIBS += cairo
else
@@ -51,10 +51,17 @@ ifneq ($(findstring Win, $(TEC_SYSNAME)), )
else
ifdef USE_GDK
SRC += $(SRCGDK) $(SRCCAIRO)
- LIBNAME := cdgdk
USE_GTK = Yes
LIBS += cairo
+ ifndef GTK_DEFAULT
+ # Build GDK version in IRIX,SunOS,AIX,Win32
+ LIBNAME := $(LIBNAME)gdk
+ endif
else
+ ifdef GTK_DEFAULT
+ # Build X11 version in Linux,Darwin,FreeBSD
+ LIBNAME := $(LIBNAME)x11
+ endif
SRC += $(SRCX11)
USE_X11 = Yes
endif
diff --git a/src/lua5/cdluacairo5.c b/src/lua5/cdluacairo5.c
new file mode 100644
index 0000000..0e99b3c
--- /dev/null
+++ b/src/lua5/cdluacairo5.c
@@ -0,0 +1,108 @@
+/** \file
+ * \brief Cairo Lua 5 Binding
+ *
+ * See Copyright Notice in cd.h
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "cd.h"
+#include "cdcairo.h"
+
+#include <lua.h>
+#include <lauxlib.h>
+
+#include "cdlua.h"
+#include "cdlua5_private.h"
+
+
+static void *cdimagergb_checkdata(lua_State* L, int param)
+{
+ return (void *)luaL_checkstring(L, param);
+}
+
+static cdluaContext cdluaimagergbctx =
+{
+ 0,
+ "CAIRO_IMAGERGB",
+ cdContextCairoImageRGB,
+ cdimagergb_checkdata,
+ NULL,
+ 0
+};
+
+static void *cdps_checkdata( lua_State *L, int param)
+{
+ return (void *)luaL_checkstring(L, param);
+}
+
+static cdluaContext cdluapsctx =
+{
+ 0,
+ "CAIRO_PS",
+ cdContextCairoPS,
+ cdps_checkdata,
+ NULL,
+ 0
+};
+
+static void *cdsvg_checkdata( lua_State *L, int param)
+{
+ return (void *)luaL_checkstring(L, param);
+}
+
+static cdluaContext cdluasvgctx =
+{
+ 0,
+ "CAIRO_SVG",
+ cdContextCairoSVG,
+ cdsvg_checkdata,
+ NULL,
+ 0
+};
+
+static void *cdpdf_checkdata(lua_State *L, int param)
+{
+ return (void *)luaL_checkstring(L, param);
+}
+
+static cdluaContext cdluapdfctx =
+{
+ 0,
+ "CAIRO_PDF",
+ cdContextCairoPDF,
+ cdpdf_checkdata,
+ NULL,
+ 0
+};
+
+static int cdlua5_initcairo(lua_State *L)
+{
+ (void)L;
+ cdInitContextPlus();
+ return 0;
+}
+
+static const struct luaL_reg cdlib[] = {
+ {"InitContextPlus", cdlua5_initcairo},
+ {NULL, NULL},
+};
+
+
+static int cdluacairo_open (lua_State *L)
+{
+ cdluaLuaState* cdL = cdlua_getstate(L);
+ cdInitContextPlus();
+ luaL_register(L, "cd", cdlib); /* leave "cd" table at the top of the stack */
+ cdlua_addcontext(L, cdL, &cdluapdfctx);
+ cdlua_addcontext(L, cdL, &cdluapsctx);
+ cdlua_addcontext(L, cdL, &cdluasvgctx);
+ cdlua_addcontext(L, cdL, &cdluaimagergbctx);
+ return 1;
+}
+
+int luaopen_cdluacairo(lua_State* L)
+{
+ return cdluacairo_open(L);
+}
diff --git a/src/lua5/cdluacairo5.def b/src/lua5/cdluacairo5.def
new file mode 100644
index 0000000..aa12034
--- /dev/null
+++ b/src/lua5/cdluacairo5.def
@@ -0,0 +1,4 @@
+EXPORTS
+ luaopen_cdluacairo
+
+ \ No newline at end of file
diff --git a/src/lua5/cdluapdf5.c b/src/lua5/cdluapdf5.c
index 40877ad..7fd2ece 100644
--- a/src/lua5/cdluapdf5.c
+++ b/src/lua5/cdluapdf5.c
@@ -37,7 +37,11 @@ int cdluapdf_open (lua_State *L)
{
cdluaLuaState* cdL = cdlua_getstate(L);
lua_pushliteral(L, "cd");
+#if LUA_VERSION_NUM > 501
+ lua_pushglobaltable(L);
+#else
lua_gettable(L, LUA_GLOBALSINDEX); /* leave "cd" table at the top of the stack */
+#endif
cdlua_addcontext(L, cdL, &cdluapdfctx);
return 1;
}