X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0e4e601244a55186ea9aab4774f77c0a3216aff4..5f2502393e042e6e2c871ff94b7ccaf7a78b264d:/wxPython/src/_graphics.i diff --git a/wxPython/src/_graphics.i b/wxPython/src/_graphics.i index a0bb9caade..683495f692 100644 --- a/wxPython/src/_graphics.i +++ b/wxPython/src/_graphics.i @@ -20,6 +20,10 @@ #include %} +// Turn off the aquisition of the Global Interpreter Lock for the classes and +// functions in this file +%threadWrapperOff + //--------------------------------------------------------------------------- @@ -77,7 +81,7 @@ public: return NULL; } - wxGraphicsPath * CreatePath() {} + wxGraphicsPath * CreatePath() { return NULL; } void PushState() {} void PopState() {} void Clip( const wxRegion & ) {} @@ -140,6 +144,17 @@ public: //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- + +%typemap(in) (size_t points, wxPoint2D* points_array ) { + $2 = wxPoint2D_LIST_helper($input, &$1); + if ($2 == NULL) SWIG_fail; +} +%typemap(freearg) (size_t points, wxPoint2D* points_array ) { + if ($2) delete [] $2; +} + + + MustHaveApp(wxGraphicsPath); MustHaveApp(wxGraphicsContext); MustHaveApp(wxGCDC); @@ -210,7 +225,7 @@ point and an end point", ""); DocDeclStr( virtual void , AddCircle( wxDouble x, wxDouble y, wxDouble r ), - "Appends an ellipsis as a new closed subpath fitting the passed rectangle", ""); + "Appends a circle as a new closed subpath with the given radius.", ""); DocDeclStr( @@ -351,23 +366,32 @@ public: "", ""); - DocDeclStr( + DocDeclStrName( virtual void , DrawText( const wxString &str, wxDouble x, wxDouble y, wxDouble angle ), - "", ""); + "", "", + DrawRotatedText); - DocDeclStr( + DocDeclAStr( virtual void , GetTextExtent( const wxString &text, wxDouble *OUTPUT /*width*/, wxDouble *OUTPUT /*height*/, wxDouble *OUTPUT /*descent*/, wxDouble *OUTPUT /*externalLeading*/ ) const , + "GetTextExtend(self, text) --> (width, height, descent, externalLeading)", "", ""); - DocDeclStr( - virtual void , GetPartialTextExtents(const wxString& text, wxArrayDouble& widths) const, - "", ""); + %extend { + DocAStr(GetPartialTextExtents, + "GetPartialTextExtents(self, text) -> [widths]", + "", ""); + wxArrayDouble GetPartialTextExtents(const wxString& text) { + wxArrayDouble widths; + self->GetPartialTextExtents(text, widths); + return widths; + } + } // @@ -392,23 +416,38 @@ public: DocDeclStr( virtual void , StrokeLine( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2), "", ""); - + // stroke lines connecting each of the points - DocDeclStr( - virtual void , StrokeLines( size_t n, const wxPoint2D *points), + DocDeclAStr( + virtual void , StrokeLines( size_t points, const wxPoint2D *points_array), + "StrokeLines(self, List points)", "", ""); - // stroke disconnected lines from begin to end points - DocDeclStr( - virtual void , StrokeLines( size_t n, const wxPoint2D *beginPoints, const wxPoint2D *endPoints), - "", ""); - +// // stroke disconnected lines from begin to end points +// virtual void StrokeLines( size_t n, const wxPoint2D *beginPoints, const wxPoint2D *endPoints); + + %extend { + void StrokeLineSegements(PyObject* beginPoints, PyObject* endPoints) + { + size_t c1, c2, count; + wxPoint2D* beginP = wxPoint2D_LIST_helper(beginPoints, &c1); + wxPoint2D* endP = wxPoint2D_LIST_helper(endPoints, &c2); + + if ( beginP != NULL && endP != NULL ) + { + count = wxMin(c1, c2); + self->StrokeLines(count, beginP, endP); + } + delete [] beginP; + delete [] endP; + } + } // draws a polygon DocDeclStr( - virtual void , DrawLines( size_t n, const wxPoint2D *points, int fillStyle = wxWINDING_RULE ), + virtual void , DrawLines( size_t points, const wxPoint2D *points_array, int fillStyle = wxWINDING_RULE ), "", ""); @@ -429,7 +468,6 @@ public: virtual void , DrawRoundedRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h, wxDouble radius), "", ""); - }; @@ -449,6 +487,8 @@ public: }; +//--------------------------------------------------------------------------- +// Turn GIL acquisition back on. +%threadWrapperOn -//---------------------------------------------------------------------------