Salome HOME
loadImage() for py scripts
[modules/hydro.git] / src / HYDROData / HYDROData_ShapeFile.h
index 4046f0b8562466173ccb70b81164bf39b118da45..41f2200f7a4a2530089576407349d80f0c8e19f2 100644 (file)
 #ifndef HYDRODATA_SHAPEFILE_H
 #define HYDRODATA_SHAPEFILE_H
 
-#include <vector>
+#include "HYDROData.h"
+
 #include <NCollection_Sequence.hxx>
+
+#include <TopTools_SequenceOfShape.hxx>
+
 #include <QStringList>
-#include "HYDROData.h"
+
+#include <vector>
+
 
 //extern "C" {
 #include <shapefil.h> 
 //};
 
 class gp_XYZ;
-class Handle_HYDROData_PolylineXY;
-class Handle_HYDROData_Polyline3D;
-class Handle(HYDROData_Document);
-class TopTools_SequenceOfShape;
+class HYDROData_PolylineXY;
+class HYDROData_Polyline3D;
+class HYDROData_Document;
 class TopoDS_Face;
 class TopoDS_Shape;
-class Handle_HYDROData_Entity;
-class Handle_HYDROData_LandCoverMap;
+class HYDROData_Entity;
+class HYDROData_LandCoverMap;
 
 class HYDROData_ShapeFile 
 {
@@ -81,26 +86,35 @@ public:
   virtual HYDRODATA_EXPORT ~HYDROData_ShapeFile();
 
   //Export operation
-  HYDRODATA_EXPORT void Export(const QString& aFileName, 
-                               NCollection_Sequence<Handle_HYDROData_PolylineXY> aPolyXYSeq,
-                               NCollection_Sequence<Handle_HYDROData_Polyline3D> aPoly3DSeq,
+  HYDRODATA_EXPORT void Export(Handle(HYDROData_Document) theDocument,
+                               const QString& aFileName,
+                               NCollection_Sequence<Handle(HYDROData_PolylineXY)> aPolyXYSeq,
+                               NCollection_Sequence<Handle(HYDROData_Polyline3D)> aPoly3DSeq,
                                QStringList& aNonExpList);
 
-  HYDRODATA_EXPORT void Export(const QString& aFileName,
-                               const Handle_HYDROData_LandCoverMap& aLCM,
-                               QStringList& aNonExpList);
+  HYDRODATA_EXPORT void Export(Handle(HYDROData_Document) theDocument,
+                               const QString& aFileName,
+                               const Handle(HYDROData_LandCoverMap)& aLCM,
+                               QStringList& aNonExpList,
+                               bool bCheckLinear = true,
+                               bool bUseDiscr = false, 
+                               double theDefl = 0.1);
 
-  int WriteObjectPolyXY(SHPHandle theShpHandle, Handle_HYDROData_PolylineXY thePoly );
+  int WriteObjectPolyXY(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+                        Handle(HYDROData_PolylineXY) thePoly );
 
-  int WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly );
+  int WriteObjectPoly3D(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+                        Handle(HYDROData_Polyline3D) thePoly );
 
-  int WriteObjectPolygon(SHPHandle theShpHandle, const TopoDS_Shape& theInputShape );
+  int WriteObjectPolygon(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+                         const TopoDS_Shape& theInputShape, bool bUseDiscr, double theDefl );
   //Import
   bool Parse(SHPHandle theHandle, ShapeType theType, int& theShapeTypeOfFile);
   //Import Landcover
-  void ReadSHPPolygon(SHPObject* anObj, int i, TopoDS_Face& F);
+  void ReadSHPPolygon(Handle(HYDROData_Document) theDocument, SHPObject* anObj, int i, TopoDS_Face& F);
 
-  HYDRODATA_EXPORT int ImportPolygons(const QString theFileName, 
+  HYDRODATA_EXPORT int ImportPolygons(Handle(HYDROData_Document) theDocument,
+                                      const QString theFileName,
                                       QStringList& thePolygonsList, 
                                       TopTools_SequenceOfShape& theFaces, 
                                       int& theShapeTypeOfFile);
@@ -109,13 +123,14 @@ public:
 
   //Import Polyline
   void ReadSHPPolyXY(Handle(HYDROData_Document) theDocument, SHPObject* anObj, QString theFileName, 
-                     int theInd, NCollection_Sequence<Handle_HYDROData_Entity>& theEntities);
+                     int theInd, NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities,
+                     bool bReadAsPolylin = false);
 
   void ReadSHPPoly3D(Handle(HYDROData_Document) theDocument, SHPObject* anObj, QString theFileName, 
-                     int theInd, NCollection_Sequence<Handle_HYDROData_Entity>& theEntities);
+                     int theInd, NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities);
 
   HYDRODATA_EXPORT int ImportPolylines(Handle(HYDROData_Document) theDocument, const QString& theFileName, 
-                                       NCollection_Sequence<Handle_HYDROData_Entity>& theEntities, int& theShapeTypeOfFile);
+                                       NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities, int& theShapeTypeOfFile);
 
   HYDRODATA_EXPORT QString GetShapeTypeName(int theType);
 
@@ -132,11 +147,17 @@ public:
 
 private:
   
-  void ProcessFace(const TopoDS_Face& theFace, SHPHandle theShpHandle,
-                   bool bUseDiscr = false, double theDefl = 0.1);
+  void ProcessFace(Handle(HYDROData_Document) theDocument,
+                   const TopoDS_Face& theFace, SHPHandle theShpHandle,
+                   bool bUseDiscr, double theDefl);
+
+  bool CheckLinear(const TopoDS_Shape& theInpShape);
 
   int TryOpenShapeFile(QString theFileName);
 
+  void GetFreeIndices(std::vector<int>& theAllowedIndexes, QString strName, size_t theObjsSize,
+                      QStringList theExistingNames, QString theBaseFileName);
+
 private:
   std::vector<SHPObject*> mySHPObjects;
   SHPHandle myHSHP;