0024704: Visualization - inherit OpenGl_Structure from Graphic3d_CStructure
[occt.git] / src / Graphic3d / Graphic3d_CStructure.hxx
1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #ifndef _Graphic3d_CStructure_HeaderFile
16 #define _Graphic3d_CStructure_HeaderFile
17
18 #include <Graphic3d_CStructure_Handle.hxx>
19 #include <Graphic3d_CGroup.hxx>
20 #include <Graphic3d_SequenceOfHClipPlane.hxx>
21 #include <Graphic3d_TypeOfComposition.hxx>
22 #include <Graphic3d_Vec3.hxx>
23 #include <Standard_Transient.hxx>
24 #include <Handle_Graphic3d_GraphicDriver.hxx>
25
26 class Handle(Graphic3d_StructureManager);
27
28 //! Low-level graphic structure interface
29 class Graphic3d_CStructure : public Standard_Transient
30 {
31
32 public:
33
34   //! @return graphic driver created this structure
35   const Handle(Graphic3d_GraphicDriver)& GraphicDriver() const
36   {
37     return myGraphicDriver;
38   }
39
40   //! @return associated clip planes
41   const Graphic3d_SequenceOfHClipPlane& ClipPlanes() const
42   {
43     return myClipPlanes;
44   }
45
46   //! Pass clip planes to the associated graphic driver structure
47   void SetClipPlanes (const Graphic3d_SequenceOfHClipPlane& thePlanes) { myClipPlanes = thePlanes; }
48
49 public:
50
51   //! Update structure visibility state
52   virtual void UpdateNamedStatus() = 0;
53
54   //! Clear graphic data
55   virtual void Clear() = 0;
56
57   //! Connect other structure to this one
58   virtual void Connect    (Graphic3d_CStructure& theStructure) = 0;
59
60   //! Disconnect other structure to this one
61   virtual void Disconnect (Graphic3d_CStructure& theStructure) = 0;
62
63   //! Synchronize structure aspects
64   virtual void UpdateAspects() = 0;
65
66   //! Synchronize structure transformation
67   virtual void UpdateTransformation() = 0;
68
69   //! Highlight entire structure with color
70   virtual void HighlightWithColor  (const Graphic3d_Vec3&  theColor,
71                                     const Standard_Boolean theToCreate) = 0;
72
73   //! Highlight structure using boundary box
74   virtual void HighlightWithBndBox (const Standard_Boolean theToCreate) = 0;
75
76 public:
77
78   int   Id;
79   int   Priority;
80   int   PreviousPriority;
81
82   CALL_DEF_CONTEXTLINE     ContextLine;
83   CALL_DEF_CONTEXTFILLAREA ContextFillArea;
84   CALL_DEF_CONTEXTMARKER   ContextMarker;
85   CALL_DEF_CONTEXTTEXT     ContextText;
86
87   CALL_DEF_BOUNDBOX BoundBox;
88
89   float Transformation[4][4];
90   Graphic3d_TypeOfComposition Composition;
91
92   int   ContainsFacet;
93
94   unsigned IsInfinite    : 1;
95   unsigned stick         : 1;
96   unsigned highlight     : 1;
97   unsigned visible       : 1;
98   unsigned pick          : 1;
99   unsigned HLRValidation : 1;
100
101   CALL_DEF_TRANSFORM_PERSISTENCE TransformPersistence;
102
103 protected:
104
105   //! Create empty structure.
106   Standard_EXPORT Graphic3d_CStructure (const Handle(Graphic3d_StructureManager)& theManager);
107
108 protected:
109
110   Handle(Graphic3d_GraphicDriver) myGraphicDriver;
111   Graphic3d_SequenceOfHClipPlane  myClipPlanes;
112
113 public:
114
115   DEFINE_STANDARD_RTTI(Graphic3d_CStructure) // Type definition
116
117 };
118
119 #endif // _Graphic3d_CStructure_HeaderFile