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 // %nokwargs operator+;
307 // %nokwargs operator-;
308 // %nokwargs operator+=;
309 // %nokwargs operator-=;
312 wxPoint, operator+(const wxPoint& pt),
313 "Add pt's proprties to this and return the result.");
317 wxPoint, operator-(const wxPoint& pt),
318 "Subtract pt's proprties from this and return the result");
322 wxPoint&, operator+=(const wxPoint& pt),
323 "Add pt to this object.");
326 wxPoint&, operator-=(const wxPoint& pt),
327 "Subtract pt from this object.");
332 // wxPoint, operator+(const wxSize& sz),
333 // "Add sz to this Point and return the result.");
336 // wxPoint, operator-(const wxSize& sz),
337 // "Subtract sz from this Point and return the result");
341 // wxPoint&, operator+=(const wxSize& sz),
342 // "Add sz to this object.");
345 // wxPoint&, operator-=(const wxSize& sz),
346 // "Subtract sz from this object.");
352 DocStr(Set, "Set both the x and y properties");
353 void Set(long x, long y) {
360 "Return the x and y properties as a tuple. ");
362 wxPyBeginBlockThreads();
363 PyObject* tup = PyTuple_New(2);
364 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
365 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
366 wxPyEndBlockThreads();
373 def __str__(self): return str(self.Get())
374 def __repr__(self): return 'wx.Point'+str(self.Get())
375 def __len__(self): return len(self.Get())
376 def __getitem__(self, index): return self.Get()[index]
377 def __setitem__(self, index, val):
378 if index == 0: self.x = val
379 elif index == 1: self.y = val
380 else: raise IndexError
381 def __nonzero__(self): return self.Get() != (0,0)
382 __safe_for_unpickling__ = True
383 def __reduce__(self): return (wx.Point, self.Get())
387 //---------------------------------------------------------------------------
392 "A class for representing and manipulating rectangles. It has x, y, width and
393 height properties. In wxPython most palces that expect a wx.Rect can also
394 accept a (x,y,width,height) tuple.");
400 wxRect(int x=0, int y=0, int width=0, int height=0),
401 "Create a new Rect object.");
404 wxRect(const wxPoint& topLeft, const wxPoint& bottomRight),
405 "Create a new Rect object from Points representing two corners.",
409 wxRect(const wxPoint& pos, const wxSize& size),
410 "Create a new Rect from a position and size.",
421 int GetWidth() const;
422 void SetWidth(int w);
424 int GetHeight() const;
425 void SetHeight(int h);
427 wxPoint GetPosition() const;
428 void SetPosition( const wxPoint &p );
430 wxSize GetSize() const;
431 void SetSize( const wxSize &s );
433 wxPoint GetTopLeft() const;
434 void SetTopLeft(const wxPoint &p);
435 wxPoint GetBottomRight() const;
436 void SetBottomRight(const wxPoint &p);
438 // wxPoint GetLeftTop() const;
439 // void SetLeftTop(const wxPoint &p);
440 // wxPoint GetRightBottom() const;
441 // void SetRightBottom(const wxPoint &p);
445 int GetBottom() const;
446 int GetRight() const;
448 void SetLeft(int left);
449 void SetRight(int right);
450 void SetTop(int top);
451 void SetBottom(int bottom);
454 position = property(GetPosition, SetPosition)
455 size = property(GetSize, SetSize)
456 left = property(GetLeft, SetLeft)
457 right = property(GetRight, SetRight)
458 top = property(GetTop, SetTop)
459 bottom = property(GetBottom, SetBottom)
463 wxRect&, Inflate(wxCoord dx, wxCoord dy),
464 "Increase the rectangle size by dx in x direction and dy in y direction. Both\n"
465 "(or one of) parameters may be negative to decrease the rectangle size.");
468 wxRect&, Deflate(wxCoord dx, wxCoord dy),
469 "Decrease the rectangle size by dx in x direction and dy in y direction. Both\n"
470 "(or one of) parameters may be negative to increase the rectngle size. This\n"
471 "method is the opposite of Inflate.");
474 void, Offset(wxCoord dx, wxCoord dy),
475 "Moves the rectangle by the specified offset. If dx is positive, the rectangle\n"
476 "is moved to the right, if dy is positive, it is moved to the bottom, otherwise\n"
477 "it is moved to the left or top respectively.",
481 void, Offset(const wxPoint& pt),
482 "Same as OffsetXY but uses dx,dy from Point");
485 wxRect&, Intersect(const wxRect& rect),
486 "Return the intersectsion of this rectangle and rect.");
489 wxRect, operator+(const wxRect& rect) const,
490 "Add the properties of rect to this rectangle and return the result.");
493 wxRect&, operator+=(const wxRect& rect),
494 "Add the properties of rect to this rectangle, updating this rectangle.");
497 bool, operator==(const wxRect& rect) const,
498 "Test for equality.");
501 bool, operator!=(const wxRect& rect) const,
502 "Test for inequality.");
505 DocStr( Inside, "Return True if the point is (not strcitly) inside the rect.");
506 %name(InsideXY)bool Inside(int x, int y) const;
507 bool Inside(const wxPoint& pt) const;
510 bool, Intersects(const wxRect& rect) const,
511 "Returns True if the rectangles have a non empty intersection.");
514 int x, y, width, height;
518 DocStr(Set, "Set all rectangle properties.");
519 void Set(int x=0, int y=0, int width=0, int height=0) {
523 self->height = height;
527 "Get() -> (x,y,width,height)",
528 "Return the rectangle properties as a tuple.");
530 wxPyBeginBlockThreads();
531 PyObject* tup = PyTuple_New(4);
532 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
533 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
534 PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(self->width));
535 PyTuple_SET_ITEM(tup, 3, PyInt_FromLong(self->height));
536 wxPyEndBlockThreads();
543 def __str__(self): return str(self.Get())
544 def __repr__(self): return 'wx.Rect'+str(self.Get())
545 def __len__(self): return len(self.Get())
546 def __getitem__(self, index): return self.Get()[index]
547 def __setitem__(self, index, val):
548 if index == 0: self.x = val
549 elif index == 1: self.y = val
550 elif index == 2: self.width = val
551 elif index == 3: self.height = val
552 else: raise IndexError
553 def __nonzero__(self): return self.Get() != (0,0,0,0)
554 __safe_for_unpickling__ = True
555 def __reduce__(self): return (wx.Rect, self.Get())
560 DocAStr(wxIntersectRect,
561 "IntersectRect(Rect r1, Rect r2) -> Rect",
562 "Calculate and return the intersection of r1 and r2.");
564 PyObject* wxIntersectRect(wxRect* r1, wxRect* r2) {
567 wxRect dest(0,0,0,0);
570 reg1.Intersect(reg2);
571 dest = reg1.GetBox();
573 if (dest != wxRect(0,0,0,0)) {
574 wxPyBeginBlockThreads();
575 wxRect* newRect = new wxRect(dest);
576 obj = wxPyConstructObject((void*)newRect, wxT("wxRect"), True);
577 wxPyEndBlockThreads();
585 //---------------------------------------------------------------------------
590 "wx.Point2Ds represent a point or a vector in a 2d coordinate system with floating point values.");
595 DocStr(wxPoint2D, "Create a w.Point2D object.");
596 wxPoint2D( double x=0.0 , double y=0.0 );
597 %name(Point2DCopy) wxPoint2D( const wxPoint2D &pt );
598 %name(Point2DFromPoint) wxPoint2D( const wxPoint &pt );
601 void, GetFloor( int *OUTPUT , int *OUTPUT ) const,
602 "GetFloor() -> (x,y)",
603 "Convert to integer");
606 void, GetRounded( int *OUTPUT , int *OUTPUT ) const,
607 "GetRounded() -> (x,y)",
608 "Convert to integer");
610 double GetVectorLength() const;
611 double GetVectorAngle() const ;
612 void SetVectorLength( double length );
613 void SetVectorAngle( double degrees );
615 // LinkError: void SetPolarCoordinates( double angle , double length );
616 // LinkError: void Normalize();
618 def SetPolarCoordinates(self, angle, length):
619 self.SetVectorLength(length)
620 self.SetVectorAngle(angle)
622 self.SetVectorLength(1.0)
625 double GetDistance( const wxPoint2D &pt ) const;
626 double GetDistanceSquare( const wxPoint2D &pt ) const;
627 double GetDotProduct( const wxPoint2D &vec ) const;
628 double GetCrossProduct( const wxPoint2D &vec ) const;
631 wxPoint2D, operator-(),
632 "the reflection of this point");
634 wxPoint2D& operator+=(const wxPoint2D& pt);
635 wxPoint2D& operator-=(const wxPoint2D& pt);
637 wxPoint2D& operator*=(const wxPoint2D& pt);
638 wxPoint2D& operator/=(const wxPoint2D& pt);
641 bool, operator==(const wxPoint2D& pt) const,
642 "Test for equality");
645 bool, operator!=(const wxPoint2D& pt) const,
646 "Test for inequality");
652 void Set( double x=0 , double y=0 ) {
659 "Return x and y properties as a tuple.");
661 wxPyBeginBlockThreads();
662 PyObject* tup = PyTuple_New(2);
663 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x));
664 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y));
665 wxPyEndBlockThreads();
672 def __str__(self): return str(self.Get())
673 def __repr__(self): return 'wx.Point2D'+str(self.Get())
674 def __len__(self): return len(self.Get())
675 def __getitem__(self, index): return self.Get()[index]
676 def __setitem__(self, index, val):
677 if index == 0: self.x = val
678 elif index == 1: self.y = val
679 else: raise IndexError
680 def __nonzero__(self): return self.Get() != (0.0, 0.0)
681 __safe_for_unpickling__ = True
682 def __reduce__(self): return (wx.Point2D, self.Get())
687 //---------------------------------------------------------------------------
690 const wxPoint wxDefaultPosition;
691 const wxSize wxDefaultSize;
694 //---------------------------------------------------------------------------