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
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
/////////////////////////////////////////////////////////////////////////////// 
// 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.
    <group OdDb_Classes>
*/
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:
  
    <table>
    Property      Value
    Name          Empty string
    Description   Empty string
    FillColor     0
    StartAngle    90°
    EndAngle      90°
    ElementList   Empty
    </table>
  */
  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<OdDbMlineStyle> OdDbMlineStylePtr;
 
#include "TD_PackPop.h"
 
#endif