diff options
| author | Jeff Armstrong <jeffrey.armstrong@approximatrix.com> | 2011-07-22 22:09:16 -0400 |
|---|---|---|
| committer | Jeff Armstrong <jeffrey.armstrong@approximatrix.com> | 2011-07-22 22:09:16 -0400 |
| commit | fce2b435d228d240e24656d6baf47f7d6022b730 (patch) | |
| tree | c70ad004872ee9a94e6b231a02ef660a066a2a38 /lib | |
| parent | 6a51839ca252a993fee42c9e1b7c7079e74d652e (diff) | |
| download | gempy-fce2b435d228d240e24656d6baf47f7d6022b730.tar.gz gempy-fce2b435d228d240e24656d6baf47f7d6022b730.zip | |
Added basic VDI wrappers. Added messages module that was previously missing.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Makefile | 2 | ||||
| -rw-r--r-- | lib/gem.c | 19 | ||||
| -rw-r--r-- | lib/py_vdi.c | 104 | ||||
| -rw-r--r-- | lib/py_vdi.h | 13 |
4 files changed, 136 insertions, 2 deletions
diff --git a/lib/Makefile b/lib/Makefile index b98c2be..8fb947a 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -6,7 +6,7 @@ CFLAGS = -g -O -I/e/Python-2.7.1/Include -I/e/Python-2.7.1 LIBS = -lgem -lldg
-OBJECTS = gem.o py_aes.o
+OBJECTS = gem.o py_aes.o py_vdi.o
TARGET = _gem.ldg
@@ -11,6 +11,7 @@ #include <ldg.h> #include "py_aes.h" +#include "py_vdi.h" /* --- A GEM exception --- */ @@ -49,6 +50,14 @@ GemMethods[] = { {"wind_update", py_wind_update, METH_VARARGS, "Lock window redraw for updates"}, {"evnt_multi", py_evnt_multi, METH_VARARGS | METH_KEYWORDS, "Process multiple GEM events."}, + + /* VDI Functions */ + {"v_open_screen", py_v_open_screen, METH_NOARGS, "Open and retrieve a handle to a virtual screen workstation"}, + {"v_clsvwk", py_v_clsvwk, METH_VARARGS, "Close a virtual workstation"}, + {"v_bar", py_v_bar, METH_VARARGS, "Draw a filled rectangle"}, + {"v_ellipse", py_v_ellipse, METH_VARARGS, "Draw an ellipse"}, + {"vsf_color", py_vsf_color, METH_VARARGS, "Select the fill color index"}, + {"vs_clip", py_vs_clip, METH_VARARGS, "Set VDI clipping region"}, {NULL,NULL,0,NULL} }; @@ -117,11 +126,19 @@ PROC LibFunc[] = { /* AES Event Library */ "py_evnt_multi", "Internal\n", py_evnt_multi, + /* VDI Functions */ + "py_v_open_screen", "Internal\n", py_v_open_screen, + "py_v_clsvwk", "Internal\n", py_v_clsvwk, + "py_v_bar", "Internal\n", py_v_bar, + "py_v_ellipse", "Internal\n", py_v_ellipse, + "py_vsf_color", "Internal\n", py_vsf_color, + "py_vs_clip", "Internal\n", py_vs_clip, + NULL,NULL,NULL }; LDGLIB LibLdg[] = { - 0x0001, 23, LibFunc, "GEM Extensions for Python", 0 + 0x0001, 29, LibFunc, "GEM Extensions for Python", 0 }; int main( void) diff --git a/lib/py_vdi.c b/lib/py_vdi.c new file mode 100644 index 0000000..9c1dd7e --- /dev/null +++ b/lib/py_vdi.c @@ -0,0 +1,104 @@ +#include "ldg_Python.h"
+#include <gem.h>
+
+PyObject* __CDECL py_v_open_screen(PyObject *self, PyObject *args)
+{
+int i;
+short work_in[16];
+short work_out[57];
+
+short vdi_handle;
+
+ for(i=1;i<16;i++)
+ work_in[i] = (short)0; /* General Defaults */
+
+ work_in[0] = (short)1; /* Current Resolution */
+ work_in[10] = (short)2; /* Necessary for screen drawing */
+
+ v_opnvwk(work_in, &vdi_handle, work_out);
+
+ /* For now, ignore the work_out array */
+
+ return Py_BuildValue("i",(int)vdi_handle);
+}
+
+PyObject* __CDECL py_v_clsvwk(PyObject *self, PyObject *args)
+{
+int handle;
+
+ if(!PyArg_ParseTuple(args,"i",&handle))
+ return NULL;
+
+ v_clsvwk(handle);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+PyObject* __CDECL py_v_bar(PyObject *self, PyObject *args)
+{
+int handle;
+int x1, y1, x2, y2;
+short pxarray[4];
+
+ if(!PyArg_ParseTuple(args,"i(ii)(ii)",&handle, &x1, &y1, &x2, &y2))
+ return NULL;
+
+ pxarray[0] = x1; + pxarray[1] = y1;
+ pxarray[2] = x2;
+ pxarray[3] = y2;
+
+ v_bar(handle,pxarray);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+PyObject* __CDECL py_v_ellipse(PyObject *self, PyObject *args)
+{
+int handle;
+int x1, y1, xr, yr;
+
+ if(!PyArg_ParseTuple(args,"i(ii)(ii)",&handle, &x1, &y1, &xr, &yr))
+ return NULL;
+
+ v_ellipse(handle,x1,y1,xr,yr);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+PyObject* __CDECL py_vsf_color(PyObject *self, PyObject *args)
+{
+int handle;
+int index;
+
+ if(!PyArg_ParseTuple(args,"ii",&handle, &index))
+ return NULL;
+
+ index = vsf_color(handle,index);
+
+ return Py_BuildValue("i",index);
+}
+
+PyObject* __CDECL py_vs_clip(PyObject *self, PyObject *args)
+{
+int handle;
+int x1, y1, x2, y2;
+int enable;
+short pxarray[4];
+
+ if(!PyArg_ParseTuple(args,"ii(ii)(ii)",&handle, &enable, &x1, &y1, &x2, &y2))
+ return NULL;
+
+ pxarray[0] = (short)x1;
+ pxarray[1] = (short)y1;
+ pxarray[2] = (short)x2;
+ pxarray[3] = (short)y2;
+
+ vs_clip(handle,enable,pxarray);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
diff --git a/lib/py_vdi.h b/lib/py_vdi.h new file mode 100644 index 0000000..4263d42 --- /dev/null +++ b/lib/py_vdi.h @@ -0,0 +1,13 @@ +#ifndef __PY_VDI_HEADERS
+#define __PY_VDI_HEADERS
+
+#include "ldg_Python.h"
+
+PyObject* __CDECL py_v_open_screen(PyObject *self, PyObject *args);
+PyObject* __CDECL py_v_clsvwk(PyObject *self, PyObject *args);
+PyObject* __CDECL py_v_bar(PyObject *self, PyObject *args);
+PyObject* __CDECL py_v_ellipse(PyObject *self, PyObject *args);
+PyObject* __CDECL py_vsf_color(PyObject *self, PyObject *args);
+PyObject* __CDECL py_vs_clip(PyObject *self, PyObject *args);
+
+#endif /* __PY_VDI_HEADERS */
|
