--- /dev/null
+// -*- mode: C; indent-tabs-mode: nil; -*-
+
+#include "../config.h"
+#include "rect.h"
+
+extern PyTypeObject OtkRect_Type;
+
+PyObject *OtkRect_New(int x, int y, int width, int height)
+{
+ OtkRect* self;
+
+ self = PyObject_New(OtkRect, &OtkRect_Type);
+
+ self->x = x;
+ self->y = y;
+ self->width = width;
+ self->height = height;
+
+ return (PyObject*)self;
+}
+
+
+
+static PyObject *otkrect_getx(OtkRect* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":getX"))
+ return NULL;
+ return PyInt_FromLong(self->x);
+}
+
+static PyObject *otkrect_gety(OtkRect* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":getY"))
+ return NULL;
+ return PyInt_FromLong(self->y);
+}
+
+static PyObject *otkrect_getwidth(OtkRect* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":getWidth"))
+ return NULL;
+ return PyInt_FromLong(self->width);
+}
+
+static PyObject *otkrect_getheight(OtkRect* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":getHeight"))
+ return NULL;
+ return PyInt_FromLong(self->height);
+}
+
+
+static PyMethodDef get_methods[] = {
+ {"getX", (PyCFunction)otkrect_getx, METH_VARARGS,
+ "Get the X coordinate."},
+ {"getY", (PyCFunction)otkrect_gety, METH_VARARGS,
+ "Get the Y coordinate."},
+ {"getWidth", (PyCFunction)otkrect_getwidth, METH_VARARGS,
+ "Get the width."},
+ {"getHeight", (PyCFunction)otkrect_getheight, METH_VARARGS,
+ "Get the height."},
+ {NULL, NULL, 0, NULL}
+};
+
+
+
+static void otkrect_dealloc(PyObject* self)
+{
+ PyObject_Del(self);
+}
+
+static PyObject *otkrect_getattr(PyObject *obj, char *name)
+{
+ return Py_FindMethod(get_methods, obj, name);
+}
+
+
+PyTypeObject OtkRect_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0,
+ "OtkRect",
+ sizeof(OtkRect),
+ 0,
+ otkrect_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ otkrect_getattr, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash */
+};