/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, 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 Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 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_DBMLINESTYLE_H #define OD_DBMLINESTYLE_H #include "TD_PackPush.h" // Bricsys uses some of these constant : #define MSTYLE_DXF_FILL_ON (0x1) #define MSTYLE_DXF_SHOW_MITERS (0x2) #define MSTYLE_DXF_START_SQUARE_CAP (0x10) #define MSTYLE_DXF_START_INNER_ARCS (0x20) #define MSTYLE_DXF_START_ROUND_CAP (0x40) #define MSTYLE_DXF_END_SQUARE_CAP (0x100) #define MSTYLE_DXF_END_INNER_ARCS (0x200) #define MSTYLE_DXF_END_ROUND_CAP (0x400) #define MSTYLE_DXF_JUST_TOP (0x1000) #define MSTYLE_DXF_JUST_ZERO (0x2000) #define MSTYLE_DXF_JUST_BOT (0x4000) #include "DbObject.h" class OdDbMlineStyleImpl; /** \details This class represents Mline Style objects in an OdDbDatabase instance. \sa TD_Db OdDbMlineStyle objects are stored in the ACAD_MLINESTYLE dictionary in the Named Object Dictionary of an OdDbDatabase. */ class TOOLKIT_EXPORT OdDbMlineStyle: public OdDbObject { public: ODDB_DECLARE_MEMBERS(OdDbMlineStyle); OdDbMlineStyle(); /** \details Initializes or re-initializes this Mline Style object. \remarks Initialization is done as follows: Property Value Name Empty string Description Empty string FillColor 0 StartAngle 90° EndAngle 90° ElementList Empty
*/ void initMlineStyle(); /** \details Copies the specified OdDdMlineStyle object to this Mline Style object. \param source [in] Object to be cloned. \param checkIfReferenced [in] Currently ignored. */ void set( const OdDbMlineStyle & source, bool checkIfReferenced = true); /** \details Sets the description for this Mline Style object (DXF 3). \param description [in] Description. */ void setDescription( const OdString& description); /** \details Returns the description for this Mline Style object (DXF 3). */ const OdString description() const; /** \details Sets the name for this Mline Style object (DXF 2). \param name [in] Name. */ void setName( const OdString& name); /** \details Returns the name for this Mline Style object (DXF 2). */ const OdString name() const; /** \details Controls the display of Miters for this Mline Style object (DXF 70, bit 0x02). \param showThem [in] True if and only if miters are to be displayed. */ void setShowMiters( bool showThem); /** \details Returns the display of Miters for this Mline Style object (DXF 70, bit 0x02). \remarks Returns true if and only if miters are displayed. */ bool showMiters() const; /** \details Controls the display of Start Square Caps for this Mline Style object (DXF 70, bit 0x01). \param showThem [in] True if and only if Start Square Caps are to be displayed. */ void setStartSquareCap( bool showThem); /** \details Returns the display of Start Square Caps for this Mline Style object (DXF 70, bit 0x01). \remarks Returns true if and only if Start Square Caps are to be displayed. */ bool startSquareCap() const; /** \details Controls the display of Start Round Caps for this Mline Style object (DXF 70, bit 0x40). \param showThem [in] True if and only if Start Round Caps are to be displayed. */ void setStartRoundCap( bool showThem); /** \details Returns the display of Start Round Caps for this Mline Style object (DXF 70, bit 0x40). \remarks Returns true if and only if Start Round Caps are to be displayed. */ bool startRoundCap() const; /** \details Controls the display of Start Inner Arcs for this Mline Style object (DXF 70, bit 0x20). \param showThem [in] True if and only if Start Inners Arcs are to be displayed. */ void setStartInnerArcs( bool showThem); /** \details Returns the display of Start Inner Arcs for this Mline Style object (DXF 70, bit 0x20). \remarks Returns true if and only if Start Inners Arcs are to be displayed. */ bool startInnerArcs() const; /** \details Controls the display of End Square Caps for this Mline Style object (DXF 70, bit 0x80). \param showThem [in] True if and only if End Square Caps are to be displayed. */ void setEndSquareCap( bool showThem); /** \details Returns the display of End Square Caps for this Mline Style object (DXF 70, bit 0x80). \remarks True if and only if End Square Caps are to be displayed. */ bool endSquareCap() const; /** \details Controls the display of End Round Caps for this Mline Style object (DXF 70, bit 0x200). \param showThem [in] True if and only if End Round Caps are to be displayed. */ void setEndRoundCap( bool showThem); /** \details Returns the display of End Round Caps for this Mline Style object (DXF 70, bit 0x200). \remarks Returns true if and only if End Round Caps are to be displayed. */ bool endRoundCap() const; /** \details Controls the display of End Inner Arcs for this Mline Style object (DXF 70, bit 0x100). \param showThem [in] True if and only if End Inner Arcs are to be displayed. */ void setEndInnerArcs(bool showThem); /** \details Returns the display of End Inner Arcs for this Mline Style object (DXF 70, bit 0x100). \remarks Returns true if and only if End Inner Arcs are to be displayed. */ bool endInnerArcs() const; /** \details Sets the fill color for this Mline Style object (DXF 62). \param fillColor [in] Fill Color. */ void setFillColor( const OdCmColor& fillColor); /** \details Returns the fill color for this Mline Style object (DXF 62). */ OdCmColor fillColor() const; /** \details Controls the filled flag for this Mline Style object (DXF 70, bit 0x01). \param filled [in] True for filled, false for not filled. */ void setFilled( bool filled); /** \details Returns the filled flag for this Mline Style object (DXF 70, bit 0x01). */ bool filled() const; /** \details Sets the start angle for this Mline Style object (DXF 51). \param startAngle [in] Start angle. */ void setStartAngle( double startAngle); /** \details Returns the start angle for this Mline Style object (DXF 51). */ double startAngle() const; /** \details Sets the end angle for this Mline Style object (DXF 52). \param endAngle [in] End angle. */ void setEndAngle(double endAngle); /** \details Returns the end angle for this Mline Style object (DXF 52). */ double endAngle() const; /** \details Adds an element to this MLine Style object. \param offset [in] Offset of this element. \param color [in] Color of this element. \param linetypeId [in] Object ID of the linetype of this element. \param checkIfReferenced [in] Currently ignored. \remarks Returns the index of the newly added element. */ int addElement( double offset, const OdCmColor& color, OdDbObjectId linetypeId, bool checkIfReferenced = true); /** \details Removes the specified element from this MLine Style object. \param elementIndex [in] Index of element to be removed. */ void removeElementAt(int elem); /** \details Returns the number of elements in this MLine Style (DXF 71). */ int numElements() const; /** \details Sets the specified element of this MLine Style object. \param elementIndex [in] Index of element to modify. \param offset [in] Offset of this element. \param color [in] Color of this element. \param linetypeId [in] Object ID of the linetype of this element. \remarks Returns the index of the newly added element. */ void setElement( int elementIndex, double offset, const OdCmColor& color, OdDbObjectId linetypeId); /** \details Returns the values for the specified element of this MLine Style. \param elementIndex [in] Index of element to return. \param offset [out] Receives the offset of this element. \param color [out] Receives the color of this element. \param linetypeId [out] Receives the Object ID for the linetype of this element. */ void getElementAt( int elementIndex, double& offset, OdCmColor& color, OdDbObjectId& linetypeId) const; virtual OdResult dwgInFields( OdDbDwgFiler* pFiler); virtual void dwgOutFields( OdDbDwgFiler* pFiler) const; virtual OdResult dxfInFields( OdDbDxfFiler* pFiler); virtual void dxfOutFields( OdDbDxfFiler* pFiler) const; OdResult subGetClassID( void* pClsid) const; virtual void appendToOwner( OdDbIdPair& idPair, OdDbObject* pOwnerObject, OdDbIdMapping& ownerIdMap); }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbMlineStyle object pointers. */ typedef OdSmartPtr OdDbMlineStylePtr; #include "TD_PackPop.h" #endif