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 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 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. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 16 17 #ifndef _VrmlConverter_Drawer_HeaderFile 18 #define _VrmlConverter_Drawer_HeaderFile 19 20 #include <Standard.hxx> 21 #include <Standard_Type.hxx> 22 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; 32 33 34 class VrmlConverter_Drawer; 35 DEFINE_STANDARD_HANDLE(VrmlConverter_Drawer, Standard_Transient) 36 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 41 { 42 43 public: 44 45 46 Standard_EXPORT VrmlConverter_Drawer(); 47 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); 51 52 Standard_EXPORT Aspect_TypeOfDeflection TypeOfDeflection() const; 53 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: 58 //! 59 //! VrmlConverter_DeflectionCurve 60 //! VrmlConverter_WFDeflectionRestrictedFace 61 //! VrmlConverter_WFDeflectionShape 62 Standard_EXPORT void SetMaximalChordialDeviation (const Standard_Real aChordialDeviation); 63 64 //! returns the maximal chordial deviation. 65 //! Default value: 0.1 66 Standard_EXPORT Standard_Real MaximalChordialDeviation() const; 67 68 //! default 0.001 69 Standard_EXPORT void SetDeviationCoefficient (const Standard_Real aCoefficient); 70 71 Standard_EXPORT Standard_Real DeviationCoefficient() const; 72 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: 78 //! 79 //! VrmlConverter_Curve 80 //! VrmlConverter_WFRestrictedFace 81 //! VrmlConverter_WFShape 82 Standard_EXPORT void SetDiscretisation (const Standard_Integer d); 83 84 Standard_EXPORT Standard_Integer Discretisation() const; 85 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); 93 94 Standard_EXPORT Standard_Real MaximalParameterValue() const; 95 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); 99 100 //! returns True if the drawing of isos on planes is enabled. 101 Standard_EXPORT Standard_Boolean IsoOnPlane() const; 102 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. 107 //! 108 //! These attributes are used by the following algorithms: 109 //! VrmlConverter_WFRestrictedFace 110 //! VrmlConverter_WFDeflectionRestrictedFace 111 Standard_EXPORT Handle(VrmlConverter_IsoAspect) UIsoAspect(); 112 113 Standard_EXPORT void SetUIsoAspect (const Handle(VrmlConverter_IsoAspect)& anAspect); 114 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. 119 //! 120 //! These attributes are used by the following algorithms: 121 //! VrmlConverter_WFRestrictedFace 122 //! VrmlConverter_WFDeflectionRestrictedFace 123 Standard_EXPORT Handle(VrmlConverter_IsoAspect) VIsoAspect(); 124 125 Standard_EXPORT void SetVIsoAspect (const Handle(VrmlConverter_IsoAspect)& anAspect); 126 127 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(); 133 134 Standard_EXPORT void SetFreeBoundaryAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 135 136 //! enables the drawing the free boundaries 137 //! By default the free boundaries are drawn. 138 Standard_EXPORT void SetFreeBoundaryDraw (const Standard_Boolean OnOff); 139 140 //! returns True if the drawing of the free boundaries is enabled. 141 Standard_EXPORT Standard_Boolean FreeBoundaryDraw() const; 142 143 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(); 149 150 Standard_EXPORT void SetWireAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 151 152 //! enables the drawing the wire 153 //! By default the wire are drawn. 154 Standard_EXPORT void SetWireDraw (const Standard_Boolean OnOff); 155 156 //! returns True if the drawing of the wire is enabled. 157 Standard_EXPORT Standard_Boolean WireDraw() const; 158 159 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(); 165 166 Standard_EXPORT void SetUnFreeBoundaryAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 167 168 //! enables the drawing the unfree boundaries 169 //! By default the unfree boundaries are drawn. 170 Standard_EXPORT void SetUnFreeBoundaryDraw (const Standard_Boolean OnOff); 171 172 //! returns True if the drawing of the unfree boundaries is enabled. 173 Standard_EXPORT Standard_Boolean UnFreeBoundaryDraw() const; 174 175 176 //! The default values are the same default values from Vrml package. 177 Standard_EXPORT Handle(VrmlConverter_LineAspect) LineAspect(); 178 179 Standard_EXPORT void SetLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 180 181 Standard_EXPORT Handle(VrmlConverter_PointAspect) PointAspect(); 182 183 Standard_EXPORT void SetPointAspect (const Handle(VrmlConverter_PointAspect)& anAspect); 184 185 186 //! The default values are the same default values from Vrml package. 187 Standard_EXPORT Handle(VrmlConverter_ShadingAspect) ShadingAspect(); 188 189 Standard_EXPORT void SetShadingAspect (const Handle(VrmlConverter_ShadingAspect)& anAspect); 190 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; 194 195 //! sets DrawHiddenLine = Standard_True - the hidden lines are drawn. 196 Standard_EXPORT void EnableDrawHiddenLine(); 197 198 //! sets DrawHiddenLine = Standard_False - the hidden lines are not drawn. 199 Standard_EXPORT void DisableDrawHiddenLine(); 200 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(); 204 205 //! sets LineAspect for the hidden lines. 206 Standard_EXPORT void SetHiddenLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 207 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(); 211 212 //! sets LineAspect for the seen lines. 213 Standard_EXPORT void SetSeenLineAspect (const Handle(VrmlConverter_LineAspect)& anAspect); 214 215 DEFINE_STANDARD_RTTIEXT(VrmlConverter_Drawer,Standard_Transient) 216 217 private: 218 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; 239 240 }; 241 242 #endif // _VrmlConverter_Drawer_HeaderFile 243