00001 00007 #ifndef SHAPE_H 00008 #define SHAPE_H 00009 00010 #include <ostream> 00011 #include <istream> 00012 #include "boundingbox.h" 00013 #include "defs.h" 00014 00015 class QPainter; 00016 class Image; 00017 00023 class Shape 00024 { 00025 public: 00028 Shape(); 00029 00030 virtual ~Shape(); 00031 00032 public: 00036 virtual SHAPE_TYPE GetType() const =0; 00037 00038 00043 void Init(int x, int y); 00044 00049 virtual const std::string& GetName() const =0; 00050 00054 int GetHeight() const; 00055 00059 int GetWidth() const; 00060 00064 int GetCenterX() const; 00065 00069 int GetCenterY() const; 00070 00071 00075 virtual double GetSurface() const = 0; 00076 00080 virtual double SumValues(Image* pImage) = 0; 00081 00087 virtual void Draw(QPainter* p, int fact) =0; 00088 00093 virtual void ModifyEndShape(int lastMousePosition_x,int lastMousePosition_y); 00094 00098 virtual bool Validate(); 00099 00100 00103 const BoundingBox& GetBoundingBox() const; 00104 00108 void SetBoundingBox(BoundingBox& bb); 00109 00115 virtual bool IsInside(int x, int y) const =0; 00116 00117 protected: 00118 00122 BoundingBox m_box; 00123 }; 00124 00125 #endif