Coin Logo http://www.sim.no
http://www.coin3d.org

SoCallbackAction.h
1 #ifndef COIN_SOCALLBACKACTION_H
2 #define COIN_SOCALLBACKACTION_H
3 
4 /**************************************************************************\
5  *
6  * This file is part of the Coin 3D visualization library.
7  * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved.
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * ("GPL") version 2 as published by the Free Software Foundation.
12  * See the file LICENSE.GPL at the root directory of this source
13  * distribution for additional information about the GNU GPL.
14  *
15  * For using Coin with software that can not be combined with the GNU
16  * GPL, and for taking advantage of the additional benefits of our
17  * support services, please contact Systems in Motion about acquiring
18  * a Coin Professional Edition License.
19  *
20  * See http://www.coin3d.org/ for more information.
21  *
22  * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY.
23  * http://www.sim.no/ sales@sim.no coin-support@coin3d.org
24  *
25 \**************************************************************************/
26 
27 // FIXME: Support getTextureFilename[s]() ? (kintel 20011205)
28 
29 #include <Inventor/actions/SoAction.h>
30 #include <Inventor/actions/SoSubAction.h>
31 #include <Inventor/elements/SoDecimationTypeElement.h>
32 #include <Inventor/lists/SbList.h>
33 #include <Inventor/nodes/SoComplexity.h>
34 #include <Inventor/nodes/SoDrawStyle.h>
35 #include <Inventor/nodes/SoLightModel.h>
36 #include <Inventor/nodes/SoMaterialBinding.h>
37 #include <Inventor/nodes/SoNormalBinding.h>
38 #include <Inventor/nodes/SoPickStyle.h>
39 #include <Inventor/nodes/SoShapeHints.h>
40 #include <Inventor/nodes/SoTexture2.h>
41 #include <Inventor/nodes/SoTextureCoordinateBinding.h>
42 #include <Inventor/nodes/SoUnits.h>
43 
44 class SbColor;
45 class SbMatrix;
46 class SbVec2f;
47 class SbVec2s;
48 class SbVec3f;
49 class SbVec4f;
50 class SbViewVolume;
51 class SoCallbackAction;
52 class SoCallbackData;
53 class SoPrimitiveVertex;
54 class SoShape;
55 class SbViewportRegion;
56 
57 typedef void SoTriangleCB(void * userdata, SoCallbackAction * action,
58  const SoPrimitiveVertex * v1,
59  const SoPrimitiveVertex * v2,
60  const SoPrimitiveVertex * v3);
61 
62 typedef void SoLineSegmentCB(void * userdata, SoCallbackAction * action,
63  const SoPrimitiveVertex * v1,
64  const SoPrimitiveVertex * v2);
65 
66 typedef void SoPointCB(void * userdata, SoCallbackAction * action,
67  const SoPrimitiveVertex * v);
68 
69 
70 class COIN_DLL_API SoCallbackAction : public SoAction {
71  typedef SoAction inherited;
72 
73  SO_ACTION_HEADER(SoCallbackAction);
74 
75 public:
76  SoCallbackAction(void);
78 
79  virtual ~SoCallbackAction();
80 
81  static void initClass(void);
82 
83  void setViewportRegion(const SbViewportRegion & vp);
84 
85  enum Response { CONTINUE, ABORT, PRUNE };
86 
87  typedef Response SoCallbackActionCB(void * userdata,
88  SoCallbackAction * action,
89  const SoNode * node);
90 
91  void addPreCallback(const SoType type, SoCallbackActionCB * cb, void * userdata);
92  void addPostCallback(const SoType type, SoCallbackActionCB * cb, void * userdata);
93 
94  void addPreTailCallback(SoCallbackActionCB * cb, void * userdata);
95  void addPostTailCallback(SoCallbackActionCB * cb, void * userdata);
96 
97  void addTriangleCallback(const SoType type, SoTriangleCB * cb, void * userdata);
98  void addLineSegmentCallback(const SoType type, SoLineSegmentCB * cb, void * userdata);
99  void addPointCallback(const SoType type, SoPointCB * cb, void * userdata);
100 
101  SoDecimationTypeElement::Type getDecimationType(void) const;
102  float getDecimationPercentage(void) const;
103  float getComplexity(void) const;
104  SoComplexity::Type getComplexityType(void) const;
105  int32_t getNumCoordinates(void) const;
106  const SbVec3f & getCoordinate3(const int index) const;
107  const SbVec4f & getCoordinate4(const int index) const;
108  SoDrawStyle::Style getDrawStyle(void) const;
109  unsigned short getLinePattern(void) const;
110  float getLineWidth(void) const;
111  float getPointSize(void) const;
112  const SbName & getFontName(void) const;
113  float getFontSize(void) const;
114  SoLightModel::Model getLightModel(void) const;
115  const SbVec3f & getLightAttenuation(void) const;
116  void getMaterial(SbColor & ambient, SbColor & diffuse,
117  SbColor & specular, SbColor & emission,
118  float & shininess, float & transparency,
119  const int index = 0) const;
120  SoMaterialBinding::Binding getMaterialBinding(void) const;
121  uint32_t getNumNormals(void) const;
122  const SbVec3f & getNormal(const int index) const;
123  SoNormalBinding::Binding getNormalBinding(void) const;
124  int32_t getNumProfileCoordinates(void) const;
125  const SbVec2f & getProfileCoordinate2(const int index) const;
126  const SbVec3f & getProfileCoordinate3(const int index) const;
127  const SoNodeList & getProfile(void) const;
128  SoShapeHints::VertexOrdering getVertexOrdering(void) const;
129  SoShapeHints::ShapeType getShapeType(void) const;
130  SoShapeHints::FaceType getFaceType(void) const;
131  float getCreaseAngle(void) const;
132  int32_t getNumTextureCoordinates(void) const;
133  const SbVec2f & getTextureCoordinate2(const int index) const;
134  const SbVec3f & getTextureCoordinate3(const int index) const;
135  const SbVec4f & getTextureCoordinate4(const int index) const;
136  SoTextureCoordinateBinding::Binding getTextureCoordinateBinding(void) const;
137  const SbColor & getTextureBlendColor(void) const;
138  const unsigned char * getTextureImage(SbVec2s & size, int & numcomps) const;
139  const unsigned char * getTextureImage(SbVec3s & size, int & numcomps) const;
140  const SbMatrix & getTextureMatrix(void) const;
141  SoTexture2::Model getTextureModel(void) const;
142  SoTexture2::Wrap getTextureWrapS(void) const;
143  SoTexture2::Wrap getTextureWrapT(void) const;
144  SoTexture2::Wrap getTextureWrapR(void) const;
145  const SbMatrix & getModelMatrix(void) const;
146  SoUnits::Units getUnits(void) const;
147  float getFocalDistance(void) const;
148  const SbMatrix & getProjectionMatrix(void) const;
149  const SbMatrix & getViewingMatrix(void) const;
150  const SbViewVolume & getViewVolume(void) const;
151  const SbViewportRegion & getViewportRegion(void) const;
152  SoPickStyle::Style getPickStyle(void) const;
153  int32_t getSwitch(void) const;
154 
155  Response getCurrentResponse(void) const;
156  void invokePreCallbacks(const SoNode * const node);
157  void invokePostCallbacks(const SoNode * const node);
158  void invokeTriangleCallbacks(const SoShape * const shape,
159  const SoPrimitiveVertex * const v1,
160  const SoPrimitiveVertex * const v2,
161  const SoPrimitiveVertex * const v3);
162  void invokeLineSegmentCallbacks(const SoShape * const shape,
163  const SoPrimitiveVertex * const v1,
164  const SoPrimitiveVertex * const v2);
165  void invokePointCallbacks(const SoShape * const shape,
166  const SoPrimitiveVertex * const v);
167 
168  SbBool shouldGeneratePrimitives(const SoShape * shape) const;
169 
170  virtual SoNode * getCurPathTail(void);
171  void setCurrentNode(SoNode * const node);
172 
173 protected:
174  virtual void beginTraversal(SoNode * node);
175 
176 private:
177  void commonConstructor(void);
178  class SoCallbackActionP * pimpl;
179  friend class SoCallbackActionP;
180 };
181 
182 #endif // !COIN_SOCALLBACKACTION_H
SoCallbackAction::getTextureCoordinate4
const SbVec4f & getTextureCoordinate4(const int index) const
Definition: SoCallbackAction.cpp:854
SoCallbackAction::Response
Response
Definition: SoCallbackAction.h:85
SoPointSizeElement::get
static float get(SoState *const state)
Definition: SoPointSizeElement.cpp:92
SoCallbackAction::getModelMatrix
const SbMatrix & getModelMatrix(void) const
Definition: SoCallbackAction.cpp:953
SoCallbackAction::getMaterial
void getMaterial(SbColor &ambient, SbColor &diffuse, SbColor &specular, SbColor &emission, float &shininess, float &transparency, const int index=0) const
Definition: SoCallbackAction.cpp:689
SoCallbackAction::~SoCallbackAction
virtual ~SoCallbackAction()
Definition: SoCallbackAction.cpp:416
SoCallbackAction::getFontSize
float getFontSize(void) const
Definition: SoCallbackAction.cpp:661
SbName
The SbName class stores strings by reference.
Definition: SbName.h:31
SoCallbackAction::setCurrentNode
void setCurrentNode(SoNode *const node)
Definition: SoCallbackAction.cpp:1188
SbVec2f
The SbVec2f class is a 2 dimensional vector with floating point coordinates.
Definition: SbVec2f.h:36
SoCallbackAction::getMaterialBinding
SoMaterialBinding::Binding getMaterialBinding(void) const
Definition: SoCallbackAction.cpp:706
SoCallbackAction::getDecimationPercentage
float getDecimationPercentage(void) const
Definition: SoCallbackAction.cpp:560
SoCallbackAction::ABORT
@ ABORT
Definition: SoCallbackAction.h:85
SoCallbackAction::getDrawStyle
SoDrawStyle::Style getDrawStyle(void) const
Definition: SoCallbackAction.cpp:616
SoShape
The SoShape class is the superclass for geometry shapes.
Definition: SoShape.h:43
SbMatrix
The SbMatrix class is a 4x4 dimensional representation of a matrix.
Definition: SbMatrix.h:37
SoCallbackAction::addPostTailCallback
void addPostTailCallback(SoCallbackActionCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:501
SoCallbackAction::SoCallbackActionCB
Response SoCallbackActionCB(void *userdata, SoCallbackAction *action, const SoNode *node)
Definition: SoCallbackAction.h:87
SoCallbackAction::getTextureWrapT
SoTexture2::Wrap getTextureWrapT(void) const
Definition: SoCallbackAction.cpp:931
SoCallbackAction::getTextureCoordinate3
const SbVec3f & getTextureCoordinate3(const int index) const
Definition: SoCallbackAction.cpp:844
SoCallbackAction::getViewingMatrix
const SbMatrix & getViewingMatrix(void) const
Definition: SoCallbackAction.cpp:989
SoCallbackAction::getLightModel
SoLightModel::Model getLightModel(void) const
Definition: SoCallbackAction.cpp:670
SoCallbackAction::addPreTailCallback
void addPreTailCallback(SoCallbackActionCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:488
SoCallbackAction::getDecimationType
SoDecimationTypeElement::Type getDecimationType(void) const
Definition: SoCallbackAction.cpp:551
SoLineWidthElement::get
static float get(SoState *const state)
Definition: SoLineWidthElement.cpp:89
SoAction::beginTraversal
virtual void beginTraversal(SoNode *node)
Definition: SoAction.cpp:1208
SoCallbackAction::getProjectionMatrix
const SbMatrix & getProjectionMatrix(void) const
Definition: SoCallbackAction.cpp:980
SoCallbackAction::getFocalDistance
float getFocalDistance(void) const
Definition: SoCallbackAction.cpp:971
SoCallbackAction::getTextureBlendColor
const SbColor & getTextureBlendColor(void) const
Definition: SoCallbackAction.cpp:873
SoCallbackAction::getTextureMatrix
const SbMatrix & getTextureMatrix(void) const
Definition: SoCallbackAction.cpp:904
SoCallbackAction::SoCallbackAction
SoCallbackAction(void)
Definition: SoCallbackAction.cpp:364
SoCallbackAction::getPickStyle
SoPickStyle::Style getPickStyle(void) const
Definition: SoCallbackAction.cpp:1018
SoAction
The SoAction class is the base class for all traversal actions.
Definition: SoAction.h:67
SoCallbackAction::shouldGeneratePrimitives
SbBool shouldGeneratePrimitives(const SoShape *shape) const
Definition: SoCallbackAction.cpp:1161
SoCallbackAction::getNormal
const SbVec3f & getNormal(const int index) const
Definition: SoCallbackAction.cpp:725
SoCallbackAction::getUnits
SoUnits::Units getUnits(void) const
Definition: SoCallbackAction.cpp:962
SoCallbackAction::invokePreCallbacks
void invokePreCallbacks(const SoNode *const node)
Definition: SoCallbackAction.cpp:1049
SoCallbackAction::getProfileCoordinate2
const SbVec2f & getProfileCoordinate2(const int index) const
Definition: SoCallbackAction.cpp:753
SoCallbackAction::invokeLineSegmentCallbacks
void invokeLineSegmentCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)
Definition: SoCallbackAction.cpp:1130
SoCallbackAction::addTriangleCallback
void addTriangleCallback(const SoType type, SoTriangleCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:515
SoType::getAllDerivedFrom
static int getAllDerivedFrom(const SoType type, SoTypeList &list)
Definition: SoType.cpp:764
SoCallbackAction::getNormalBinding
SoNormalBinding::Binding getNormalBinding(void) const
Definition: SoCallbackAction.cpp:734
SbList::append
void append(const Type item)
Definition: SbList.h:98
SoCallbackAction::addPostCallback
void addPostCallback(const SoType type, SoCallbackActionCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:477
SoUnits::Units
Units
Definition: SoUnits.h:42
SoTextureCoordinateBinding::Binding
Binding
Definition: SoTextureCoordinateBinding.h:40
SoShapeHints::VertexOrdering
VertexOrdering
Definition: SoShapeHints.h:41
SoDrawStyle::Style
Style
Definition: SoDrawStyle.h:42
SoCallbackAction::getPointSize
float getPointSize(void) const
Definition: SoCallbackAction.cpp:643
SoCallbackAction::invokeTriangleCallbacks
void invokeTriangleCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)
Definition: SoCallbackAction.cpp:1114
SoAction::getPathAppliedTo
SoPath * getPathAppliedTo(void) const
Definition: SoAction.cpp:831
SoCallbackAction::setViewportRegion
void setViewportRegion(const SbViewportRegion &vp)
Definition: SoCallbackAction.cpp:400
SbVec2s
The SbVec2s class is a 2 dimensional vector with short integer coordinates.
Definition: SbVec2s.h:37
SoCallbackAction::getCurPathTail
virtual SoNode * getCurPathTail(void)
Definition: SoCallbackAction.cpp:1178
SoShapeHints::ShapeType
ShapeType
Definition: SoShapeHints.h:47
SoCallbackAction::getLineWidth
float getLineWidth(void) const
Definition: SoCallbackAction.cpp:634
SoType
The SoType class is the basis for the run-time type system in Coin.
Definition: SoType.h:50
SoCallbackAction::getShapeType
SoShapeHints::ShapeType getShapeType(void) const
Definition: SoCallbackAction.cpp:790
SoCallbackAction::getComplexity
float getComplexity(void) const
Definition: SoCallbackAction.cpp:569
SbList
The SbList class is a template container class for lists.
Definition: SoType.h:46
SoCallbackAction::getNumNormals
uint32_t getNumNormals(void) const
Definition: SoCallbackAction.cpp:716
SoCallbackAction::getTextureCoordinateBinding
SoTextureCoordinateBinding::Binding getTextureCoordinateBinding(void) const
Definition: SoCallbackAction.cpp:863
SbList::getLength
int getLength(void) const
Definition: SbList.h:145
SoTexture2::Model
Model
Definition: SoTexture2.h:47
SoCallbackAction::getTextureModel
SoTexture2::Model getTextureModel(void) const
Definition: SoCallbackAction.cpp:913
SoCallbackAction::getTextureCoordinate2
const SbVec2f & getTextureCoordinate2(const int index) const
Definition: SoCallbackAction.cpp:830
SoPrimitiveVertex
The SoPrimitiveVertex class represents a single vertex of a generated primitive.
Definition: SoPrimitiveVertex.h:33
SoTypeList
The SoTypeList class is a container class for arrays of SoType objects.
Definition: SoTypeList.h:30
SoCallbackAction::getCurrentResponse
Response getCurrentResponse(void) const
Definition: SoCallbackAction.cpp:1038
SbColor
The SbColor class contains the red, green and blue components which make up a color value.
Definition: SbColor.h:30
SoCallbackAction::getNumTextureCoordinates
int32_t getNumTextureCoordinates(void) const
Definition: SoCallbackAction.cpp:820
SoAction::getState
SoState * getState(void) const
Definition: SoAction.cpp:1028
SoCallbackAction::getViewVolume
const SbViewVolume & getViewVolume(void) const
Definition: SoCallbackAction.cpp:998
SoShape::getTypeId
virtual SoType getTypeId(void) const
Definition: SoShape.cpp:320
SoCallbackAction::getCreaseAngle
float getCreaseAngle(void) const
Definition: SoCallbackAction.cpp:810
SoTexture2::Wrap
Wrap
Definition: SoTexture2.h:54
SoCallbackAction::getVertexOrdering
SoShapeHints::VertexOrdering getVertexOrdering(void) const
Definition: SoCallbackAction.cpp:780
SoAction::getWhatAppliedTo
AppliedCode getWhatAppliedTo(void) const
Definition: SoAction.cpp:805
SoCallbackAction::getNumProfileCoordinates
int32_t getNumProfileCoordinates(void) const
Definition: SoCallbackAction.cpp:744
SbVec3f
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition: SbVec3f.h:37
SoCallbackAction::CONTINUE
@ CONTINUE
Definition: SoCallbackAction.h:85
SoCallbackAction::invokePointCallbacks
void invokePointCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v)
Definition: SoCallbackAction.cpp:1145
SoCallbackAction::getLinePattern
unsigned short getLinePattern(void) const
Definition: SoCallbackAction.cpp:625
SoCallbackAction::addPointCallback
void addPointCallback(const SoType type, SoPointCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:539
SoCallbackAction
The SoCallbackAction class invokes callbacks at specific nodes.
Definition: SoCallbackAction.h:70
SoCallbackAction::getTextureWrapR
SoTexture2::Wrap getTextureWrapR(void) const
Definition: SoCallbackAction.cpp:944
SoCallbackAction::getTextureWrapS
SoTexture2::Wrap getTextureWrapS(void) const
Definition: SoCallbackAction.cpp:922
SoCallbackAction::addLineSegmentCallback
void addLineSegmentCallback(const SoType type, SoLineSegmentCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:527
SoCallbackAction::getComplexityType
SoComplexity::Type getComplexityType(void) const
Definition: SoCallbackAction.cpp:578
SbViewportRegion
The SbViewportRegion class is a viewport within a full window.
Definition: SbViewportRegion.h:31
SoShapeHints::FaceType
FaceType
Definition: SoShapeHints.h:52
SoBase::getTypeId
virtual SoType getTypeId(void) const =0
SoPickStyle::Style
Style
Definition: SoPickStyle.h:40
SoCallbackAction::getCoordinate3
const SbVec3f & getCoordinate3(const int index) const
Definition: SoCallbackAction.cpp:597
SoLightModel::Model
Model
Definition: SoLightModel.h:40
SoNormalBinding::Binding
Binding
Definition: SoNormalBinding.h:40
SoCallbackAction::getProfileCoordinate3
const SbVec3f & getProfileCoordinate3(const int index) const
Definition: SoCallbackAction.cpp:762
SoAction::initClass
static void initClass(void)
Definition: SoAction.cpp:392
SbVec3s
The SbVec3s class is a 3 dimensional vector with short integer coordinates.
Definition: SbVec3s.h:36
SbViewVolume
The SbViewVolume class is a viewing volume in 3D space.
Definition: SbViewVolume.h:41
SoCallbackAction::getCoordinate4
const SbVec4f & getCoordinate4(const int index) const
Definition: SoCallbackAction.cpp:607
SoNodeList
The SoNodeList class is a container for pointers to SoNode objects.
Definition: SoNodeList.h:31
SoCallbackAction::getTextureImage
const unsigned char * getTextureImage(SbVec2s &size, int &numcomps) const
Definition: SoCallbackAction.cpp:882
SoOverrideElement
The SoOverrideElement maintains a list of overridable elements and a list over which elements should ...
Definition: SoOverrideElement.h:32
SoNode
The SoNode class is the base class for nodes used in scene graphs.
Definition: SoNode.h:47
SoCallbackAction::PRUNE
@ PRUNE
Definition: SoCallbackAction.h:85
SoAction::traverse
void traverse(SoNode *const node)
Definition: SoAction.cpp:902
SoCallbackAction::beginTraversal
virtual void beginTraversal(SoNode *node)
Definition: SoCallbackAction.cpp:1196
SoCallbackAction::getLightAttenuation
const SbVec3f & getLightAttenuation(void) const
Definition: SoCallbackAction.cpp:679
SoMaterialBinding::Binding
Binding
Definition: SoMaterialBinding.h:40
SoAction::getCurPathTail
virtual SoNode * getCurPathTail(void)
Definition: SoAction.cpp:1053
SoCallbackAction::getNumCoordinates
int32_t getNumCoordinates(void) const
Definition: SoCallbackAction.cpp:587
SoCallbackAction::getSwitch
int32_t getSwitch(void) const
Definition: SoCallbackAction.cpp:1027
SoComplexity::Type
Type
Definition: SoComplexity.h:41
SoType::getData
uint16_t getData(void) const
Definition: SoType.cpp:641
SoCallbackAction::getProfile
const SoNodeList & getProfile(void) const
Definition: SoCallbackAction.cpp:771
SoCallbackAction::getViewportRegion
const SbViewportRegion & getViewportRegion(void) const
Definition: SoCallbackAction.cpp:1009
SoCallbackAction::addPreCallback
void addPreCallback(const SoType type, SoCallbackActionCB *cb, void *userdata)
Definition: SoCallbackAction.cpp:466
SoCallbackAction::getFaceType
SoShapeHints::FaceType getFaceType(void) const
Definition: SoCallbackAction.cpp:800
SbVec4f
The SbVec4f class is a 4 dimensional vector with floating point coordinates.
Definition: SbVec4f.h:34
SoAction::setTerminated
void setTerminated(const SbBool flag)
Definition: SoAction.cpp:1233
SoAction::state
SoState * state
Definition: SoAction.h:132
SoCallbackAction::getFontName
const SbName & getFontName(void) const
Definition: SoCallbackAction.cpp:652
SoCallbackAction::invokePostCallbacks
void invokePostCallbacks(const SoNode *const node)
Definition: SoCallbackAction.cpp:1082

Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.

Generated on Wed Jul 24 2019 for Coin by Doxygen. 1.8.17