PyObject *convert_polygon_vector(std::vector<Polygon> &polygons) { PyObject *pyresult = PyList_New(polygons.size()); for (size_t i = 0; i < polygons.size(); ++i) { Polygon poly = polygons[i]; npy_intp dims[] = {(npy_intp)poly.size() + 1, 2 }; numpy::array_view<double, 2> subresult(dims); /* Make last point same as first. */ memcpy(subresult.data(), &poly[0], sizeof(double) * poly.size() * 2); subresult(poly.size(), 0) = poly[0].x; subresult(poly.size(), 1) = poly[0].y; if (PyList_SetItem(pyresult, i, subresult.pyobj())) { Py_DECREF(pyresult); return NULL; } } return pyresult; }
PyObject *convert_polygon_vector(std::vector<Polygon> &polygons) { PyObject *pyresult = PyList_New(polygons.size()); for (size_t i = 0; i < polygons.size(); ++i) { Polygon poly = polygons[i]; npy_intp dims[2]; dims[1] = 2; dims[0] = (npy_intp)poly.size(); numpy::array_view<double, 2> subresult(dims); memcpy(subresult.data(), &poly[0], sizeof(double) * poly.size() * 2); if (PyList_SetItem(pyresult, i, subresult.pyobj())) { Py_DECREF(pyresult); return NULL; } } return pyresult; }