// 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(); };