/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2024, 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-2024 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 _ODDBMLEADERMULTIMODESGRIPPE_INCLUDED #define _ODDBMLEADERMULTIMODESGRIPPE_INCLUDED #include "DbMultiModesGripPE.h" #include "GripPointsExports.h" //######################################################################################## //############### OdDbMLeaderMultiModesGripPE ############## //######################################################################################## class OdDbMLeaderMultiModesGripPE : public OdDbMultiModesGripPE { public: virtual bool getGripModes(const OdDbEntity* pEnt, OdDbGripData* pGripData, OdArray& modes, unsigned int& curMode) const ODRX_OVERRIDE; virtual unsigned int mode(OdDbEntity* pEnt, OdDbGripData* pGripData) const ODRX_OVERRIDE; virtual GripMode modeEx(OdDbEntity* pEnt, OdDbGripData* pGripData) const ODRX_OVERRIDE; virtual bool setMode(OdDbEntity* pEnt, OdDbGripData* pGripData, unsigned int newMode) ODRX_OVERRIDE; virtual GripType gripType(OdDbEntity* pEnt, OdDbGripData* pGripData) const ODRX_OVERRIDE; virtual void reset(OdDbEntity* pEnt) ODRX_OVERRIDE; }; class GRIPPOINTS_EXPORT OdGripMLeaderMultiModeAppData : public OdRxObject { public: enum MLeaderGripType { LANDING = 0, LEADER = 1, VERTEX = 2, TEXT, BLOCK, DOGLEG, CONNECT, CENTER }; const struct LeaderIndices { LeaderIndices(const unsigned gripIdx, const unsigned leaderIdx, const unsigned lineIdx, const unsigned vertexIdx) : m_gripIdx(gripIdx), m_leaderIdx(leaderIdx), m_lineIdx(lineIdx), m_vertexIdx(vertexIdx) { } const unsigned m_gripIdx; const unsigned m_leaderIdx; const unsigned m_lineIdx; const unsigned m_vertexIdx; } m_indices; ODRX_DECLARE_MEMBERS(OdGripMLeaderMultiModeAppData); OdGripMLeaderMultiModeAppData() = delete; OdGripMLeaderMultiModeAppData(const MLeaderGripType type, LeaderIndices leaderIndices) : m_indices(leaderIndices), m_modes(), m_mode(0), m_gripType(OdDbMultiModesGripPE::kPrimary) { initGripModes(type); }; void getGripModes(OdArray& modes); const unsigned int mode() const { return m_mode; } void setMode(unsigned int mode) { m_mode = mode; } OdDbMultiModesGripPE::GripMode gripMode() const { return m_modes.at(m_mode); } OdDbMultiModesGripPE::GripType gripType() const { return m_gripType; } bool getIndices(OdIntArray& indices) const; private: std::map m_modes; unsigned int m_mode; OdDbMultiModesGripPE::GripType m_gripType; void initGripModes(const MLeaderGripType type); }; typedef OdSmartPtr OdGripMLeaderMultiModeAppDataPtr; #endif // _ODDBMLEADERMULTIMODESGRIPPE_INCLUDED