@@ -419,24 +419,30 @@ const char *Py_affine_transform__doc__ = "affine_transform(points, trans)";
419419
420420static PyObject *Py_affine_transform (PyObject *self, PyObject *args, PyObject *kwds)
421421{
422- numpy::array_view< const double , 2 > vertices ;
422+ PyObject *vertices_obj ;
423423 agg::trans_affine trans;
424424
425425 if (!PyArg_ParseTuple (args,
426- " O&O&:affine_transform" ,
427- &vertices.converter ,
428- &vertices,
426+ " OO&:affine_transform" ,
427+ &vertices_obj,
429428 &convert_trans_affine,
430429 &trans)) {
431430 return NULL ;
432431 }
433432
434- npy_intp dims[] = { vertices.dim (0 ), 2 };
435- numpy::array_view<double , 2 > result (dims);
436-
437- CALL_CPP (" affine_transform" , (affine_transform (vertices, trans, result)));
438-
439- return result.pyobj ();
433+ try {
434+ numpy::array_view<double , 2 > vertices (vertices_obj);
435+ npy_intp dims[] = { vertices.dim (0 ), 2 };
436+ numpy::array_view<double , 2 > result (dims);
437+ CALL_CPP (" affine_transform" , (affine_transform_2d (vertices, trans, result)));
438+ return result.pyobj ();
439+ } catch (py::exception) {
440+ numpy::array_view<double , 1 > vertices (vertices_obj);
441+ npy_intp dims[] = { vertices.dim (0 ) };
442+ numpy::array_view<double , 1 > result (dims);
443+ CALL_CPP (" affine_transform" , (affine_transform_1d (vertices, trans, result)));
444+ return result.pyobj ();
445+ }
440446}
441447
442448const char *Py_count_bboxes_overlapping_bbox__doc__ = " count_bboxes_overlapping_bbox(bbox, bboxes)" ;
0 commit comments