Salome HOME
change def hasher for indexed map
[modules/hydro.git] / src / HYDROData / HYDROData_ShapeFile.h
index eb381ceecc4263f62dd29f22ea4fde06464eaf74..d74e63d5fa8ccd971d490f8f1912e3f64dd5826f 100644 (file)
@@ -1,8 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2014-2015  EDF-R&D
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
@@ -38,6 +34,7 @@ class Handle_HYDROData_Polyline3D;
 class Handle(HYDROData_Document);
 class TopTools_SequenceOfShape;
 class TopoDS_Face;
+class TopoDS_Shape;
 class Handle_HYDROData_Entity;
 class Handle_HYDROData_LandCoverMap;
 
@@ -84,43 +81,77 @@ public:
   virtual HYDRODATA_EXPORT ~HYDROData_ShapeFile();
 
   //Export operation
-  HYDRODATA_EXPORT void Export(const QString& aFileName, 
+  HYDRODATA_EXPORT void Export(Handle(HYDROData_Document) theDocument,
+                               const QString& aFileName,
                                NCollection_Sequence<Handle_HYDROData_PolylineXY> aPolyXYSeq,
                                NCollection_Sequence<Handle_HYDROData_Polyline3D> aPoly3DSeq,
-                               const Handle_HYDROData_LandCoverMap& aLCSeq,
                                QStringList& aNonExpList);
-  int WriteObjectPolyXY(SHPHandle theShpHandle, Handle_HYDROData_PolylineXY thePoly );
-  int WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly );
-  //TODO:int WriteObjectLC(SHPHandle theShpHandle, Handle_HYDROData_LandCover theLC );
+
+  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(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+                        Handle_HYDROData_PolylineXY thePoly );
+
+  int WriteObjectPoly3D(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+                        Handle_HYDROData_Polyline3D thePoly );
+
+  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);
-  HYDRODATA_EXPORT int ImportLandCovers(const QString theFileName, QStringList& thePolygonsList, TopTools_SequenceOfShape& theFaces, int& theShapeTypeOfFile);
+  void ReadSHPPolygon(Handle(HYDROData_Document) theDocument, SHPObject* anObj, int i, TopoDS_Face& F);
+
+  HYDRODATA_EXPORT int ImportPolygons(Handle(HYDROData_Document) theDocument,
+                                      const QString theFileName,
+                                      QStringList& thePolygonsList, 
+                                      TopTools_SequenceOfShape& theFaces, 
+                                      int& theShapeTypeOfFile);
+
   HYDRODATA_EXPORT void Free();
+
   //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 bReadAsPolyline = 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);
 
   //DBF I/O Methods
-  bool CheckDBFFileExisting(const QString& theSHPFilePath, QString& thePathToDBFFile);
-  bool DBF_OpenDBF(const QString& thePathToDBFFile);
-  int DBF_GetNbFields();
-  QStringList DBF_GetFieldList();
-  void DBF_GetFieldTypeList(std::vector<DBF_FieldType>& FTVect);
-  int DBF_GetNbRecords();
-  void DBF_CloseDBF();
-  void DBF_GetAttributeList(int theIndexOfField, std::vector<DBF_AttrValue>& theAttrV);
-  bool DBF_WriteFieldAndValues(const QString& theFileName, const QString& theFieldName, DBF_FieldType theType, const std::vector<DBF_AttrValue>& theAttrV, bool bUseStrValue);
+  HYDRODATA_EXPORT bool CheckDBFFileExisting(const QString& theSHPFilePath, QString& thePathToDBFFile);
+  HYDRODATA_EXPORT bool DBF_OpenDBF(const QString& thePathToDBFFile);
+  HYDRODATA_EXPORT int DBF_GetNbFields();
+  HYDRODATA_EXPORT QStringList DBF_GetFieldList();
+  HYDRODATA_EXPORT void DBF_GetFieldTypeList(std::vector<DBF_FieldType>& FTVect);
+  HYDRODATA_EXPORT int DBF_GetNbRecords();
+  HYDRODATA_EXPORT void DBF_CloseDBF();
+  HYDRODATA_EXPORT void DBF_GetAttributeList(int theIndexOfField, std::vector<DBF_AttrValue>& theAttrV);
+  HYDRODATA_EXPORT bool DBF_WriteFieldAndValues(const QString& theFileName, const QString& theFieldName, DBF_FieldType theType, const std::vector<DBF_AttrValue>& theAttrV, bool bUseStrValue);
 
 private:
-  void ProcessFace(TopoDS_Face theFace, SHPHandle theShpHandle);
+  
+  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;