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
44class SbColor;
45class SbMatrix;
46class SbVec2f;
47class SbVec2s;
48class SbVec3f;
49class SbVec4f;
50class SbViewVolume;
52class SoCallbackData;
54class SoShape;
56
57typedef void SoTriangleCB(void * userdata, SoCallbackAction * action,
58 const SoPrimitiveVertex * v1,
59 const SoPrimitiveVertex * v2,
60 const SoPrimitiveVertex * v3);
61
62typedef void SoLineSegmentCB(void * userdata, SoCallbackAction * action,
63 const SoPrimitiveVertex * v1,
64 const SoPrimitiveVertex * v2);
65
66typedef void SoPointCB(void * userdata, SoCallbackAction * action,
67 const SoPrimitiveVertex * v);
68
69
70class COIN_DLL_API SoCallbackAction : public SoAction {
71 typedef SoAction inherited;
72
73 SO_ACTION_HEADER(SoCallbackAction);
74
75public:
76 SoCallbackAction(void);
78
79 virtual ~SoCallbackAction();
80
81 static void initClass(void);
82
83 void setViewportRegion(const SbViewportRegion & vp);
84
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;
105 int32_t getNumCoordinates(void) const;
106 const SbVec3f & getCoordinate3(const int index) const;
107 const SbVec4f & getCoordinate4(const int index) 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;
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;
121 uint32_t getNumNormals(void) const;
122 const SbVec3f & getNormal(const int index) 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;
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;
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;
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;
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
173protected:
174 virtual void beginTraversal(SoNode * node);
175
176private:
177 void commonConstructor(void);
178 class SoCallbackActionP * pimpl;
179 friend class SoCallbackActionP;
180};
181
182#endif // !COIN_SOCALLBACKACTION_H
The SbColor class contains the red, green and blue components which make up a color value.
Definition SbColor.h:30
The SbMatrix class is a 4x4 dimensional representation of a matrix.
Definition SbMatrix.h:37
The SbName class stores strings by reference.
Definition SbName.h:31
The SbVec2f class is a 2 dimensional vector with floating point coordinates.
Definition SbVec2f.h:36
The SbVec2s class is a 2 dimensional vector with short integer coordinates.
Definition SbVec2s.h:37
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition SbVec3f.h:37
The SbVec3s class is a 3 dimensional vector with short integer coordinates.
Definition SbVec3s.h:36
The SbVec4f class is a 4 dimensional vector with floating point coordinates.
Definition SbVec4f.h:34
The SbViewVolume class is a viewing volume in 3D space.
Definition SbViewVolume.h:41
The SbViewportRegion class is a viewport within a full window.
Definition SbViewportRegion.h:31
virtual SoNode * getCurPathTail(void)
Definition SoAction.cpp:1053
static void initClass(void)
Definition SoAction.cpp:392
SoAction(void)
Definition SoAction.cpp:357
virtual void beginTraversal(SoNode *node)
Definition SoAction.cpp:1208
The SoCallbackAction class invokes callbacks at specific nodes.
Definition SoCallbackAction.h:70
const SbVec3f & getTextureCoordinate3(const int index) const
Definition SoCallbackAction.cpp:844
SoTexture2::Wrap getTextureWrapT(void) const
Definition SoCallbackAction.cpp:931
Response
Definition SoCallbackAction.h:85
@ PRUNE
Definition SoCallbackAction.h:85
@ CONTINUE
Definition SoCallbackAction.h:85
@ ABORT
Definition SoCallbackAction.h:85
SoShapeHints::VertexOrdering getVertexOrdering(void) const
Definition SoCallbackAction.cpp:780
void setViewportRegion(const SbViewportRegion &vp)
Definition SoCallbackAction.cpp:400
int32_t getNumTextureCoordinates(void) const
Definition SoCallbackAction.cpp:820
const SbMatrix & getViewingMatrix(void) const
Definition SoCallbackAction.cpp:989
const SbVec3f & getProfileCoordinate3(const int index) const
Definition SoCallbackAction.cpp:762
float getFontSize(void) const
Definition SoCallbackAction.cpp:661
const SbMatrix & getTextureMatrix(void) const
Definition SoCallbackAction.cpp:904
SoNormalBinding::Binding getNormalBinding(void) const
Definition SoCallbackAction.cpp:734
SoComplexity::Type getComplexityType(void) const
Definition SoCallbackAction.cpp:578
float getPointSize(void) const
Definition SoCallbackAction.cpp:643
Response SoCallbackActionCB(void *userdata, SoCallbackAction *action, const SoNode *node)
Definition SoCallbackAction.h:87
const SbColor & getTextureBlendColor(void) const
Definition SoCallbackAction.cpp:873
float getFocalDistance(void) const
Definition SoCallbackAction.cpp:971
void invokePostCallbacks(const SoNode *const node)
Definition SoCallbackAction.cpp:1082
const SbVec4f & getTextureCoordinate4(const int index) const
Definition SoCallbackAction.cpp:854
float getCreaseAngle(void) const
Definition SoCallbackAction.cpp:810
const SbVec2f & getProfileCoordinate2(const int index) const
Definition SoCallbackAction.cpp:753
SoShapeHints::FaceType getFaceType(void) const
Definition SoCallbackAction.cpp:800
int32_t getNumProfileCoordinates(void) const
Definition SoCallbackAction.cpp:744
void addTriangleCallback(const SoType type, SoTriangleCB *cb, void *userdata)
Definition SoCallbackAction.cpp:515
int32_t getNumCoordinates(void) const
Definition SoCallbackAction.cpp:587
const SbVec4f & getCoordinate4(const int index) const
Definition SoCallbackAction.cpp:607
SoPickStyle::Style getPickStyle(void) const
Definition SoCallbackAction.cpp:1018
SoUnits::Units getUnits(void) const
Definition SoCallbackAction.cpp:962
const SbVec3f & getNormal(const int index) const
Definition SoCallbackAction.cpp:725
SoTextureCoordinateBinding::Binding getTextureCoordinateBinding(void) const
Definition SoCallbackAction.cpp:863
unsigned short getLinePattern(void) const
Definition SoCallbackAction.cpp:625
const SbMatrix & getProjectionMatrix(void) const
Definition SoCallbackAction.cpp:980
const SbName & getFontName(void) const
Definition SoCallbackAction.cpp:652
float getLineWidth(void) const
Definition SoCallbackAction.cpp:634
SoMaterialBinding::Binding getMaterialBinding(void) const
Definition SoCallbackAction.cpp:706
SoDrawStyle::Style getDrawStyle(void) const
Definition SoCallbackAction.cpp:616
SoTexture2::Wrap getTextureWrapR(void) const
Definition SoCallbackAction.cpp:944
void addPreTailCallback(SoCallbackActionCB *cb, void *userdata)
Definition SoCallbackAction.cpp:488
SoTexture2::Wrap getTextureWrapS(void) const
Definition SoCallbackAction.cpp:922
const SbVec2f & getTextureCoordinate2(const int index) const
Definition SoCallbackAction.cpp:830
void setCurrentNode(SoNode *const node)
Definition SoCallbackAction.cpp:1188
SoShapeHints::ShapeType getShapeType(void) const
Definition SoCallbackAction.cpp:790
SoTexture2::Model getTextureModel(void) const
Definition SoCallbackAction.cpp:913
const SbViewportRegion & getViewportRegion(void) const
Definition SoCallbackAction.cpp:1009
void addPointCallback(const SoType type, SoPointCB *cb, void *userdata)
Definition SoCallbackAction.cpp:539
SbBool shouldGeneratePrimitives(const SoShape *shape) const
Definition SoCallbackAction.cpp:1161
int32_t getSwitch(void) const
Definition SoCallbackAction.cpp:1027
void addPreCallback(const SoType type, SoCallbackActionCB *cb, void *userdata)
Definition SoCallbackAction.cpp:466
float getDecimationPercentage(void) const
Definition SoCallbackAction.cpp:560
Response getCurrentResponse(void) const
Definition SoCallbackAction.cpp:1038
SoLightModel::Model getLightModel(void) const
Definition SoCallbackAction.cpp:670
const SoNodeList & getProfile(void) const
Definition SoCallbackAction.cpp:771
void invokeLineSegmentCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)
Definition SoCallbackAction.cpp:1130
void invokeTriangleCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)
Definition SoCallbackAction.cpp:1114
const SbMatrix & getModelMatrix(void) const
Definition SoCallbackAction.cpp:953
const SbViewVolume & getViewVolume(void) const
Definition SoCallbackAction.cpp:998
SoCallbackAction(void)
Definition SoCallbackAction.cpp:364
SoDecimationTypeElement::Type getDecimationType(void) const
Definition SoCallbackAction.cpp:551
void addPostCallback(const SoType type, SoCallbackActionCB *cb, void *userdata)
Definition SoCallbackAction.cpp:477
void invokePreCallbacks(const SoNode *const node)
Definition SoCallbackAction.cpp:1049
void addLineSegmentCallback(const SoType type, SoLineSegmentCB *cb, void *userdata)
Definition SoCallbackAction.cpp:527
void addPostTailCallback(SoCallbackActionCB *cb, void *userdata)
Definition SoCallbackAction.cpp:501
void getMaterial(SbColor &ambient, SbColor &diffuse, SbColor &specular, SbColor &emission, float &shininess, float &transparency, const int index=0) const
Definition SoCallbackAction.cpp:689
uint32_t getNumNormals(void) const
Definition SoCallbackAction.cpp:716
float getComplexity(void) const
Definition SoCallbackAction.cpp:569
const SbVec3f & getLightAttenuation(void) const
Definition SoCallbackAction.cpp:679
const unsigned char * getTextureImage(SbVec2s &size, int &numcomps) const
Definition SoCallbackAction.cpp:882
const SbVec3f & getCoordinate3(const int index) const
Definition SoCallbackAction.cpp:597
void invokePointCallbacks(const SoShape *const shape, const SoPrimitiveVertex *const v)
Definition SoCallbackAction.cpp:1145
Type
Definition SoComplexity.h:41
Style
Definition SoDrawStyle.h:42
Model
Definition SoLightModel.h:40
Binding
Definition SoMaterialBinding.h:40
The SoNodeList class is a container for pointers to SoNode objects.
Definition SoNodeList.h:31
The SoNode class is the base class for nodes used in scene graphs.
Definition SoNode.h:47
Binding
Definition SoNormalBinding.h:40
Style
Definition SoPickStyle.h:40
The SoPrimitiveVertex class represents a single vertex of a generated primitive.
Definition SoPrimitiveVertex.h:33
FaceType
Definition SoShapeHints.h:52
VertexOrdering
Definition SoShapeHints.h:41
ShapeType
Definition SoShapeHints.h:47
The SoShape class is the superclass for geometry shapes.
Definition SoShape.h:43
Wrap
Definition SoTexture2.h:54
Model
Definition SoTexture2.h:47
Binding
Definition SoTextureCoordinateBinding.h:40
The SoType class is the basis for the run-time type system in Coin.
Definition SoType.h:50
Units
Definition SoUnits.h:42

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

Generated on Wed Jul 23 2025 for Coin by Doxygen. 1.14.0