0022819: Redesign of OpenGl driver
[occt.git] / src / OpenGl / OpenGl_Group.hxx
1 // File:      OpenGl_Group.hxx
2 // Created:   1 August 2011
3 // Author:    Sergey ZERCHANINOV
4 // Copyright: OPEN CASCADE 2011
5
6 #ifndef _OpenGl_Group_Header
7 #define _OpenGl_Group_Header
8
9 #include <InterfaceGraphic_Graphic3d.hxx>
10
11 #include <OpenGl_Element.hxx>
12
13 #include <OpenGl_AspectLine.hxx>
14 #include <OpenGl_AspectFace.hxx>
15 #include <OpenGl_AspectMarker.hxx>
16 #include <OpenGl_AspectText.hxx>
17
18 #include <OpenGl_tsm.hxx>
19
20 struct OpenGl_ElementNode
21 {
22   TelType type;
23   OpenGl_Element *elem;
24   OpenGl_ElementNode *next;
25   IMPLEMENT_MEMORY_OPERATORS
26 };
27
28 class OpenGl_Group : public OpenGl_Element
29 {
30  public:
31   OpenGl_Group ();
32   virtual ~OpenGl_Group();
33
34   void SetAspectLine (const CALL_DEF_CONTEXTLINE &AContext, const Standard_Boolean IsGlobal = Standard_True);
35   void SetAspectFace (const CALL_DEF_CONTEXTFILLAREA &AContext, const Standard_Boolean IsGlobal = Standard_True);
36   void SetAspectMarker (const CALL_DEF_CONTEXTMARKER &AContext, const Standard_Boolean IsGlobal = Standard_True);
37   void SetAspectText (const CALL_DEF_CONTEXTTEXT &AContext, const Standard_Boolean IsGlobal = Standard_True);
38
39   void AddElement (const TelType, OpenGl_Element * );
40   void Clear ();
41
42   void RemovePrimitiveArray (CALL_DEF_PARRAY *APArray);
43
44   virtual void Render (const Handle(OpenGl_Workspace) &AWorkspace) const;
45
46  protected:
47
48   OpenGl_AspectLine *myAspectLine;
49   OpenGl_AspectFace *myAspectFace;
50   OpenGl_AspectMarker *myAspectMarker;
51   OpenGl_AspectText *myAspectText;
52
53   OpenGl_ElementNode *myFirst, *myLast;
54
55  public:
56   IMPLEMENT_MEMORY_OPERATORS
57 };
58
59 #endif //_OpenGl_Group_Header