static int PyTriContourGenerator_init(PyTriContourGenerator* self, PyObject* args, PyObject* kwds) { PyObject* triangulation_arg; TriContourGenerator::CoordinateArray z; if (!PyArg_ParseTuple(args, "O!O&", &PyTriangulationType, &triangulation_arg, &z.converter, &z)) { return -1; } PyTriangulation* py_triangulation = (PyTriangulation*)triangulation_arg; Py_INCREF(py_triangulation); self->py_triangulation = py_triangulation; Triangulation& triangulation = *(py_triangulation->ptr); if (z.empty() || z.dim(0) != triangulation.get_npoints()) { PyErr_SetString(PyExc_ValueError, "z must be a 1D array with the same length as the x and y arrays"); } CALL_CPP_INIT("TriContourGenerator", (self->ptr = new TriContourGenerator(triangulation, z))); return 0; }
static int PyQuadContourGenerator_init(PyQuadContourGenerator* self, PyObject* args, PyObject* kwds) { QuadContourGenerator::CoordinateArray x, y, z; QuadContourGenerator::MaskArray mask; bool corner_mask; long chunk_size; if (!PyArg_ParseTuple(args, "O&O&O&O&il", &x.converter_contiguous, &x, &y.converter_contiguous, &y, &z.converter_contiguous, &z, &mask.converter_contiguous, &mask, &corner_mask, &chunk_size)) { return -1; } if (x.empty() || y.empty() || z.empty() || y.dim(0) != x.dim(0) || z.dim(0) != x.dim(0) || y.dim(1) != x.dim(1) || z.dim(1) != x.dim(1)) { PyErr_SetString(PyExc_ValueError, "x, y and z must all be 2D arrays with the same dimensions"); } // Mask array is optional, if set must be same size as other arrays. if (!mask.empty() && (mask.dim(0) != x.dim(0) || mask.dim(1) != x.dim(1))) { PyErr_SetString(PyExc_ValueError, "If mask is set it must be a 2D array with the same dimensions as x."); } CALL_CPP_INIT("QuadContourGenerator", (self->ptr = new QuadContourGenerator( x, y, z, mask, corner_mask, chunk_size))); return 0; }
static int PyTriangulation_init(PyTriangulation* self, PyObject* args, PyObject* kwds) { Triangulation::CoordinateArray x, y; Triangulation::TriangleArray triangles; Triangulation::MaskArray mask; Triangulation::EdgeArray edges; Triangulation::NeighborArray neighbors; int correct_triangle_orientations; if (!PyArg_ParseTuple(args, "O&O&O&O&O&O&i", &x.converter, &x, &y.converter, &y, &triangles.converter, &triangles, &mask.converter, &mask, &edges.converter, &edges, &neighbors.converter, &neighbors, &correct_triangle_orientations)) { return -1; } // x and y. if (x.empty() || y.empty() || x.dim(0) != y.dim(0)) { PyErr_SetString(PyExc_ValueError, "x and y must be 1D arrays of the same length"); } // triangles. if (triangles.empty() || triangles.dim(1) != 3) { PyErr_SetString(PyExc_ValueError, "triangles must be a 2D array of shape (?,3)"); } // Optional mask. if (!mask.empty() && mask.dim(0) != triangles.dim(0)) { PyErr_SetString(PyExc_ValueError, "mask must be a 1D array with the same length as the triangles array"); } // Optional edges. if (!edges.empty() && edges.dim(1) != 2) { PyErr_SetString(PyExc_ValueError, "edges must be a 2D array with shape (?,2)"); } // Optional neighbors. if (!neighbors.empty() && (neighbors.dim(0) != triangles.dim(0) || neighbors.dim(1) != triangles.dim(1))) { PyErr_SetString(PyExc_ValueError, "neighbors must be a 2D array with the same shape as the triangles array"); } CALL_CPP_INIT("Triangulation", (self->ptr = new Triangulation(x, y, triangles, mask, edges, neighbors, correct_triangle_orientations))); return 0; }
static int PyImage_init(PyImage *self, PyObject *args, PyObject *kwds) { if (!PyArg_ParseTuple(args, "")) { return -1; } CALL_CPP_INIT("Image", (self->x = new Image())); return 0; }
static int PyTrapezoidMapTriFinder_init(PyTrapezoidMapTriFinder* self, PyObject* args, PyObject* kwds) { PyObject* triangulation_arg; if (!PyArg_ParseTuple(args, "O!", &PyTriangulationType, &triangulation_arg)) { return -1; } PyTriangulation* py_triangulation = (PyTriangulation*)triangulation_arg; Py_INCREF(py_triangulation); self->py_triangulation = py_triangulation; Triangulation& triangulation = *(py_triangulation->ptr); CALL_CPP_INIT("TrapezoidMapTriFinder", (self->ptr = new TrapezoidMapTriFinder(triangulation))); return 0; }