gcompris r3471 - branches/gcomprixogoo/src/boards



Author: bcoudoin
Date: Sun Jul  6 14:02:04 2008
New Revision: 3471
URL: http://svn.gnome.org/viewvc/gcompris?rev=3471&view=rev

Log:
Synced our internal pygoocanvas with pygoocanvas trunk#222.
This brings the ability to read Points this way:
    points = goocanvas.Points([(1 , 1), (2 , 2)])
    print points.coords
    print points.num_points



Modified:
   branches/gcomprixogoo/src/boards/goocanvas.c

Modified: branches/gcomprixogoo/src/boards/goocanvas.c
==============================================================================
--- branches/gcomprixogoo/src/boards/goocanvas.c	(original)
+++ branches/gcomprixogoo/src/boards/goocanvas.c	Sun Jul  6 14:02:04 2008
@@ -326,6 +326,49 @@
 #line 327 "goocanvas.c"
 
 
+#line 1880 "goocanvas.override"
+
+static PyObject *
+_wrap_goo_canvas_points__get_coords(PyObject *self, void *closure)
+{
+    gdouble     *coords;
+    int         num_points, i;
+    PyObject    *ret = Py_None;
+    
+    num_points = pyg_boxed_get(self, GooCanvasPoints)->num_points;
+    coords = pyg_boxed_get(self, GooCanvasPoints)->coords;
+    
+    if (num_points > 0) {
+        ret = PyList_New(num_points);
+        
+        for (i = 0; i < num_points; i ++) {
+            PyObject *py_temp = Py_BuildValue("dd", coords[2*i], coords[2*i + 1]);
+            PyList_SetItem(ret, i, py_temp);
+        }
+        return ret;
+    }
+    Py_INCREF(ret);    
+    return ret;
+}
+
+#line 355 "goocanvas.c"
+
+
+static PyObject *
+_wrap_goo_canvas_points__get_num_points(PyObject *self, void *closure)
+{
+    int ret;
+
+    ret = pyg_boxed_get(self, GooCanvasPoints)->num_points;
+    return PyInt_FromLong(ret);
+}
+
+static const PyGetSetDef goo_canvas_points_getsets[] = {
+    { "coords", (getter)_wrap_goo_canvas_points__get_coords, (setter)0 },
+    { "num_points", (getter)_wrap_goo_canvas_points__get_num_points, (setter)0 },
+    { NULL, (getter)0, (setter)0 },
+};
+
 PyTypeObject G_GNUC_INTERNAL PyGooCanvasPoints_Type = {
     PyObject_HEAD_INIT(NULL)
     0,                                 /* ob_size */
@@ -358,7 +401,7 @@
     (iternextfunc)0,     /* tp_iternext */
     (struct PyMethodDef*)NULL, /* tp_methods */
     (struct PyMemberDef*)0,              /* tp_members */
-    (struct PyGetSetDef*)0,  /* tp_getset */
+    (struct PyGetSetDef*)goo_canvas_points_getsets,  /* tp_getset */
     NULL,                              /* tp_base */
     NULL,                              /* tp_dict */
     (descrgetfunc)0,    /* tp_descr_get */
@@ -412,7 +455,7 @@
     self->free_on_dealloc = TRUE;
     return 0;
 }
-#line 416 "goocanvas.c"
+#line 459 "goocanvas.c"
 
 
 PyTypeObject G_GNUC_INTERNAL PyGooCanvasLineDash_Type = {
@@ -602,7 +645,7 @@
     return ret;
 }
 
-#line 606 "goocanvas.c"
+#line 649 "goocanvas.c"
 
 
 #line 1469 "goocanvas.override"
@@ -643,7 +686,7 @@
     return ret;
 }
 
-#line 647 "goocanvas.c"
+#line 690 "goocanvas.c"
 
 
 static PyObject *
@@ -683,7 +726,7 @@
     return Py_BuildValue("dddd", left, right, top, bottom);
 }
 
-#line 687 "goocanvas.c"
+#line 730 "goocanvas.c"
 
 
 static PyObject *
@@ -768,7 +811,7 @@
     return Py_BuildValue("dd", x, y);
 }
 
-#line 772 "goocanvas.c"
+#line 815 "goocanvas.c"
 
 
 #line 556 "goocanvas.override"
@@ -786,7 +829,7 @@
     return Py_BuildValue("dd", x, y);
 }
 
