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