X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROPy%2FHYDROData_Bathymetry.sip;h=d9e4e10828ea9bc39732ad14cfc929382d60f2b9;hb=3a1dd3f29ff9b985b0aa2366a2afd5724286cb6e;hp=2d5911e0616177bcb90444e1f8a99997b78de379;hpb=d0413fc6f8d2c004c7d2baac5d174c0502417d70;p=modules%2Fhydro.git diff --git a/src/HYDROPy/HYDROData_Bathymetry.sip b/src/HYDROPy/HYDROData_Bathymetry.sip index 2d5911e0..d9e4e108 100644 --- a/src/HYDROPy/HYDROData_Bathymetry.sip +++ b/src/HYDROPy/HYDROData_Bathymetry.sip @@ -1,12 +1,8 @@ -// 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 -// +// 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 -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,176 +17,80 @@ // %ExportedHeaderCode - #include - -#include - %End -%ModuleCode - -PyObject* convertToPythonAltitudeList( const HYDROData_Bathymetry::AltitudePoints& thePoints ); -HYDROData_Bathymetry::AltitudePoints convertFromPythonAltitudeList( PyObject* thePythonList ); - -%End - -class HYDROData_Bathymetry : HYDROData_Object +class HYDROData_Bathymetry : public HYDROData_IAltitudeObject { - %ConvertToSubClassCode - if ( !Handle(HYDROData_Bathymetry)::DownCast( sipCpp ).IsNull() ) - sipClass = sipClass_HYDROData_Bathymetry; - else - sipClass = NULL; -%End + switch ( sipCpp->GetKind() ) + { + case KIND_BATHYMETRY: + sipClass = sipClass_HYDROData_Bathymetry; + break; -%TypeHeaderCode -#include + default: + // We don't recognise the type. + sipClass = NULL; + } %End -%TypeCode - -PyObject* convertToPythonAltitudeList( const HYDROData_Bathymetry::AltitudePoints& thePoints ) -{ - int aListSize = thePoints.size(); - - 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 ); - } + typedef gp_XYZ AltitudePoint; + typedef NCollection_Sequence AltitudePoints; - 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: - - //virtual const ObjectKind GetKind() const { return KIND_BATHYMETRY; } - - public: // Public methods to work with Bathymetry altitudes. - /** - * Returns altitude points list. - * \return points list - */ - static double GetInvalidAltitude(); - /** * 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: - //friend class HYDROData_Iterator; - /** * Creates new object in the internal data structure. Use higher level objects * to create objects with real content.