00001 00020 #ifndef SUBSTACK_H_ 00021 #define SUBSTACK_H_ 00022 00023 #include <vector> 00024 #include "Node.hh" 00025 #include "Attribute.hh" 00026 00027 using namespace std; 00028 00029 namespace vrml1 { 00030 00031 class SubStack 00032 { 00033 public: 00034 SubStack(SubStack *Parent); 00035 virtual ~SubStack(); 00036 00037 SubStack* down(); 00038 SubStack* up(); 00039 00040 void pushNodeSeparator(); 00041 void pushNodeSwitch(); 00042 void pushNodeUse(string id); 00043 void pushNodeCube(); 00044 void pushNodeCone(); 00045 void pushNodeSphere(); 00046 void pushNodeCylinder(); 00047 void pushNodeMaterial(); 00048 void pushNodeMaterialBinding(); 00049 void pushNodeTranslation(); 00050 void pushNodeRotation(); 00051 void pushNodeScale(); 00052 void pushNodeMatrixTransform(); 00053 void pushNodeTransform(); 00054 void pushNodeOrthographicCamera(); 00055 void pushNodePerspectiveCamera(); 00056 void pushNodePointLight(); 00057 void pushNodeSpotLight(); 00058 void pushNodeDirectionalLight(); 00059 void pushNodeTexture2Transform(); 00060 void pushNodeShapeHints(); 00061 void pushNodeNormalBinding(); 00062 void pushNodeFontStyle(); 00063 void pushNodeLOD(); 00064 void pushNodeNormal(); 00065 void pushNodeCoordinate3(); 00066 void pushNodeTextureCoordinate2(); 00067 void pushNodePointSet(); 00068 void pushNodeIndexedLineSet(); 00069 void pushNodeIndexedFaceSet(); 00070 void pushNodeTexture2(); 00071 void pushNodeWWWInline(); 00072 void pushNodeWWWAnchor(); 00073 void pushNodeAsciiText(); 00074 00075 bool pushAttributeSFImage(string name); 00076 void pushAttributeSFString(string name); 00077 void pushAttributeSFBitmask(string name); 00078 void pushAttributeSFMatrix(string name); 00079 void pushAttributeSFRotation(string name); 00080 void pushAttributeSFVec2f(string name); 00081 void pushAttributeMFVec2f(string name); 00082 void pushAttributeSFVec3f(string name); 00083 void pushAttributeMFVec3f(string name); 00084 void pushAttributeSFColor(string name); 00085 void pushAttributeMFColor(string name); 00086 void pushAttributeSFFloat(string name); 00087 void pushAttributeMFFloat(string name); 00088 void pushAttributeSFLong(string name); 00089 void pushAttributeMFLong(string name); 00090 void pushAttributeSFBool(string name); 00091 00092 void pushString(string s); 00093 void pushFloat(float f); 00094 void pushInteger(int i); 00095 void pushBool(bool b); 00096 00097 string popString(); 00098 Node* lastNode(); 00099 00100 Node* getFirstNode(); 00101 Attribute* getFirstAttribute(); 00102 00103 private: 00104 SubStack *m_Parent; 00105 SubStack *m_Child; 00106 00107 vector<Node*> m_Nodes; 00108 vector<Attribute*> m_Attributes; 00109 00110 vector<string> m_Strings; 00111 vector<float> m_Floats; 00112 vector<int> m_Integers; 00113 vector<bool> m_Bools; 00114 }; 00115 00116 } 00117 00118 #endif /*SUBSTACK_H_*/