Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

SoCallbackAction.h

00001 /**************************************************************************\ 00002 * 00003 * This file is part of the Coin 3D visualization library. 00004 * Copyright (C) 1998-2003 by Systems in Motion. All rights reserved. 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public License 00008 * version 2.1 as published by the Free Software Foundation. See the 00009 * file LICENSE.LGPL at the root directory of the distribution for 00010 * more details. 00011 * 00012 * If you want to use Coin for applications not compatible with the 00013 * LGPL, please contact SIM to acquire a Professional Edition license. 00014 * 00015 * Systems in Motion, Teknobyen, Abels Gate 5, 7030 Trondheim, NORWAY 00016 * http://www.sim.no support@sim.no Voice: +47 22114160 Fax: +47 22207097 00017 * 00018 \**************************************************************************/ 00019 00020 #ifndef COIN_SOCALLBACKACTION_H 00021 #define COIN_SOCALLBACKACTION_H 00022 00023 #include <Inventor/actions/SoAction.h> 00024 #include <Inventor/actions/SoSubAction.h> 00025 #include <Inventor/elements/SoDecimationTypeElement.h> 00026 #include <Inventor/lists/SbList.h> 00027 #include <Inventor/nodes/SoComplexity.h> 00028 #include <Inventor/nodes/SoDrawStyle.h> 00029 #include <Inventor/nodes/SoLightModel.h> 00030 #include <Inventor/nodes/SoMaterialBinding.h> 00031 #include <Inventor/nodes/SoNormalBinding.h> 00032 #include <Inventor/nodes/SoPickStyle.h> 00033 #include <Inventor/nodes/SoShapeHints.h> 00034 #include <Inventor/nodes/SoTexture2.h> 00035 #include <Inventor/nodes/SoTextureCoordinateBinding.h> 00036 #include <Inventor/nodes/SoUnits.h> 00037 00038 class SbColor; 00039 class SbMatrix; 00040 class SbVec2f; 00041 class SbVec2s; 00042 class SbVec3f; 00043 class SbVec4f; 00044 class SbViewVolume; 00045 class SoCallbackAction; 00046 class SoCallbackData; 00047 class SoPrimitiveVertex; 00048 class SoShape; 00049 class SbViewportRegion; 00050 00051 typedef void SoTriangleCB(void * userdata, SoCallbackAction * action, 00052 const SoPrimitiveVertex * v1, 00053 const SoPrimitiveVertex * v2, 00054 const SoPrimitiveVertex * v3); 00055 00056 typedef void SoLineSegmentCB(void * userdata, SoCallbackAction * action, 00057 const SoPrimitiveVertex * v1, 00058 const SoPrimitiveVertex * v2); 00059 00060 typedef void SoPointCB(void * userdata, SoCallbackAction * action, 00061 const SoPrimitiveVertex * v); 00062 00063 00064 class COIN_DLL_API SoCallbackAction : public SoAction { 00065 typedef SoAction inherited; 00066 00067 SO_ACTION_HEADER(SoCallbackAction); 00068 00069 public: 00070 SoCallbackAction(void); 00071 SoCallbackAction(const SbViewportRegion & vp); 00072 00073 virtual ~SoCallbackAction(); 00074 00075 static void initClass(void); 00076 00077 void setViewportRegion(const SbViewportRegion & vp); 00078 00079 enum Response { CONTINUE, ABORT, PRUNE }; 00080 00081 typedef Response SoCallbackActionCB(void * userdata, 00082 SoCallbackAction * action, 00083 const SoNode * node); 00084 00085 void addPreCallback(const SoType type, SoCallbackActionCB * cb, void * userdata); 00086 void addPostCallback(const SoType type, SoCallbackActionCB * cb, void * userdata); 00087 00088 void addPreTailCallback(SoCallbackActionCB * cb, void * userdata); 00089 void addPostTailCallback(SoCallbackActionCB * cb, void * userdata); 00090 00091 void addTriangleCallback(const SoType type, SoTriangleCB * cb, void * userdata); 00092 void addLineSegmentCallback(const SoType type, SoLineSegmentCB * cb, void * userdata); 00093 void addPointCallback(const SoType type, SoPointCB * cb, void * userdata); 00094 00095 SoDecimationTypeElement::Type getDecimationType(void) const; 00096 float getDecimationPercentage(void) const; 00097 float getComplexity(void) const; 00098 SoComplexity::Type getComplexityType(void) const; 00099 int32_t getNumCoordinates(void) const; 00100 const SbVec3f & getCoordinate3(const int index) const; 00101 const SbVec4f & getCoordinate4(const int index) const; 00102 SoDrawStyle::Style getDrawStyle(void) const; 00103 unsigned short getLinePattern(void) const; 00104 float getLineWidth(void) const; 00105 float getPointSize(void) const; 00106 const SbName & getFontName(void) const; 00107 float getFontSize(void) const; 00108 SoLightModel::Model getLightModel(void) const; 00109 const SbVec3f & getLightAttenuation(void) const; 00110 void getMaterial(SbColor & ambient, SbColor & diffuse, 00111 SbColor & specular, SbColor & emission, 00112 float & shininess, float & transparency, 00113 const int index = 0) const; 00114 SoMaterialBinding::Binding getMaterialBinding(void) const; 00115 uint32_t getNumNormals(void) const; 00116 const SbVec3f & getNormal(const int index) const; 00117 SoNormalBinding::Binding getNormalBinding(void) const; 00118 int32_t getNumProfileCoordinates(void) const; 00119 const SbVec2f & getProfileCoordinate2(const int index) const; 00120 const SbVec3f & getProfileCoordinate3(const int index) const; 00121 const SoNodeList & getProfile(void) const; 00122 SoShapeHints::VertexOrdering getVertexOrdering(void) const; 00123 SoShapeHints::ShapeType getShapeType(void) const; 00124 SoShapeHints::FaceType getFaceType(void) const; 00125 float getCreaseAngle(void) const; 00126 int32_t getNumTextureCoordinates(void) const; 00127 const SbVec2f & getTextureCoordinate2(const int index) const; 00128 const SbVec4f & getTextureCoordinate4(const int index) const; 00129 SoTextureCoordinateBinding::Binding getTextureCoordinateBinding(void) const; 00130 const SbColor & getTextureBlendColor(void) const; 00131 const unsigned char * getTextureImage(SbVec2s & size, int & numcomps) const; 00132 const SbMatrix & getTextureMatrix(void) const; 00133 SoTexture2::Model getTextureModel(void) const; 00134 SoTexture2::Wrap getTextureWrapS(void) const; 00135 SoTexture2::Wrap getTextureWrapT(void) const; 00136 const SbMatrix & getModelMatrix(void) const; 00137 SoUnits::Units getUnits(void) const; 00138 float getFocalDistance(void) const; 00139 const SbMatrix & getProjectionMatrix(void) const; 00140 const SbMatrix & getViewingMatrix(void) const; 00141 const SbViewVolume & getViewVolume(void) const; 00142 const SbViewportRegion & getViewportRegion(void) const; 00143 SoPickStyle::Style getPickStyle(void) const; 00144 int32_t getSwitch(void) const; 00145 00146 Response getCurrentResponse(void) const; 00147 void invokePreCallbacks(const SoNode * const node); 00148 void invokePostCallbacks(const SoNode * const node); 00149 void invokeTriangleCallbacks(const SoShape * const shape, 00150 const SoPrimitiveVertex * const v1, 00151 const SoPrimitiveVertex * const v2, 00152 const SoPrimitiveVertex * const v3); 00153 void invokeLineSegmentCallbacks(const SoShape * const shape, 00154 const SoPrimitiveVertex * const v1, 00155 const SoPrimitiveVertex * const v2); 00156 void invokePointCallbacks(const SoShape * const shape, 00157 const SoPrimitiveVertex * const v); 00158 00159 SbBool shouldGeneratePrimitives(const SoShape * shape) const; 00160 00161 virtual SoNode * getCurPathTail(void); 00162 void setCurrentNode(SoNode * const node); 00163 00164 protected: 00165 virtual void beginTraversal(SoNode * node); 00166 00167 private: 00168 void commonConstructor(void); 00169 class SoCallbackActionP * pimpl; 00170 friend class SoCallbackActionP; 00171 }; 00172 00173 00174 00175 #endif // !COIN_SOCALLBACKACTION_H

Generated on Tue Jul 27 23:53:00 2004 for Coin by doxygen 1.3.7