![]() |
http://www.sim.no http://www.coin3d.org |
00001 #ifndef COIN_SONODE_H 00002 #define COIN_SONODE_H 00003 00004 /**************************************************************************\ 00005 * 00006 * This file is part of the Coin 3D visualization library. 00007 * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU General Public License 00011 * ("GPL") version 2 as published by the Free Software Foundation. 00012 * See the file LICENSE.GPL at the root directory of this source 00013 * distribution for additional information about the GNU GPL. 00014 * 00015 * For using Coin with software that can not be combined with the GNU 00016 * GPL, and for taking advantage of the additional benefits of our 00017 * support services, please contact Systems in Motion about acquiring 00018 * a Coin Professional Edition License. 00019 * 00020 * See http://www.coin3d.org/ for more information. 00021 * 00022 * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY. 00023 * http://www.sim.no/ sales@sim.no coin-support@coin3d.org 00024 * 00025 \**************************************************************************/ 00026 00027 #include <Inventor/fields/SoFieldContainer.h> 00028 00029 class SoAction; 00030 class SoCallbackAction; 00031 class SoChildList; 00032 class SoGLRenderAction; 00033 class SoGetBoundingBoxAction; 00034 class SoGetMatrixAction; 00035 class SoGetPrimitiveCountAction; 00036 class SoHandleEventAction; 00037 class SoNodeList; 00038 class SoNotList; 00039 class SoOutput; 00040 class SoPickAction; 00041 class SoRayPickAction; 00042 class SoSearchAction; 00043 class SoWriteAction; 00044 class SoAudioRenderAction; 00045 class SbDict; 00046 00047 class COIN_DLL_API SoNode : public SoFieldContainer { 00048 typedef SoFieldContainer inherited; 00049 00050 public: 00051 // Probably not interesting for the application programmer..? 00052 #ifndef DOXYGEN_SKIP_THIS 00053 enum Stage { FIRST_INSTANCE, PROTO_INSTANCE, OTHER_INSTANCE }; 00054 #endif // !DOXYGEN_SKIP_THIS 00055 00056 void setOverride(const SbBool state); 00057 SbBool isOverride(void) const; 00058 00059 enum NodeType { 00060 INVENTOR = 0x0000, 00061 VRML1 = 0x0001, 00062 VRML2 = 0x0002, 00063 INVENTOR_1 = 0x0004, 00064 INVENTOR_2_0 = 0x0008, 00065 INVENTOR_2_1 = 0x0010, 00066 INVENTOR_2_5 = 0x0020, 00067 INVENTOR_2_6 = 0x0040, 00068 COIN_1_0 = 0x0080, 00069 COIN_2_0 = 0x0100, 00070 EXTENSION = 0x0200, 00071 COIN_2_2 = 0x0400, 00072 COIN_2_3 = 0x0800, 00073 COIN_2_4 = 0x1000, 00074 INVENTOR_5_0 = 0x2000 00075 }; 00076 00077 static uint32_t getCompatibilityTypes(const SoType & nodetype); 00078 void setNodeType(const NodeType type); 00079 NodeType getNodeType(void) const; 00080 00081 virtual SoNode * copy(SbBool copyconnections = FALSE) const; 00082 virtual SbBool affectsState(void) const; 00083 00084 virtual void doAction(SoAction * action); 00085 virtual void GLRender(SoGLRenderAction * action); 00086 virtual void GLRenderBelowPath(SoGLRenderAction * action); 00087 virtual void GLRenderInPath(SoGLRenderAction * action); 00088 virtual void GLRenderOffPath(SoGLRenderAction * action); 00089 virtual void callback(SoCallbackAction * action); 00090 virtual void getBoundingBox(SoGetBoundingBoxAction * action); 00091 virtual void getMatrix(SoGetMatrixAction * action); 00092 virtual void handleEvent(SoHandleEventAction * action); 00093 virtual void pick(SoPickAction * action); 00094 virtual void rayPick(SoRayPickAction * action); 00095 virtual void search(SoSearchAction * action); 00096 virtual void write(SoWriteAction * action); 00097 virtual void audioRender(SoAudioRenderAction * action); 00098 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); 00099 00100 virtual void grabEventsSetup(void); 00101 virtual void grabEventsCleanup(void); 00102 00103 virtual void startNotify(void); 00104 virtual void notify(SoNotList * l); 00105 00106 uint32_t getNodeId(void) const; 00107 virtual SoChildList * getChildren(void) const; 00108 00109 virtual void writeInstance(SoOutput * out); 00110 virtual SoNode * addToCopyDict(void) const; 00111 virtual void copyContents(const SoFieldContainer * from, 00112 SbBool copyconnections); 00113 virtual SoFieldContainer * copyThroughConnection(void) const; 00114 00115 00116 static SoType getClassTypeId(void); 00117 static SoNode * getByName(const SbName & name); 00118 static int getByName(const SbName & name, SoNodeList & l); 00119 00120 static void initClass(void); 00121 static void initClasses(void); 00122 00123 static uint32_t getNextNodeId(void); 00124 static int getActionMethodIndex(const SoType type); 00125 00126 static void getBoundingBoxS(SoAction * action, SoNode * node); 00127 static void GLRenderS(SoAction * action, SoNode * node); 00128 static void callbackS(SoAction * action, SoNode * node); 00129 static void getMatrixS(SoAction * action, SoNode * node); 00130 static void handleEventS(SoAction * action, SoNode * node); 00131 static void pickS(SoAction * action, SoNode * node); 00132 static void rayPickS(SoAction * action, SoNode * node); 00133 static void searchS(SoAction * action, SoNode * node); 00134 static void writeS(SoAction * action, SoNode * node); 00135 static void audioRenderS(SoAction * action, SoNode * node); 00136 static void getPrimitiveCountS(SoAction * action, SoNode * node); 00137 00138 protected: 00139 SoNode(void); 00140 virtual ~SoNode(); 00141 00142 virtual SbBool readInstance(SoInput * in, unsigned short flags); 00143 00144 static const SoFieldData ** getFieldDataPtr(void); 00145 00146 // These are necessary to avoid problems with us not exporting the 00147 // nextActionMethodIndex member into Win32 DLLs (we'll get 00148 // unresolved symbol for extension node classes if the SoSubNode 00149 // macros accesses the nextActionMethodIndex directly). 00150 static void setNextActionMethodIndex(int index); 00151 static int getNextActionMethodIndex(void); 00152 static void incNextActionMethodIndex(void); 00153 00154 static void setCompatibilityTypes(const SoType & nodetype, const uint32_t bitmask); 00155 00156 uint32_t uniqueId; 00157 static uint32_t nextUniqueId; 00158 static int nextActionMethodIndex; 00159 00160 private: 00161 static SoType classTypeId; 00162 uint32_t stateflags; 00163 void clearStateFlags(const unsigned int bits); 00164 void setStateFlags(const unsigned int bits); 00165 SbBool getState(const unsigned int bits) const; 00166 // OBSOLETE, only kept for Coin 2.x ABI compatibility. 00167 static SbDict * compatibilitydict; 00168 00169 static void cleanupClass(void); 00170 }; 00171 00172 #ifndef COIN_INTERNAL 00173 // For SGI / TGS Open Inventor compile-time compatibility. 00174 #include <Inventor/SoLists.h> 00175 #endif // COIN_INTERNAL 00176 00177 #endif // !COIN_SONODE_H
Copyright © 1998-2005 by Systems in Motion AS. All rights reserved.
Generated on Sun Apr 15 02:57:12 2007 for Coin by Doxygen. 1.5.2