Salome HOME
refs #1330: basic implementation of the not zoomable polyline arrows
[modules/hydro.git] / src / HYDROData / HYDROData_SinusX.cxx
index 4b9dc6f4fc78bf464fd3c088133812c04964ea16..a18d59eb6e8617732fca8a2eee0705c20a079185 100644 (file)
@@ -43,7 +43,7 @@ HYDROData_SinusX::~HYDROData_SinusX()
 {
 }
 
-void HYDROData_SinusX::CollectExistingNames(Handle_HYDROData_Document theDocument)
+void HYDROData_SinusX::CollectExistingNames(Handle(HYDROData_Document) theDocument)
 {
   HYDROData_Iterator anIter( theDocument );
   int anInd = 0;
@@ -86,7 +86,8 @@ QString HYDROData_SinusX::GetName(const QString& theName)
 }
 
 
-bool HYDROData_SinusX::Import(const QString& theFilePath, Handle(HYDROData_Document) theDocument, NCollection_Sequence<Handle_HYDROData_Entity>& theEntities)
+bool HYDROData_SinusX::Import(const QString& theFilePath, Handle(HYDROData_Document) theDocument,
+  NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities)
 {
   if ( theFilePath.isEmpty() )
   { 
@@ -115,7 +116,7 @@ bool HYDROData_SinusX::Import(const QString& theFilePath, Handle(HYDROData_Docum
 
 }
 
-void HYDROData_SinusX::SXToHydro(Handle(HYDROData_Document) theDocument, NCollection_Sequence<Handle_HYDROData_Entity>& theEntities)
+void HYDROData_SinusX::SXToHydro(Handle(HYDROData_Document) theDocument, NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities)
 { 
   for ( size_t i = 0; i < myCurveBlocks.size(); i++ )
   {
@@ -123,11 +124,17 @@ void HYDROData_SinusX::SXToHydro(Handle(HYDROData_Document) theDocument, NCollec
     {
       Handle(HYDROData_Bathymetry) aBath = Handle(HYDROData_Bathymetry)::DownCast( theDocument->CreateObject( KIND_BATHYMETRY ) );
       HYDROData_Bathymetry::AltitudePoints aAPoints;
-      for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
+      size_t n = myCurveBlocks[i].myXYZPoints.size();
+      aAPoints.reserve( n );
+      for (size_t j = 0; j < n; j++)
       {
         gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]);
         theDocument->Transform(aLocalPoint, true);
-        aAPoints.Append(aLocalPoint);
+        HYDROData_Bathymetry::AltitudePoint p;
+        p.X = aLocalPoint.X();
+        p.Y = aLocalPoint.Y();
+        p.Z = aLocalPoint.Z();
+        aAPoints.push_back(p);
       }
 
       aBath->SetAltitudePoints(aAPoints);
@@ -322,7 +329,7 @@ bool HYDROData_SinusX::Parse(QFile& theFile)
 
 }
 
-bool HYDROData_SinusX::Export(const QString& theFilePath, const NCollection_Sequence<Handle_HYDROData_Entity>& theEntities)
+bool HYDROData_SinusX::Export(const QString& theFilePath, const NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities)
 {
   if ( theFilePath.isEmpty() )
   { 
@@ -348,7 +355,7 @@ bool HYDROData_SinusX::Export(const QString& theFilePath, const NCollection_Sequ
 
 }
 
-void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_Sequence<Handle_HYDROData_Entity>& theEntities)
+void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_Sequence<Handle(HYDROData_Entity)>& theEntities)
 {
   QTextStream aTextStream(&theFile);
   aTextStream << "C  Generated by HYDRO Module\n";
@@ -356,7 +363,7 @@ void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_Sequence<Hand
 
   for (int i = 1; i <= theEntities.Size(); i++)
   {
-    Handle_HYDROData_Entity anEnt = theEntities.Value(i);
+    Handle(HYDROData_Entity) anEnt = theEntities.Value(i);
     if (anEnt->IsKind( STANDARD_TYPE(HYDROData_Bathymetry) ))
     {
       Handle(HYDROData_Bathymetry) aBathy = Handle(HYDROData_Bathymetry)::DownCast( anEnt );
@@ -366,10 +373,10 @@ void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_Sequence<Hand
       aTextStream << "CN " << aBathy->GetName() << "\n";
       aTextStream << "CP 0 0\n";
       aTextStream << "CP 0\n";
-      for (int j = anXYZPoints.Lower(); j <= anXYZPoints.Upper(); j++)
-        aTextStream << " " << QString::number(anXYZPoints(j).X(), 'f', 3)  
-                    << " " << QString::number(anXYZPoints(j).Y(), 'f', 3)  
-                    << " " << QString::number(anXYZPoints(j).Z(), 'f', 3) << "\n"; 
+      for (size_t j = 0, m = anXYZPoints.size(); j < m; j++)
+        aTextStream << " " << QString::number(anXYZPoints[j].X, 'f', 3)  
+                    << " " << QString::number(anXYZPoints[j].Y, 'f', 3)  
+                    << " " << QString::number(anXYZPoints[j].Z, 'f', 3) << "\n"; 
     }
     else if (anEnt->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) ))
     {