0027772: Foundation Classes - define Standard_Boolean using C++ type "bool" instead...
[occt.git] / src / BinMDataXtd / BinMDataXtd_PresentationDriver.cxx
1 // Created on: 2004-05-17
2 // Created by: Sergey ZARITCHNY
3 // Copyright (c) 2004-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #include <BinMDataXtd_PresentationDriver.hxx>
17
18 #include <TDataXtd_Presentation.hxx>
19 #include <BinObjMgt_Persistent.hxx>
20 #include <CDM_MessageDriver.hxx>
21
22 IMPLEMENT_STANDARD_RTTIEXT(BinMDataXtd_PresentationDriver,BinMDF_ADriver)
23
24   //=======================================================================
25 //function : BinMDataStd_AISPresentationDriver
26 //purpose  : Constructor
27 //=======================================================================
28 BinMDataXtd_PresentationDriver::BinMDataXtd_PresentationDriver
29                           (const Handle(CDM_MessageDriver)& theMsgDriver)
30 : BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(TDataXtd_Presentation)->Name())
31 {
32 }
33
34 //=======================================================================
35 //function : NewEmpty
36 //purpose  : 
37 //=======================================================================
38
39 Handle(TDF_Attribute) BinMDataXtd_PresentationDriver::NewEmpty() const
40 {
41   return new TDataXtd_Presentation();
42 }
43
44 //=======================================================================
45 //function : Paste
46 //purpose  : persistent -> transient (retrieve)
47 //=======================================================================
48
49 Standard_Boolean BinMDataXtd_PresentationDriver::Paste
50                                   (const BinObjMgt_Persistent&  theSource,
51                                    const Handle(TDF_Attribute)& theTarget,
52                                    BinObjMgt_RRelocationTable&  /*theRT*/) const
53 {
54   Standard_Boolean ok = Standard_False;
55   Handle(TDataXtd_Presentation) anAttribute = Handle(TDataXtd_Presentation)::DownCast(theTarget);
56
57   // Display status
58   Standard_Integer aValue;
59   ok = theSource >> aValue;
60   if (!ok) return ok;
61   anAttribute->SetDisplayed (aValue != 0);
62
63   // GUID
64   Standard_GUID aGUID;
65   ok = theSource >> aGUID;
66   if (!ok) return ok;
67   anAttribute->SetDriverGUID(aGUID);
68
69   // Color
70   ok = theSource >> aValue;
71   if (!ok) return ok;
72   if ( aValue != -1 )
73     anAttribute->SetColor((Quantity_NameOfColor)aValue);
74   else
75     anAttribute->UnsetColor();
76
77   // Material
78   ok = theSource >> aValue;
79   if ( !ok ) return ok;
80   if (aValue != -1)
81     anAttribute->SetMaterialIndex(aValue);
82   else
83     anAttribute->UnsetMaterial();
84
85   // Transparency
86   Standard_Real aRValue;
87   ok = theSource >> aRValue;
88   if ( !ok ) return ok;
89   if ( aRValue != -1. )
90     anAttribute->SetTransparency(aRValue);
91   else
92     anAttribute->UnsetTransparency();
93
94   // Width
95   ok = theSource >> aRValue;
96   if ( !ok ) return ok;
97   if ( aRValue != -1. )
98     anAttribute->SetWidth(aRValue);
99   else
100     anAttribute->UnsetWidth();
101
102   // Mode
103   ok = theSource >> aValue;
104   if ( !ok ) return ok;
105   if ( aValue != -1 )
106     anAttribute->SetMode(aValue);
107   else
108     anAttribute->UnsetMode();
109
110   return ok;
111 }
112
113 //=======================================================================
114 //function : Paste
115 //purpose  : transient -> persistent (store)
116 //=======================================================================
117
118 void BinMDataXtd_PresentationDriver::Paste(const Handle(TDF_Attribute)& theSource,
119                                            BinObjMgt_Persistent&        theTarget,
120                                            BinObjMgt_SRelocationTable&  /*theSRT*/) const
121 {
122   Handle(TDataXtd_Presentation) anAttribute = Handle(TDataXtd_Presentation)::DownCast(theSource);
123
124   // Display status
125   theTarget.PutBoolean(anAttribute->IsDisplayed());
126
127   // GUID
128   theTarget.PutGUID(anAttribute->GetDriverGUID());
129
130   // Color
131   if (anAttribute->HasOwnColor())
132     theTarget.PutInteger(anAttribute->Color());
133   else
134     theTarget.PutInteger(-1);
135
136   // Material
137   if (anAttribute->HasOwnMaterial())
138     theTarget.PutInteger(anAttribute->MaterialIndex());
139   else
140     theTarget.PutInteger(-1);
141
142   // Transparency
143   if (anAttribute->HasOwnTransparency())
144     theTarget.PutReal(anAttribute->Transparency());
145   else
146     theTarget.PutReal(-1.);
147
148   // Width
149   if (anAttribute->HasOwnWidth())
150     theTarget.PutReal(anAttribute->Width());
151   else
152     theTarget.PutReal(-1.);
153
154   // Mode
155   if (anAttribute->HasOwnMode())
156     theTarget.PutInteger(anAttribute->Mode());
157   else
158     theTarget.PutInteger(-1);
159 }