zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
/////////////////////////////////////////////////////////////////////////////// 
// 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 __ODGI_NONENTITYTRAITS_H__
#define __ODGI_NONENTITYTRAITS_H__
 
#include "TD_PackPush.h"
 
#include "Gi/Gi.h"
#include "OdCodePage.h"
#include "Gi/GiDrawable.h"
 
class OdGiLinetypeDash;
class OdFont;
class OdTtfDescriptor;
class OdGiTextStyle;
 
/** \details
    This class defines the interface to the layer traits for the vectorization process.
    
    Library: TD_Gi
    <group OdGi_Classes> 
*/
class FIRSTDLL_EXPORT OdGiLayerTraits : public OdGiDrawableTraits
{
public:
  ODRX_DECLARE_MEMBERS(OdGiLayerTraits);
 
  // returned via subSetAttributes()
 
  enum
  {
    kByBlock    = (OdGiDrawable::kLastFlag << 1),
    kFrozen     = (OdGiDrawable::kLastFlag << 2),
    kOff        = (OdGiDrawable::kLastFlag << 3),
    kPlottable  = (OdGiDrawable::kLastFlag << 4),
    kLocked     = (OdGiDrawable::kLastFlag << 5)
  };
  
  /** \details
    Returns the color for this object.
  */
  virtual OdCmEntityColor color() const = 0;
 
  /** \details
    Returns the lineweight for this object.
  */
  virtual OdDb::LineWeight lineweight() const = 0;
 
  /** \details
    Returns the Object ID of the linetype for this object. 
  */
  virtual OdDbStub* linetype() const = 0;
  
  /** \details
    Returns the Plot Style Name Type for this object. 
    \remarks
    plotStyleNameType() returns one of the following:
    
    <table>
    Name                                 Value                         
    OdDb::kPlotStyleNameByLayer          0
    OdDb::kPlotStyleNameByBlock          1
    OdDb::kPlotStyleNameIsDictDefault    2
    OdDb::kPlotStyleNameById             3
    </table>
  */
  virtual OdDb::PlotStyleNameType plotStyleNameType() const = 0;
  /** \details
    Returns the Object ID of the Plot Style Name. 
  */
  virtual OdDbStub* plotStyleNameId() const = 0;
  /** \details
    Returns the Object ID of the material.
  */
  virtual OdDbStub* materialId() const = 0;
  /** \details
    Returns the transparency for this object.
  */
  virtual OdCmTransparency transparency() const = 0;
 
  /** \details
    Sets the color for this object.
    \param color [in]  Entity color.
  */
  virtual void setColor(const OdCmEntityColor& color) = 0;
  /** \details
    Sets the lineweight for this object.
    \param lineweight [in]  Lineweight.
  */
  virtual void setLineweight(OdDb::LineWeight lineweight) = 0;
  /** \details
    Sets the linetype for this object.
    \param pLinetypeId [in]  Pointer to the Object ID of the linetype.
  */
  virtual void setLinetype(OdDbStub* pLinetypeId) = 0;
  
  /** \details
    Sets the Plot Style Name for this object.
 
    \param plotStyleNameType [in]  Plot Style Name Type.
    \param pPlotStyleNameId [in]  Pointer to the Object ID of the Plot Style Name.
    
    \remarks
    pPlotStyleNameId is used only when plotStyleNameType == kPlotStyleNameById.
    
    plotStyleNameType must be one of the following:
    
    <table>
    Name                                 Value                         
    OdDb::kPlotStyleNameByLayer          0
    OdDb::kPlotStyleNameByBlock          1
    OdDb::kPlotStyleNameIsDictDefault    2
    OdDb::kPlotStyleNameById             3
    </table>
  */
  virtual void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub* pPlotStyleNameId= 0) = 0;
 
  /** \details
    Sets the material ID for this object.
    \param pMaterialId [in]  Pointer to the Object ID of the material.
  */
  virtual void setMaterial(OdDbStub* pMaterialId) = 0;
 
  /** \details
    Sets the transparency for this object.
    
    \param transparency [in] OdCmTransparency object.
  */
  virtual void setTransparency(const OdCmTransparency &transparency) = 0;
};
 
