0030180: Data Exchange - VrmlAPI_Writer is expected to return export state
[occt.git] / src / VrmlAPI / VrmlAPI_Writer.hxx
1 // Created on: 2000-06-20
2 // Created by: Sergey MOZOKHIN
3 // Copyright (c) 2000-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 #ifndef _VrmlAPI_Writer_HeaderFile
17 #define _VrmlAPI_Writer_HeaderFile
18
19 #include <Standard.hxx>
20 #include <Standard_DefineAlloc.hxx>
21 #include <Standard_Handle.hxx>
22
23 #include <VrmlAPI_RepresentationOfShape.hxx>
24 #include <Standard_Real.hxx>
25 #include <Quantity_HArray1OfColor.hxx>
26 #include <Standard_CString.hxx>
27 #include <Standard_Integer.hxx>
28 #include <TDocStd_Document.hxx>
29
30 class VrmlConverter_Drawer;
31 class VrmlConverter_Projector;
32 class Vrml_Material;
33 class TopoDS_Shape;
34
35
36 //! Creates and writes VRML files from Open
37 //! CASCADE shapes. A VRML file can be written to
38 //! an existing VRML file or to a new one.
39 class VrmlAPI_Writer 
40 {
41 public:
42
43   DEFINE_STANDARD_ALLOC
44
45   
46   //! Creates a writer object with default parameters.
47   Standard_EXPORT VrmlAPI_Writer();
48   
49   //! Resets all parameters (representation, deflection)
50   //! to their default values..
51   Standard_EXPORT void ResetToDefaults();
52   
53   //! Returns drawer object
54   Standard_EXPORT Handle(VrmlConverter_Drawer) Drawer() const;
55   
56   //! Sets the deflection aDef of
57   //! the mesh algorithm which is used to compute the shaded
58   //! representation of the translated shape. The default
59   //! value is -1. When the deflection value is less than
60   //! 0, the deflection is calculated from the relative
61   //! size of the shaped.
62   Standard_EXPORT void SetDeflection (const Standard_Real aDef);
63   
64   //! Sets the representation of the
65   //! shape aRep which is written to the VRML file. The three options are :
66   //! -      shaded
67   //! -      wireframe
68   //! -      both shaded and wireframe (default)
69   //! defined through the VrmlAPI_RepresentationOfShape enumeration.
70   Standard_EXPORT void SetRepresentation (const VrmlAPI_RepresentationOfShape aRep);
71   
72   //! Set transparency to given material
73   Standard_EXPORT void SetTransparencyToMaterial (Handle(Vrml_Material)& aMaterial, const Standard_Real aTransparency);
74   
75   Standard_EXPORT void SetShininessToMaterial (Handle(Vrml_Material)& aMaterial, const Standard_Real aShininess);
76   
77   Standard_EXPORT void SetAmbientColorToMaterial (Handle(Vrml_Material)& aMaterial, const Handle(Quantity_HArray1OfColor)& Color);
78   
79   Standard_EXPORT void SetDiffuseColorToMaterial (Handle(Vrml_Material)& aMaterial, const Handle(Quantity_HArray1OfColor)& Color);
80   
81   Standard_EXPORT void SetSpecularColorToMaterial (Handle(Vrml_Material)& aMaterial, const Handle(Quantity_HArray1OfColor)& Color);
82   
83   Standard_EXPORT void SetEmissiveColorToMaterial (Handle(Vrml_Material)& aMaterial, const Handle(Quantity_HArray1OfColor)& Color);
84   
85   //! Returns the representation of the shape which is
86   //! written to the VRML file. Types of representation are set through the
87   //! VrmlAPI_RepresentationOfShape enumeration.
88   Standard_EXPORT VrmlAPI_RepresentationOfShape GetRepresentation() const;
89   
90   Standard_EXPORT Handle(Vrml_Material) GetFrontMaterial() const;
91   
92   Standard_EXPORT Handle(Vrml_Material) GetPointsMaterial() const;
93   
94   Standard_EXPORT Handle(Vrml_Material) GetUisoMaterial() const;
95   
96   Standard_EXPORT Handle(Vrml_Material) GetVisoMaterial() const;
97   
98   Standard_EXPORT Handle(Vrml_Material) GetLineMaterial() const;
99   
100   Standard_EXPORT Handle(Vrml_Material) GetWireMaterial() const;
101   
102   Standard_EXPORT Handle(Vrml_Material) GetFreeBoundsMaterial() const;
103   
104   Standard_EXPORT Handle(Vrml_Material) GetUnfreeBoundsMaterial() const;
105   
106   //! Converts the shape aShape to
107   //! VRML format of the passed version and writes it to the file identified by aFile.
108   Standard_EXPORT Standard_Boolean Write (const TopoDS_Shape& aShape, const Standard_CString aFile,
109       const Standard_Integer aVersion = 2) const;
110
111   //! Converts the document to VRML format of the passed version
112   //! and writes it to the file identified by aFile.
113   Standard_EXPORT Standard_Boolean WriteDoc(
114     const Handle(TDocStd_Document) &theDoc,
115     const Standard_CString theFile,
116     const Standard_Real theScale) const;
117
118 protected:
119
120   //! Converts the shape aShape to VRML format of version 1.0 and writes it
121   //! to the file identified by aFileName using default parameters.
122   Standard_EXPORT Standard_Boolean write_v1 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const;
123   
124   //! Converts the shape aShape to VRML format of version 2.0 and writes it
125   //! to the file identified by aFileName using default parameters.
126   Standard_EXPORT Standard_Boolean write_v2 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const;
127
128 private:
129
130   VrmlAPI_RepresentationOfShape myRepresentation;
131   Handle(VrmlConverter_Drawer) myDrawer;
132   Standard_Real myDeflection;
133   Handle(VrmlConverter_Projector) myPerespectiveCamera;
134   Handle(VrmlConverter_Projector) myOrthographicCamera;
135   Standard_Real myTransparency;
136   Standard_Real myShininess;
137   Handle(Vrml_Material) myFrontMaterial;
138   Handle(Vrml_Material) myPointsMaterial;
139   Handle(Vrml_Material) myUisoMaterial;
140   Handle(Vrml_Material) myVisoMaterial;
141   Handle(Vrml_Material) myLineMaterial;
142   Handle(Vrml_Material) myWireMaterial;
143   Handle(Vrml_Material) myFreeBoundsMaterial;
144   Handle(Vrml_Material) myUnfreeBoundsMaterial;
145   Standard_Real DX;
146   Standard_Real DY;
147   Standard_Real DZ;
148   Standard_Real XUp;
149   Standard_Real YUp;
150   Standard_Real ZUp;
151   Standard_Real Focus;
152
153 };
154
155 #endif // _VrmlAPI_Writer_HeaderFile