-#line 790 "goocanvas.c"
+#line 833 "goocanvas.c"
 
 
 #line 572 "goocanvas.override"
@@ -805,7 +848,7 @@
     
     return Py_BuildValue("dd", x, y);
 }
-#line 809 "goocanvas.c"
+#line 852 "goocanvas.c"
 
 
 #line 589 "goocanvas.override"
@@ -824,7 +867,7 @@
 
     return Py_BuildValue("dd", x, y);
 }
-#line 828 "goocanvas.c"
+#line 871 "goocanvas.c"
 
 
 static PyObject *
@@ -903,17 +946,19 @@
     return Py_None;
 }
 
+#line 2029 "goocanvas.override"
 static PyObject *
 _wrap_goo_canvas_create_cairo_context(PyGObject *self)
 {
     cairo_t *ret;
 
-    
     ret = goo_canvas_create_cairo_context(GOO_CANVAS(self->obj));
     
     cairo_reference(ret);
-    return PycairoContext_FromContext(ret, NULL, NULL);
+    return PycairoContext_FromContext(ret, &PyGdkCairoContext_Type, NULL);
 }
+#line 961 "goocanvas.c"
+
 
 static PyObject *
 _wrap_goo_canvas_create_item(PyGObject *self, PyObject *args, PyObject *kwargs)
@@ -1698,7 +1743,7 @@
     return py_bounds;    
 }
 
-#line 1702 "goocanvas.c"
+#line 1747 "goocanvas.c"
 
 
 static PyObject *
@@ -1958,7 +2003,7 @@
     return 0;
 }
 
-#line 1962 "goocanvas.c"
+#line 2007 "goocanvas.c"
 
 
 static PyObject *
@@ -1983,7 +2028,7 @@
     return 0;
 }
 
-#line 1987 "goocanvas.c"
+#line 2032 "goocanvas.c"
 
 
 static PyObject *
@@ -2008,7 +2053,7 @@
     return 0;
 }
 
-#line 2012 "goocanvas.c"
+#line 2057 "goocanvas.c"
 
 
 static PyObject *
@@ -2033,7 +2078,7 @@
     return 0;
 }
 
-#line 2037 "goocanvas.c"
+#line 2082 "goocanvas.c"
 
 
 static PyObject *
@@ -2064,7 +2109,7 @@
     return pygoo_canvas_bounds_new(&GOO_CANVAS_ITEM_SIMPLE(pygobject_get(self))->bounds);
 }
 
-#line 2068 "goocanvas.c"
+#line 2113 "goocanvas.c"
 
 
 static const PyGetSetDef goo_canvas_item_simple_getsets[] = {
@@ -2930,7 +2975,7 @@
     return _py_canvas_style_get_property(GOO_CANVAS_STYLE(self->obj), name);
 }
 
-#line 2934 "goocanvas.c"
+#line 2979 "goocanvas.c"
 
 
 #line 730 "goocanvas.override"
@@ -2950,7 +2995,7 @@
     return Py_None;
 }
 
-#line 2954 "goocanvas.c"
+#line 2999 "goocanvas.c"
 
 
 static PyObject *
@@ -3037,7 +3082,7 @@
     (objobjargproc) _wrap_goo_canvas_style_ass_subscript, /* objobjargproc mp_ass_subscript; */
 };
 
-#line 3041 "goocanvas.c"
+#line 3086 "goocanvas.c"
 
 
 PyTypeObject G_GNUC_INTERNAL PyGooCanvasStyle_Type = {
@@ -3203,7 +3248,7 @@
 			 logical_rect.width, logical_rect.height);
 }
 
-#line 3207 "goocanvas.c"
+#line 3252 "goocanvas.c"
 
 
 static const PyMethodDef _PyGooCanvasText_methods[] = {
@@ -3461,7 +3506,7 @@
     Py_INCREF(Py_None);
     return Py_None;
 }
-#line 3465 "goocanvas.c"
+#line 3510 "goocanvas.c"
 
 
 #line 1708 "goocanvas.override"
@@ -3520,7 +3565,7 @@
     return ret;
 }
 
-#line 3524 "goocanvas.c"
+#line 3569 "goocanvas.c"
 
 
 #line 1650 "goocanvas.override"
@@ -3580,7 +3625,7 @@
     return Py_None;
 }
 
-#line 3584 "goocanvas.c"
+#line 3629 "goocanvas.c"
 
 
 #line 921 "goocanvas.override"
