mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-07 04:20:07 +01:00
dc.DrawLinesFromBuffer - add element size check, rename
This commit is contained in:
@@ -310,9 +310,9 @@ def run():
|
||||
'(PyObject* textList, PyObject* pyPoints, PyObject* foregroundList, PyObject* backgroundList)',
|
||||
body="return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList);")
|
||||
|
||||
c.addCppMethod('PyObject*', '_DrawLinesBuffer',
|
||||
c.addCppMethod('PyObject*', '_DrawLinesFromBuffer',
|
||||
'(PyObject* pyBuff)',
|
||||
body="return wxPyDrawLinesBuffer(*self, pyBuff);")
|
||||
body="return wxPyDrawLinesFromBuffer(*self, pyBuff);")
|
||||
|
||||
c.addPyMethod('DrawPointList', '(self, points, pens=None)',
|
||||
doc="""\
|
||||
@@ -478,7 +478,7 @@ def run():
|
||||
""")
|
||||
|
||||
|
||||
c.addPyMethod('DrawLinesBuffer', '(self, pyBuff)',
|
||||
c.addPyMethod('DrawLinesFromBuffer', '(self, pyBuff)',
|
||||
doc="""\
|
||||
Implementation of DrawLines that can use numpy arrays, or anything else that uses the
|
||||
python buffer protocol, directly.
|
||||
@@ -486,7 +486,7 @@ def run():
|
||||
:param pyBuff: A python buffer containing integer pairs
|
||||
""",
|
||||
body="""\
|
||||
return self._DrawLinesBuffer(pyBuff)
|
||||
return self._DrawLinesFromBuffer(pyBuff)
|
||||
""")
|
||||
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@ error0:
|
||||
}
|
||||
|
||||
|
||||
PyObject* wxPyDrawLinesBuffer(wxDC& dc, PyObject* pyBuff)
|
||||
PyObject* wxPyDrawLinesFromBuffer(wxDC& dc, PyObject* pyBuff)
|
||||
{
|
||||
wxPyBlock_t blocked = wxPyBeginBlockThreads();
|
||||
Py_buffer view;
|
||||
@@ -482,6 +482,10 @@ PyObject* wxPyDrawLinesBuffer(wxDC& dc, PyObject* pyBuff)
|
||||
goto err1;
|
||||
}
|
||||
|
||||
if (view.itemsize * 2 != sizeof(wxPoint)) {
|
||||
goto err2;
|
||||
}
|
||||
|
||||
dc.DrawLines(view.len / view.itemsize / 2, (wxPoint *)view.buf);
|
||||
|
||||
PyBuffer_Release(&view);
|
||||
@@ -496,11 +500,15 @@ PyObject* wxPyDrawLinesBuffer(wxDC& dc, PyObject* pyBuff)
|
||||
retval = NULL;
|
||||
goto exit;
|
||||
|
||||
err1:
|
||||
err1:
|
||||
// PyObject_GetBuffer raises exception already
|
||||
retval = NULL;
|
||||
goto exit;
|
||||
|
||||
|
||||
err2:
|
||||
PyErr_SetString(PyExc_TypeError, "Item size does not match wxPoint size");
|
||||
retval = NULL;
|
||||
goto exit;
|
||||
|
||||
exit:
|
||||
wxPyEndBlockThreads(blocked);
|
||||
|
||||
Reference in New Issue
Block a user