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
/////////////////////////////////////////////////////////////////////////////// 
// 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 ODDGNLS_DBLSSTROKEPATTERNCOMPONENT_H
#define ODDGNLS_DBLSSTROKEPATTERNCOMPONENT_H
 
#include "DbLSComponent.h"
#include "DbLSStroke.h"
 
#include "TD_PackPush.h"
 
/** \details
    Dgn Line Style Stroke Pattern Component.
    \sa
    TD_Db
    <group OdDbLS_Classes> 
*/
class ODDGNLS_EXPORT OdDbLSStrokePatternComponent : public OdDbLSComponent
{
  public:
    enum PhaseMode
    {
      kLSPhaseDistance = 0, // Distance phase mode
      kLSPhaseFraction = 1, // Fraction phase mode (auto phase)
      kLSPhaseCentered = 2  // Centered phase mode (stretch phase mode)
    };
  public:
    ODDB_DECLARE_MEMBERS(OdDbLSStrokePatternComponent);
 
    OdDbLSStrokePatternComponent();
 
    /** \details
      Returns phase for fraction phase mode.
 
      \remarks
      Null for non-fraction phase modes.
    */
    double autoPhase() const;
    /** \details
      Sets phase for fraction phase mode.
 
      \param fPhase [in]  New phase value to set.
    */
    void setAutoPhase(double fPhase);
 
    /** \details
      Returns true if iteration limit mode is enabled.
    */
    bool hasIterationLimit() const;
    /** \details
      Sets iteration limit mode.
 
      \param bSet [in]  New mode to set.
    */
    void setHasIterationLimit(bool bSet);
 
    /** \details
      Inserts new stroke into this stroke pattern component.
 
      \param fLength [in]  Stroke length.
      \param fStartWidth [in]  Stroke start width.
      \param fEndWidth [in]  Stroke end width.
      \param widthMode [in]  Stroke width mode.
      \param capMode [in]  Stroke caps type.
      \remarks
      Returns pointer to newly added stroke which could be used for additional modifications.
    */
    OdDbLSStroke *insertStroke(double fLength = 1.0, double fStartWidth = 0.0, double fEndWidth = 0.0,
      OdDbLSStroke::WidthMode widthMode = OdDbLSStroke::kLSNoWidth, OdDbLSStroke::CapMode capMode = OdDbLSStroke::kLSCapsClosed);
    /** \details
      Inserts new stroke into this stroke pattern component as copy of existing stroke.
 
      \param pStroke [in]  Stroke for clone.
      \remarks
      Returns pointer to newly added stroke which could be used for additional modifications.
    */
    OdDbLSStroke *insertStroke(const OdDbLSStroke *pStroke);
    /** \details
      Returns stroke pointer from this stroke pattern component.
 
      \param nStroke [in]  Stroke index.
    */
    OdDbLSStroke *stroke(OdUInt32 nStroke) const;
 
    /** \details
      Removes existing stroke from this stroke pattern component.
 
      \param nStroke [in]  Stroke index.
    */
    void deleteStroke(OdUInt32 nStroke);
 
    /** \details
      Returns count of strokes in this stroke pattern component.
    */
    OdUInt32 numberStrokes() const;
 
    /** \details
      Returns true if single segment mode is enabled.
    */
    bool isSingleSegment() const;
    /** \details
      Enables single segment mode.
 
      \param bSet [in]  New mode to set.
    */
    void setIsSingleSegment(bool bSet);
 
    /** \details
      Returns iteration limit.
    */
    OdInt32 iterationLimit() const;
    /** \details
      Sets iteration limit.
 
      \param nLimit [in]  New limit to set.
    */
    void setIterationLimit(OdInt32 nLimit);
 
    /** \details
      Returns phase for distance phase mode.
 
      \remarks
      Null for non-distance phase modes.
    */
    double phase() const;
    /** \details
      Sets phase for distance phase mode.
 
      \param fPhase [in]  New phase value to set.
    */
    void setPhase(double fPhase);
 
    /** \details
      Returns current phase mode.
    */
    PhaseMode phaseMode() const;
    /** \details
      Resets current phase mode.
 
      \param mode [in]  New phase mode to set.
    */
    void setPhaseMode(PhaseMode mode);
};
 
/** \details
    This template class is a specialization of the OdSmartPtr class for OdDbLSStrokePatternComponent object pointers.
*/
typedef OdSmartPtr<OdDbLSStrokePatternComponent> OdDbLSStrokePatternComponentPtr;
 
#include "TD_PackPop.h"
 
#endif // ODDGNLS_DBLSSTROKEPATTERNCOMPONENT_H