/** \details
    This template class is a specialization of the OdSmartPtr class for OdGiLayerTraits object pointers.
*/
typedef OdSmartPtr<OdGiLayerTraits> OdGiLayerTraitsPtr;
 
 
/** \details
    This class defines the interface to linetype traits for the vectorization process.
    Library Gi
    <group OdGi_Classes> 
*/
class FIRSTDLL_EXPORT OdGiLinetypeTraits : public OdGiDrawableTraits
{
public:
  ODRX_DECLARE_MEMBERS(OdGiLinetypeTraits);
 
  // returned via subSetAttributes()
  
  enum
  {
    kByBlock    = (OdGiDrawable::kLastFlag << 1),
    kByLayer    = (OdGiDrawable::kLastFlag << 2),
    kContinuous = (OdGiDrawable::kLastFlag << 3),
    // Scale linetype to fit
    kScaleToFit = (OdGiDrawable::kLastFlag << 4),
    // Teigha(R) for .dgn files specific
    kScalability= (OdGiDrawable::kLastFlag << 5),
    kDgLinetype = (OdGiDrawable::kLastFlag << 6),
    //
    kGiLinetypeFlagMax = kDgLinetype
  };
 
  /** \details
    Returns the length of the linetype pattern for this LinetypeTraits object.
    
    \remarks
    patternLength is the total length in drawing units of all the dashes in this Linetype pattern.
  */
  virtual double patternLength() const = 0;
  
  /** \details
    Returns an array of dashes for this LinetypeTraits object.
    \param dashes [out]  Receives the array of dashes.
  */
  virtual void dashes(OdArray<OdGiLinetypeDash>& dashes) = 0;
 
  /** \details
    Returns the scale for this LinetypeTraits object.
  */
  virtual double scale() const = 0;
  
  /** \details
    Sets the dashes for this LinetypeTraits object.
    \param dashes [in]  Array of dashes.
  */
  virtual void setDashes(const OdArray<OdGiLinetypeDash>& dashes) = 0;
  /** \details
    Sets the scale for this LinetypeTraits object.
  */
  virtual void setScale(double scale) = 0;
  /** \details
    Sets the length of the linetype pattern for this LinetypeTraits object.
    
    \param patternLength [in]  Pattern length.
    
    \remarks
    patternLength is the total length in drawing units of all the dashes in this Linetype pattern.
  */
  virtual void setPatternLength(double patternLength) = 0;
};
/** \details
    This template class is a specialization of the OdSmartPtr class for OdGiLinetypeTraits object pointers.
*/
typedef OdSmartPtr<OdGiLinetypeTraits> OdGiLinetypeTraitsPtr;
 
/** \details
    This class defines the interface to text style traits for the vectorization process.
    Library: TD_Gi
    <group OdGi_Classes> 
*/
class FIRSTDLL_EXPORT OdGiTextStyleTraits : public  OdGiDrawableTraits
{
public:
  ODRX_DECLARE_MEMBERS(OdGiTextStyleTraits);
 
  /** \details
    Returns the text style of this TextStyleTraits object.
    \param giTextStyle [out]  Receives the text style.
  */
  virtual void textStyle(OdGiTextStyle& giTextStyle) const = 0;
 
  /** \details
    Sets the text style of this TextStyleTraits object.
    \param giTextStyle [in]  Text style.
  */
  virtual void setTextStyle(const OdGiTextStyle& giTextStyle) = 0;
};
 
/** \details
    This template class is a specialization of the OdSmartPtr class for OdGiTextStyleTraits object pointers.
*/
typedef OdSmartPtr<OdGiTextStyleTraits> OdGiTextStyleTraitsPtr;
 
#include "TD_PackPop.h"
 
#endif