Added methods getdata() and putdata() to obtain the data in a bitmap.
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 3 Mar 2000 16:01:11 +0000 (16:01 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 3 Mar 2000 16:01:11 +0000 (16:01 +0000)
Mac/Modules/qd/Qdmodule.c
Mac/Modules/qd/qdsupport.py

index f8dba7ee54b4b75f559814ea4b5ce446b2fbc239..299c9ca6992be6bc7e6f80d3621746838a713736 100644 (file)
@@ -297,7 +297,45 @@ static void BMObj_dealloc(self)
        PyMem_DEL(self);
 }
 
+static PyObject *BMObj_getdata(_self, _args)
+       BitMapObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       int from, length;
+       char *cp;
+
+       if ( !PyArg_ParseTuple(_args, "ii", &from, &length) )
+               return NULL;
+       cp = _self->ob_itself->baseAddr+from;
+       return PyString_FromStringAndSize(cp, length);
+
+}
+
+static PyObject *BMObj_putdata(_self, _args)
+       BitMapObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       int from, length;
+       char *cp, *icp;
+
+       if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) )
+               return NULL;
+       cp = _self->ob_itself->baseAddr+from;
+       memcpy(cp, icp, length);
+       Py_INCREF(Py_None);
+       return Py_None;
+
+}
+
 static PyMethodDef BMObj_methods[] = {
+       {"getdata", (PyCFunction)BMObj_getdata, 1,
+        "(int start, int size) -> string. Return bytes from the bitmap"},
+       {"putdata", (PyCFunction)BMObj_putdata, 1,
+        "(int start, string data). Store bytes into the bitmap"},
        {NULL, NULL, 0}
 };
 
index 7f1db824fedac625541ba4848ffac72b8f26f519..33e8832d60681db5cf0f6b64b000ad30a2ebcfaf 100644 (file)
@@ -310,6 +310,36 @@ for f in functions: module.add(f)
 ##for f in r_methods: r_object.add(f)
 ##for f in po_methods: po_object.add(f)
 
+# Manual generator: get data out of a bitmap
+getdata_body = """
+int from, length;
+char *cp;
+
+if ( !PyArg_ParseTuple(_args, "ii", &from, &length) )
+       return NULL;
+cp = _self->ob_itself->baseAddr+from;
+return PyString_FromStringAndSize(cp, length);
+"""
+f = ManualGenerator("getdata", getdata_body)
+f.docstring = lambda: """(int start, int size) -> string. Return bytes from the bitmap"""
+bm_object.add(f)
+
+# Manual generator: store data in a bitmap
+putdata_body = """
+int from, length;
+char *cp, *icp;
+
+if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) )
+       return NULL;
+cp = _self->ob_itself->baseAddr+from;
+memcpy(cp, icp, length);
+Py_INCREF(Py_None);
+return Py_None;
+"""
+f = ManualGenerator("putdata", putdata_body)
+f.docstring = lambda: """(int start, string data). Store bytes into the bitmap"""
+bm_object.add(f)
+
 #
 # We manually generate a routine to create a BitMap from python data.
 #