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:77
#define SO_ELEMENT_HEADER(className)
This one is for non-abstract element classes.
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()
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()
virtual SoElement * copyMatchInfo() const
Create and return a copy of this element.
static FaceType getDefaultFaceType()
An SoState collects and holds state while traversing a scene graph.
Definition SoState.h:82