X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROPy%2FHYDROData_Bathymetry.sip;h=36d9b510524e1e83d91e11f348249ec18fb204c5;hb=6450e251d00e2beaa02e0de026b0f1af2b948a0e;hp=f26ec885a553c5b853f647e335073d58263659f5;hpb=84f8b4a57d3cdad820bc1333a5066699cd1c8ae3;p=modules%2Fhydro.git diff --git a/src/HYDROPy/HYDROData_Bathymetry.sip b/src/HYDROPy/HYDROData_Bathymetry.sip index f26ec885..36d9b510 100644 --- a/src/HYDROPy/HYDROData_Bathymetry.sip +++ b/src/HYDROPy/HYDROData_Bathymetry.sip @@ -22,19 +22,10 @@ %ExportedHeaderCode #include -#include %End -%ModuleCode - -PyObject* convertToPythonAltitudeList( const HYDROData_Bathymetry::AltitudePoints& thePoints ); -HYDROData_Bathymetry::AltitudePoints convertFromPythonAltitudeList( PyObject* thePythonList ); - -%End - -class HYDROData_Bathymetry : HYDROData_Entity +class HYDROData_Bathymetry : public HYDROData_IAltitudeObject { - %ConvertToSubClassCode switch ( sipCpp->GetKind() ) { @@ -48,141 +39,65 @@ class HYDROData_Bathymetry : HYDROData_Entity } %End -%TypeHeaderCode -#include -%End - -%TypeCode - -PyObject* convertToPythonAltitudeList( const HYDROData_Bathymetry::AltitudePoints& thePoints ) -{ - int aListSize = thePoints.size(); + typedef gp_XYZ AltitudePoint; + typedef NCollection_Sequence AltitudePoints; - PyObject* aPythonList = NULL; - if ( ( aPythonList = PyList_New( aListSize ) ) == NULL ) - return NULL; - - for ( int i = 0; i < aListSize; ++i ) - { - const HYDROData_Bathymetry::AltitudePoint& aPoint = thePoints.at( i ); - - PyObject* aTypleObj = Py_BuildValue( "(ddd)", aPoint.X(), aPoint.Y(), aPoint.Z() ); - - PyList_SET_ITEM( aPythonList, i, aTypleObj ); - } - - return aPythonList; -} - -HYDROData_Bathymetry::AltitudePoints convertFromPythonAltitudeList( PyObject* thePythonList ) -{ - HYDROData_Bathymetry::AltitudePoints aPoints; - if ( thePythonList == NULL ) - return aPoints; - - for ( int i = 0, n = PyList_GET_SIZE( thePythonList ); i < n; ++i ) - { - PyObject* aTypleObj = PyList_GET_ITEM( thePythonList, i ); - - double anArr[ 3 ]; - if ( !PyArg_ParseTuple( aTypleObj, "ddd", &anArr[ 0 ], &anArr[ 1 ], &anArr[ 2 ] ) ) - continue; - - HYDROData_Bathymetry::AltitudePoint aPoint; - aPoint.SetX( anArr[ 0 ] ); - aPoint.SetY( anArr[ 1 ] ); - aPoint.SetZ( anArr[ 2 ] ); - - aPoints.append( aPoint ); - } - - return aPoints; -} +%TypeHeaderCode +#include %End public: // Public methods to work with Bathymetry altitudes. /** - * Returns altitude points list. - * \return points list + * Returns altitude for given point. + * \param thePoint the point to examine + * \return altitude value */ - static double GetInvalidAltitude(); + double GetAltitudeForPoint( const gp_XY& thePoint ); /** * Replace current altitude points by new one. * \param thePoints the altitude points list */ - virtual void SetAltitudePoints( SIP_PYLIST ) [void (const HYDROData_Bathymetry::AltitudePoints&)] ; - %MethodCode - - // The C++ API takes a list of gp_XYZ objects, - // but we pass a list of python tuples. - - HYDROData_Bathymetry::AltitudePoints aPoints = - convertFromPythonAltitudeList( a0 ); - - Py_BEGIN_ALLOW_THREADS - sipSelfWasArg ? sipCpp->HYDROData_Bathymetry::SetAltitudePoints( aPoints ) : - sipCpp->SetAltitudePoints( aPoints ); - Py_END_ALLOW_THREADS - - %End - %VirtualCatcherCode - - PyObject* aPythonList = convertToPythonAltitudeList( a0 ); - if ( aPythonList != NULL ) - { - sipCallMethod( &sipIsErr, sipMethod, "O", aPythonList ); - Py_DECREF( aPythonList ); - } - - %End + virtual void SetAltitudePoints( const HYDROData_Bathymetry::AltitudePoints& ); /** * Returns altitude points list. * \return points list */ - SIP_PYLIST GetAltitudePoints() const [HYDROData_Bathymetry::AltitudePoints ()] ; - %MethodCode - - // The C++ API returns a list of gp_XYZ objects, - // we convert it to list of python tuples. - - HYDROData_Bathymetry::AltitudePoints aPoints; - - Py_BEGIN_ALLOW_THREADS - aPoints = sipSelfWasArg ? sipCpp->HYDROData_Bathymetry::GetAltitudePoints() : - sipCpp->GetAltitudePoints(); - Py_END_ALLOW_THREADS - - sipRes = convertToPythonAltitudeList( aPoints ); - - %End - /** - * Remove all altitude points. - */ - void RemoveAltitudePoints(); + HYDROData_Bathymetry::AltitudePoints GetAltitudePoints() const; /** - * Returns altitude for given point. - * \param thePoint the point to examine - * \return altitude value + * Remove all altitude points. */ - double GetAltitudeForPoint( const QPointF& thePoint ) const; + void RemoveAltitudePoints(); public: // Public methods to work with files. + /** + * Set flag indicating needs to invert altitude values + * \param theIsInverted new invert value + * \param theIsUpdate flag indicating necessity to update points + */ + void SetAltitudesInverted( const bool theIsInverted, + const bool theIsUpdate = true ); + + /** + * Returns flag indicating needs to invert altitude values. + */ + bool IsAltitudesInverted() const; + /** * Imports Bathymetry data from file. The supported file types: * - xyz * \param theFileName the path to file * \return \c true if file has been successfully read */ - bool ImportFromFile( const QString& theFileName ); + bool ImportFromFile( const TCollection_AsciiString& theFileName ); protected: