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 _SO_CSG_OPERATION_
00026 #define _SO_CSG_OPERATION_
00027
00028
00029 #include <Inventor/SbBasic.h>
00030
00031 class SoNode ;
00032 class SoSeparator ;
00033 class SoFaceSet ;
00034 struct IPPolygonStruct ;
00035 class SoCallbackAction ;
00036 class SoPrimitiveVertex ;
00037 class SoDEPRECATED SoCSGOperation {
00057
00058 public:
00059
00061 enum OperationType {
00062 OR,
00063 AND,
00064 SUB,
00065 CUT,
00066 INSIDE_CUT,
00067 MERGE
00068 };
00069
00071 SoCSGOperation() ;
00072
00074 SoCSGOperation(OperationType opType) ;
00075
00077 void setOperationType(OperationType opType) ;
00078
00080 OperationType getOperationType() const ;
00081
00083 void setSceneGraphs(const SoNode *objectA, const SoNode *objectB) ;
00084
00089 SoSeparator* getSceneGraph() const ;
00090
00091 private:
00092 void constructorCommon() ;
00093 static void triangleCB(void *userData,
00094 SoCallbackAction *action,
00095 const SoPrimitiveVertex *v1,
00096 const SoPrimitiveVertex *v2,
00097 const SoPrimitiveVertex *v3) ;
00098 static IPPolygonStruct* buildIPPolygon(const SoNode *object) ;
00099 static SoFaceSet* buildFaceSet(IPPolygonStruct *polygonList) ;
00100
00101
00102 const SoNode *m_objectA, *m_objectB ;
00103 OperationType m_operationType ;
00104 };
00105
00106 #endif // _SO_CSG_OPERATION_
00107
00108
00109
00110
00111
00112
00113
00114