Open Inventor Reference
SoShapeHintsElement.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 SoShapeHintsElement class.
48  |
49  | Author(s) : Paul S. Strauss
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_SHAPE_HINTS_ELEMENT
56 #define _SO_SHAPE_HINTS_ELEMENT
57 
59 
70 
72 
74 
75  public:
81  ORDERING_AS_IS
82  };
83 
85  enum ShapeType {
88  SHAPE_TYPE_AS_IS
89  };
90 
92  enum FaceType {
95  FACE_TYPE_AS_IS
96  };
97 
99  virtual void init(SoState *state);
100 
103  static void set(SoState *state, VertexOrdering vertexOrdering,
104  ShapeType shapeType, FaceType faceType);
105 
107  static void set(SoState *state, bool useVBO);
108 
109 #ifndef IV_STRICT
110  static void set(SoState *state, SoNode *,
111  VertexOrdering vertexOrdering,
112  ShapeType shapeType, FaceType faceType)
113  { set(state, vertexOrdering, shapeType, faceType); }
114 #endif
115 
117  static void get(SoState *state,
118  VertexOrdering &vertexOrdering,
119  ShapeType &shapeType, FaceType &faceType);
120 
121  static bool isVBOUsed(SoState *state);
122 
124  static VertexOrdering getDefaultVertexOrdering() {return UNKNOWN_ORDERING;}
125  static ShapeType getDefaultShapeType() { return UNKNOWN_SHAPE_TYPE; }
126  static FaceType getDefaultFaceType() { return CONVEX; }
127  static bool getDefaultVBOUsage() { return TRUE; }
128 
131  virtual void push(SoState *state);
132 
134  virtual bool matches(const SoElement *elt) const;
135 
137  virtual SoElement *copyMatchInfo() const;
138 
140  virtual void print(FILE *fp) const;
141 
142  SoINTERNAL public:
144  static void initClass();
145 
146  protected:
148  virtual void setElt(VertexOrdering vertexOrdering,
149  ShapeType shapeType, FaceType faceType);
150 
154  bool useVBO;
155 
157 };
158 
159 #endif /* _SO_SHAPE_HINTS_ELEMENT */
160 
#define SoEXTENDER
Provide inline template functions for abs, swap, min, max, and clamp.
Definition: SbBasic.h:154
#define TRUE
Definition: SbBasic.h:76
#define SoINTERNAL
Definition: SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
#define SO_ELEMENT_HEADER(className)
This one is for non-abstract element classes.
Definition: SoSubElement.h:112
This is the abstract base class for all state elements.
Definition: SoElement.h:96
Abstract base class for all database nodes.
Definition: SoNode.h:103
Element that stores current shape hints.
static void set(SoState *state, bool useVBO)
Sets the VBO usage in the state.
virtual ~SoShapeHintsElement()
virtual SoElement * copyMatchInfo() const
Create and return a copy of this element.
static VertexOrdering getDefaultVertexOrdering()
Returns each default hint.
virtual bool matches(const SoElement *elt) const
Returns TRUE if the hints match in both elements.
ShapeType
Hints about entire shape:
@ SOLID
Shape is known to be solid.
@ UNKNOWN_SHAPE_TYPE
Nothing is known about shape.
static void get(SoState *state, VertexOrdering &vertexOrdering, ShapeType &shapeType, FaceType &faceType)
Returns current shape hints from the state.
FaceType
Hints about faces of shape:
@ CONVEX
Faces are all convex.
@ UNKNOWN_FACE_TYPE
Nothing is known about faces.
virtual void push(SoState *state)
Push copies the values from the previous element, so set doesn't have to set them if they are set AS_...
VertexOrdering
Hints about ordering of face vertices:
@ UNKNOWN_ORDERING
No ordering info is known.
@ COUNTERCLOCKWISE
Vertices are ordered CCW around faces.
@ CLOCKWISE
Vertices are ordered CW around faces.
virtual void print(FILE *fp) const
Prints element (for debugging)
virtual void init(SoState *state)
Initializes element.
static void set(SoState *state, SoNode *, VertexOrdering vertexOrdering, ShapeType shapeType, FaceType faceType)
VertexOrdering vertexOrdering
static void initClass()
Initializes the SoShapeHintsElement class.
static void set(SoState *state, VertexOrdering vertexOrdering, ShapeType shapeType, FaceType faceType)
Sets the current shape hints in the state.
static ShapeType getDefaultShapeType()
virtual void setElt(VertexOrdering vertexOrdering, ShapeType shapeType, FaceType faceType)
Virtual set methods that subclasses can override.
static bool isVBOUsed(SoState *state)
static bool getDefaultVBOUsage()
static FaceType getDefaultFaceType()
An SoState collects and holds state while traversing a scene graph.
Definition: SoState.h:82