1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: SWIG interface for common GDI stuff and misc classes
7 // Created: 13-Sept-2003
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
16 //---------------------------------------------------------------------------
22 wxBITMAP_TYPE_INVALID, // should be == 0 for compatibility!
27 wxBITMAP_TYPE_XBM_DATA,
29 wxBITMAP_TYPE_XPM_DATA,
40 wxBITMAP_TYPE_MACCURSOR,
42 // wxBITMAP_TYPE_BMP_RESOURCE,
43 // wxBITMAP_TYPE_RESOURCE = wxBITMAP_TYPE_BMP_RESOURCE,
44 // wxBITMAP_TYPE_ICO_RESOURCE,
45 // wxBITMAP_TYPE_CUR_RESOURCE,
46 // wxBITMAP_TYPE_TIF_RESOURCE,
47 // wxBITMAP_TYPE_GIF_RESOURCE,
48 // wxBITMAP_TYPE_PNG_RESOURCE,
49 // wxBITMAP_TYPE_JPEG_RESOURCE,
50 // wxBITMAP_TYPE_PNM_RESOURCE,
51 // wxBITMAP_TYPE_PCX_RESOURCE,
52 // wxBITMAP_TYPE_PICT_RESOURCE,
53 // wxBITMAP_TYPE_ICON_RESOURCE,
54 // wxBITMAP_TYPE_MACCURSOR_RESOURCE,
56 wxBITMAP_TYPE_ANY = 50
62 wxCURSOR_NONE, // should be 0
72 wxCURSOR_MIDDLE_BUTTON,
78 wxCURSOR_QUESTION_ARROW,
79 wxCURSOR_RIGHT_BUTTON,
89 wxCURSOR_DEFAULT, // standard X11 cursor
90 wxCURSOR_COPY_ARROW , // MacOS Theme Plus arrow
93 // // Not yet implemented for Windows
94 // wxCURSOR_CROSS_REVERSE,
95 // wxCURSOR_DOUBLE_ARROW,
96 // wxCURSOR_BASED_ARROW_UP,
97 // wxCURSOR_BASED_ARROW_DOWN,
107 #define wxCURSOR_COPY_ARROW wxCURSOR_ARROW
111 //---------------------------------------------------------------------------
115 "wx.Size is a useful data structure used to represent the size of
116 something. It simply contains integer width and height
117 properties. In most places in wxPython where a wx.Size is
118 expected a (width, height) tuple can be used instead.", "");
123 %Rename(width, int, x);
124 %Rename(height,int, y);
125 %pythoncode { x = width; y = height }
128 wxSize(int w=0, int h=0),
129 "Creates a size object.", "");
136 DocStr(__eq__, "Test for equality of wx.Size objects.", "");
137 bool __eq__(PyObject* other) {
138 wxSize temp, *obj = &temp;
139 if ( other == Py_None ) return false;
140 if ( ! wxSize_helper(other, &obj) ) {
144 return self->operator==(*obj);
149 DocStr(__ne__, "Test for inequality of wx.Size objects.", "");
150 bool __ne__(PyObject* other) {
151 wxSize temp, *obj = &temp;
152 if ( other == Py_None ) return true;
153 if ( ! wxSize_helper(other, &obj)) {
157 return self->operator!=(*obj);
162 wxSize, operator+(const wxSize& sz),
163 "Add sz's proprties to this and return the result.", "");
166 wxSize, operator-(const wxSize& sz),
167 "Subtract sz's properties from this and return the result.", "");
170 void, IncTo(const wxSize& sz),
171 "Increments this object so that both of its dimensions are not less
172 than the corresponding dimensions of the size.", "");
175 void, DecTo(const wxSize& sz),
176 "Decrements this object so that both of its dimensions are not greater
177 than the corresponding dimensions of the size.", "");
181 void , Scale(float xscale, float yscale),
182 "Scales the dimensions of this object by the given factors.", "");
185 void, Set(int w, int h),
186 "Set both width and height.", "");
188 void SetWidth(int w);
189 void SetHeight(int h);
190 int GetWidth() const;
191 int GetHeight() const;
195 bool , IsFullySpecified() const,
196 "Returns True if both components of the size are non-default values.", "");
200 void , SetDefaults(const wxSize& size),
201 "Combine this size with the other one replacing the default components
202 of this object (i.e. equal to -1) with those of the other.", "");
210 "Get() -> (width,height)",
211 "Returns the width and height properties as a tuple.", "");
213 wxPyBlock_t blocked = wxPyBeginBlockThreads();
214 PyObject* tup = PyTuple_New(2);
215 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
216 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
217 wxPyEndBlockThreads(blocked);
222 asTuple = wx._deprecated(Get, "asTuple is deprecated, use `Get` instead")
223 def __str__(self): return str(self.Get())
224 def __repr__(self): return 'wx.Size'+str(self.Get())
225 def __len__(self): return len(self.Get())
226 def __getitem__(self, index): return self.Get()[index]
227 def __setitem__(self, index, val):
228 if index == 0: self.width = val
229 elif index == 1: self.height = val
230 else: raise IndexError
231 def __nonzero__(self): return self.Get() != (0,0)
232 __safe_for_unpickling__ = True
233 def __reduce__(self): return (wx.Size, self.Get())
238 //---------------------------------------------------------------------------
242 "A data structure for representing a point or position with floating
243 point x and y properties. In wxPython most places that expect a
244 wx.RealPoint can also accept a (x,y) tuple.", "");
252 wxRealPoint(double x=0.0, double y=0.0),
253 "Create a wx.RealPoint object", "");
259 DocStr(__eq__, "Test for equality of wx.RealPoint objects.", "");
260 bool __eq__(PyObject* other) {
261 wxRealPoint temp, *obj = &temp;
262 if ( other == Py_None ) return false;
263 if ( ! wxRealPoint_helper(other, &obj) ) {
267 return self->operator==(*obj);
272 DocStr(__ne__, "Test for inequality of wx.RealPoint objects.", "");
273 bool __ne__(PyObject* other) {
274 wxRealPoint temp, *obj = &temp;
275 if ( other == Py_None ) return true;
276 if ( ! wxRealPoint_helper(other, &obj)) {
280 return self->operator!=(*obj);
286 wxRealPoint, operator+(const wxRealPoint& pt),
287 "Add pt's proprties to this and return the result.", "");
290 wxRealPoint, operator-(const wxRealPoint& pt),
291 "Subtract pt's proprties from this and return the result", "");
295 DocStr(Set, "Set both the x and y properties", "");
296 void Set(double x, double y) {
303 "Return the x and y properties as a tuple. ", "");
305 wxPyBlock_t blocked = wxPyBeginBlockThreads();
306 PyObject* tup = PyTuple_New(2);
307 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->x));
308 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->y));
309 wxPyEndBlockThreads(blocked);
315 asTuple = wx._deprecated(Get, "asTuple is deprecated, use `Get` instead")
316 def __str__(self): return str(self.Get())
317 def __repr__(self): return 'wx.RealPoint'+str(self.Get())
318 def __len__(self): return len(self.Get())
319 def __getitem__(self, index): return self.Get()[index]
320 def __setitem__(self, index, val):
321 if index == 0: self.x = val
322 elif index == 1: self.y = val
323 else: raise IndexError
324 def __nonzero__(self): return self.Get() != (0.0, 0.0)
325 __safe_for_unpickling__ = True
326 def __reduce__(self): return (wx.RealPoint, self.Get())
331 //---------------------------------------------------------------------------
336 "A data structure for representing a point or position with integer x
337 and y properties. Most places in wxPython that expect a wx.Point can
338 also accept a (x,y) tuple.", "");
346 wxPoint(int x=0, int y=0),
347 "Create a wx.Point object", "");
354 DocStr(__eq__, "Test for equality of wx.Point objects.", "");
355 bool __eq__(PyObject* other) {
356 wxPoint temp, *obj = &temp;
357 if ( other == Py_None ) return false;
358 if ( ! wxPoint_helper(other, &obj) ) {
362 return self->operator==(*obj);
367 DocStr(__ne__, "Test for inequality of wx.Point objects.", "");
368 bool __ne__(PyObject* other) {
369 wxPoint temp, *obj = &temp;
370 if ( other == Py_None ) return true;
371 if ( ! wxPoint_helper(other, &obj)) {
375 return self->operator!=(*obj);
380 // %nokwargs operator+;
381 // %nokwargs operator-;
382 // %nokwargs operator+=;
383 // %nokwargs operator-=;
386 wxPoint, operator+(const wxPoint& pt),
387 "Add pt's proprties to this and return the result.", "");
391 wxPoint, operator-(const wxPoint& pt),
392 "Subtract pt's proprties from this and return the result", "");
396 wxPoint&, operator+=(const wxPoint& pt),
397 "Add pt to this object.", "");
400 wxPoint&, operator-=(const wxPoint& pt),
401 "Subtract pt from this object.", "");
406 // wxPoint, operator+(const wxSize& sz),
407 // "Add sz to this Point and return the result.", "");
410 // wxPoint, operator-(const wxSize& sz),
411 // "Subtract sz from this Point and return the result", "");
415 // wxPoint&, operator+=(const wxSize& sz),
416 // "Add sz to this object.", "");
419 // wxPoint&, operator-=(const wxSize& sz),
420 // "Subtract sz from this object.", "");
426 DocStr(Set, "Set both the x and y properties", "");
427 void Set(long x, long y) {
434 "Return the x and y properties as a tuple. ", "");
436 wxPyBlock_t blocked = wxPyBeginBlockThreads();
437 PyObject* tup = PyTuple_New(2);
438 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
439 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
440 wxPyEndBlockThreads(blocked);
446 asTuple = wx._deprecated(Get, "asTuple is deprecated, use `Get` instead")
447 def __str__(self): return str(self.Get())
448 def __repr__(self): return 'wx.Point'+str(self.Get())
449 def __len__(self): return len(self.Get())
450 def __getitem__(self, index): return self.Get()[index]
451 def __setitem__(self, index, val):
452 if index == 0: self.x = val
453 elif index == 1: self.y = val
454 else: raise IndexError
455 def __nonzero__(self): return self.Get() != (0,0)
456 __safe_for_unpickling__ = True
457 def __reduce__(self): return (wx.Point, self.Get())
461 //---------------------------------------------------------------------------
466 "A class for representing and manipulating rectangles. It has x, y,
467 width and height properties. In wxPython most palces that expect a
468 wx.Rect can also accept a (x,y,width,height) tuple.", "");
474 wxRect(int x=0, int y=0, int width=0, int height=0),
475 "Create a new Rect object.", "");
478 wxRect(const wxPoint& topLeft, const wxPoint& bottomRight),
479 "Create a new Rect object from Points representing two corners.", "",
483 wxRect(const wxPoint& pos, const wxSize& size),
484 "Create a new Rect from a position and size.", "",
488 wxRect(const wxSize& size),
489 "Create a new Rect from a size only.", "",
500 int GetWidth() const;
501 void SetWidth(int w);
503 int GetHeight() const;
504 void SetHeight(int h);
506 wxPoint GetPosition() const;
507 void SetPosition( const wxPoint &p );
509 wxSize GetSize() const;
510 void SetSize( const wxSize &s );
512 bool IsEmpty() const;
514 wxPoint GetTopLeft() const;
515 void SetTopLeft(const wxPoint &p);
516 wxPoint GetBottomRight() const;
517 void SetBottomRight(const wxPoint &p);
519 wxPoint GetTopRight() const;
520 void SetTopRight(const wxPoint &p);
521 wxPoint GetBottomLeft() const;
522 void SetBottomLeft(const wxPoint &p);
524 // wxPoint GetLeftTop() const;
525 // void SetLeftTop(const wxPoint &p);
526 // wxPoint GetRightBottom() const;
527 // void SetRightBottom(const wxPoint &p);
528 // wxPoint GetRightTop() const;
529 // void SetRightTop(const wxPoint &p);
530 // wxPoint GetLeftBottom() const;
531 // void SetLeftBottom(const wxPoint &p);
535 int GetBottom() const;
536 int GetRight() const;
538 void SetLeft(int left);
539 void SetRight(int right);
540 void SetTop(int top);
541 void SetBottom(int bottom);
544 position = property(GetPosition, SetPosition)
545 size = property(GetSize, SetSize)
546 left = property(GetLeft, SetLeft)
547 right = property(GetRight, SetRight)
548 top = property(GetTop, SetTop)
549 bottom = property(GetBottom, SetBottom)
553 wxRect&, Inflate(wxCoord dx, wxCoord dy),
554 "Increases the size of the rectangle.
556 The left border is moved farther left and the right border is moved
557 farther right by ``dx``. The upper border is moved farther up and the
558 bottom border is moved farther down by ``dy``. (Note the the width and
559 height of the rectangle thus change by ``2*dx`` and ``2*dy``,
560 respectively.) If one or both of ``dx`` and ``dy`` are negative, the
561 opposite happens: the rectangle size decreases in the respective
564 The change is made to the rectangle inplace, if instead you need a
565 copy that is inflated, preserving the original then make the copy
568 copy = wx.Rect(*original)
572 Inflating and deflating behaves *naturally*. Defined more precisely,
575 * Real inflates (that is, ``dx`` and/or ``dy`` >= 0) are not
576 constrained. Thus inflating a rectangle can cause its upper left
577 corner to move into the negative numbers. (The versions prior to
578 2.5.4 forced the top left coordinate to not fall below (0, 0),
579 which implied a forced move of the rectangle.)
581 * Deflates are clamped to not reduce the width or height of the
582 rectangle below zero. In such cases, the top-left corner is
583 nonetheless handled properly. For example, a rectangle at (10,
584 10) with size (20, 40) that is inflated by (-15, -15) will
585 become located at (20, 25) at size (0, 10). Finally, observe
586 that the width and height are treated independently. In the
587 above example, the width is reduced by 20, whereas the height is
588 reduced by the full 30 (rather than also stopping at 20, when
589 the width reached zero).
595 wxRect&, Deflate(wxCoord dx, wxCoord dy),
596 "Decrease the rectangle size. This method is the opposite of `Inflate`
597 in that Deflate(a,b) is equivalent to Inflate(-a,-b). Please refer to
598 `Inflate` for a full description.", "");
601 void, Offset(wxCoord dx, wxCoord dy),
602 "Moves the rectangle by the specified offset. If dx is positive, the
603 rectangle is moved to the right, if dy is positive, it is moved to the
604 bottom, otherwise it is moved to the left or top respectively.", "",
608 void, Offset(const wxPoint& pt),
609 "Same as `OffsetXY` but uses dx,dy from Point", "");
612 wxRect, Intersect(const wxRect& rect),
613 "Returns the intersectsion of this rectangle and rect.", "");
616 wxRect , Union(const wxRect& rect),
617 "Returns the union of this rectangle and rect.", "");
621 wxRect, operator+(const wxRect& rect) const,
622 "Add the properties of rect to this rectangle and return the result.", "");
625 wxRect&, operator+=(const wxRect& rect),
626 "Add the properties of rect to this rectangle, updating this rectangle.", "");
630 DocStr(__eq__, "Test for equality of wx.Rect objects.", "");
631 bool __eq__(PyObject* other) {
632 wxRect temp, *obj = &temp;
633 if ( other == Py_None ) return false;
634 if ( ! wxRect_helper(other, &obj) ) {
638 return self->operator==(*obj);
643 DocStr(__ne__, "Test for inequality of wx.Rect objects.", "");
644 bool __ne__(PyObject* other) {
645 wxRect temp, *obj = &temp;
646 if ( other == Py_None ) return true;
647 if ( ! wxRect_helper(other, &obj)) {
651 return self->operator!=(*obj);
656 DocStr( Contains, "Return True if the point is inside the rect.", "");
657 %Rename(ContainsXY, bool, Contains(int x, int y) const);
658 bool Contains(const wxPoint& pt) const;
661 bool, Contains(const wxRect& rect) const,
662 "Returns ``True`` if the given rectangle is completely inside this
663 rectangle or touches its boundary.", "",
666 Inside = wx._deprecated(Contains, "Use `Contains` instead.")
667 InsideXY = wx._deprecated(ContainsXY, "Use `ContainsXY` instead.")
668 InsideRect = wx._deprecated(ContainsRect, "Use `ContainsRect` instead.")
672 bool, Intersects(const wxRect& rect) const,
673 "Returns True if the rectangles have a non empty intersection.", "");
676 wxRect, CenterIn(const wxRect& r, int dir = wxBOTH),
677 "Center this rectangle within the one passed to the method, which is
678 usually, but not necessarily, the larger one.", "");
679 %pythoncode { CentreIn = CenterIn }
682 int x, y, width, height;
686 DocStr(Set, "Set all rectangle properties.", "");
687 void Set(int x=0, int y=0, int width=0, int height=0) {
691 self->height = height;
695 "Get() -> (x,y,width,height)",
696 "Return the rectangle properties as a tuple.", "");
698 wxPyBlock_t blocked = wxPyBeginBlockThreads();
699 PyObject* tup = PyTuple_New(4);
700 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
701 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
702 PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(self->width));
703 PyTuple_SET_ITEM(tup, 3, PyInt_FromLong(self->height));
704 wxPyEndBlockThreads(blocked);
710 asTuple = wx._deprecated(Get, "asTuple is deprecated, use `Get` instead")
711 def __str__(self): return str(self.Get())
712 def __repr__(self): return 'wx.Rect'+str(self.Get())
713 def __len__(self): return len(self.Get())
714 def __getitem__(self, index): return self.Get()[index]
715 def __setitem__(self, index, val):
716 if index == 0: self.x = val
717 elif index == 1: self.y = val
718 elif index == 2: self.width = val
719 elif index == 3: self.height = val
720 else: raise IndexError
721 def __nonzero__(self): return self.Get() != (0,0,0,0)
722 __safe_for_unpickling__ = True
723 def __reduce__(self): return (wx.Rect, self.Get())
727 %property(Bottom, GetBottom, SetBottom, doc="See `GetBottom` and `SetBottom`");
728 %property(BottomRight, GetBottomRight, SetBottomRight, doc="See `GetBottomRight` and `SetBottomRight`");
729 %property(BottomLeft, GetBottomLeft, SetBottomLeft, doc="See `GetBottomLeft` and `SetBottomLeft`");
730 %property(Height, GetHeight, SetHeight, doc="See `GetHeight` and `SetHeight`");
731 %property(Left, GetLeft, SetLeft, doc="See `GetLeft` and `SetLeft`");
732 %property(Position, GetPosition, SetPosition, doc="See `GetPosition` and `SetPosition`");
733 %property(Right, GetRight, SetRight, doc="See `GetRight` and `SetRight`");
734 %property(Size, GetSize, SetSize, doc="See `GetSize` and `SetSize`");
735 %property(Top, GetTop, SetTop, doc="See `GetTop` and `SetTop`");
736 %property(TopLeft, GetTopLeft, SetTopLeft, doc="See `GetTopLeft` and `SetTopLeft`");
737 %property(TopRight, GetTopRight, SetTopRight, doc="See `GetTopRight` and `SetTopRight`");
738 %property(Width, GetWidth, SetWidth, doc="See `GetWidth` and `SetWidth`");
739 %property(X, GetX, SetX, doc="See `GetX` and `SetX`");
740 %property(Y, GetY, SetY, doc="See `GetY` and `SetY`");
742 %property(Empty, IsEmpty, doc="See `IsEmpty`");
746 MustHaveApp(wxIntersectRect);
748 DocAStr(wxIntersectRect,
749 "IntersectRect(Rect r1, Rect r2) -> Rect",
750 "Calculate and return the intersection of r1 and r2.", "");
752 PyObject* wxIntersectRect(wxRect* r1, wxRect* r2) {
755 wxRect dest(0,0,0,0);
758 reg1.Intersect(reg2);
759 dest = reg1.GetBox();
761 if (dest != wxRect(0,0,0,0)) {
762 wxPyBlock_t blocked = wxPyBeginBlockThreads();
763 wxRect* newRect = new wxRect(dest);
764 obj = wxPyConstructObject((void*)newRect, wxT("wxRect"), true);
765 wxPyEndBlockThreads(blocked);
773 //---------------------------------------------------------------------------
778 "wx.Point2Ds represent a point or a vector in a 2d coordinate system
779 with floating point values.", "");
784 DocStr(wxPoint2D, "Create a w.Point2D object.", "");
785 wxPoint2D( double x=0.0 , double y=0.0 );
786 %RenameCtor(Point2DCopy, wxPoint2D( const wxPoint2D &pt ));
787 %RenameCtor(Point2DFromPoint, wxPoint2D( const wxPoint &pt ));
790 void, GetFloor( int *OUTPUT , int *OUTPUT ) const,
791 "GetFloor() -> (x,y)",
792 "Convert to integer", "");
795 void, GetRounded( int *OUTPUT , int *OUTPUT ) const,
796 "GetRounded() -> (x,y)",
797 "Convert to integer", "");
799 double GetVectorLength() const;
800 double GetVectorAngle() const ;
801 void SetVectorLength( double length );
802 void SetVectorAngle( double degrees );
804 // LinkError: void SetPolarCoordinates( double angle , double length );
805 // LinkError: void Normalize();
807 def SetPolarCoordinates(self, angle, length):
808 self.SetVectorLength(length)
809 self.SetVectorAngle(angle)
811 self.SetVectorLength(1.0)
814 double GetDistance( const wxPoint2D &pt ) const;
815 double GetDistanceSquare( const wxPoint2D &pt ) const;
816 double GetDotProduct( const wxPoint2D &vec ) const;
817 double GetCrossProduct( const wxPoint2D &vec ) const;
820 wxPoint2D, operator-(),
821 "the reflection of this point", "");
823 wxPoint2D& operator+=(const wxPoint2D& pt);
824 wxPoint2D& operator-=(const wxPoint2D& pt);
826 wxPoint2D& operator*=(const wxPoint2D& pt);
827 wxPoint2D& operator/=(const wxPoint2D& pt);
831 DocStr(__eq__, "Test for equality of wx.Point2D objects.", "");
832 bool __eq__(PyObject* other) {
833 wxPoint2D temp, *obj = &temp;
834 if ( other == Py_None ) return false;
835 if ( ! wxPoint2D_helper(other, &obj) ) {
839 return self->operator==(*obj);
844 DocStr(__ne__, "Test for inequality of wx.Point2D objects.", "");
845 bool __ne__(PyObject* other) {
846 wxPoint2D temp, *obj = &temp;
847 if ( other == Py_None ) return true;
848 if ( ! wxPoint2D_helper(other, &obj)) {
852 return self->operator!=(*obj);
856 %Rename(x, double, m_x);
857 %Rename(y, double, m_y);
860 void Set( double x=0 , double y=0 ) {
867 "Return x and y properties as a tuple.", "");
869 wxPyBlock_t blocked = wxPyBeginBlockThreads();
870 PyObject* tup = PyTuple_New(2);
871 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x));
872 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y));
873 wxPyEndBlockThreads(blocked);
879 asTuple = wx._deprecated(Get, "asTuple is deprecated, use `Get` instead")
880 def __str__(self): return str(self.Get())
881 def __repr__(self): return 'wx.Point2D'+str(self.Get())
882 def __len__(self): return len(self.Get())
883 def __getitem__(self, index): return self.Get()[index]
884 def __setitem__(self, index, val):
885 if index == 0: self.x = val
886 elif index == 1: self.y = val
887 else: raise IndexError
888 def __nonzero__(self): return self.Get() != (0.0, 0.0)
889 __safe_for_unpickling__ = True
890 def __reduce__(self): return (wx.Point2D, self.Get())
893 %property(Floor, GetFloor, doc="See `GetFloor`");
894 %property(Rounded, GetRounded, doc="See `GetRounded`");
895 %property(VectorAngle, GetVectorAngle, SetVectorAngle, doc="See `GetVectorAngle` and `SetVectorAngle`");
896 %property(VectorLength, GetVectorLength, SetVectorLength, doc="See `GetVectorLength` and `SetVectorLength`");
901 //---------------------------------------------------------------------------
904 const wxPoint wxDefaultPosition;
905 const wxSize wxDefaultSize;
908 //---------------------------------------------------------------------------