/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 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 { ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemCategoryPE); public: /** \details Virtual destructor. */ virtual ~OdDbGeoCoordinateSystemCategoryPE() {}; /** \details Creates and returns all coordinate system categories. \param arrCategories [out] Array of pointers to returned categories. \returns Returns eOK if successful, or an appropriate error code if not. */ virtual OdResult createAll(OdArray& arrCategories) 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 { ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemPE); public: /** \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 arrCoordSys [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& arrCoordSys) const = 0; /** \details Creates and returns a new OdDbGeoCoordinateSystem object for every existing, persistent CRS definition from the current virtual catalog. \param arrCoordSys [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& arrCoordSys, 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 vertical coordinate reference system (CRS) definition. */ class TOOLKIT_EXPORT OdDbGeoVerticalCoordinateSystemPE : public OdRxObject { ODRX_DECLARE_MEMBERS(OdDbGeoVerticalCoordinateSystemPE); public: /** \details Virtual destructor. */ virtual ~OdDbGeoVerticalCoordinateSystemPE() {}; /** \details Creates and returns a new OdDbGeoVerticalCoordinateSystem object from the current virtual catalog. \param sCoordSysIdOrFullDef [in] ID, WKT or XML representation of the vertical 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& sCoordSysIdOrFullDef, OdDbGeoVerticalCoordinateSystemPtr& pCoordSys) const = 0; /** \details Creates and returns a new OdDbGeoVerticalCoordinateSystem object for every existing, persistent CRS definition from the current virtual catalog. \param arrCoordSys [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& arrCoordSys, const OdDbGeoCoordinateSystemCategory* pCategory = NULL) const = 0; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbGeoVerticalCoordinateSystemPE object pointers. */ typedef OdSmartPtr OdDbGeoVerticalCoordinateSystemPEPtr; /** \details This abstract class represents a protocol extension for a compound coordinate reference system (CRS) definition. */ class TOOLKIT_EXPORT OdDbGeoCompoundCoordinateSystemPE : public OdRxObject { ODRX_DECLARE_MEMBERS(OdDbGeoCompoundCoordinateSystemPE); public: /** \details Virtual destructor. */ virtual ~OdDbGeoCompoundCoordinateSystemPE() {}; /** \details Creates and returns a new OdDbGeoCompoundCoordinateSystem object from the current virtual catalog. \param sCoordSysIdOrFullDef [in] ID, WKT or XML representation of the compound 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& sCoordSysIdOrFullDef, OdDbGeoCompoundCoordinateSystemPtr& pCoordSys) const = 0; /** \details Checks if the geodetic CRS and vertical CRS can be compound together. \param sCoordSysId [in] Geodetic CRS. \param sVerticalCoordSysId [in] Vertical CRS. \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 verify(const OdString& sCoordSysId, const OdString& sVerticalCoordSysId) const = 0; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbGeoCompoundCoordinateSystemPE object pointers. */ typedef OdSmartPtr OdDbGeoCompoundCoordinateSystemPEPtr; /** \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 { ODRX_DECLARE_MEMBERS(OdDbGeoCoordinateSystemTransformerPE); public: /** \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_