0023634: Eliminate Polyline and Polygon usage in drawers
[occt.git] / src / Graphic3d / Graphic3d_Group_1.cxx
1 // Created by: NW,JPB,CAL
2 // Copyright (c) 1991-1999 Matra Datavision
3 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20
21 //-Version      
22
23 //-Design       Declaration des variables specifiques aux groupes
24 //              de primitives
25
26 //-Warning      Un groupe est defini dans une structure
27 //              Il s'agit de la plus petite entite editable
28
29 //-References   
30
31 //-Language     C++ 2.0
32
33 //-Declarations
34
35 // for the class
36 #include <Graphic3d_Group.jxx>
37 #include <Graphic3d_Group.pxx>
38
39 //-Methods, in order
40
41 void Graphic3d_Group::Clear (Standard_Boolean theUpdateStructureMgr)
42 {
43   if (IsDeleted ()) return;
44
45   MyCGroup.ContextLine.IsSet     = 0,
46   MyCGroup.ContextText.IsSet     = 0,
47   MyCGroup.ContextMarker.IsSet   = 0,
48   MyCGroup.ContextFillArea.IsSet = 0;
49
50   MyCGroup.ContextLine.IsDef     = 0,
51   MyCGroup.ContextText.IsDef     = 0,
52   MyCGroup.ContextMarker.IsDef   = 0,
53   MyCGroup.ContextFillArea.IsDef = 0;
54
55   MyCGroup.PickId.IsDef = 0,
56   MyCGroup.PickId.IsSet = 0,
57   MyCGroup.PickId.Value = 0;
58
59   MyBounds.XMin = ShortRealLast (),
60   MyBounds.YMin = ShortRealLast (),
61   MyBounds.ZMin = ShortRealLast ();
62
63   MyBounds.XMax = ShortRealFirst (),
64   MyBounds.YMax = ShortRealFirst (),
65   MyBounds.ZMax = ShortRealFirst ();
66
67   if (MyContainsFacet) MyStructure->GroupsWithFacet (-1);
68   MyContainsFacet = Standard_False,
69   MyIsEmpty       = Standard_True;
70
71   MyGraphicDriver->ClearGroup (MyCGroup);
72
73   // clear method could be used on Graphic3d_Structure destruction,
74   // and its structure manager could be already destroyed, in that
75   // case we don't need to update it;
76   if (theUpdateStructureMgr)
77     Update ();
78 }
79
80 void Graphic3d_Group::Destroy ()
81 {
82   // tell graphics driver to clear internal resources of the group
83   if (!IsEmpty () && !MyGraphicDriver.IsNull ())
84     MyGraphicDriver->ClearGroup (MyCGroup);
85
86 }
87
88 void Graphic3d_Group::Remove ()
89 {
90         if (IsDeleted ()) return;
91
92         MyGraphicDriver->RemoveGroup (MyCGroup);
93         MyStructure->Remove (this);
94         MyCGroup.ptrGroup       = NULL;
95
96         Update ();
97
98         MyBounds.XMin   = ShortRealLast (),
99         MyBounds.YMin   = ShortRealLast (),
100         MyBounds.ZMin   = ShortRealLast ();
101
102         MyBounds.XMax   = ShortRealFirst (),
103         MyBounds.YMax   = ShortRealFirst (),
104         MyBounds.ZMax   = ShortRealFirst ();
105
106         if (MyContainsFacet) MyStructure->GroupsWithFacet (-1);
107         MyContainsFacet = Standard_False,
108         MyIsEmpty       = Standard_True;
109 }