Warning, /include/opencascade/Geom2dHatch_Hatcher.lxx is written in an unsupported language. File is not indexed.
0001 // Created on: 1995-01-03
0002 // Created by: Laurent BUCHARD
0003 // Copyright (c) 1995-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016
0017 #define RAISE_IF_NOSUCHOBJECT 0
0018 #define TRACE 0
0019
0020 #include <StdFail_NotDone.hxx>
0021
0022 #include <Geom2dAdaptor_Curve.hxx>
0023 #include <Geom2dHatch_Intersector.hxx>
0024 #include <Geom2dHatch_Hatching.hxx>
0025 #include <Geom2dHatch_Element.hxx>
0026
0027 //=======================================================================
0028 // Function : Intersector
0029 // Purpose : Returns the associated intersector.
0030 //=======================================================================
0031
0032 inline const Geom2dHatch_Intersector& Geom2dHatch_Hatcher::Intersector ()
0033 {
0034 return myIntersector ;
0035 }
0036
0037 //=======================================================================
0038 // Function : ChangeIntersector
0039 // Purpose : Returns the associated intersector.
0040 //=======================================================================
0041
0042 inline Geom2dHatch_Intersector& Geom2dHatch_Hatcher::ChangeIntersector ()
0043 {
0044 return myIntersector ;
0045 }
0046
0047 //=======================================================================
0048 // Function : Confusion2d
0049 // Purpose : Returns the 2d confusion tolerance.
0050 //=======================================================================
0051
0052 inline Standard_Real Geom2dHatch_Hatcher::Confusion2d () const
0053 {
0054 return myConfusion2d ;
0055 }
0056
0057 //=======================================================================
0058 // Function : Confusion3d
0059 // Purpose : Returns the 3d confusion tolerance.
0060 //=======================================================================
0061
0062 inline Standard_Real Geom2dHatch_Hatcher::Confusion3d () const
0063 {
0064 return myConfusion3d ;
0065 }
0066
0067 //=======================================================================
0068 // Function : KeepPoints
0069 // Purpose : Returns the flag about the points consideration.
0070 //=======================================================================
0071
0072 inline Standard_Boolean Geom2dHatch_Hatcher::KeepPoints () const
0073 {
0074 return myKeepPoints ;
0075 }
0076
0077 //=======================================================================
0078 // Function : KeepSegments
0079 // Purpose : Returns the flag about the segments consideration.
0080 //=======================================================================
0081
0082 inline Standard_Boolean Geom2dHatch_Hatcher::KeepSegments () const
0083 {
0084 return myKeepSegments ;
0085 }
0086
0087 //=======================================================================
0088 // Function : Clear
0089 // Purpose : Removes all the hatchings and all the elements.
0090 //=======================================================================
0091
0092 inline void Geom2dHatch_Hatcher::Clear ()
0093 {
0094 if (myNbHatchings != 0) ClrHatchings () ;
0095 if (myNbElements != 0) ClrElements () ;
0096 }
0097
0098 //=======================================================================
0099 // Function : Element
0100 // Purpose : Returns the IndE-th element.
0101 //=======================================================================
0102
0103 inline Geom2dHatch_Element& Geom2dHatch_Hatcher::Element (const Standard_Integer IndE)
0104 {
0105 #if RAISE_IF_NOSUCHOBJECT
0106 Standard_NoSuchObject_Raise_if (!myElements.IsBound (IndE), "") ;
0107 #endif
0108 Geom2dHatch_Element& Element = myElements.ChangeFind (IndE) ;
0109 return Element ;
0110 }
0111
0112 //=======================================================================
0113 // Function : ElementCurve
0114 // Purpose : Returns the curve associated to the IndE-th element.
0115 //=======================================================================
0116
0117 inline const Geom2dAdaptor_Curve& Geom2dHatch_Hatcher::ElementCurve (const Standard_Integer IndE) const
0118 {
0119 #if RAISE_IF_NOSUCHOBJECT
0120 Standard_NoSuchObject_Raise_if (!myElements.IsBound (IndE), "") ;
0121 #endif
0122 const Geom2dHatch_Element& Element = myElements.Find (IndE) ;
0123 return Element.Curve() ;
0124 }
0125
0126
0127 //=======================================================================
0128 // Function : Hatching
0129 // Purpose : Returns the IndH-th hatching.
0130 //=======================================================================
0131
0132 inline Geom2dHatch_Hatching& Geom2dHatch_Hatcher::Hatching (const Standard_Integer IndH)
0133 {
0134 #if RAISE_IF_NOSUCHOBJECT
0135 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0136 #endif
0137 Geom2dHatch_Hatching& Hatching = myHatchings.ChangeFind (IndH) ;
0138 return Hatching ;
0139 }
0140
0141 //=======================================================================
0142 // Function : HatchingCurve
0143 // Purpose : Returns the curve associated to the IndH-th hatching.
0144 //=======================================================================
0145
0146 inline const Geom2dAdaptor_Curve& Geom2dHatch_Hatcher::HatchingCurve (const Standard_Integer IndH) const
0147 {
0148 #if RAISE_IF_NOSUCHOBJECT
0149 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0150 #endif
0151 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0152 return Hatching.Curve() ;
0153 }
0154
0155 //=======================================================================
0156 // Function : NbPoints
0157 // Purpose : Returns the number of intersection points of the IndH-th
0158 // hatching.
0159 //=======================================================================
0160
0161 inline Standard_Integer Geom2dHatch_Hatcher::NbPoints (const Standard_Integer IndH) const
0162 {
0163 #if RAISE_IF_NOSUCHOBJECT
0164 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0165 #endif
0166 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0167 return Hatching.NbPoints() ;
0168 }
0169
0170 //=======================================================================
0171 // Function : Point
0172 // Purpose : Returns the IndP-th intersection point of the IndH-th
0173 // hatching.
0174 //=======================================================================
0175
0176 inline const HatchGen_PointOnHatching& Geom2dHatch_Hatcher::Point (const Standard_Integer IndH,
0177 const Standard_Integer IndP) const
0178 {
0179 #if RAISE_IF_NOSUCHOBJECT
0180 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0181 #endif
0182 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0183 #if RAISE_IF_NOSUCHOBJECT
0184 Standard_OutOfRange_Raise_if (IndP < 0 || IndP > Hatching.NbPoints(), "") ;
0185 #endif
0186 const HatchGen_PointOnHatching& PntH = Hatching.Point (IndP) ;
0187 return PntH ;
0188 }
0189
0190 //=======================================================================
0191 // Function : TrimDone
0192 // Purpose : Returns the fact that all the intersections were computed
0193 // for the IndH-th hatching.
0194 //=======================================================================
0195
0196 inline Standard_Boolean Geom2dHatch_Hatcher::TrimDone (const Standard_Integer IndH) const
0197 {
0198 #if RAISE_IF_NOSUCHOBJECT
0199 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0200 #endif
0201 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0202 return Hatching.TrimDone() ;
0203 }
0204 //=======================================================================
0205 // Function : TrimFailed
0206 // Purpose : Returns the fact that all the intersections failed
0207 // for the IndH-th hatching.
0208 //=======================================================================
0209
0210 inline Standard_Boolean Geom2dHatch_Hatcher::TrimFailed (const Standard_Integer IndH) const
0211 {
0212 #if RAISE_IF_NOSUCHOBJECT
0213 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0214 #endif
0215 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0216 return Hatching.TrimFailed() ;
0217 }
0218
0219 //=======================================================================
0220 // Function : IsDone
0221 // Purpose : Returns the fact that all the domains were computed
0222 // for the IndH-th hatching.
0223 //=======================================================================
0224
0225 inline Standard_Boolean Geom2dHatch_Hatcher::IsDone (const Standard_Integer IndH) const
0226 {
0227 #if RAISE_IF_NOSUCHOBJECT
0228 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0229 #endif
0230 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0231 return Hatching.IsDone() ;
0232 }
0233 //=======================================================================
0234 // Function : Status
0235 // Purpose : Returns the status about the IndH-th hatching.
0236 //=======================================================================
0237
0238 inline HatchGen_ErrorStatus Geom2dHatch_Hatcher::Status (const Standard_Integer IndH) const
0239 {
0240 #if RAISE_IF_NOSUCHOBJECT
0241 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0242 #endif
0243 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0244 return Hatching.Status() ;
0245 }
0246 //=======================================================================
0247 // Function : NbDomains
0248 // Purpose : Returns the number of domains of the IndH-th hatching.
0249 //=======================================================================
0250
0251 inline Standard_Integer Geom2dHatch_Hatcher::NbDomains (const Standard_Integer IndH) const
0252 {
0253 #if RAISE_IF_NOSUCHOBJECT
0254 Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ;
0255 #endif
0256 const Geom2dHatch_Hatching& Hatching = myHatchings.Find (IndH) ;
0257 StdFail_NotDone_Raise_if (!Hatching.IsDone(), "Geom2dHatch_Hatcher::NbDomains") ;
0258 return Hatching.NbDomains() ;
0259 }
0260
0261
0262