2 #ifndef HYDROData_SplitToZonesTool_H
3 #define HYDROData_SplitToZonesTool_H
5 #include <HYDROData_Object.h>
7 #include <TopoDS_Face.hxx>
11 class Handle(HYDROData_PolylineXY);
14 * \class HYDROData_SplitToZonesTool
15 * \brief This class contains methods used for splitting geometry objects
16 * into non-intersected regions.
18 class HYDRODATA_EXPORT HYDROData_SplitToZonesTool
21 struct HYDRODATA_EXPORT SplitData
31 QStringList ObjectNames;
37 SplitData( const SplitObjectType& theType,
38 const TopoDS_Shape& theShape,
39 const QStringList& theObjectNames ) :
40 Type( theType ), Shape( theShape ), ObjectNames( theObjectNames ) {}
42 SplitData( const SplitObjectType& theType,
43 const TopoDS_Shape& theShape,
44 const QString& theObjectName ) :
45 Type( theType ), Shape( theShape ), ObjectNames( theObjectName ) {}
47 TopoDS_Face Face() const;
50 typedef QList <SplitData> SplitDataList;
51 typedef QListIterator<SplitData> SplitDataListIterator;
55 static SplitDataList Split( const HYDROData_SequenceOfObjects& theObjectList,
56 const HYDROData_SequenceOfObjects& theGroupsList,
57 const Handle(HYDROData_PolylineXY)& thePolyline );
61 static bool SplitTwoData( const SplitData& theData1,
62 const SplitData& theData2,
63 SplitData& theData1Subtracted,
64 SplitData& theData2Subtracted,
65 SplitData& theDataIntersected );
67 static SplitDataList ExtractSeparateData( const SplitData& theData );