0024624: Lost word in license statement in source files
[occt.git] / src / TestTopOpeDraw / TestTopOpeDraw_SaveRestore.cxx
CommitLineData
b311480e 1// Created on: 1996-04-10
2// Created by: Jean-Yves LEBEY
3// Copyright (c) 1996-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
17#include <Draw_Appli.hxx>
18#include <Draw.hxx>
19#include <Draw_Drawable3D.hxx>
20#include <TestTopOpeDraw_DrawableSHA.hxx>
21#include <TestTopOpeDraw_DrawableC3D.hxx>
22#include <TestTopOpeDraw_DrawableMesure.hxx>
23#include <DrawTrSurf_Curve.hxx>
24#include <BRep_Builder.hxx>
25#include <BRep_Tool.hxx>
26#include <BRepTools_ShapeSet.hxx>
27#include <Geom_Curve.hxx>
28#include <Geom_BSplineCurve.hxx>
29#include <TopoDS.hxx>
30#include <TopoDS_Shape.hxx>
31#include <TopoDS_Edge.hxx>
32#include <TColgp_HArray1OfPnt.hxx>
33#include <TColgp_Array1OfPnt.hxx>
34#include <TestTopOpeTools_Mesure.hxx>
35
36// pour sauver un DrawableSHA
37
38//=======================================================================
39//function : stestTopOpe
40//purpose :
41//=======================================================================
42
43static Standard_Boolean stestTopOpe(const Handle(Draw_Drawable3D)& D)
44{
45 Standard_Boolean res = D->IsInstance(STANDARD_TYPE(TestTopOpeDraw_DrawableSHA));
46 return res;
47}
48
49
50//=======================================================================
51//function : ssaveTopOpe
52//purpose :
53//=======================================================================
54
55static void ssaveTopOpe (const Handle(Draw_Drawable3D)& D, ostream& OS)
56{
57 Handle(TestTopOpeDraw_DrawableSHA) N;
58 N = Handle(TestTopOpeDraw_DrawableSHA)::DownCast(D);
59 if ( !N.IsNull()) {
60 BRep_Builder B;
61 BRepTools_ShapeSet S(B);
62 S.Add(N->Shape());
63 S.Write(OS);
64 S.Write(N->Shape(),OS);
65 }
66 else cout <<"TestTopOpeDraw::ssaveTopOpe : error" << endl;
67}
68
69static Standard_Real size = 100.;
70static Standard_Integer nbIsos = 2;
71static Standard_Integer discret = 30;
72//=======================================================================
73//function : srestoreTopOpe
74//purpose :
75//=======================================================================
76
77static Handle(Draw_Drawable3D) srestoreTopOpe (istream& IS)
78{
79 BRep_Builder B;
80 BRepTools_ShapeSet S(B);
81 S.Read(IS);
82 TopoDS_Shape theShape;
83 S.Read(theShape,IS);
84 Handle(DBRep_DrawableShape) N;
85 N = new DBRep_DrawableShape(theShape,
86 Draw_vert,
87 Draw_jaune,
88 Draw_rouge,
89 Draw_bleu,
90 size,
91 nbIsos,
92 discret);
93 return N;
94}
95
96
97//=======================================================================
98//function : ssrTopOpe
99//purpose :
100//=======================================================================
101
102static Draw_SaveAndRestore ssrTopOpe
103("TestTopOpeDraw_DrawableSHA",
104 stestTopOpe,ssaveTopOpe,srestoreTopOpe);
105
106// pour sauver une DrawableC3D
107
108//=======================================================================
109//function : ctestTopOpe
110//purpose :
111//=======================================================================
112
113static Standard_Boolean ctestTopOpe(const Handle(Draw_Drawable3D)& D)
114{
115 Standard_Boolean res = D->IsInstance(STANDARD_TYPE(TestTopOpeDraw_DrawableC3D));
116 return res;
117}
118
119
120//=======================================================================
121//function : csaveTopOpe
122//purpose :
123//=======================================================================
124
125static void csaveTopOpe (const Handle(Draw_Drawable3D)& D, ostream& OS)
126{
127
128
129 Handle(DrawTrSurf_Curve) N;
130 N = Handle(DrawTrSurf_Curve)::DownCast(D);
131 if ( !N.IsNull()) {
132 Handle(Geom_Curve) GC;
133 GC = N->GetCurve();
134 BRep_Builder BB;
135 TopoDS_Edge E;
136 BB.MakeEdge(E, GC, 1.0e-7);
137 BRep_Builder B;
138 BRepTools_ShapeSet S(B);
139 S.Add(E);
140 S.Write(OS);
141 S.Write(E,OS);
142 }
143 else cout <<"TestTopOpeDraw::csaveTopOpe : error" << endl;
144}
145
146//=======================================================================
147//function : crestoreTopOpe
148//purpose :
149//=======================================================================
150
151static Handle(Draw_Drawable3D) crestoreTopOpe (istream& IS)
152{
153 BRep_Builder B;
154 BRepTools_ShapeSet S(B);
155 S.Read(IS);
156 TopoDS_Shape theShape;
157 S.Read(theShape,IS);
158 TopoDS_Edge& E = TopoDS::Edge(theShape);
159 Standard_Real f, l;
160 Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, f, l);
161 Handle(TestTopOpeDraw_DrawableC3D) N;
162 N = new TestTopOpeDraw_DrawableC3D(C3d,Draw_blanc);
163 return N;
164}
165
166
167//=======================================================================
168//function : csrTopOpe
169//purpose :
170//=======================================================================
171
172static Draw_SaveAndRestore csrTopOpe
173("TestTopOpeDraw_DrawableC3D",
174 ctestTopOpe,csaveTopOpe,crestoreTopOpe);
175
176
177// pour sauver une DrawableMesure
178
179//=======================================================================
180//function : mtestTopOpe
181//purpose :
182//=======================================================================
183
184static Standard_Boolean mtestTopOpe(const Handle(Draw_Drawable3D)& D)
185{
186 Standard_Boolean res = D->IsInstance(STANDARD_TYPE(TestTopOpeDraw_DrawableMesure));
187 return res;
188}
189
190
191//=======================================================================
192//function : msaveTopOpe
193//purpose :
194//=======================================================================
195
196static void msaveTopOpe (const Handle(Draw_Drawable3D)& D, ostream& OS)
197{
198 Handle(DrawTrSurf_Curve) N;
199 N = Handle(DrawTrSurf_Curve)::DownCast(D);
200 if ( !N.IsNull()) {
201 Handle(Geom_BSplineCurve) BS;
202 BS = Handle(Geom_BSplineCurve)::DownCast(N->GetCurve());
203 BRep_Builder BB;
204 TopoDS_Edge E;
205 BB.MakeEdge(E, BS, 1.0e-7);
206 BRep_Builder B;
207 BRepTools_ShapeSet S(B);
208 S.Add(E);
209 S.Write(OS);
210 S.Write(E,OS);
211 }
212 else cout <<"TestTopOpeDraw::msaveTopOpe : error" << endl;
213}
214
215//=======================================================================
216//function : mrestoreTopOpe
217//purpose :
218//=======================================================================
219
220static Handle(Draw_Drawable3D) mrestoreTopOpe (istream& IS)
221{
222 BRep_Builder B;
223 BRepTools_ShapeSet S(B);
224 S.Read(IS);
225 TopoDS_Shape theShape;
226 S.Read(theShape,IS);
227 TopoDS_Edge& E = TopoDS::Edge(theShape);
228 Standard_Integer NbPoles;
229 Standard_Real f, l;
230 Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, f, l);
231 Handle(Geom_BSplineCurve) BS;
232 BS = Handle(Geom_BSplineCurve)::DownCast(C3d);
233 NbPoles = BS->NbPoles();
234 TColgp_HArray1OfPnt* Pnt = new TColgp_HArray1OfPnt(1, NbPoles);
235 BS->Poles(Pnt->ChangeArray1());
236 TestTopOpeTools_Mesure Mes(Pnt);
237 Handle(TestTopOpeDraw_DrawableMesure) N;
238 N = new TestTopOpeDraw_DrawableMesure(Mes, Draw_blanc, Draw_rose);
239 return N;
240}
241
242
243//=======================================================================
244//function : msrTopOpe
245//purpose :
246//=======================================================================
247
248static Draw_SaveAndRestore msrTopOpe
249("TestTopOpeDraw_DrawableMesure",
250 mtestTopOpe,msaveTopOpe,mrestoreTopOpe);