/////////////////////////////////////////////////////////////////////////////// // 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 __EX_NW_REACP_MODULE_IMPL_H__ #define __EX_NW_REACP_MODULE_IMPL_H__ #include "NwRecapModule.h" #include "RcsFileServices/OdPointCloudProjectScanStorage.h" #include "NwRecapExternalGeometryImpl.h" typedef std::map StringToStreamType; class OdNwPointCloudProjectScanStorage : public OdPointCloudProjectScanStorage { StringToStreamType& m_str2strm; const std::function& m_findReferenceCallback; public: OdNwPointCloudProjectScanStorage(StringToStreamType& str2strm, const std::function& findReferenceCallback); virtual ~OdNwPointCloudProjectScanStorage(); OdStreamBufPtr getScanStreamByPath(const OdString& path) override; }; class OdNwPointCloudImpl : public OdNwPointCloud { ODRX_DECLARE_MEMBERS(OdNwPointCloudImpl); public: OdNwPointCloudImpl(); virtual ~OdNwPointCloudImpl(); void setFindReferenceCallback(std::function findPointCloudClbk) override; void setStreamMap(const std::map& streamMap) override; bool isStreamMapEmpty() override; void setRcsService(OdRxRcsFileServicesPtr pRcsSrv) override; OdResult getPointCloud(const OdString& refName, const OdGUID& scanGuid, OdUInt64 voxIdx, OdGePoint3dArray& coords, OdCmEntityColorArray& colors) override; OdResult getPointCloud(const OdString& refName, OdGePoint3dArray& coords, OdCmEntityColorArray& colors) override; OdResult getPointCloud(const OdString& refName, const OdGUID& scanGuid, OdPointCloudScanDatabasePtr& pScanDb, OdPointCloudProjectDatabasePtr& pProjDb) override; OdResult getPointCloud(const OdString& refName, const OdGUID& scanGuid, OdNwPointCloudData& pcData) override; OdStreamBufPtr getEmbeddedStreamBuffer(const OdString& refName, const std::function& findReferenceCallback, bool create) override; void resetCache() override; private: OdResult getPointCloudInt(const OdString& refName, const OdGUID& scanGuid, OdNwPointCloudData& pcData); OdRxRcsFileServicesPtr m_pRcsFileSrv; //map of key as GUID, and pair of "PointCloud Project" and "PointCloud ScanDb" //typedef std::map> GuidToPointCloudScanDBMapType; typedef std::map GuidToPointCloudScanDBMapType; //map with key as string path to RCS/RCP file and value as GuidToPointCloudScanDBMap (see above) typedef std::map StrToGuidPtCldScDbType; StrToGuidPtCldScDbType m_pcdbDict; //Here map with key as string path to RCS/RCP file and value is stream buffer to memory (can be embedded stream) or stream buf to a local file StringToStreamType m_streamMap; std::function m_findReferenceCallback;//callback for lazy loading of map with references OdNwPointCloudProjectScanStorage m_scanStorage; OdResult fillPointCloudScanDBMap(const OdString& refName); }; class OdNwRecapModuleImpl : public OdNwRecapModule { public: void initApp() override; void uninitApp() override; OdNwPointCloudPtr getNwPointCloud() override; private: OdRxRcsFileServicesPtr m_pRcsFileServices; OdNwPointCloudPtr m_pPointCloudImporter; NwRecapAbstractExternalGeometryPEPtr m_pExtGeomPe; }; #endif //__EX_NW_REACP_MODULE_IMPL_H__