summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-22 22:09:16 -0400
committerJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-22 22:09:16 -0400
commitfce2b435d228d240e24656d6baf47f7d6022b730 (patch)
treec70ad004872ee9a94e6b231a02ef660a066a2a38 /lib
parent6a51839ca252a993fee42c9e1b7c7079e74d652e (diff)
downloadgempy-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/Makefile2
-rw-r--r--lib/gem.c19
-rw-r--r--lib/py_vdi.c104
-rw-r--r--lib/py_vdi.h13
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
diff --git a/lib/gem.c b/lib/gem.c
index 9ffe5aa..cbb3b5b 100644
--- a/lib/gem.c
+++ b/lib/gem.c
@@ -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 */