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 def __getinitargs__(self): return ()
196 def __getstate__(self): return self.Get()
197 def __setstate__(self, state): self.Set(*state)
202 //---------------------------------------------------------------------------
206 "A data structure for representing a point or position with floating point x
207 and y properties. In wxPython most places that expect a wx.RealPoint can also
208 accept a (x,y) tuple.");
216 wxRealPoint(double x=0.0, double y=0.0),
217 "Create a wx.RealPoint object");
222 bool, operator==(const wxRealPoint& pt),
223 "Test for equality of wx.RealPoint objects.");
226 bool, operator!=(const wxRealPoint& pt),
227 "Test for inequality of wx.RealPoint objects.");
231 wxRealPoint, operator+(const wxRealPoint& pt),
232 "Add pt's proprties to this and return the result.");
235 wxRealPoint, operator-(const wxRealPoint& pt),
236 "Subtract pt's proprties from this and return the result");
240 DocStr(Set, "Set both the x and y properties");
241 void Set(double x, double y) {
248 "Return the x and y properties as a tuple. ");
250 wxPyBeginBlockThreads();
251 PyObject* tup = PyTuple_New(2);
252 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->x));
253 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->y));
254 wxPyEndBlockThreads();
261 def __str__(self): return str(self.Get())
262 def __repr__(self): return 'wx.RealPoint'+str(self.Get())
263 def __len__(self): return len(self.Get())
264 def __getitem__(self, index): return self.Get()[index]
265 def __setitem__(self, index, val):
266 if index == 0: self.x = val
267 elif index == 1: self.y = val
268 else: raise IndexError
269 def __nonzero__(self): return self.Get() != (0.0, 0.0)
270 def __getinitargs__(self): return ()
271 def __getstate__(self): return self.Get()
272 def __setstate__(self, state): self.Set(*state)
277 //---------------------------------------------------------------------------
282 "A data structure for representing a point or position with integer x and y
283 properties. Most places in wxPython that expect a wx.Point can also accept a
292 wxPoint(int x=0, int y=0),
293 "Create a wx.Point object");
299 bool, operator==(const wxPoint& pt),
300 "Test for equality of wx.Point objects.");
303 bool, operator!=(const wxPoint& pt),
304 "Test for inequality of wx.Point objects.");
308 wxPoint, operator+(const wxPoint& pt),
309 "Add pt's proprties to this and return the result.");
312 wxPoint, operator-(const wxPoint& pt),
313 "Subtract pt's proprties from this and return the result");
317 wxPoint&, operator+=(const wxPoint& pt),
318 "Add pt to this object.");
321 wxPoint&, operator-=(const wxPoint& pt),
322 "Subtract pt from this object.");
326 DocStr(Set, "Set both the x and y properties");
327 void Set(long x, long y) {
334 "Return the x and y properties as a tuple. ");
336 wxPyBeginBlockThreads();
337 PyObject* tup = PyTuple_New(2);
338 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
339 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
340 wxPyEndBlockThreads();
347 def __str__(self): return str(self.Get())
348 def __repr__(self): return 'wx.Point'+str(self.Get())
349 def __len__(self): return len(self.Get())
350 def __getitem__(self, index): return self.Get()[index]
351 def __setitem__(self, index, val):
352 if index == 0: self.x = val
353 elif index == 1: self.y = val
354 else: raise IndexError
355 def __nonzero__(self): return self.Get() != (0,0)
356 def __getinitargs__(self): return ()
357 def __getstate__(self): return self.Get()
358 def __setstate__(self, state): self.Set(*state)
362 //---------------------------------------------------------------------------
367 "A class for representing and manipulating rectangles. It has x, y, width and
368 height properties. In wxPython most palces that expect a wx.Rect can also
369 accept a (x,y,width,height) tuple.");
375 wxRect(int x=0, int y=0, int width=0, int height=0),
376 "Create a new Rect object.");
379 wxRect(const wxPoint& topLeft, const wxPoint& bottomRight),
380 "Create a new Rect object from Points representing two corners.",
384 wxRect(const wxPoint& pos, const wxSize& size),
385 "Create a new Rect from a position and size.",
396 int GetWidth() const;
397 void SetWidth(int w);
399 int GetHeight() const;
400 void SetHeight(int h);
402 wxPoint GetPosition() const;
403 void SetPosition( const wxPoint &p );
405 wxSize GetSize() const;
406 void SetSize( const wxSize &s );
408 wxPoint GetTopLeft() const;
409 void SetTopLeft(const wxPoint &p);
410 wxPoint GetBottomRight() const;
411 void SetBottomRight(const wxPoint &p);
413 // wxPoint GetLeftTop() const;
414 // void SetLeftTop(const wxPoint &p);
415 // wxPoint GetRightBottom() const;
416 // void SetRightBottom(const wxPoint &p);
420 int GetBottom() const;
421 int GetRight() const;
423 void SetLeft(int left);
424 void SetRight(int right);
425 void SetTop(int top);
426 void SetBottom(int bottom);
429 position = property(GetPosition, SetPosition)
430 size = property(GetSize, SetSize)
431 left = property(GetLeft, SetLeft)
432 right = property(GetRight, SetRight)
433 top = property(GetTop, SetTop)
434 bottom = property(GetBottom, SetBottom)
438 wxRect&, Inflate(wxCoord dx, wxCoord dy),
439 "Increase the rectangle size by dx in x direction and dy in y direction. Both\n"
440 "(or one of) parameters may be negative to decrease the rectangle size.");
443 wxRect&, Deflate(wxCoord dx, wxCoord dy),
444 "Decrease the rectangle size by dx in x direction and dy in y direction. Both\n"
445 "(or one of) parameters may be negative to increase the rectngle size. This\n"
446 "method is the opposite of Inflate.");
449 void, Offset(wxCoord dx, wxCoord dy),
450 "Moves the rectangle by the specified offset. If dx is positive, the rectangle\n"
451 "is moved to the right, if dy is positive, it is moved to the bottom, otherwise\n"
452 "it is moved to the left or top respectively.",
456 void, Offset(const wxPoint& pt),
457 "Same as OffsetXY but uses dx,dy from Point");
460 wxRect&, Intersect(const wxRect& rect),
461 "Return the intersectsion of this rectangle and rect.");
464 wxRect, operator+(const wxRect& rect) const,
465 "Add the properties of rect to this rectangle and return the result.");
468 wxRect&, operator+=(const wxRect& rect),
469 "Add the properties of rect to this rectangle, updating this rectangle.");
472 bool, operator==(const wxRect& rect) const,
473 "Test for equality.");
476 bool, operator!=(const wxRect& rect) const,
477 "Test for inequality.");
480 DocStr( Inside, "Return True if the point is (not strcitly) inside the rect.");
481 %name(InsideXY)bool Inside(int x, int y) const;
482 bool Inside(const wxPoint& pt) const;
485 bool, Intersects(const wxRect& rect) const,
486 "Returns True if the rectangles have a non empty intersection.");
489 int x, y, width, height;
493 DocStr(Set, "Set all rectangle properties.");
494 void Set(int x=0, int y=0, int width=0, int height=0) {
498 self->height = height;
502 "Get() -> (x,y,width,height)",
503 "Return the rectangle properties as a tuple.");
505 wxPyBeginBlockThreads();
506 PyObject* tup = PyTuple_New(4);
507 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(self->x));
508 PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(self->y));
509 PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(self->width));
510 PyTuple_SET_ITEM(tup, 3, PyInt_FromLong(self->height));
511 wxPyEndBlockThreads();
518 def __str__(self): return str(self.Get())
519 def __repr__(self): return 'wx.Rect'+str(self.Get())
520 def __len__(self): return len(self.Get())
521 def __getitem__(self, index): return self.Get()[index]
522 def __setitem__(self, index, val):
523 if index == 0: self.x = val
524 elif index == 1: self.y = val
525 elif index == 2: self.width = val
526 elif index == 3: self.height = val
527 else: raise IndexError
528 def __nonzero__(self): return self.Get() != (0,0,0,0)
529 def __getinitargs__(self): return ()
530 def __getstate__(self): return self.Get()
531 def __setstate__(self, state): self.Set(*state)
536 DocAStr(wxIntersectRect,
537 "IntersectRect(Rect r1, Rect r2) -> Rect",
538 "Calculate and return the intersection of r1 and r2.");
540 PyObject* wxIntersectRect(wxRect* r1, wxRect* r2) {
543 wxRect dest(0,0,0,0);
546 reg1.Intersect(reg2);
547 dest = reg1.GetBox();
549 if (dest != wxRect(0,0,0,0)) {
550 wxPyBeginBlockThreads();
551 wxRect* newRect = new wxRect(dest);
552 obj = wxPyConstructObject((void*)newRect, wxT("wxRect"), True);
553 wxPyEndBlockThreads();
561 //---------------------------------------------------------------------------
566 "wx.Point2Ds represent a point or a vector in a 2d coordinate system with floating point values.");
571 DocStr(wxPoint2D, "Create a w.Point2D object.");
572 wxPoint2D( double x=0.0 , double y=0.0 );
573 %name(Point2DCopy) wxPoint2D( const wxPoint2D &pt );
574 %name(Point2DFromPoint) wxPoint2D( const wxPoint &pt );
577 void, GetFloor( int *OUTPUT , int *OUTPUT ) const,
578 "GetFloor() -> (x,y)",
579 "Convert to integer");
582 void, GetRounded( int *OUTPUT , int *OUTPUT ) const,
583 "GetRounded() -> (x,y)",
584 "Convert to integer");
586 double GetVectorLength() const;
587 double GetVectorAngle() const ;
588 void SetVectorLength( double length );
589 void SetVectorAngle( double degrees );
591 // LinkError: void SetPolarCoordinates( double angle , double length );
592 // LinkError: void Normalize();
594 def SetPolarCoordinates(self, angle, length):
595 self.SetVectorLength(length)
596 self.SetVectorAngle(angle)
598 self.SetVectorLength(1.0)
601 double GetDistance( const wxPoint2D &pt ) const;
602 double GetDistanceSquare( const wxPoint2D &pt ) const;
603 double GetDotProduct( const wxPoint2D &vec ) const;
604 double GetCrossProduct( const wxPoint2D &vec ) const;
607 wxPoint2D, operator-(),
608 "the reflection of this point");
610 wxPoint2D& operator+=(const wxPoint2D& pt);
611 wxPoint2D& operator-=(const wxPoint2D& pt);
613 wxPoint2D& operator*=(const wxPoint2D& pt);
614 wxPoint2D& operator/=(const wxPoint2D& pt);
617 bool, operator==(const wxPoint2D& pt) const,
618 "Test for equality");
621 bool, operator!=(const wxPoint2D& pt) const,
622 "Test for inequality");
628 void Set( double x=0 , double y=0 ) {
635 "Return x and y properties as a tuple.");
637 wxPyBeginBlockThreads();
638 PyObject* tup = PyTuple_New(2);
639 PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x));
640 PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y));
641 wxPyEndBlockThreads();
648 def __str__(self): return str(self.Get())
649 def __repr__(self): return 'wx.Point2D'+str(self.Get())
650 def __len__(self): return len(self.Get())
651 def __getitem__(self, index): return self.Get()[index]
652 def __setitem__(self, index, val):
653 if index == 0: self.x = val
654 elif index == 1: self.y = val
655 else: raise IndexError
656 def __nonzero__(self): return self.Get() != (0.0, 0.0)
657 def __getinitargs__(self): return ()
658 def __getstate__(self): return self.Get()
659 def __setstate__(self, state): self.Set(*state)
665 //---------------------------------------------------------------------------
668 const wxPoint wxDefaultPosition;
669 const wxSize wxDefaultSize;
672 //---------------------------------------------------------------------------