zjf
2023-03-13 881f0da670f20c401c1e1d08b36253abb28f72d2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/////////////////////////////////////////////////////////////////////////////// 
// 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_DB_DGNLS_PE_
#define _OD_DB_DGNLS_PE_
 
#include "DbLinetypeTableRecord.h"
 
struct OdGiDgLinetypeModifiers;
class OdGiSubEntityTraits;
 
/** \details
    This class defines the interface for the Linetype Table Record Protocol Extension classes.
    
    \sa
    TD_Db
 
    <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbDgnLSPE : public OdRxObject
{
  public:
    ODRX_DECLARE_MEMBERS(OdDbDgnLSPE);
 
    enum DgnLSSetupFlags
    {
      kDgnLSProcessed = 1
    };
 
    /** \details
      Checks does Linetype Table Record contain attached DgnLS data.
 
      \param pLTR [in]  Pointer to the Linetype Table Record.
      \remarks
      Returns true if Linetype Table Record have attached DgnLS data.
    */
    virtual bool hasDgnLSData(const OdDbLinetypeTableRecord *pLTR) const = 0;
 
    /** \details
      Setup traits by DgnLS data.
 
      \param pLTR [in]  Pointer to the Linetype Table Record.
      \param nResFlags [out]  setAttributes return flags.
      \param pTraits [in]  Traits pointer which will be filled by DgnLS data.
      \remarks
      Returns kDgnLSProcessed if DgnLS data completely processed. Returns 0 if standard processing is required.
    */
    virtual OdUInt32 setupDgnLSData(const OdDbLinetypeTableRecord *pLTR, OdUInt32 &nResFlags, OdGiDrawableTraits *pTraits) const = 0;
 
    /** \details
      Prepare cache for DgnLS data.
 
      \param pLTR [in]  Pointer to the Linetype Table Record.
      \param pCache [out]  Pointer to cache object which will be filled by DgnLS data.
      \remarks
      Returns kDgnLSProcessed if DgnLS data completely processed. Returns 0 if standard processing is required.
    */
    virtual OdUInt32 prepareDgnLSCache(const OdDbLinetypeTableRecord *pLTR, OdRxObjectPtr &pCache) const = 0;
 
    /** \details
      Setup traits from DgnLS cache.
 
      \param pCache [in]  Pointer to the DgnLS cache.
      \param nResFlags [out]  setAttributes return flags.
      \param pTraits [in]  Traits pointer which will be filled by DgnLS data.
      \remarks
      Returns kDgnLSProcessed if DgnLS data completely processed. Returns 0 if standard processing is required.
    */
    virtual OdUInt32 setupDgnLSCache(const OdRxObject *pCache, OdUInt32 &nResFlags, OdGiDrawableTraits *pTraits) const = 0;
};
 
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbDgnLSPE object pointers.
*/
typedef OdSmartPtr<OdDbDgnLSPE> OdDbDgnLSPEPtr;
 
/** \details
    This class defines the interface for the Entity Protocol Extension classes.
    
    \sa
    TD_Db
 
    <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbDgnLSModifiersPE : public OdRxObject
{
  public:
    ODRX_DECLARE_MEMBERS(OdDbDgnLSModifiersPE);
 
    /** \details
      Checks does Entity contain attached DgnLSModifiers data.
 
      \param pEntity [in]  Pointer to the Entity.
      \remarks
      Returns true if Entity have attached DgnLSModifiers data.
    */
    virtual bool hasDgnLSModifiersXData(const OdDbEntity *pEntity) const = 0;
 
    /** \details
      Read DgnLSModifiers data from the Entity.
 
      \param pEntity [in]  Pointer to the Entity.
      \param pModifiers [out]  DgnLSModifiers read results.
      \param pScale [out]  Optionally return linetype scale.
      \remarks
      Returns true if DgnLSModifiers data reading process successfully completed.
    */
    virtual bool readDgnLSModifiersXData(const OdDbEntity *pEntity, OdGiDgLinetypeModifiers &pModifiers, double *pScale = NULL) const = 0;
 
    /** \details
      Read and draw DgnLSModifiers data for the Entity.
 
      \param pEntity [in]  Pointer to the Entity.
      \param pTraits [out]  Traits where to place DgnLSModifiers read results.
      \remarks
      Returns true if DgnLSModifiers data reading process successfully completed.
    */
    virtual bool readDgnLSModifiersXData(const OdDbEntity *pEntity, OdGiSubEntityTraits *pTraits) const = 0;
 
    /** \details
      Write DgnLSModifiers data into the Entity.
 
      \param pEntity [in]  Pointer to the Entity.
      \param pModifiers [in]  DgnLSModifiers for write.
      \param pScale [in]  Optional linetype scale.
      \remarks
      Returns true if DgnLSModifiers data writing process successfully completed.
    */
    virtual bool writeDgnLSModifiersXData(OdDbEntity *pEntity, const OdGiDgLinetypeModifiers &pModifiers, const double *pScale = NULL) const = 0;
 
    /** \details
      Remove DgnLSModifiers data from the Entity.
 
      \param pEntity [in]  Pointer to the Entity.
      \remarks
      Returns true if DgnLSModifiers data removed from the Entity.
    */
    virtual bool removeDgnLSModifiersXData(OdDbEntity *pEntity) const = 0;
};
 
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbDgnLSModifiersPE object pointers.
*/
typedef OdSmartPtr<OdDbDgnLSModifiersPE> OdDbDgnLSModifiersPEPtr;
 
#endif //_OD_DB_DGNLS_PE_