/////////////////////////////////////////////////////////////////////////////// // 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 _ODGEOMAPPROVIDERINFO_INCLUDED_ #define _ODGEOMAPPROVIDERINFO_INCLUDED_ #include "OdaCommon.h" #include "DbGeoData.h" #include "OdGeoMapType.h" #include "Gi/GiRasterImage.h" #include "OdBinaryData.h" #define STL_USING_MEMORY #include "OdaSTL.h" //OdGeoMapProviderInfo class OdGeoMapProviderInfo { public: OdGeoMapProviderInfo(const OdAnsiString& sKey, OdUInt32 uTileSize, OdUInt8 uMinLOD, OdUInt8 uMaxLOD); virtual ~OdGeoMapProviderInfo(); virtual OdResult getTileInfo(OdUInt32& uTileSize, OdUInt8& uMinLOD, OdUInt8& uMaxLOD) const; virtual OdResult getTileUrl(OdUInt8 uLOD, OdUInt32 uTileX, OdUInt32 uTileY, OdAnsiString& sUrl) const = 0; virtual OdResult loadMetadata(bool bUpdate = false) = 0; virtual OdResult getCopyrightStrings(const OdDbGeoData* pGeoData, OdUInt8 uLOD, const OdGePoint2dArray& arrImageArea, OdStringArray& arrCopyrightStrings) = 0; virtual OdResult getBrandLogo(OdGiRasterImagePtr& pRasterLogo, bool bUpdate = false) = 0; protected: OdAnsiString m_sKey; OdUInt32 m_uTileSize; OdUInt8 m_uMinLOD; OdUInt8 m_uMaxLOD; OdBinaryData m_metadata; }; typedef std::shared_ptr OdGeoMapProviderInfoPtr; //OdGeoMapBingProviderInfo class OdGeoMapBingProviderInfo : public OdGeoMapProviderInfo { public: OdGeoMapBingProviderInfo(const OdAnsiString& sKey, OdGeoMapType eType); virtual ~OdGeoMapBingProviderInfo(); virtual OdResult getTileUrl(OdUInt8 uLOD, OdUInt32 uTileX, OdUInt32 uTileY, OdAnsiString& sUrl) const ODRX_OVERRIDE; virtual OdResult loadMetadata(bool bUpdate = false) ODRX_OVERRIDE; virtual OdResult getCopyrightStrings(const OdDbGeoData* pGeoData, OdUInt8 uLOD, const OdGePoint2dArray& arrImageArea, OdStringArray& arrCopyrightStrings) ODRX_OVERRIDE; virtual OdResult getBrandLogo(OdGiRasterImagePtr& pRasterLogo, bool bUpdate = false) ODRX_OVERRIDE; protected: OdGeoMapType m_eType; OdGiRasterImagePtr m_pLogo; }; //OdGeoMapAzureProviderInfo class OdGeoMapAzureProviderInfo : public OdGeoMapProviderInfo { public: OdGeoMapAzureProviderInfo(const OdAnsiString& sKey, OdUInt32 uTileSize, OdUInt8 uMinLOD, OdUInt8 uMaxLOD, OdGeoMapType eType); virtual ~OdGeoMapAzureProviderInfo(); virtual OdResult getTileUrl(OdUInt8 uLOD, OdUInt32 uTileX, OdUInt32 uTileY, OdAnsiString& sUrl) const ODRX_OVERRIDE; virtual OdResult loadMetadata(bool bUpdate = false) ODRX_OVERRIDE; virtual OdResult getCopyrightStrings(const OdDbGeoData* pGeoData, OdUInt8 uLOD, const OdGePoint2dArray& arrImageArea, OdStringArray& arrCopyrightStrings) ODRX_OVERRIDE; virtual OdResult getBrandLogo(OdGiRasterImagePtr& pRasterLogo, bool bUpdate = false) ODRX_OVERRIDE; protected: OdGeoMapType m_eType; }; //OdGeoMapEsriProviderInfo class OdGeoMapEsriProviderInfo : public OdGeoMapProviderInfo { public: OdGeoMapEsriProviderInfo(const OdAnsiString& sKey, OdUInt32 uTileSize, OdUInt8 uMinLOD, OdUInt8 uMaxLOD, OdGeoMapType eType); virtual ~OdGeoMapEsriProviderInfo(); virtual OdResult getTileUrl(OdUInt8 uLOD, OdUInt32 uTileX, OdUInt32 uTileY, OdAnsiString& sUrl) const ODRX_OVERRIDE; virtual OdResult loadMetadata(bool bUpdate = false) ODRX_OVERRIDE; virtual OdResult getBrandLogo(OdGiRasterImagePtr& pRasterLogo, bool bUpdate = false) ODRX_OVERRIDE; protected: OdGeoMapType m_eType; }; //OdGeoMapEsriImageryProviderInfo class OdGeoMapEsriImageryProviderInfo : public OdGeoMapEsriProviderInfo { public: OdGeoMapEsriImageryProviderInfo(const OdAnsiString& sKey, OdGeoMapType eType); virtual ~OdGeoMapEsriImageryProviderInfo(); virtual OdResult getCopyrightStrings(const OdDbGeoData* pGeoData, OdUInt8 uLOD, const OdGePoint2dArray& arrImageArea, OdStringArray& arrCopyrightStrings) ODRX_OVERRIDE; }; //OdGeoMapEsriOSMProviderInfo class OdGeoMapEsriOSMProviderInfo : public OdGeoMapEsriProviderInfo { public: OdGeoMapEsriOSMProviderInfo(const OdAnsiString& sKey, OdGeoMapType eType); virtual ~OdGeoMapEsriOSMProviderInfo(); virtual OdResult getCopyrightStrings(const OdDbGeoData* pGeoData, OdUInt8 uLOD, const OdGePoint2dArray& arrImageArea, OdStringArray& arrCopyrightStrings) ODRX_OVERRIDE; }; #endif // _ODGEOMAPPROVIDERINFO_INCLUDED_