/////////////////////////////////////////////////////////////////////////////// // 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 __GEOMTREATFTY_H__ #define __GEOMTREATFTY_H__ #include "TvGeometryTypifiedData.h" #include "NwObject.h" #include "TvTraitsDef.h" #include "TvGeometryData.h" #define STL_USING_FUNCTIONAL #define STL_USING_MAP #include "OdaSTL.h" class OdNwComponent; typedef OdSmartPtr OdNwComponentPtr; typedef std::function callbackType; typedef std::function ReturnType; class TvGeomFty { public: TvGeomFty() = default; ~TvGeomFty() = default; public: ReturnType regPolyline(OdTvGeometryDataId tvGeomDataId); ReturnType regCircle(OdTvGeometryDataId tvGeomDataId); ReturnType regCircleWedge(OdTvGeometryDataId tvGeomDataId); ReturnType regCircularArc(OdTvGeometryDataId tvGeomDataId); ReturnType regEllipse(OdTvGeometryDataId tvGeomDataId); ReturnType regEllipticArc(OdTvGeometryDataId tvGeomDataId); ReturnType regPolygon(OdTvGeometryDataId tvGeomDataId); ReturnType regNurbs(OdTvGeometryDataId tvGeomDataId); ReturnType regText(OdTvGeometryDataId tvGeomDataId); ReturnType regShell(OdTvGeometryDataId tvGeomDataId); ReturnType regMesh(OdTvGeometryDataId tvGeomDataId); ReturnType regPointCloud(OdTvGeometryDataId tvGeomDataId); ReturnType regBox(OdTvGeometryDataId tvGeomDataId); ReturnType regSphere(OdTvGeometryDataId tvGeomDataId); protected: template callbackType getGeomDataCallback() { auto resFnd = m_callbacks.find(tvGeomData); if (resFnd != m_callbacks.end()) return resFnd->second; return callbackType(); } template ReturnType regGeomDataCallback(callbackType regFunc, OdTvGeometryDataId tvGeomDataId) { m_callbacks[tvGeomData] = regFunc; return std::bind(m_callbacks[tvGeomData], tvGeomDataId, std::placeholders::_1); } private: OdNwObjectId shellByPoints(const OdGePoint3dArray& points, OdInt32Array& faces, OdNwComponentPtr pComp); std::map m_callbacks; }; #endif // __GEOMTREATFTY_H__