Open Inventor Release 2024.2.0
 
Loading...
Searching...
No Matches
SoClipPlaneElement.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**=======================================================================*/
26/*=======================================================================
27 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
28 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
29 *** ***
30 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
31 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
32 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
33 *** ***
34 *** RESTRICTED RIGHTS LEGEND ***
35 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
36 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
37 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
38 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
39 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
40 *** ***
41 *** COPYRIGHT (C) 1996-2017 BY FEI S.A.S, ***
42 *** BORDEAUX, FRANCE ***
43 *** ALL RIGHTS RESERVED ***
44**=======================================================================*/
45/*=======================================================================
46** Modified by : VSG (MMM YYYY)
47**=======================================================================*/
48#ifndef _SO_CLIP_PLANE_ELEMENT
49#define _SO_CLIP_PLANE_ELEMENT
50
51#include <Inventor/SbLinear.h>
52#include <Inventor/elements/SoAccumulatedElement.h>
53
75SoEXTENDER_Documented class SoClipPlaneElement : public SoAccumulatedElement
76{
77
78 SO_ELEMENT_HEADER(SoClipPlaneElement);
79
80public:
82 static void add(SoState *state, SoNode *node, const SbPlane &plane);
83
85 virtual void push(SoState *state);
86
88 virtual void pop(SoState *state, const SoElement *prevTopElement);
89
91 static const SoClipPlaneElement * getInstance(SoState *state);
92
94 int getNum() const;
95
100 const SbPlane& get(int index, SbBool inWorldSpace = TRUE) const;
101
106 static int getMaxPlanes();
107
109 virtual void print(FILE *fp) const;
110
111private:
112
114 virtual void init(SoState *state);
115
116private:
117
119 static void initClass();
121 static void exitClass();
122
124 enum Space
125 {
128 MODEL,
130 WORLD,
132 VIEW
133 };
134
142 const SbPlane& get(int index, Space space) const;
143
145 static void enable( SoState* state, SbBool activate );
146
148 static SbBool isEnabled(SoState* state);
149
150private:
151
153 SbPList planes;
154
156 int startIndex;
157
159 SbBool m_enabled;
160
165 virtual void addToElt(const SbPlane &plane, const SbMatrix &modelMatrix, const SbMatrix &viewMatrix);
166
168 virtual ~SoClipPlaneElement();
169};
170
171#endif /* _SO_CLIP_PLANE_ELEMENT */
172
173
4x4 matrix class.
Definition SbMatrix.h:309
List of generic (void *) pointers.
Definition SbPList.h:77
Oriented plane in 3D.
Definition SbPlane.h:64
Abstract base class for each state element whose value may be accumulated when it is set.
Stores the current set of clipping planes, specified as SbPlanes.
int getNum() const
Returns the number of planes in an instance.
static int getMaxPlanes()
Returns the maximum number of concurrent clipping planes supported by current implementation.
virtual void print(FILE *fp) const
Prints element (for debugging).
const SbPlane & get(int index, SbBool inWorldSpace=TRUE) const
Returns the indexed plane an element as an SbPlane.
static const SoClipPlaneElement * getInstance(SoState *state)
Returns the top (current) instance of the element in the state.
virtual void push(SoState *state)
Overrides push() method to copy values from next instance in the stack.
static void add(SoState *state, SoNode *node, const SbPlane &plane)
Adds a clip plane to the current set in the state.
virtual void pop(SoState *state, const SoElement *prevTopElement)
Overrides pop() method to free up planes that were added.
Abstract base class for all state elements.
Definition SoElement.h:102
Abstract base class for all database nodes.
Definition SoNode.h:145
Traversal state.
Definition SoState.h:74
int SbBool
Boolean type.
Definition SbBase.h:87