@@ -3664,7 +3709,7 @@
     return tuple;
 }
 
-#line 3668 "goocanvas.c"
+#line 3713 "goocanvas.c"
 
 
 #line 839 "goocanvas.override"
@@ -3748,28 +3793,39 @@
     return Py_None;
 }
 
-#line 3752 "goocanvas.c"
+#line 3797 "goocanvas.c"
 
 
+#line 1950 "goocanvas.override"
 static PyObject *
-_wrap_goo_canvas_item_get_transform_for_child(PyGObject *self, PyObject *args, PyObject *kwargs)
+_wrap_goo_canvas_item_get_transform_for_child(PyGObject *self,
+                                              PyObject *args,
+                                              PyObject *kwargs)
 {
-    static char *kwlist[] = { "child", "transform", NULL };
+    static char *kwlist[] = { "child", NULL };
     PyGObject *child;
-    PyObject *py_transform;
     int ret;
-    cairo_matrix_t *transform;
+    cairo_matrix_t *transform = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!O:GooCanvasItem.get_transform_for_child", kwlist, &PyGooCanvasItem_Type, &child, &py_transform))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O!:GooCanvasItem.get_transform_for_child",
+                                     kwlist, &PyGooCanvasItem_Type, &child))
         return NULL;
-    transform = &((PycairoMatrix*)(py_transform))->matrix;
     
-    ret = goo_canvas_item_get_transform_for_child(GOO_CANVAS_ITEM(self->obj), GOO_CANVAS_ITEM(child->obj), transform);
+    ret = goo_canvas_item_get_transform_for_child(GOO_CANVAS_ITEM(self->obj),
+                                                  GOO_CANVAS_ITEM(child->obj),
+                                                  transform);
     
-    return PyBool_FromLong(ret);
-
+    if (ret)
+        return PycairoMatrix_FromMatrix(transform);
+    else
+        Py_INCREF(Py_None);
+        return Py_None;
 }
 
+#line 3827 "goocanvas.c"
+
+
 static PyObject *
 _wrap_goo_canvas_item_get_canvas(PyGObject *self)
 {
@@ -3909,19 +3965,26 @@
     return matrix;
 }
 
-#line 3913 "goocanvas.c"
+#line 3969 "goocanvas.c"
 
 
+#line 1978 "goocanvas.override"
 static PyObject *
-_wrap_goo_canvas_item_set_transform(PyGObject *self, PyObject *args, PyObject *kwargs)
+_wrap_goo_canvas_item_set_transform(PyGObject *self,
+                                    PyObject *args,
+                                    PyObject *kwargs)
 {
     static char *kwlist[] = { "matrix", NULL };
     PyObject *py_matrix;
-    cairo_matrix_t *matrix;
+    cairo_matrix_t *matrix = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:GooCanvasItem.set_transform", kwlist, &py_matrix))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O:GooCanvasItem.set_transform",
+                                     kwlist, &py_matrix))
         return NULL;
-    matrix = &((PycairoMatrix*)(py_matrix))->matrix;
+    
+    if (py_matrix && (py_matrix != Py_None))
+        matrix = &((PycairoMatrix*)(py_matrix))->matrix;
     
     goo_canvas_item_set_transform(GOO_CANVAS_ITEM(self->obj), matrix);
     
@@ -3929,6 +3992,9 @@
     return Py_None;
 }
 
+#line 3996 "goocanvas.c"
+
+
 #line 1624 "goocanvas.override"
 static PyObject *
 _wrap_goo_canvas_item_get_simple_transform(PyGObject *self)
@@ -3941,7 +4007,7 @@
     return Py_BuildValue("dddd", x, y, scale, rotation);
 }
 
-#line 3945 "goocanvas.c"
+#line 4011 "goocanvas.c"
 
 
 static PyObject *
@@ -4105,7 +4171,7 @@
     return py_bounds;
 }
 
-#line 4109 "goocanvas.c"
+#line 4175 "goocanvas.c"
 
 
 #line 1508 "goocanvas.override"
@@ -4145,7 +4211,7 @@
     return ret;
 }
 
-#line 4149 "goocanvas.c"
+#line 4215 "goocanvas.c"
 
 
 static PyObject *
@@ -4207,23 +4273,29 @@
     return Py_None;
 }
 
