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 something.
116 It simply contians integer width and height proprtites. In most places in
117 wxPython where a wx.Size is expected a (width,height) tuple can be used
125 %pythoncode { x = width; y = height }
128 wxSize(int w=0, int h=0),
129 "Creates a size object.");
134 bool, operator==(const wxSize& sz),
135 "Test for equality of wx.Size objects.");
138 bool, operator!=(const wxSize& sz),
139 "Test for inequality.");
142 wxSize, operator+(const wxSize& sz),
143 "Add sz's proprties to this and return the result.");
146 wxSize, operator-(const wxSize& sz),
147 "Subtract sz's properties from this and return the result.");
150 void, IncTo(const wxSize& sz),
151 "Increments this object so that both of its dimensions are not less\n"
152 "than the corresponding dimensions of the size.");
155 void, DecTo(const wxSize& sz),
156 "Decrements this object so that both of its dimensions are not greater\n"
157 "than the corresponding dimensions of the size.");
160 void, Set(int w, int h),
161 "Set both width and height.");
163 void SetWidth(int w);
164 void SetHeight(int h);
165 int GetWidth() const;
166 int GetHeight() const;
173 "Get() -> (width,height)",
174 "Returns the width and height properties as a tuple.");
176 wxPyBeginBlockThreads();
177 PyObject* tup = PyTuple_New(2);
178 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
179 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
180 wxPyEndBlockThreads();
186 def __str__(self): return str(self.Get())
187 def __repr__(self): return 'wx.Size'+str(self.Get())
188 def __len__(self): return len(self.Get())
189 def __getitem__(self, index): return self.Get()[index]
190 def __setitem__(self, index, val):
191 if index == 0: self.width = val
192 elif index == 1: self.height = val
193 else: raise IndexError
194 def __nonzero__(self): return self.Get() != (0,0)
195 __safe_for_unpickling__ = True
196 def __reduce__(self): return (wx.Size, self.Get())
201 //---------------------------------------------------------------------------
205 "A data structure for representing a point or position with floating point x
206 and y properties. In wxPython most places that expect a wx.RealPoint can also
207 accept a (x,y) tuple.");
215 wxRealPoint(double x=0.0, double y=0.0),
216 "Create a wx.RealPoint object");
221 bool, operator==(const wxRealPoint& pt),
222 "Test for equality of wx.RealPoint objects.");
225 bool, operator!=(const wxRealPoint& pt),
226 "Test for inequality of wx.RealPoint objects.");
230 wxRealPoint, operator+(const wxRealPoint& pt),
231 "Add pt's proprties to this and return the result.");
234 wxRealPoint, operator-(const wxRealPoint& pt),
235 "Subtract pt's proprties from this and return the result");
239 DocStr(Set, "Set both the x and y properties");
240 void Set(double x, double y) {
247 "Return the x and y properties as a tuple. ");
249 wxPyBeginBlockThreads();
250 PyObject* tup = PyTuple_New(2);
251 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->x));
252 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->y));
253 wxPyEndBlockThreads();
260 def __str__(self): return str(self.Get())
261 def __repr__(self): return 'wx.RealPoint'+str(self.Get())
262 def __len__(self): return len(self.Get())
263 def __getitem__(self, index): return self.Get()[index]
264 def __setitem__(self, index, val):
265 if index == 0: self.x = val
266 elif index == 1: self.y = val
267 else: raise IndexError
268 def __nonzero__(self): return self.Get() != (0.0, 0.0)
269 __safe_for_unpickling__ = True
270 def __reduce__(self): return (wx.RealPoint, self.Get())
275 //---------------------------------------------------------------------------
280 "A data structure for representing a point or position with integer x and y
281 properties. Most places in wxPython that expect a wx.Point can also accept a
290 wxPoint(int x=0, int y=0),
291 "Create a wx.Point object");
297 bool, operator==(const wxPoint& pt),
298 "Test for equality of wx.Point objects.");
301 bool, operator!=(const wxPoint& pt),
302 "Test for inequality of wx.Point objects.");
306 wxPoint, operator+(const wxPoint& pt),
307 "Add pt's proprties to this and return the result.");
310 wxPoint, operator-(const wxPoint& pt),
311 "Subtract pt's proprties from this and return the result");
315 wxPoint&, operator+=(const wxPoint& pt),
316 "Add pt to this object.");
319 wxPoint&, operator-=(const wxPoint& pt),
320 "Subtract pt from this object.");
324 DocStr(Set, "Set both the x and y properties");
325 void Set(long x, long y) {
332 "Return the x and y properties as a tuple. ");
334 wxPyBeginBlockThreads();
335 PyObject* tup = PyTuple_New(2);
336 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
337 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
338 wxPyEndBlockThreads();
345 def __str__(self): return str(self.Get())
346 def __repr__(self): return 'wx.Point'+str(self.Get())
347 def __len__(self): return len(self.Get())
348 def __getitem__(self, index): return self.Get()[index]
349 def __setitem__(self, index, val):
350 if index == 0: self.x = val
351 elif index == 1: self.y = val
352 else: raise IndexError
353 def __nonzero__(self): return self.Get() != (0,0)
354 __safe_for_unpickling__ = True
355 def __reduce__(self): return (wx.Point, self.Get())
359 //---------------------------------------------------------------------------
364 "A class for representing and manipulating rectangles. It has x, y, width and
365 height properties. In wxPython most palces that expect a wx.Rect can also
366 accept a (x,y,width,height) tuple.");
372 wxRect(int x=0, int y=0, int width=0, int height=0),
373 "Create a new Rect object.");
376 wxRect(const wxPoint& topLeft, const wxPoint& bottomRight),
377 "Create a new Rect object from Points representing two corners.",
381 wxRect(const wxPoint& pos, const wxSize& size),
382 "Create a new Rect from a position and size.",
393 int GetWidth() const;
394 void SetWidth(int w);
396 int GetHeight() const;
397 void SetHeight(int h);
399 wxPoint GetPosition() const;
400 void SetPosition( const wxPoint &p );
402 wxSize GetSize() const;
403 void SetSize( const wxSize &s );
405 wxPoint GetTopLeft() const;
406 void SetTopLeft(const wxPoint &p);
407 wxPoint GetBottomRight() const;
408 void SetBottomRight(const wxPoint &p);
410 // wxPoint GetLeftTop() const;
411 // void SetLeftTop(const wxPoint &p);
412 // wxPoint GetRightBottom() const;
413 // void SetRightBottom(const wxPoint &p);
417 int GetBottom() const;
418 int GetRight() const;
420 void SetLeft(int left);
421 void SetRight(int right);
422 void SetTop(int top);
423 void SetBottom(int bottom);
426 position = property(GetPosition, SetPosition)
427 size = property(GetSize, SetSize)
428 left = property(GetLeft, SetLeft)
429 right = property(GetRight, SetRight)
430 top = property(GetTop, SetTop)
431 bottom = property(GetBottom, SetBottom)
435 wxRect&, Inflate(wxCoord dx, wxCoord dy),
436 "Increase the rectangle size by dx in x direction and dy in y direction. Both\n"
437 "(or one of) parameters may be negative to decrease the rectangle size.");
440 wxRect&, Deflate(wxCoord dx, wxCoord dy),
441 "Decrease the rectangle size by dx in x direction and dy in y direction. Both\n"
442 "(or one of) parameters may be negative to increase the rectngle size. This\n"
443 "method is the opposite of Inflate.");
446 void, Offset(wxCoord dx, wxCoord dy),
447 "Moves the rectangle by the specified offset. If dx is positive, the rectangle\n"
448 "is moved to the right, if dy is positive, it is moved to the bottom, otherwise\n"
449 "it is moved to the left or top respectively.",
453 void, Offset(const wxPoint& pt),
454 "Same as OffsetXY but uses dx,dy from Point");
457 wxRect&, Intersect(const wxRect& rect),
458 "Return the intersectsion of this rectangle and rect.");
461 wxRect, operator+(const wxRect& rect) const,
462 "Add the properties of rect to this rectangle and return the result.");
465 wxRect&, operator+=(const wxRect& rect),
466 "Add the properties of rect to this rectangle, updating this rectangle.");
469 bool, operator==(const wxRect& rect) const,
470 "Test for equality.");
473 bool, operator!=(const wxRect& rect) const,
474 "Test for inequality.");
477 DocStr( Inside, "Return True if the point is (not strcitly) inside the rect.");
478 %name(InsideXY)bool Inside(int x, int y) const;
479 bool Inside(const wxPoint& pt) const;
482 bool, Intersects(const wxRect& rect) const,
483 "Returns True if the rectangles have a non empty intersection.");
486 int x, y, width, height;
490 DocStr(Set, "Set all rectangle properties.");
491 void Set(int x=0, int y=0, int width=0, int height=0) {
495 self->height = height;
499 "Get() -> (x,y,width,height)",
500 "Return the rectangle properties as a tuple.");
502 wxPyBeginBlockThreads();
503 PyObject* tup = PyTuple_New(4);
504 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
505 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
506 PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(self->width));
507 PyTuple_SET_ITEM(tup, 3, PyInt_FromLong(self->height));
508 wxPyEndBlockThreads();
515 def __str__(self): return str(self.Get())
516 def __repr__(self): return 'wx.Rect'+str(self.Get())
517 def __len__(self): return len(self.Get())
518 def __getitem__(self, index): return self.Get()[index]
519 def __setitem__(self, index, val):
520 if index == 0: self.x = val
521 elif index == 1: self.y = val
522 elif index == 2: self.width = val
523 elif index == 3: self.height = val
524 else: raise IndexError
525 def __nonzero__(self): return self.Get() != (0,0,0,0)
526 __safe_for_unpickling__ = True
527 def __reduce__(self): return (wx.Rect, self.Get())
532 DocAStr(wxIntersectRect,
533 "IntersectRect(Rect r1, Rect r2) -> Rect",
534 "Calculate and return the intersection of r1 and r2.");
536 PyObject* wxIntersectRect(wxRect* r1, wxRect* r2) {
539 wxRect dest(0,0,0,0);
542 reg1.Intersect(reg2);
543 dest = reg1.GetBox();
545 if (dest != wxRect(0,0,0,0)) {
546 wxPyBeginBlockThreads();
547 wxRect* newRect = new wxRect(dest);
548 obj = wxPyConstructObject((void*)newRect, wxT("wxRect"), True);
549 wxPyEndBlockThreads();
557 //---------------------------------------------------------------------------
562 "wx.Point2Ds represent a point or a vector in a 2d coordinate system with floating point values.");
567 DocStr(wxPoint2D, "Create a w.Point2D object.");
568 wxPoint2D( double x=0.0 , double y=0.0 );
569 %name(Point2DCopy) wxPoint2D( const wxPoint2D &pt );
570 %name(Point2DFromPoint) wxPoint2D( const wxPoint &pt );
573 void, GetFloor( int *OUTPUT , int *OUTPUT ) const,
574 "GetFloor() -> (x,y)",
575 "Convert to integer");
578 void, GetRounded( int *OUTPUT , int *OUTPUT ) const,
579 "GetRounded() -> (x,y)",
580 "Convert to integer");
582 double GetVectorLength() const;
583 double GetVectorAngle() const ;
584 void SetVectorLength( double length );
585 void SetVectorAngle( double degrees );
587 // LinkError: void SetPolarCoordinates( double angle , double length );
588 // LinkError: void Normalize();
590 def SetPolarCoordinates(self, angle, length):
591 self.SetVectorLength(length)
592 self.SetVectorAngle(angle)
594 self.SetVectorLength(1.0)
597 double GetDistance( const wxPoint2D &pt ) const;
598 double GetDistanceSquare( const wxPoint2D &pt ) const;
599 double GetDotProduct( const wxPoint2D &vec ) const;
600 double GetCrossProduct( const wxPoint2D &vec ) const;
603 wxPoint2D, operator-(),
604 "the reflection of this point");
606 wxPoint2D& operator+=(const wxPoint2D& pt);
607 wxPoint2D& operator-=(const wxPoint2D& pt);
609 wxPoint2D& operator*=(const wxPoint2D& pt);
610 wxPoint2D& operator/=(const wxPoint2D& pt);
613 bool, operator==(const wxPoint2D& pt) const,
614 "Test for equality");
617 bool, operator!=(const wxPoint2D& pt) const,
618 "Test for inequality");
624 void Set( double x=0 , double y=0 ) {
631 "Return x and y properties as a tuple.");
633 wxPyBeginBlockThreads();
634 PyObject* tup = PyTuple_New(2);
635 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x));
636 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y));
637 wxPyEndBlockThreads();
644 def __str__(self): return str(self.Get())
645 def __repr__(self): return 'wx.Point2D'+str(self.Get())
646 def __len__(self): return len(self.Get())
647 def __getitem__(self, index): return self.Get()[index]
648 def __setitem__(self, index, val):
649 if index == 0: self.x = val
650 elif index == 1: self.y = val
651 else: raise IndexError
652 def __nonzero__(self): return self.Get() != (0.0, 0.0)
653 __safe_for_unpickling__ = True
654 def __reduce__(self): return (wx.Point2D, self.Get())
659 //---------------------------------------------------------------------------
662 const wxPoint wxDefaultPosition;
663 const wxSize wxDefaultSize;
666 //---------------------------------------------------------------------------