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 _CIvfComposite_h_
00026 #define _CIvfComposite_h_
00027
00028 #include <ivf/ivfconfig.h>
00029 #include <ivf/IvfShape.h>
00030
00031 IvfSmartPointer(CIvfComposite);
00032
00077 class IVF_API CIvfComposite : public CIvfShape {
00078 public:
00080 CIvfComposite ();
00081
00083 virtual ~CIvfComposite ();
00084
00085 IvfClassInfo("CIvfComposite",CIvfShape);
00086
00088 virtual void refresh();
00089
00099 void setUseReference(bool flag);
00100
00106 void setRenderInterval(int interval);
00107
00116 void setHighlightChildren(THighlightState state);
00117
00126 void setHighlight(THighlightState state);
00127
00128 void setHighlightComposite(THighlightState state);
00137 void setSelectChildren(TSelectState state);
00138
00140 void refreshChildren();
00141
00147 void deleteAll();
00148
00157 virtual CIvfShape* removeChild(int index);
00158
00168 virtual CIvfShape* removeShape(CIvfShape* removeShape);
00169
00176 virtual void addChild(CIvfShape* shape);
00177
00185 virtual void deleteChild(int index);
00186
00195 CIvfShape* getChild(int index);
00196
00204 void clear();
00205
00207 int getSize();
00208
00214 void updateBoundingSphere();
00215
00225 CIvfShape* findShape(const char* name);
00226
00227 private:
00228 CIvfShape* compositeFind(CIvfComposite* composite, const char* name);
00229 bool m_useReference;
00230 int m_renderInterval;
00231 std::vector<CIvfShape*> m_children;
00232 protected:
00233 void compositeRemove(CIvfComposite* composite, CIvfShape* deleteChild);
00234 virtual void createGeometry();
00235 };
00241 #endif