Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoProfileCoordinateElement.h
1/*=======================================================================
2 * Copyright 1991-1996, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 *
5 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
6 * States. Use of a copyright notice is precautionary only and does not
7 * imply publication or disclosure.
8 *
9 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
10 * Use, duplication or disclosure by the Government is subject to restrictions
11 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
12 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
13 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
14 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
15 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
16 *
17 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
18 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
19 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
20 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
21 * GRAPHICS, INC.
22**=======================================================================*/
23/*=======================================================================
24** Author : Paul S. Strauss (MMM yyyy)
25** Modified by : Nick Thompson (MMM yyyy)
26** Modified by : Thad Beier (MMM yyyy)
27**=======================================================================*/
28/*=======================================================================
29 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
30 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
31 *** ***
32 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
33 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
34 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
35 *** ***
36 *** RESTRICTED RIGHTS LEGEND ***
37 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
38 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
39 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
40 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
41 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
42 *** ***
43 *** COPYRIGHT (C) 1996-2014 BY FEI S.A.S, ***
44 *** BORDEAUX, FRANCE ***
45 *** ALL RIGHTS RESERVED ***
46**=======================================================================*/
47/*=======================================================================
48** Modified by : VSG (MMM YYYY)
49**=======================================================================*/
50
51
52#ifndef _SO_PROFILE_COORDINATE_ELEMENT
53#define _SO_PROFILE_COORDINATE_ELEMENT
54
55#include <Inventor/SbBasic.h>
56#include <Inventor/SbLinear.h>
57#include <Inventor/elements/SoReplacedElement.h>
58
76SoEXTENDER_Documented class SoProfileCoordinateElement : public SoReplacedElement {
77
78 SO_ELEMENT_HEADER(SoProfileCoordinateElement);
79
80 public:
85 static void set2(SoState *state, SoNode *node,
86 int32_t numCoords, const SbVec2f *coords);
91 static void set3(SoState *state, SoNode *node,
92 int32_t numCoords, const SbVec3f *coords);
93
98
102 int32_t getNum() const { return numCoords; }
103
108 const SbVec2f & get2(int index) const;
113 const SbVec3f & get3(int index) const;
114
119 const SbVec2f * getCoord2() const { return coords2 ; }
120
125 const SbVec3f * getCoord3() const { return coords3 ; }
126
130 SbBool is2D() const { return coordsAre2D; }
131
135 static SbVec2f getDefault2() { return SbVec2f(0.0, 0.0); }
139 static SbVec3f getDefault3() { return SbVec3f(0.0, 0.0, 1.0); }
140
144 virtual void print(FILE *fp) const;
145
146private:
147
149 virtual void init(SoState *state);
150
151 private:
152 // Initializes the SoCoordinateElement class
153 static void initClass();
154 static void exitClass();
155
156 private:
157 int32_t numCoords;
158 const SbVec2f *coords2;
159 const SbVec3f *coords3;
160 SbBool coordsAre2D;
161
163
164 private:
165 static SbVec2f *defaultCoord2;
166 SbVec2f convert2; // To convert from 3-D to 2-D
167 SbVec3f convert3; // To convert from 2-D to 3-D
168};
169
170#endif /* _SO_PROFILE_COORDINATE_ELEMENT */
171
172
2D vector class.
Definition SbVec.h:76
3D vector class.
Definition SbVec.h:932
Abstract base class for all database nodes.
Definition SoNode.h:145
Stores the current profile coordinates.
const SbVec3f & get3(int index) const
Returns the indexed coordinate from an element as a 3D vector, converting if necessary.
static void set3(SoState *state, SoNode *node, int32_t numCoords, const SbVec3f *coords)
Sets the current 3D profile coordinates.
const SbVec3f * getCoord3() const
Returns the array of SbVec3f without any conversion.
static SbVec3f getDefault3()
Returns the default 3D profile coordinate.
static void set2(SoState *state, SoNode *node, int32_t numCoords, const SbVec2f *coords)
Sets the current 2D profile coordinates.
int32_t getNum() const
Returns the number of coordinate points in an instance.
SbBool is2D() const
TRUE if set2() was called.
static SbVec2f getDefault2()
Returns the default 2D profile coordinate.
const SbVec2f * getCoord2() const
Returns the array of SbVec2f without any conversion.
const SbVec2f & get2(int index) const
Returns the indexed coordinate from an element as a 2D vector, converting if necessary.
virtual void print(FILE *fp) const
Prints element (for debugging).
static const SoProfileCoordinateElement * getInstance(SoState *state)
Returns the top (current) instance of the element in the state.
Abstract base class for each state element whose value is replaced whenever it is set.
Traversal state.
Definition SoState.h:74
int SbBool
Boolean type.
Definition SbBase.h:87