From: rkv Date: Fri, 27 Dec 2013 08:07:02 +0000 (+0000) Subject: New objects have been wrapped for Python. X-Git-Tag: BR_hydro_v_0_7~27 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1ec37f9d5e793698adfc0c1897d097ce14d287f1;p=modules%2Fhydro.git New objects have been wrapped for Python. --- diff --git a/src/HYDROPy/CMakeLists.txt b/src/HYDROPy/CMakeLists.txt index 2ae650a5..d1f9d144 100644 --- a/src/HYDROPy/CMakeLists.txt +++ b/src/HYDROPy/CMakeLists.txt @@ -53,6 +53,31 @@ SET(_sip_files HYDROData.sip ) +#TODO: new files include like this: +# HYDROData_Entity.sip +# HYDROData_IPolyline.sip +# HYDROData_IAltitudeObject.sip +## HYDROData_ObstacleAltitude.sip +# HYDROData_Object.sip +## HYDROData_Profile.sip +## HYDROData_Polyline3D.sip +# HYDROData_ProfileUZ.sip +# HYDROData_PolylineXY.sip +# HYDROData_ArtificialObject.sip +# HYDROData_Obstacle.sip +## HYDROData_Channel.sip +## HYDROData_Digue.sip +# HYDROData_NaturalObject.sip +# HYDROData_River.sip +## HYDROData_Stream.sip +# HYDROData_Image.sip +# HYDROData_Bathymetry.sip +# HYDROData_ImmersibleZone.sip +# HYDROData_Zone.sip +# HYDROData_Region.sip +# HYDROData_CalculationCase.sip +# HYDROData_Document.sip + SET(_sip_files2 HYDROData_Entity.sip HYDROData_IPolyline.sip @@ -63,6 +88,7 @@ SET(_sip_files2 HYDROData_ArtificialObject.sip HYDROData_Obstacle.sip HYDROData_NaturalObject.sip + HYDROData_River.sip HYDROData_Image.sip HYDROData_Bathymetry.sip HYDROData_ImmersibleZone.sip diff --git a/src/HYDROPy/HYDROData.sip b/src/HYDROPy/HYDROData.sip index 2e9f9130..13a1c7be 100644 --- a/src/HYDROPy/HYDROData.sip +++ b/src/HYDROPy/HYDROData.sip @@ -54,12 +54,19 @@ See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com %Include HYDROData_Entity.sip %Include HYDROData_IPolyline.sip %Include HYDROData_IAltitudeObject.sip +//Include HYDROData_ObstacleAltitude.sip %Include HYDROData_Object.sip +//Include HYDROData_Profile.sip +//Include HYDROData_Polyline3D.sip %Include HYDROData_ProfileUZ.sip %Include HYDROData_PolylineXY.sip %Include HYDROData_ArtificialObject.sip %Include HYDROData_Obstacle.sip +//Include HYDROData_Channel.sip +//Include HYDROData_Digue.sip %Include HYDROData_NaturalObject.sip +%Include HYDROData_River.sip +//Include HYDROData_Stream.sip %Include HYDROData_Image.sip %Include HYDROData_PolylineXY.sip %Include HYDROData_Bathymetry.sip diff --git a/src/HYDROPy/HYDROData_Channel.sip b/src/HYDROPy/HYDROData_Channel.sip new file mode 100644 index 00000000..6c81449e --- /dev/null +++ b/src/HYDROPy/HYDROData_Channel.sip @@ -0,0 +1,92 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_Channel.h" +%End + +class HYDROData_Channel : public HYDROData_ArtificialObject +{ +%TypeHeaderCode +#include "HYDROData_Channel.h" +%End + +public: + /** + * Returns default filling color for new channel. + */ + static QColor DefaultFillingColor(); + + /** + * Returns default border color for new channel. + */ + static QColor DefaultBorderColor(); + + +public: + // Public methods to work with Channel + + /** + * Sets reference guide line object for channel. + */ + virtual bool SetGuideLine( const Handle(HYDROData_Polyline3D)& theGuideLine ); + + /** + * Returns reference guide line object of channel. + */ + virtual Handle(HYDROData_Polyline3D) GetGuideLine() const; + + /** + * Remove reference guide line object from channel. + */ + virtual void RemoveGuideLine(); + + + /** + * Sets reference profile object for channel. + */ + virtual bool SetProfile( const Handle(HYDROData_Profile)& theProfile ); + + /** + * Returns reference profile object of channel. + */ + virtual Handle(HYDROData_Profile) GetProfile() const; + + /** + * Remove reference profile object from channel. + */ + virtual void RemoveProfile(); + + +protected: + + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_Channel(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + virtual ~HYDROData_Channel(); +}; diff --git a/src/HYDROPy/HYDROData_Digue.sip b/src/HYDROPy/HYDROData_Digue.sip new file mode 100644 index 00000000..3e90127b --- /dev/null +++ b/src/HYDROPy/HYDROData_Digue.sip @@ -0,0 +1,55 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_Digue.h" +%End + +class HYDROData_Digue : public HYDROData_Channel +{ +%TypeHeaderCode +#include "HYDROData_Digue.h" +%End + +public: + /** + * Returns default filling color for new digue. + */ + static QColor DefaultFillingColor(); + + /** + * Returns default border color for new digue. + */ + static QColor DefaultBorderColor(); + +protected: + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_Digue(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + virtual ~HYDROData_Digue(); +}; diff --git a/src/HYDROPy/HYDROData_Obstacle.sip b/src/HYDROPy/HYDROData_Obstacle.sip index d7d4211f..06063fd1 100644 --- a/src/HYDROPy/HYDROData_Obstacle.sip +++ b/src/HYDROPy/HYDROData_Obstacle.sip @@ -31,16 +31,6 @@ class HYDROData_Obstacle : public HYDROData_ArtificialObject %End public: - /** - * Returns the top shape of the object. - */ -// virtual TopoDS_Shape GetTopShape() const; - - /** - * Returns the 3d shape of the object. - */ -// virtual TopoDS_Shape GetShape3D() const; - /** * Returns default filling color for new obstacle. */ @@ -51,12 +41,6 @@ public: */ static QColor DefaultBorderColor(); - - /** - * Sets the 3d shape of the object. - */ -// virtual void SetShape3D( const TopoDS_Shape& theShape ); - public: /** diff --git a/src/HYDROPy/HYDROData_ObstacleAltitude.sip b/src/HYDROPy/HYDROData_ObstacleAltitude.sip new file mode 100644 index 00000000..64aa35b5 --- /dev/null +++ b/src/HYDROPy/HYDROData_ObstacleAltitude.sip @@ -0,0 +1,56 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_ObstacleAltitude.h" +%End + +class HYDROData_ObstacleAltitude : public HYDROData_IAltitudeObject +{ +%TypeHeaderCode +#include "HYDROData_ObstacleAltitude.h" +%End + +public: + + // Public methods to work with altitudes. + + /** + * Returns altitude for given point. + * \param thePoint the point to examine + * \return altitude value + */ + virtual double GetAltitudeForPoint( const gp_XY& thePoint ) const; + +protected: + + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_ObstacleAltitude(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + ~HYDROData_ObstacleAltitude(); +}; diff --git a/src/HYDROPy/HYDROData_Polyline3D.sip b/src/HYDROPy/HYDROData_Polyline3D.sip new file mode 100644 index 00000000..a690c3bb --- /dev/null +++ b/src/HYDROPy/HYDROData_Polyline3D.sip @@ -0,0 +1,112 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_Polyline3D.h" +%End + +class HYDROData_Polyline3D : public HYDROData_Object +{ +%TypeHeaderCode +#include "HYDROData_Polyline3D.h" +%End + +public: + /** + * Returns default filling color for new 3D polyline. + */ + static QColor DefaultFillingColor(); + + /** + * Returns default border color for new 3D polyline. + */ + static QColor DefaultBorderColor(); + + +public: + // Public methods to work with 3D polyline + + /** + * Sets reference x,y polyline object for 3D polyline. + */ + virtual bool SetPolylineXY( const Handle(HYDROData_PolylineXY)& thePolyline, + const bool theIsUpdateProfile = true ); + + /** + * Returns reference x,y polyline object of 3D polyline. + */ + virtual Handle(HYDROData_PolylineXY) GetPolylineXY() const; + + /** + * Remove reference x,y polyline object from 3D polyline. + */ + virtual void RemovePolylineXY(); + + + /** + * Sets reference u,z profile object for 3D polyline. + */ + virtual bool SetProfileUZ( const Handle(HYDROData_ProfileUZ)& theProfile ); + + /** + * Returns reference u,z profile object of 3D polyline. + */ + virtual Handle(HYDROData_ProfileUZ) GetProfileUZ() const; + + /** + * Remove reference u,z profile object from 3D polyline. + */ + virtual void RemoveProfileUZ(); + + + /** + * Set reference bathymetry object for geometry object. + * Reimplemented to remove reference u,z profile. + */ + virtual bool SetAltitudeObject( const Handle(HYDROData_IAltitudeObject)& theAltitude ); + + /** + * Clear the reference bathymetry object for geometry object. + * Reimplemented to remove child u,z profile. + */ + virtual void RemoveAltitudeObject(); + + + /** + * Returns the child u,z profile which has been generated from bathymetry. + */ + Handle(HYDROData_ProfileUZ) GetChildProfileUZ( const bool theIsCreate = true ) const; + + +protected: + + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_Polyline3D(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + virtual ~HYDROData_Polyline3D(); +}; diff --git a/src/HYDROPy/HYDROData_Profile.sip b/src/HYDROPy/HYDROData_Profile.sip new file mode 100644 index 00000000..cfd37d46 --- /dev/null +++ b/src/HYDROPy/HYDROData_Profile.sip @@ -0,0 +1,260 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_Profile.h" +%End + +class HYDROData_Profile : public HYDROData_Object +{ +%TypeHeaderCode +#include "HYDROData_Profile.h" +%End + +public: + /** + * Returns default filling color for new profile. + */ + static QColor DefaultFillingColor(); + + /** + * Returns default border color for new profile. + */ + static QColor DefaultBorderColor(); + + +public: + + /** + * Check profile data and returns true if profile is valid. + * Validity is determined by: + * - First(left) and Last(right) point was set + * - Parametric points size is more than 1 + */ + bool IsValid() const; + + /** + * Invalidate profile first and last points. + */ + void Invalidate(); + +public: + + // Public methods to work with profile points. + + /** + * Set first(left) point for profile. + * \param thePoint the point + */ + void SetLeftPoint( const QPointF& thePoint ) [void (const gp_XY&)]; + %MethodCode + + // The C++ API gets the gp_XY object, we convert it from QPointF. + gp_XY aPoint( a0->x(), a0->y() ); + + Py_BEGIN_ALLOW_THREADS + if ( sipSelfWasArg ) + { + sipCpp->HYDROData_Profile::SetLeftPoint( aPoint ); + } + else + { + sipCpp->SetLeftPoint( aPoint ); + } + Py_END_ALLOW_THREADS + %End + + /** + * Returns first(left) point of profile. + * \param thePoint[out] profile first point + * \return true if point has been set + */ + bool GetLeftPoint( QPointF& thePoint ) const [bool (gp_XY&)]; + %MethodCode + + // The C++ API gets the gp_XY object, then we convert it to QPointF. + gp_XY aPoint(); + + Py_BEGIN_ALLOW_THREADS + sipRes = sipSelfWasArg ? sipCpp->HYDROData_Profile::GetLeftPoint( aPoint ) : + sipCpp->GetLeftPoint( aPoint ); + Py_END_ALLOW_THREADS + + a0->SetX( aPoint.X() ); + a0->SetY( aPoint.Y() ); + %End + + /** + * Set last(right) point for profile. + * \param thePoint the point + */ + void SetRightPoint( const QPointF& thePoint ) [void (const gp_XY&)]; + %MethodCode + + // The C++ API gets the gp_XY object, we convert it from QPointF. + gp_XY aPoint( a0->x(), a0->y() ); + + Py_BEGIN_ALLOW_THREADS + { + sipCpp->HYDROData_Profile::SetRightPoint( aPoint ); + } + else + { + sipCpp->SetRightPoint( aPoint ); + } + Py_END_ALLOW_THREADS + %End + + /** + * Returns last(right) point of profile. + * \param thePoint[out] profile last point + * \return true if point has been set + */ + bool GetRightPoint( QPointF& thePoint ) const [bool (gp_XY&)]; + %MethodCode + + // The C++ API gets the gp_XY object, then we convert it to QPointF. + gp_XY aPoint(); + + Py_BEGIN_ALLOW_THREADS + sipRes = sipSelfWasArg ? sipCpp->HYDROData_Profile::GetRightPoint( aPoint ) : + sipCpp->GetRightPoint( aPoint ); + Py_END_ALLOW_THREADS + + a0->SetX( aPoint.X() ); + a0->SetY( aPoint.Y() ); + %End + + + /** + * Returns object which store parametric presentation of profile points. + * \return profile U,Z + */ + HYDROData_ProfileUZ GetProfileUZ( const bool theIsCreate = true ) const + [Handle_HYDROData_ProfileUZ ( const bool theIsCreate = true )]; + %MethodCode + + Handle(HYDROData_ProfileUZ) aRefProfileUZ; + + Py_BEGIN_ALLOW_THREADS + aRefProfileUZ = sipSelfWasArg ? sipCpp->HYDROData_ImmersibleZone::GetProfileUZ() : + sipCpp->GetProfileUZ(); + Py_END_ALLOW_THREADS + + sipRes = (HYDROData_ProfileUZ*)createPointer( aRefProfileUZ ); + + %End + + + /** + * Return number of profile points. + * \return number of points + */ + int NbPoints() const; + + /** + * Remove all profile points. + */ + void RemovePoints(); + + + /** + * Replace current profile parametric points by new one. + * \param thePoints the list with new points in parametric form + */ + void SetParametricPoints( SIP_PYLIST thePoints ) [void ( const HYDROData_ProfileUZ::PointsList& )]; + + /** + * Returns profile points in parametric form. + * \return points list + */ + SIP_PYLIST GetParametricPoints() const [HYDROData_ProfileUZ::PointsList ()]; + + + /** + * Replace current profile points by new one. + * First and last points will be automatically updated. + * \param thePoints the list with new profile points + */ + void SetProfilePoints( const SIP_PYLIST thePoints ) [void ( const ProfilePoints& )]; + + /** + * Returns profile points. + * Empty sequence is returned if first or last point was not set. + * \return profile points list + */ + SIP_PYLIST GetProfilePoints() const [ProfilePoints ()]; + + +public: + // Public methods to work with files. + + /** + * Stores the profile file path + * \param theFilePath profile file path + */ + void SetFilePath( const QString& theFilePath ) [void ( const TCollection_AsciiString& )]; + + /** + * Returns uploaded profile file path + */ + QString GetFilePath() const [TCollection_AsciiString ()]; + + /** + * Imports Profile data from file. The supported file types: + * - parametric presentation of profile (2 points in line U,Z) + * - georeferenced presentation of profile (3 points in line X,Y,Z) + * Create as many objects as many profiles in the file are defined. + * \param theFileName the path to file + * \return \c true if file has been successfully read + */ + static bool ImportFromFile( HYDROData_Document theDoc, + const QString& theFileName ) + [bool ( const Handle_HYDROData_Document&, + const TCollection_AsciiString& )]; + + /** + * Imports Profile data from file. + * \param theFileName the path to file + * \return \c true if file has been successfully read + */ + virtual bool ImportFromFile( const QString& theFileName ) [ bool ( const TCollection_AsciiString& ) ]; + + /** + * Imports Profile data from file. + * \param theFile file to read + * \return \c true if file has been successfully read + */ +// virtual bool ImportFromFile( OSD_File& theFile ); + +protected: + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_Profile(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + ~HYDROData_Profile(); +}; diff --git a/src/HYDROPy/HYDROData_River.sip b/src/HYDROPy/HYDROData_River.sip new file mode 100644 index 00000000..1984dd82 --- /dev/null +++ b/src/HYDROPy/HYDROData_River.sip @@ -0,0 +1,44 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_River.h" +%End + +class HYDROData_River : public HYDROData_NaturalObject +{ +%TypeHeaderCode +#include "HYDROData_River.h" +%End + +protected: + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_River(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + virtual ~HYDROData_River(); +}; diff --git a/src/HYDROPy/HYDROData_Stream.sip b/src/HYDROPy/HYDROData_Stream.sip new file mode 100644 index 00000000..0fcd433c --- /dev/null +++ b/src/HYDROPy/HYDROData_Stream.sip @@ -0,0 +1,149 @@ +// Copyright (C) 2007-2013 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 +// +// 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 +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +%ExportedHeaderCode +#include "HYDROData_Stream.h" +%End + +class HYDROData_Stream : public HYDROData_NaturalObject +{ +%TypeHeaderCode +#include "HYDROData_Stream.h" +%End + +public: + /** + * Update the shape presentations of stream. + */ + virtual void UpdatePrs(); + + /** + * Returns default filling color for new stream. + */ + static QColor DefaultFillingColor(); + + /** + * Returns default border color for new stream. + */ + static QColor DefaultBorderColor(); + + /** + * Returns true if given polyline can be used as stream axis. + */ + static bool IsValidAsAxis( const Handle(HYDROData_PolylineXY)& theAxis ); + +public: + // Public methods to work with Stream presentation + + /** + * Returns the left edge of the stream. + */ +// virtual TopoDS_Shape GetLeftShape() const; + + /** + * Returns the right edge of the stream. + */ +// virtual TopoDS_Shape GetRightShape() const; + + /** + * Returns the inlet edge of the stream. + */ +// virtual TopoDS_Shape GetInletShape() const; + + /** + * Returns the outlet edge of the stream. + */ +// virtual TopoDS_Shape GetOutletShape() const; + + +public: + // Public methods to work with Stream data fields + + /** + * Sets reference hydraulic axis object for stream. + */ + virtual bool SetHydraulicAxis( const Handle(HYDROData_PolylineXY)& theAxis ); + + /** + * Returns reference hydraulic axis object of stream. + */ + virtual Handle(HYDROData_PolylineXY) GetHydraulicAxis() const; + + /** + * Remove reference hydraulic axis object from stream. + */ + virtual void RemoveHydraulicAxis(); + + /** + * Returns true if profile has the intersection with the given hydraulic axis. + * Returns the parameter of inresection point on axis if axis is presented by one curve, + * if axis presented by set of edges the returns a common length of segments till the intersection point. + */ + static bool HasIntersection( const Handle(HYDROData_PolylineXY)& theHydAxis, + const Handle(HYDROData_Profile)& theProfile, const TopoDS_Face& thePlane, + Standard_Real& outPar); + + /** + * Returns true if profile has the intersection with reference hydraulic axis. + * Returns the parameter of inresection point on axis if axis is presented by one curve, + * if axis presented by set of edges the returns a common length of segments till the intersection point. + */ + virtual bool HasIntersection( const Handle(HYDROData_Profile)& theProfile, const TopoDS_Face& thePlane, + Standard_Real& outPar) const; + + /** + * Builds a planar face + */ + virtual bool BuildFace( const Handle(HYDROData_PolylineXY)& theHydAxis, TopoDS_Face& thePlane) const; + + /** + * Add new one reference profile object for stream. + */ + virtual bool AddProfile( const Handle(HYDROData_Profile)& theProfile ); + + /** + * Returns all reference profile objects of stream. + */ + virtual HYDROData_SequenceOfObjects GetProfiles() const; + + /** + * Removes reference profile object from stream. + */ + virtual bool RemoveProfile( const Handle(HYDROData_Profile)& theProfile ); + + /** + * Removes all reference profile objects from stream. + */ + virtual void RemoveProfiles(); + +protected: + /** + * Creates new object in the internal data structure. Use higher level objects + * to create objects with real content. + */ + HYDROData_Stream(); + + /** + * Destructs properties of the object and object itself, removes it from the document. + */ + virtual ~HYDROData_Stream(); +};