+#line 1929 "goocanvas.override"
 static PyObject *
 _wrap_goo_canvas_item_update(PyGObject *self, PyObject *args, PyObject *kwargs)
 {
-    static char *kwlist[] = { "entire_tree", "cr", "bounds", NULL };
-    int entire_tree;
-    PyObject *py_bounds;
-    PycairoContext *cr;
+    static char *kwlist[] = { "entire_tree", "cr", NULL };
+    int             entire_tree;
+    PycairoContext  *cr;
+    GooCanvasBounds bounds;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"iO!O!:GooCanvasItem.update", kwlist, &entire_tree, &PycairoContext_Type, &cr, &PyGooCanvasBounds_Type, &py_bounds))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"iO!:GooCanvasItem.update",
+                                     kwlist, &entire_tree,
+                                     &PycairoContext_Type, &cr))
         return NULL;
     
-    goo_canvas_item_update(GOO_CANVAS_ITEM(self->obj), entire_tree, cr->ctx, (py_bounds == NULL)? NULL : &((PyGooCanvasBounds *) py_bounds)->bounds);
+    goo_canvas_item_update(GOO_CANVAS_ITEM(self->obj), entire_tree,
+                           cr->ctx, &bounds);
     
-    Py_INCREF(Py_None);
-    return Py_None;
+    return pygoo_canvas_bounds_new(&bounds);
 }
 
+#line 4297 "goocanvas.c"
+
+
 static PyObject *
 _wrap_goo_canvas_item_paint(PyGObject *self, PyObject *args, PyObject *kwargs)
 {
@@ -4246,23 +4318,31 @@
     return Py_None;
 }
 
+#line 1906 "goocanvas.override"
 static PyObject *
-_wrap_goo_canvas_item_get_requested_area(PyGObject *self, PyObject *args, PyObject *kwargs)
+_wrap_goo_canvas_item_get_requested_area(PyGObject *self,
+                                         PyObject *args,
+                                         PyObject *kwargs)
 {
-    static char *kwlist[] = { "cr", "requested_area", NULL };
-    PyObject *py_requested_area;
-    int ret;
-    PycairoContext *cr;
+    static char     *kwlist[] = { "cr", NULL };
+    int             ret;
+    GooCanvasBounds bounds;
+    PycairoContext  *cr;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!O!:GooCanvasItem.get_requested_area", kwlist, &PycairoContext_Type, &cr, &PyGooCanvasBounds_Type, &py_requested_area))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O!:GooCanvasItem.get_requested_area",
+                                     kwlist, &PycairoContext_Type, &cr))
         return NULL;
     
-    ret = goo_canvas_item_get_requested_area(GOO_CANVAS_ITEM(self->obj), cr->ctx, (py_requested_area == NULL)? NULL : &((PyGooCanvasBounds *) py_requested_area)->bounds);
+    ret = goo_canvas_item_get_requested_area(GOO_CANVAS_ITEM(self->obj),
+                                             cr->ctx, &bounds);
     
-    return PyBool_FromLong(ret);
-
+    return pygoo_canvas_bounds_new(&bounds);
 }
 
+#line 4344 "goocanvas.c"
+
+
 static PyObject *
 _wrap_goo_canvas_item_get_requested_height(PyGObject *self, PyObject *args, PyObject *kwargs)
 {
@@ -4335,7 +4415,7 @@
     return pyg_param_spec_new(pspec);
 }
 
-#line 4339 "goocanvas.c"
+#line 4419 "goocanvas.c"
 
 
 #line 1291 "goocanvas.override"
@@ -4379,7 +4459,7 @@
     return list;
 }
 
-#line 4383 "goocanvas.c"
+#line 4463 "goocanvas.c"
 
 
 #line 1385 "goocanvas.override"
@@ -4433,7 +4513,7 @@
     return Py_None;
 }
 
-#line 4437 "goocanvas.c"
+#line 4517 "goocanvas.c"
 
 
 static PyObject *
@@ -6120,7 +6200,7 @@
     Py_XDECREF(py_bounds);
     pyg_gil_state_release(__py_state);
 }
-#line 6124 "goocanvas.c"
+#line 6204 "goocanvas.c"
 
 
 #line 633 "goocanvas.override"
@@ -6153,7 +6233,7 @@
     pyg_gil_state_release(__py_state);
 }
 
-#line 6157 "goocanvas.c"
+#line 6237 "goocanvas.c"
 
 
 static void
