![]() |
![]() |
00001 #ifndef IG_OPEN_INVENTOR_IG_SURFACE_OPERATION_H 00002 # define IG_OPEN_INVENTOR_IG_SURFACE_OPERATION_H 00003 00004 //<<<<<< INCLUDES >>>>>> 00005 00006 # include "Iguana/Inventor/interface/config.h" 00007 # include <list> 00008 00009 //<<<<<< PUBLIC DEFINES >>>>>> 00010 //<<<<<< PUBLIC CONSTANTS >>>>>> 00011 //<<<<<< PUBLIC TYPES >>>>>> 00012 00013 class SoNode; 00014 00015 //<<<<<< PUBLIC VARIABLES >>>>>> 00016 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00017 //<<<<<< CLASS DECLARATIONS >>>>>> 00018 00019 #define MIN_POINT_DISTANCE 0.0000001 00020 00021 class IgSurfaceOperation 00022 { 00023 public: 00024 enum OPERATION { INTERSECTION, 00025 SUBTRACTION, 00026 UNION, 00027 SURFACE_1_IN_2, 00028 SURFACE_2_IN_1, 00029 SURFACE_1_OUT_2, 00030 SURFACE_2_OUT_1 00031 }; 00032 00033 IgSurfaceOperation (int operatingMode); 00034 void addNode (SoNode *node); 00035 SoNode *apply (void); 00036 SoNode *apply (SoNode *a, SoNode *b); 00037 00038 private: 00039 typedef std::list <SoNode *> NodeList; 00040 typedef std::list<SoNode *>::const_iterator NodeIterator; 00041 00042 NodeList m_nodes; 00043 int m_operation; 00044 }; 00045 00046 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00047 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00048 00049 #endif // IG_OPEN_INVENTOR_IG_SURFACE_OPERATION_H