Open Inventor Release 2024.1.3
 
Loading...
Searching...
No Matches
SoObliqueSlice.h
1/*=======================================================================
2 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
3 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
4 *** ***
5 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
6 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
7 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
8 *** ***
9 *** RESTRICTED RIGHTS LEGEND ***
10 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
11 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
12 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
13 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
14 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
15 *** ***
16 *** COPYRIGHT (C) 1996-2024 BY FEI S.A.S, ***
17 *** BORDEAUX, FRANCE ***
18 *** ALL RIGHTS RESERVED ***
19**=======================================================================*/
20/*=======================================================================
21** Author : P. ESTRADE (Mar 2000)
22**=======================================================================*/
23#ifndef _SO_OBLIQUE_SLICE_
24#define _SO_OBLIQUE_SLICE_
25
26#ifdef _MSC_VER
27#pragma warning( push )
28#pragma warning(disable:4251)
29#endif
30
31#include <Inventor/nodes/SoShape.h>
32#include <Inventor/fields/SoSFBool.h>
33#include <Inventor/fields/SoSFFloat.h>
34#include <Inventor/fields/SoSFEnum.h>
35#include <Inventor/fields/SoSFPlane.h>
36#include <Inventor/fields/SoSFNode.h>
37#include <Inventor/fields/SoSFInt32.h>
38#include <Inventor/STL/vector>
39#include <VolumeViz/nodes/SoVolumeRendering.h>
40#include <VolumeViz/nodes/SoSlice.h>
41#include <LDM/SoLDM.h>
42
43class SoVolumeData;
44class SoCache;
45class SoLDMObliqueSliceGeom;
46
47class SoObliqueSliceLdm;
48class SoObliqueSliceInterface;
49class SoObliqueSlicePaging;
50class SoVolumeStateObliqueSlice;
52class SoCallback;
53
399class SoObliqueSlice : public SoSlice {
400 SO_NODE_HEADER( SoObliqueSlice );
401
402 public:
403
416
421
426
427
428
429private:
433 void computeBBox(SoAction *, SbBox3f &box, SbVec3f &center);
434
439 virtual void write(SoWriteAction *action);
440
447 virtual SoNode* getAlternateRep( SoAction* action );
448
449 virtual void GLRender( SoGLRenderAction* action );
450
451private:
455 static void initClass();
456 static void exitClass();
457
464 virtual SoNode* createAlternateRep( SoAction *action );
465
469 virtual void notify(SoNotList *list);
470
471 bool m_backFace;
472
473private:
474
478 void setupSliceInterface();
479
483 void generatePrimitives(SoAction* action);
484
488 SoDetail* createTriangleDetail(SoRayPickAction*,
489 const SoPrimitiveVertex* v1,
490 const SoPrimitiveVertex*,
491 const SoPrimitiveVertex*,
493
497 void doRendering(SoGLRenderAction* action);
498
503 virtual SbBool readInstance(SoInput* in, unsigned short flags);
504
508 virtual ~SoObliqueSlice();
509
513 SbBool m_altRepCreatedHere;
514
515 SoObliqueSliceInterface* m_sliceInterface;
516 SoObliqueSliceLdm* m_sliceLdm;
517
518 SoVolumeStateObliqueSlice* m_vs;
519
520private:
521 SoCallback* m_preEltsCBNode;
522 SoCallback* m_postEltsCBNode;
523 int m_savedVertexOrdering;
524 int m_savedShapeType;
525 SoLDM::DataSetIdPair m_savedMasterIdPair;
526
527
528 friend class SoObliqueSliceLdm;
529};
530
531#ifdef _MSC_VER
532#pragma warning( pop )
533#endif
534
535#endif // _SO_OBLIQUE_SLICE_
536
3D box class.
Definition SbBox.h:649
3D vector class.
Definition SbVec.h:932
Abstract base class for all actions.
Definition SoAction.h:132
Provides custom behavior during actions.
Definition SoCallback.h:441
Base class for describing detail information about a shape node.
Definition SoDetail.h:99
Renders a scene graph using Open Inventor's Render Engine.
Computes bounding box of a scene.
Used to read Open Inventor data files.
Definition SoInput.h:363
Abstract base class for all database nodes.
Definition SoNode.h:145
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Oblique slice shape n...
friend class SoObliqueSliceLdm
SoSFInt32 dataSetId
Specifies the SoVolumeData node to use.
SoSFPlane plane
Plane defining the slice.
SoObliqueSlice()
Constructor.
Represents point on surface of picked object.
Represents a vertex of a generated primitive.
Intersects objects with a ray cast into scene.
Field containing a int32_t integer.
Definition SoSFInt32.h:80
Field containing a plane equation.
Definition SoSFPlane.h:82
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Abstract base class f...
Definition SoSlice.h:62
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Volume data property ...
Writes a scene graph to a file.
int SbBool
Boolean type.
Definition SbBase.h:87
std::pair< SoDataSet *, int > DataSetIdPair
Pair containing an SoDataset and its dataSetId.
Definition SoLDM.h:71