1 // Created on: 1997-02-21
2 // Created by: Alexander BRIVIN
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _VrmlConverter_Drawer_HeaderFile
18 #define _VrmlConverter_Drawer_HeaderFile
20 #include <Standard.hxx>
21 #include <Standard_Type.hxx>
23 #include <Standard_Integer.hxx>
24 #include <Standard_Boolean.hxx>
25 #include <Aspect_TypeOfDeflection.hxx>
26 #include <Standard_Real.hxx>
27 #include <Standard_Transient.hxx>
28 class VrmlConverter_IsoAspect;
29 class VrmlConverter_LineAspect;
30 class VrmlConverter_ShadingAspect;
31 class VrmlConverter_PointAspect;
34 class VrmlConverter_Drawer;
35 DEFINE_STANDARD_HANDLE(VrmlConverter_Drawer, Standard_Transient)
37 //! qualifies the aspect properties for
38 //! the VRML conversation of a specific kind of object.
39 //! This includes for example color, maximal chordial deviation, etc...
40 class VrmlConverter_Drawer : public Standard_Transient
46 Standard_EXPORT VrmlConverter_Drawer();
48 //! by default: TOD_Relative; however, except for the shapes,
49 //! the drawing will be made using the absolute deviation.
50 Standard_EXPORT void SetTypeOfDeflection (const Aspect_TypeOfDeflection aTypeOfDeflection);
52 Standard_EXPORT Aspect_TypeOfDeflection TypeOfDeflection() const;
54 //! Defines the maximal chordial deviation when drawing any curve;
55 //! If this value is one of the obvious parameters of methods,
56 //! current value from Drawer won't be used.
57 //! This value is used by:
59 //! VrmlConverter_DeflectionCurve
60 //! VrmlConverter_WFDeflectionRestrictedFace
61 //! VrmlConverter_WFDeflectionShape
62 Standard_EXPORT void SetMaximalChordialDeviation (const Standard_Real aChordialDeviation);
64 //! returns the maximal chordial deviation.
65 //! Default value: 0.1
66 Standard_EXPORT Standard_Real MaximalChordialDeviation() const;
69 Standard_EXPORT void SetDeviationCoefficient (const Standard_Real aCoefficient);
71 Standard_EXPORT Standard_Real DeviationCoefficient() const;
73 //! default: 17 points.
74 //! Defines the Discretisation (myNbPoints) when drawing any curve;
75 //! If this value is one of the obvious parameters of methods,
76 //! current value from Drawer won't be used.
77 //! This value is used by:
79 //! VrmlConverter_Curve
80 //! VrmlConverter_WFRestrictedFace
81 //! VrmlConverter_WFShape
82 Standard_EXPORT void SetDiscretisation (const Standard_Integer d);
84 Standard_EXPORT Standard_Integer Discretisation() const;
86 //! defines the maximum value allowed for the first and last
87 //! parameters of an infinite curve.
88 //! Default value: 500.
89 //! VrmlConverter_Curve
90 //! VrmlConverter_WFRestrictedFace
91 //! VrmlConverter_WFShape
92 Standard_EXPORT void SetMaximalParameterValue (const Standard_Real Value);
94 Standard_EXPORT Standard_Real MaximalParameterValue() const;
96 //! enables the drawing of isos on planes.
97 //! By default there are no isos on planes.
98 Standard_EXPORT void SetIsoOnPlane (const Standard_Boolean OnOff);
100 //! returns True if the drawing of isos on planes is enabled.
101 Standard_EXPORT Standard_Boolean IsoOnPlane() const;
103 //! Defines the attributes which are used when drawing an
104 //! U isoparametric curve of a face. Defines the number
105 //! of U isoparametric curves to be drawn for a single face.
106 //! The default values are the same default values from Vrml package.
108 //! These attributes are used by the following algorithms:
109 //! VrmlConverter_WFRestrictedFace
110 //! VrmlConverter_WFDeflectionRestrictedFace
111 Standard_EXPORT Handle(VrmlConverter_IsoAspect) UIsoAspect();
113 Standard_EXPORT void SetUIsoAspect (const Handle(VrmlConverter_IsoAspect)& anAspect);
115 //! Defines the attributes which are used when drawing an
116 //! V isoparametric curve of a face. Defines the number
117 //! of V isoparametric curves to be drawn for a single face.
118 //! The default values are the same default values from Vrml package.
120 //! These attributes are used by the following algorithms:
121 //! VrmlConverter_WFRestrictedFace
122 //! VrmlConverter_WFDeflectionRestrictedFace
123 Standard_EXPORT Handle(VrmlConverter_IsoAspect) VIsoAspect();
125 Standard_EXPORT void SetVIsoAspect (const Handle(VrmlConverter_IsoAspect)& anAspect);
128 //! The default values are the same default values from Vrml package.
129 //! These attributes are used by the following algorithms:
130 //! VrmlConverter_WFShape
131 //! VrmlConverter_WFDeflectionShape
132 Standard_EXPORT Handle(VrmlConverter_LineAspect) FreeBoundaryAspect();
134 Standard_EXPORT void SetFreeBoundaryAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
136 //! enables the drawing the free boundaries
137 //! By default the free boundaries are drawn.
138 Standard_EXPORT void SetFreeBoundaryDraw (const Standard_Boolean OnOff);
140 //! returns True if the drawing of the free boundaries is enabled.
141 Standard_EXPORT Standard_Boolean FreeBoundaryDraw() const;
144 //! The default values are the same default values from Vrml package.
145 //! These attributes are used by the following algorithms:
146 //! VrmlConverter_WFShape
147 //! VrmlConverter_WFDeflectionShape
148 Standard_EXPORT Handle(VrmlConverter_LineAspect) WireAspect();
150 Standard_EXPORT void SetWireAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
152 //! enables the drawing the wire
153 //! By default the wire are drawn.
154 Standard_EXPORT void SetWireDraw (const Standard_Boolean OnOff);
156 //! returns True if the drawing of the wire is enabled.
157 Standard_EXPORT Standard_Boolean WireDraw() const;
160 //! The default values are the same default values from Vrml package.
161 //! These attributes are used by the following algorithms:
162 //! VrmlConverter_WFShape
163 //! VrmlConverter_WFDeflectionShape
164 Standard_EXPORT Handle(VrmlConverter_LineAspect) UnFreeBoundaryAspect();
166 Standard_EXPORT void SetUnFreeBoundaryAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
168 //! enables the drawing the unfree boundaries
169 //! By default the unfree boundaries are drawn.
170 Standard_EXPORT void SetUnFreeBoundaryDraw (const Standard_Boolean OnOff);
172 //! returns True if the drawing of the unfree boundaries is enabled.
173 Standard_EXPORT Standard_Boolean UnFreeBoundaryDraw() const;
176 //! The default values are the same default values from Vrml package.
177 Standard_EXPORT Handle(VrmlConverter_LineAspect) LineAspect();
179 Standard_EXPORT void SetLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
181 Standard_EXPORT Handle(VrmlConverter_PointAspect) PointAspect();
183 Standard_EXPORT void SetPointAspect (const Handle(VrmlConverter_PointAspect)& anAspect);
186 //! The default values are the same default values from Vrml package.
187 Standard_EXPORT Handle(VrmlConverter_ShadingAspect) ShadingAspect();
189 Standard_EXPORT void SetShadingAspect (const Handle(VrmlConverter_ShadingAspect)& anAspect);
191 //! returns Standard_True if the hidden lines are to be drawn.
192 //! By default the hidden lines are not drawn.
193 Standard_EXPORT Standard_Boolean DrawHiddenLine() const;
195 //! sets DrawHiddenLine = Standard_True - the hidden lines are drawn.
196 Standard_EXPORT void EnableDrawHiddenLine();
198 //! sets DrawHiddenLine = Standard_False - the hidden lines are not drawn.
199 Standard_EXPORT void DisableDrawHiddenLine();
201 //! returns LineAspect for the hidden lines.
202 //! The default values are the same default values from Vrml package.
203 Standard_EXPORT Handle(VrmlConverter_LineAspect) HiddenLineAspect();
205 //! sets LineAspect for the hidden lines.
206 Standard_EXPORT void SetHiddenLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
208 //! returns LineAspect for the seen lines.
209 //! The default values are the same default values from Vrml package.
210 Standard_EXPORT Handle(VrmlConverter_LineAspect) SeenLineAspect();
212 //! sets LineAspect for the seen lines.
213 Standard_EXPORT void SetSeenLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect);
215 DEFINE_STANDARD_RTTIEXT(VrmlConverter_Drawer,Standard_Transient)
219 Handle(VrmlConverter_IsoAspect) myUIsoAspect;
220 Handle(VrmlConverter_IsoAspect) myVIsoAspect;
221 Standard_Integer myNbPoints;
222 Standard_Boolean myIsoOnPlane;
223 Handle(VrmlConverter_LineAspect) myFreeBoundaryAspect;
224 Standard_Boolean myFreeBoundaryDraw;
225 Handle(VrmlConverter_LineAspect) myUnFreeBoundaryAspect;
226 Standard_Boolean myUnFreeBoundaryDraw;
227 Handle(VrmlConverter_LineAspect) myWireAspect;
228 Standard_Boolean myWireDraw;
229 Handle(VrmlConverter_LineAspect) myLineAspect;
230 Handle(VrmlConverter_ShadingAspect) myShadingAspect;
231 Standard_Real myChordialDeviation;
232 Aspect_TypeOfDeflection myTypeOfDeflection;
233 Standard_Real myMaximalParameterValue;
234 Standard_Real myDeviationCoefficient;
235 Handle(VrmlConverter_PointAspect) myPointAspect;
236 Standard_Boolean myDrawHiddenLine;
237 Handle(VrmlConverter_LineAspect) myHiddenLineAspect;
238 Handle(VrmlConverter_LineAspect) mySeenLineAspect;
242 #endif // _VrmlConverter_Drawer_HeaderFile