0030115: Implementation of import from XCAF to VRML.
[occt.git] / src / VrmlAPI / VrmlAPI_Writer.hxx
CommitLineData
42cf5bc1 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>
42cf5bc1 25#include <Quantity_HArray1OfColor.hxx>
26#include <Standard_CString.hxx>
27#include <Standard_Integer.hxx>
a3506de7 28#include <TDocStd_Document.hxx>
29
42cf5bc1 30class VrmlConverter_Drawer;
31class VrmlConverter_Projector;
32class Vrml_Material;
33class 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.
39class VrmlAPI_Writer
40{
41public:
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.
a3506de7 108 Standard_EXPORT void 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 void WriteDoc(
114 const Handle(TDocStd_Document) &theDoc,
115 const Standard_CString theFile,
116 const Standard_Real theScale) const;
42cf5bc1 117
42cf5bc1 118protected:
119
42cf5bc1 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 void 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 void write_v2 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const;
127
42cf5bc1 128private:
129
42cf5bc1 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;
09324e85 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;
42cf5bc1 152
153};
154
42cf5bc1 155#endif // _VrmlAPI_Writer_HeaderFile