![]() |
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-2004 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 <URL:http://www.coin3d.org/> for more information. 00021 * 00022 * Systems in Motion, Teknobyen, Abels Gate 5, 7030 Trondheim, NORWAY. 00023 * <URL:http://www.sim.no/>. 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 }; 00073 00074 static uint32_t getCompatibilityTypes(const SoType & nodetype); 00075 void setNodeType(const NodeType type); 00076 NodeType getNodeType(void) const; 00077 00078 virtual SoNode * copy(SbBool copyconnections = FALSE) const; 00079 virtual SbBool affectsState(void) const; 00080 00081 virtual void doAction(SoAction * action); 00082 virtual void GLRender(SoGLRenderAction * action); 00083 virtual void GLRenderBelowPath(SoGLRenderAction * action); 00084 virtual void GLRenderInPath(SoGLRenderAction * action); 00085 virtual void GLRenderOffPath(SoGLRenderAction * action); 00086 virtual void callback(SoCallbackAction * action); 00087 virtual void getBoundingBox(SoGetBoundingBoxAction * action); 00088 virtual void getMatrix(SoGetMatrixAction * action); 00089 virtual void handleEvent(SoHandleEventAction * action); 00090 virtual void pick(SoPickAction * action); 00091 virtual void rayPick(SoRayPickAction * action); 00092 virtual void search(SoSearchAction * action); 00093 virtual void write(SoWriteAction * action); 00094 virtual void audioRender(SoAudioRenderAction * action); 00095 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); 00096 00097 virtual void grabEventsSetup(void); 00098 virtual void grabEventsCleanup(void); 00099 00100 virtual void startNotify(void); 00101 virtual void notify(SoNotList * l); 00102 00103 uint32_t getNodeId(void) const; 00104 virtual SoChildList * getChildren(void) const; 00105 00106 virtual void writeInstance(SoOutput * out); 00107 virtual SoNode * addToCopyDict(void) const; 00108 virtual void copyContents(const SoFieldContainer * from, 00109 SbBool copyconnections); 00110 virtual SoFieldContainer * copyThroughConnection(void) const; 00111 00112 00113 static SoType getClassTypeId(void); 00114 static SoNode * getByName(const SbName & name); 00115 static int getByName(const SbName & name, SoNodeList & l); 00116 00117 static void initClass(void); 00118 static void initClasses(void); 00119 00120 static uint32_t getNextNodeId(void); 00121 static int getActionMethodIndex(const SoType type); 00122 00123 static void getBoundingBoxS(SoAction * action, SoNode * node); 00124 static void GLRenderS(SoAction * action, SoNode * node); 00125 static void callbackS(SoAction * action, SoNode * node); 00126 static void getMatrixS(SoAction * action, SoNode * node); 00127 static void handleEventS(SoAction * action, SoNode * node); 00128 static void pickS(SoAction * action, SoNode * node); 00129 static void rayPickS(SoAction * action, SoNode * node); 00130 static void searchS(SoAction * action, SoNode * node); 00131 static void writeS(SoAction * action, SoNode * node); 00132 static void audioRenderS(SoAction * action, SoNode * node); 00133 static void getPrimitiveCountS(SoAction * action, SoNode * node); 00134 00135 protected: 00136 SoNode(void); 00137 virtual ~SoNode(); 00138 00139 virtual SbBool readInstance(SoInput * in, unsigned short flags); 00140 00141 static const SoFieldData ** getFieldDataPtr(void); 00142 00143 // These are necessary to avoid problems with us not exporting the 00144 // nextActionMethodIndex member into Win32 DLLs (we'll get 00145 // unresolved symbol for extension node classes if the SoSubNode 00146 // macros accesses the nextActionMethodIndex directly). 00147 static void setNextActionMethodIndex(int index); 00148 static int getNextActionMethodIndex(void); 00149 static void incNextActionMethodIndex(void); 00150 00151 static void setCompatibilityTypes(const SoType & nodetype, const uint32_t bitmask); 00152 00153 uint32_t uniqueId; 00154 static uint32_t nextUniqueId; 00155 static int nextActionMethodIndex; 00156 00157 private: 00158 static SoType classTypeId; 00159 uint32_t stateflags; 00160 void clearStateFlags(const unsigned int bits); 00161 void setStateFlags(const unsigned int bits); 00162 SbBool getState(const unsigned int bits) const; 00163 static SbDict * compatibilitydict; 00164 static void cleanupClass(void); 00165 }; 00166 00167 #endif // !COIN_SONODE_H
Copyright © 1998-2003 by Systems in Motion AS. All rights reserved.
Generated on Sat Apr 10 08:33:07 2004 for Coin by Doxygen. 1.3.6-20040222