00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_VIEW_KERNEL_GEOMETRICOBJECT_H
00008 #define BALL_VIEW_KERNEL_GEOMETRICOBJECT_H
00009
00010 #ifndef BALL_VIEW_DATATYPE_COLORRGBA_H
00011 # include <BALL/VIEW/DATATYPE/colorRGBA.h>
00012 #endif
00013
00014 #ifndef BALL_MATHS_VECTOR3_H
00015 # include <BALL/MATHS/vector3.h>
00016 #endif
00017
00018 #ifdef BALL_DATATYPE_HASHSET_H
00019 # include <BALL/DATATYPE/hashSet.h>
00020 #endif
00021
00022 namespace BALL
00023 {
00024 class Composite;
00025
00026 namespace VIEW
00027 {
00036 class BALL_VIEW_EXPORT GeometricObject
00037 {
00038 public:
00039
00043 BALL_CREATE(GeometricObject)
00044
00045
00046
00047
00056 GeometricObject();
00057
00061 GeometricObject(const GeometricObject& object);
00062
00065 virtual ~GeometricObject();
00066
00074 virtual void clear();
00075
00079
00082 void set(const GeometricObject& object);
00083
00087 GeometricObject& operator = (const GeometricObject& object);
00088
00092 void swap(GeometricObject& object);
00093
00095
00098
00100 void setComposite(const Composite* composite)
00101 { composite_ = composite;}
00102
00104 const Composite* getComposite() const
00105 { return composite_;}
00106
00108
00110
00118 virtual bool isValid() const
00119 {return true;}
00120
00128 virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
00129
00132 void setColor(const ColorRGBA& color)
00133 { color_ = color; }
00134
00137 void setColor(const ColorUnit& red, const ColorUnit& green,
00138 const ColorUnit& blue, const ColorUnit& alpha = (float)1)
00139 { color_.set(red, green, blue, alpha);}
00140
00143 const ColorRGBA& getColor() const
00144 { return color_; }
00145
00147 ColorRGBA& getColor()
00148 { return color_; }
00149
00152 void getColor(ColorUnit& red, ColorUnit& green,
00153 ColorUnit& blue, ColorUnit& alpha) const
00154 { color_.get(red, green, blue, alpha); }
00155
00157 void getColors(HashSet<String>& colors);
00158
00160 bool operator == (const GeometricObject& object) const
00161 { return this == &object;}
00162
00163
00165 bool operator < (const GeometricObject& object) const
00166 { return this < &object;}
00167
00168
00169 virtual void getVertices(std::vector<Vector3>&) const {};
00170
00172
00173 private:
00174
00175 void clear_();
00176
00177 ColorRGBA color_;
00178
00179
00180 const Composite* composite_;
00181
00182 };
00183
00185 typedef std::list<GeometricObject*> GeometricObjectList;
00186
00187 } }
00188 #endif // BALL_VIEW_KERNEL_GEOMETIRCOBJECT_H