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
/////////////////////////////////////////////////////////////////////////////// 
// 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 _ODDBGEOPOSITIONMARKER_INCLUDED_
#define _ODDBGEOPOSITIONMARKER_INCLUDED_
 
#include "TD_PackPush.h"
#include "DbEntity.h"
#include "OdString.h"
#include "DbMText.h"
 
/** \details
<group OdDb_Classes>
 
Class represents a geographical location aware marker object with a label. 
*/
class TOOLKIT_EXPORT OdDbGeoPositionMarker : public OdDbEntity
{
public:
  /** \details
  Enumerator representing alignment type of label text.
  */
  enum OdTextAlignmentType {
    /** Left-justified label text.*/
    kLeftAlignment              = 0,
    /** Label text center alignment.*/
    kCenterAlignment            = 1,
    /** Right-justified label text.*/
    kRightAlignment             = 2
  };
 
  ODDB_DECLARE_MEMBERS(OdDbGeoPositionMarker);
  /** \details
  Creates an instance of the OdDbGeoPositionMarker class.
  
  \remarks
  Use the static pseudo-constructor createObject() instead of it.
  */ 
  OdDbGeoPositionMarker();
  
  virtual ~OdDbGeoPositionMarker();
  
  /** \details 
  Returns the current value of the insertion point of the position marker.
  */
  OdGePoint3d       position() const;
  
  /** \details 
  Sets a new value of the insertion point of the position marker.
  
  \param position [in] New insertion point coordinates.
  
  \returns Returns eOk if the new value of the insertion point was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setPosition(const OdGePoint3d &position);
  
  /** \details 
  Returns the current radius value of the position marker.
  */
  double            radius() const; 
  
  /** \details 
  Sets a new radius value of the position marker.
  
  \param radius [in] A new radius value to be set.
  
  \returns Returns eOk if the new radius value was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setRadius(double radius);
  
  /** \details 
  Returns the current position marker text label value.
  */
  OdString          text() const;
  
  /** \details 
  Sets a new text label value of the position marker.
  
  \param text [in] A new text label value to be set.
  
  \returns Returns eOk if the new text label value was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setText(const OdString& text);
  
  /** \details 
  Returns the copy of the current position marker multiline text label value.
  */  
  OdDbMTextPtr      mtext() const;
  
  /** \details 
  Sets a new multiline text label value of the position marker as a copy of the input parameter's referenced value.
  
  \param pMText [in] A new multiline text label value to be set, which is represented as a pointer to an OdDbMText.
  
  \returns Returns eOk if the new multiline text label value was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setMText(const OdDbMText * pMText);
  
  /** \details 
  Returns the current value of the multiline text label visibility flag.
  The visibility flag indicates that the multiline text label is visible (if true).
  */  
  bool              mtextVisible() const;
  
  /** \details 
  Sets a new value of the  multiline text label visibility flag.
  The visibility flag indicates that the multiline text label is visible (if true).
  
  \param visible [in] A new flag value to be set.
  
  \returns Returns eOk if the new value of the multiline text label visibility flag was successfully set or returns an appropriate error code in the other case.
  */  
  OdResult          setMTextVisible(bool visible);
  
  /** \details 
  Returns the current value of the landing gap of the position marker.
  */  
  double            landingGap() const;
  
  /** \details 
  Sets a new value of the landing gap of the position marker.
  
  \param landingGap [in] A new landing gap value to be set.
  
  \returns Returns eOk if the new value of the landing gap was successfully set or returns an appropriate error code in the other case.
  */ 
  OdResult          setLandingGap(double landingGap);
 
  /** \details 
  Returns the current value of the label text frame enabling flag.
  The frame enabling flag indicates that the label text has a frame (if true).
  */  
  bool              enableFrameText() const;
  
  /** \details 
  Sets a new value of the label text frame enabling flag.
  The frame enabling flag indicates that the label text has a frame (if true).
  
  \param enableFrameText [in] A new flag value to be set.
  
  \returns Returns eOk if the new value of the label text frame enabling flag was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setEnableFrameText(bool enableFrameText);
  
  /** \details 
  Returns the current value of the label text alignment type.
  */ 
  OdTextAlignmentType textAlignmentType() const;
  
  /** \details 
  Sets a new value of the label text alignment type.
    
  \param textAlignmentType [in] A new alignment type value to be set represented as a value of the OdTextAlignmentType enumeration.
  
  \returns Returns eOk if the new value of the label text alignment type was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setTextAlignmentType(OdTextAlignmentType textAlignmentType);
 
  /** \details 
  Returns the current value of the position marker notes as an OdString.
  */ 
  OdString          notes() const;
  
  /** \details 
  Sets a new value of position marker notes.
    
  \param notes [in] A new notes value to be set.
  
  \returns Returns eOk if the new value of position marker notes was successfully set or returns an appropriate error code in the other case.
  */  
  OdResult          setNotes(const OdString& notes);
  
  /** \details 
  Returns the current value of the insertion point of the position marker.
  */  
  OdGePoint3d       geoPosition() const;
  
  /** \details 
  Sets a new value of the geographical location of the position marker.
    
  \param position [in] A new value of the geographical location coordinates (where x, y, z are longitude, latitude and alleviation) that should be set.
  
  \returns Returns eOk if the new value of the geographical location of the position marker was successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setGeoPosition(const OdGePoint3d &position);
 
  /** \details 
  Returns the current value of the geographical location of the position marker.
  
  \param lat [out] A reference to a double variable to store the latitude value.
  \param lon [out] A reference to a double variable to store the longitude value.
  \param alt [out] A reference to a double variable to store the alleviation value.
  
  \returns Returns eOk if the new values of the geographical location parameters of the position marker were successfully set into output variables or returns an appropriate error code in the other case.
  */  
  OdResult          latLonAlt(double &lat, double &lon, double &alt) const;
  
  /** \details 
  Sets a new value of the geographical location of the position marker.
  
  \param lat [in] A double value of the latitude.
  \param lon [in] A double value of the longitude.
  \param alt [in] A double value of the alleviation.
  
  \returns Returns eOk if the new values of the geographical location parameters of the position marker were successfully set or returns an appropriate error code in the other case.
  */
  OdResult          setLatLonAlt(double lat, double lon, double alt);
  
  /** \details 
  Returns the current value of the normal of the position marker as an OdGeVector3d object.
  */
  OdGeVector3d      normal() const;
  
  /** \details 
  Returns the current value of the label text style of the position marker as an OdDbObjectId.
  */
  OdDbObjectId      textStyle() const;
 
  virtual OdResult  dwgInFields(OdDbDwgFiler* pFiler);
  virtual void      dwgOutFields(OdDbDwgFiler* pFiler) const;
  virtual OdResult  dxfInFields(OdDbDxfFiler* pFiler);
  virtual void      dxfOutFields(OdDbDxfFiler* pFiler) const;
 
  virtual bool      subWorldDraw(OdGiWorldDraw* pWorldDraw) const;
  virtual void      subViewportDraw(OdGiViewportDraw* pViewportDraw) const;
 
  virtual OdResult  subTransformBy(const OdGeMatrix3d& xform);
  virtual void      subClose();
 
  virtual OdResult  subGetGeomExtents(OdGeExtents3d& extents) const;
};
/** \details
    This template class is a specialization of the OdSmartPtr class for OdDbGeoPositionMarker object pointers.
*/
typedef OdSmartPtr<OdDbGeoPositionMarker> OdDbGeoPositionMarkerPtr;
 
#endif