/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _OD_DB_GEOCOORDINATESYSTEM_PE_ #define _OD_DB_GEOCOORDINATESYSTEM_PE_ #include "OdDbGeoCoordinateSystem.h" #include "TD_PackPush.h" /** \details This abstract class represents a protocol extension for a category which holds string identifiers referring to a group of coordinate reference systems. */ class TOOLKIT_EXPORT OdDbGeoCoordinateSystemCategoryPE : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemCategoryPE); /** \details Virtual destructor. */ virtual ~OdDbGeoCoordinateSystemCategoryPE() {}; /** \details Creates and returns all coordinate system categories. \param allCategories [in/out] Array of pointers to returned categories. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult createAll(OdArray& allCategories) const = 0; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemCategoryPE object pointers. */ typedef OdSmartPtr OdDbGeoCoordinateSystemCategoryPEPtr; /** \details This abstract class represents a protocol extension for a coordinate reference system (CRS) definition. */ class TOOLKIT_EXPORT OdDbGeoCoordinateSystemPE : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemPE); /** \details Virtual destructor. */ virtual ~OdDbGeoCoordinateSystemPE() {}; /** \details Creates and returns a new OdDbGeoCoordinateSystem object from the current virtual catalog. \param coordSysIdOrFullDef [in] ID, WKT or XML representation of the CRS definition to load. \param pCoordSys [out] New CRS. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult create(const OdString& coordSysIdOrFullDef, OdDbGeoCoordinateSystemPtr& pCoordSys) const = 0; /** \details Creates and returns a new OdDbGeoCoordinateSystem object for every existing, persistent CRS definition from the current virtual catalog. \param geoPt [in] Geodetic point. \param allCoordSys [out] Array of pointers to the new CRS objects. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult createAll(const OdGePoint3d& geoPt, OdArray& allCoordSys) const = 0; /** \details Creates and returns a new OdDbGeoCoordinateSystem object for every existing, persistent CRS definition from the current virtual catalog. \param allCoordSys [out] Array of pointers to the new CRS objects. \param pCategory [in] Category. \returns Returns eOK if successful, or an appropriate error code if not. \remarks If pCategory is NULL, all existing and persistent CRS definitions are returned. */ virtual OdResult createAll(OdArray& allCoordSys, const OdDbGeoCoordinateSystemCategory* pCategory = NULL) const = 0; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemPE object pointers. */ typedef OdSmartPtr OdDbGeoCoordinateSystemPEPtr; /** \details This abstract class represents a protocol extension for a transformer object which is used to transform points from the source CRS to the target CRS. */ class TOOLKIT_EXPORT OdDbGeoCoordinateSystemTransformerPE : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemTransformerPE); /** \details Virtual destructor. */ virtual ~OdDbGeoCoordinateSystemTransformerPE() {}; /** \details Transforms the point from the source CRS to the target CRS. \param sourceCoordSysId [in] Source CRS's ID. \param targetCoordSysId [in] Target CRS's ID. \param pointIn [in] Point in the source CRS. \param pointOut [out] Point in the target CRS. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult transformPoint(const OdString& sourceCoordSysId, const OdString& targetCoordSysId, const OdGePoint3d& pointIn, OdGePoint3d& pointOut) const = 0; /** \details Transforms the array of points from the source CRS to the target CRS. \param sourceCoordSysId [in] Source CRS's ID. \param targetCoordSysId [in] Target CRS's ID. \param pointsIn [in] Point array in the source CRS. \param pointsOut [out] Point array in the target CRS. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult transformPoints(const OdString& sourceCoordSysId, const OdString& targetCoordSysId, const OdGePoint3dArray& pointsIn, OdGePoint3dArray& pointsOut) const = 0; /** \details Creates a new OdDbGeoCoordinateSystemTransformer object from the source and target CRSs. \param sourceCoordSysId [in] Source CRS's ID. \param targetCoordSysId [in] Target CRS's ID. \param pCoordSysTransformer [out] New OdDbGeoCoordinateSystemTransformer object. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult create(const OdString& sourceCoordSysId, const OdString& targetCoordSysId, OdDbGeoCoordinateSystemTransformerPtr& pCoordSysTransformer) const = 0; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbGeoCoordinateSystemTransformerPE object pointers. */ typedef OdSmartPtr OdDbGeoCoordinateSystemTransformerPEPtr; #include "TD_PackPop.h" #endif //_OD_DB_GEOCOORDINATESYSTEM_PE_