@@ -7978,7 +8058,8 @@
 
     return ret;
 }
-#line 7982 "goocanvas.c"
+
+#line 8063 "goocanvas.c"
 
 
 #line 1765 "goocanvas.override"
@@ -8038,7 +8119,7 @@
     return Py_None;
 }
 
-#line 8042 "goocanvas.c"
+#line 8123 "goocanvas.c"
 
 
 #line 1084 "goocanvas.override"
@@ -8123,7 +8204,7 @@
     return tuple;
 }
 
-#line 8127 "goocanvas.c"
+#line 8208 "goocanvas.c"
 
 
 #line 1003 "goocanvas.override"
@@ -8206,7 +8287,7 @@
     return Py_None;
 }
 
-#line 8210 "goocanvas.c"
+#line 8291 "goocanvas.c"
 
 
 static PyObject *
@@ -8308,26 +8389,37 @@
     return matrix;
 }
 
-#line 8312 "goocanvas.c"
+#line 8393 "goocanvas.c"
 
 
+#line 2003 "goocanvas.override"
 static PyObject *
-_wrap_goo_canvas_item_model_set_transform(PyGObject *self, PyObject *args, PyObject *kwargs)
+_wrap_goo_canvas_item_model_set_transform(PyGObject *self,
+                                          PyObject *args,
+                                          PyObject *kwargs)
 {
     static char *kwlist[] = { "matrix", NULL };
     PyObject *py_matrix;
-    cairo_matrix_t *matrix;
+    cairo_matrix_t *matrix = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:GooCanvasItemModel.set_transform", kwlist, &py_matrix))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O:GooCanvasItemModel.set_transform",
+                                     kwlist, &py_matrix))
         return NULL;
-    matrix = &((PycairoMatrix*)(py_matrix))->matrix;
     
-    goo_canvas_item_model_set_transform(GOO_CANVAS_ITEM_MODEL(self->obj), matrix);
+    if (py_matrix && (py_matrix != Py_None))
+        matrix = &((PycairoMatrix*)(py_matrix))->matrix;
+    
+    goo_canvas_item_model_set_transform(GOO_CANVAS_ITEM_MODEL(self->obj),
+                                        matrix);
     
     Py_INCREF(Py_None);
     return Py_None;
 }
 
+#line 8421 "goocanvas.c"
+
+
 #line 1637 "goocanvas.override"
 static PyObject *
 _wrap_goo_canvas_item_model_get_simple_transform(PyGObject *self)
@@ -8340,7 +8432,7 @@
     return Py_BuildValue("dddd", x, y, scale, rotation);
 }
 
-#line 8344 "goocanvas.c"
+#line 8436 "goocanvas.c"
 
 
 static PyObject *
@@ -8530,7 +8622,7 @@
     return pyg_param_spec_new(pspec);
 }
 
-#line 8534 "goocanvas.c"
+#line 8626 "goocanvas.c"
 
 
 #line 1291 "goocanvas.override"
@@ -8574,7 +8666,7 @@
     return list;
 }
 
-#line 8578 "goocanvas.c"
+#line 8670 "goocanvas.c"
 
 
 #line 1385 "goocanvas.override"
@@ -8628,7 +8720,7 @@
     return Py_None;
 }
 
-#line 8632 "goocanvas.c"
+#line 8724 "goocanvas.c"
 
 
 static PyObject *
@@ -10260,7 +10352,7 @@
     
     return pygobject_new((GObject *)ret);
 }
-#line 10264 "goocanvas.c"
+#line 10356 "goocanvas.c"
 
 
 #line 376 "goocanvas.override"
@@ -10331,7 +10423,7 @@
     return pygobject_new((GObject *)ret);
 }
 
-#line 10335 "goocanvas.c"
+#line 10427 "goocanvas.c"
 
 
 static PyObject *
@@ -10471,7 +10563,7 @@
 
 
 
-#line 10475 "goocanvas.c"
+#line 10567 "goocanvas.c"
     pyg_register_boxed(d, "Points", GOO_TYPE_CANVAS_POINTS, &PyGooCanvasPoints_Type);
     pyg_register_boxed(d, "LineDash", GOO_TYPE_CANVAS_LINE_DASH, &PyGooCanvasLineDash_Type);
     pyg_register_interface(d, "Item", GOO_TYPE_CANVAS_ITEM, &PyGooCanvasItem_Type);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]