00001 #ifndef IGUANA_GL_MODELS_IG_3D_BASE_REP_H 00002 # define IGUANA_GL_MODELS_IG_3D_BASE_REP_H 00003 00004 //<<<<<< INCLUDES >>>>>> 00005 00006 # include "Iguana/GLModels/interface/config.h" 00007 # include "Iguana/Framework/interface/IgRep.h" 00008 # include <Inventor/nodes/SoSeparator.h> 00009 # include <vector> 00010 00011 //<<<<<< PUBLIC DEFINES >>>>>> 00012 //<<<<<< PUBLIC CONSTANTS >>>>>> 00013 //<<<<<< PUBLIC TYPES >>>>>> 00014 00015 class Ig3DBaseModel; 00016 class SoGroup; 00017 00018 //<<<<<< PUBLIC VARIABLES >>>>>> 00019 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00020 //<<<<<< CLASS DECLARATIONS >>>>>> 00021 00022 // Never ever use the fact that I can be cast silently to the 00023 // SoSeparator base class! Always use the methods here. 00024 00025 class IGUANA_GL_MODELS_API Ig3DBaseRep : public SoSeparator, public IgRep 00026 { 00027 public: 00028 Ig3DBaseRep (Ig3DBaseModel *model, Ig3DBaseRep *parent, Ig3DBaseRep *prev, SoGroup *node); 00029 ~Ig3DBaseRep (void); 00030 00031 virtual IgRepContext * context (void) const; 00032 virtual IgModel * model (void) const; 00033 00034 virtual SoGroup * magic (void) const; 00035 virtual SoGroup * magic (SoGroup *node); 00036 virtual SoNode * findMagic (SbName name) const; 00037 00038 virtual SoGroup * node (void) const; 00039 virtual SoGroup * node (SoGroup *node); 00040 00041 virtual int children (void) const; 00042 virtual Ig3DBaseRep * child (int n) const; 00043 virtual Ig3DBaseRep * child (SbString name) const; 00044 00045 virtual void clear (void); 00046 00047 // FIXME: virtual void pick (path, detail); 00048 // FIXME: remember last pick point/path detail? 00049 00050 static Ig3DBaseRep * asRep (SoNode *node); 00051 00052 protected: 00053 virtual void context (IgRepContext *context); 00054 00055 virtual void zap (bool search = false, bool kill = true); 00056 00057 private: 00058 IgRepContext *m_context; 00059 Ig3DBaseModel *m_model; 00060 00061 // undefined semantics 00062 Ig3DBaseRep (const Ig3DBaseRep &); 00063 Ig3DBaseRep &operator= (const Ig3DBaseRep &); 00064 }; 00065 00066 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00067 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00068 00069 #endif // IGUANA_GL_MODELS_IG_3D_BASE_REP_H