]> git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/canvas/bbox.h
reset virtual root to NULL in DeleteAllItems()
[wxWidgets.git] / contrib / include / wx / canvas / bbox.h
1 #ifndef __WXBOUNDINGBOX_H__
2 #define __WXBOUNDINGBOX_H__
3
4 #if defined(__GNUG__) && !defined(__APPLE__)
5 #pragma interface "bbox.cpp"
6 #endif
7
8 #ifndef WX_PRECOMP
9 #include "wx/wx.h"
10 #endif
11
12 #include "wx/matrix.h"
13 #include "wx/geometry.h"
14
15 enum OVERLAP {_IN,_ON,_OUT};
16
17 //Purpose The wxBoundingBox class stores one wxBoundingBox.
18 //The wxBoundingBox is defined by two coordiates,
19 //a upperleft coordinate and a lowerright coordinate.
20 class wxBoundingBox
21 {
22 public:
23 wxBoundingBox();
24 wxBoundingBox(const wxBoundingBox&);
25 wxBoundingBox(const wxPoint2DDouble&);
26 wxBoundingBox(double xmin, double ymin, double xmax, double ymax);
27
28 bool And(wxBoundingBox*, double Marge = 0);
29
30 void EnLarge(const double Marge);
31 void Shrink(const double Marge);
32
33 void Expand(const wxPoint2DDouble& , const wxPoint2DDouble&);
34 void Expand(const wxPoint2DDouble&);
35 void Expand(double x,double y);
36 void Expand(const wxBoundingBox& bbox);
37
38 OVERLAP Intersect( wxBoundingBox &, double Marge = 0);
39 bool LineIntersect(const wxPoint2DDouble& begin, const wxPoint2DDouble& end );
40 bool PointInBox( const wxPoint2DDouble&, double Marge = 0);
41 bool PointInBox( double, double, double Marge = 0);
42
43 void Reset();
44
45 void Translate( wxPoint2DDouble& );
46 void MapBbox( const wxTransformMatrix& matrix);
47
48 double GetWidth() {return m_maxx-m_minx;};
49 double GetHeight(){return m_maxy-m_miny;};
50 bool GetValid() const;
51 void SetValid(bool);
52
53 void SetBoundingBox(const wxPoint2DDouble& a_point);
54
55 void SetMin(double, double);
56 void SetMax(double, double);
57 inline wxPoint2DDouble GetMin();
58 inline wxPoint2DDouble GetMax();
59 inline double GetMinX(){return m_minx;};
60 inline double GetMinY(){return m_miny;};
61 inline double GetMaxX(){return m_maxx;};
62 inline double GetMaxY(){return m_maxy;};
63
64 wxBoundingBox& operator+( wxBoundingBox& );
65 wxBoundingBox& operator=( const wxBoundingBox& );
66
67 protected:
68 //bounding box in world
69 double m_minx;
70 double m_miny;
71 double m_maxx;
72 double m_maxy;
73 bool m_validbbox;
74 };
75
76 #endif