00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfShapeSelection_h_
00026 #define _CIvfShapeSelection_h_
00027
00028 #include <ivf/IvfShape.h>
00029 #include <ivf/IvfMaterial.h>
00030 #include <ivf/IvfComposite.h>
00031
00032 #include <vector>
00033
00034 typedef std::vector<CIvfShapePtr> CIvfShapeSelectionVector;
00035 typedef std::vector<CIvfShapePtr>::iterator CIvfShapeSelectionVectorIterator;
00036
00037 IvfSmartPointer(CIvfShapeSelection);
00038
00039 class IVF_API CIvfShapeSelection : public CIvfShape {
00040 private:
00041 CIvfShapeSelectionVector m_selection;
00042 CIvfMaterialPtr m_hlMaterial;
00043 std::set<CIvfShape*> m_selectionSet;
00044 double m_offset[3];
00045 public:
00046 void setHighlightMaterial(CIvfMaterial* material);
00047 CIvfShapeSelection();
00048 virtual ~CIvfShapeSelection();
00049
00050 IvfClassInfo("CIvfShapeSelection",CIvfShape);
00051
00052 void add(CIvfShape* shape);
00053 void clear();
00054 CIvfShape* getShape(int idx);
00055 int getSize();
00056 void remove(CIvfShape* shape);
00057
00058 bool contains(CIvfShape* shape);
00059 void assignFrom(CIvfShapeSelection* selection);
00060 void moveShapes(double dx, double dy, double dz);
00061 void addTo(CIvfComposite* composite);
00062 void setOffset(double dx, double dy, double dz);
00063
00064 void getSelection(CIvfShapeSelectionVector& vector);
00065 protected:
00066 virtual void createGeometry();
00067 };
00068
00069 #endif