Open Inventor Reference
SoAntiSquish.h
Go to the documentation of this file.
1/*
2 *
3 * Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * Further, this software is distributed without any warranty that it is
16 * free of the rightful claim of any third person regarding infringement
17 * or the like. Any license provided herein, whether implied or
18 * otherwise, applies only to this software file. Patent licenses, if
19 * any, provided herein do not apply to combinations of this program with
20 * other software, or any other product whatsoever.
21 *
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this library; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 *
26 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
27 * Mountain View, CA 94043, or:
28 *
29 * http://www.sgi.com
30 *
31 * For further information regarding this notice, see:
32 *
33 * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
34 *
35 */
36
37
38/*
39 * Copyright (C) 1990,91 Silicon Graphics, Inc.
40 *
41 _______________________________________________________________________
42 ______________ S I L I C O N G R A P H I C S I N C . ____________
43 |
44 | $Revision: 1.1.1.1 $
45 |
46 | Description:
47 | This file defines the SoAntiSquish node class.
48 |
49 | Author(s) : Paul Isaacs
50 |
51 ______________ S I L I C O N G R A P H I C S I N C . ____________
52 _______________________________________________________________________
53 */
54
55#ifndef _SO_ANTI_SQUISH_
56#define _SO_ANTI_SQUISH_
57
63
64
67
99
101
103
104 public:
105
108
109 enum Sizing {
116 LONGEST_DIAGONAL
117 };
118
120
121
126
131
133
136 void recalc();
137
138 SoEXTENDER public:
140 void doAction(SoAction *action);
141
142 SoINTERNAL public:
143 static void initClass();
144
145 protected:
146 virtual void callback(SoCallbackAction *action);
147 virtual void GLRender(SoGLRenderAction *action);
149 virtual void getMatrix(SoGetMatrixAction *action);
150 virtual void pick(SoPickAction *action);
151
152 virtual ~SoAntiSquish();
153
154 SbMatrix getUnsquishingMatrix( SbMatrix squishedMatrix, bool doInverse,
155 SbMatrix &inverseAnswer );
156
157 private:
158 SbMatrix savedAnswer, savedInverseAnswer;
159
160 bool recalcNextTime;
161};
162
163#endif /* _SO_ANTI_SQUISH_ */
#define SoEXTENDER
Provide inline template functions for abs, swap, min, max, and clamp.
Definition SbBasic.h:154
#define SoINTERNAL
Definition SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition SbSystem.h:77
#define SO_NODE_HEADER(className)
Non-abstract classes have everything abstract classes have, plus a way to create an instance.
Definition SoSubNode.h:170
4x4 matrix class.
Definition SbLinear.h:823
Abstract base class for all actions.
Definition SoAction.h:179
Transformation node that undoes non-uniform 3D scales.
SoAntiSquish()
Creates an anti-squish node with default settings.
virtual void getMatrix(SoGetMatrixAction *action)
virtual ~SoAntiSquish()
SoSFBool recalcAlways
If recalcAlways is TRUE, this node calculates its unsquishing matrix every time it is traversed.
SoSFEnum sizing
Determines which of the algorithms enumerated by the type Sizing will be used to select the new scale...
SbMatrix getUnsquishingMatrix(SbMatrix squishedMatrix, bool doInverse, SbMatrix &inverseAnswer)
virtual void GLRender(SoGLRenderAction *action)
These virtual functions implement all of the actions for nodes, Most of the default implementations d...
void recalc()
Sets a flag so that the next time the node is traversed, it will recalculate its unsquishing matrix.
static void initClass()
virtual void getBoundingBox(SoGetBoundingBoxAction *action)
void doAction(SoAction *action)
Called by actions that need to change the state with a new matrix.
virtual void pick(SoPickAction *action)
virtual void callback(SoCallbackAction *action)
Performs a generic traversal of the scene graph.
Renders a scene graph using OpenGL.
Computes bounding box of a scene.
Computes transformation matrix for subgraph.
Abstract base class for picking objects in a scene.
Field containing a single boolean value.
Definition SoSFBool.h:78
Field containing an enumerated value.
Definition SoSFEnum.h:93
Abstract base class for all geometric transformation nodes.