Open Inventor Reference
SoProfileCoordinateElement.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 $
45  |
46  | Description:
47  | This file defines the SoProfileCoordinateElement class.
48  |
49  | Author(s) : Paul S. Strauss, Nick Thompson, Thad Beier
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_PROFILE_COORDINATE_ELEMENT
56 #define _SO_PROFILE_COORDINATE_ELEMENT
57 
58 #include <Inventor/SbLinear.h>
60 
74 
76 
78 
79  public:
81  virtual void init(SoState *state);
82 
84  static void set2(SoState *state, SoNode *node,
85  int32_t numCoords, const SbVec2f *coords);
86  static void set3(SoState *state, SoNode *node,
87  int32_t numCoords, const SbVec3f *coords);
88 
91 
93  int32_t getNum() const { return numCoords; }
94 
97  const SbVec2f & get2(int index) const;
98  const SbVec3f & get3(int index) const;
99 
101  bool is2D() const { return coordsAre2D; }
102 
104  static SbVec2f getDefault2() { return SbVec2f(0.0, 0.0); }
105  static SbVec3f getDefault3() { return SbVec3f(0.0, 0.0, 1.0); }
106 
107  virtual void print(FILE *fp) const;
108 
109  SoINTERNAL public:
111  static void initClass();
112 
113  protected:
115  const SbVec2f *coords2;
116  const SbVec3f *coords3;
118 
120 
121  private:
122  static SbVec2f *defaultCoord2;
123 
124  SbVec2f convert2;
125  SbVec3f convert3;
126 };
127 
128 #endif /* _SO_PROFILE_COORDINATE_ELEMENT */
#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:81
signed int int32_t
Definition: SbTypeDefs.h:43
#define SO_ELEMENT_HEADER(className)
This one is for non-abstract element classes.
Definition: SoSubElement.h:112
2D vector class.
Definition: SbLinear.h:246
3D vector class.
Definition: SbLinear.h:120
Abstract base class for all database nodes.
Definition: SoNode.h:103
Element storing the current profile coordinates, as either 2-D or 3-D points.
static void set3(SoState *state, SoNode *node, int32_t numCoords, const SbVec3f *coords)
virtual void init(SoState *state)
Initializes element.
static const SoProfileCoordinateElement * getInstance(SoState *state)
Returns the top (current) instance of the element in the state.
bool is2D() const
TRUE if set2() was called.
virtual ~SoProfileCoordinateElement()
const SbVec3f & get3(int index) const
static void set2(SoState *state, SoNode *node, int32_t numCoords, const SbVec2f *coords)
Sets the current profile coordinates.
int32_t getNum() const
Returns the number of coordinate points in an instance.
static void initClass()
Initializes the SoCoordinateElement class.
static SbVec2f getDefault2()
Returns the default profile coordinate.
const SbVec2f & get2(int index) const
Returns the indexed coordinate from an element as a 2- or 3-vector, converting if necessary.
virtual void print(FILE *fp) const
Prints element (for debugging)
This is the abstract base class for each state element whose value is replaced whenever it is set.
An SoState collects and holds state while traversing a scene graph.
Definition: SoState.h:82