Point Cloud Library (PCL)  1.11.1
opennurbs_annotation.h
1 /* $NoKeywords: $ */
2 /*
3 //
4 // Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
5 // OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
6 // McNeel & Associates.
7 //
8 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
9 // ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
10 // MERCHANTABILITY ARE HEREBY DISCLAIMED.
11 //
12 // For complete openNURBS copyright information see <http://www.opennurbs.org>.
13 //
14 ////////////////////////////////////////////////////////////////
15 */
16 
17 #if !defined(OPENNURBS_ANNOTATION_INC_)
18 #define OPENNURBS_ANNOTATION_INC_
19 
20 
21 class ON_CLASS ON_AnnotationTextDot : public ON_Point
22 {
23  // 3d annotation dot with text
24  ON_OBJECT_DECLARE(ON_AnnotationTextDot);
25 public:
30 
31  /////////////////////////////////////////////////////////////////
32  //
33  // ON_Object overrides
34  //
35 
36  /*
37  Description:
38  Tests an object to see if its data members are correctly
39  initialized.
40  Parameters:
41  text_log - [in] if the object is not valid and text_log
42  is not NULL, then a brief englis description of the
43  reason the object is not valid is appened to the log.
44  The information appended to text_log is suitable for
45  low-level debugging purposes by programmers and is
46  not intended to be useful as a high level user
47  interface tool.
48  Returns:
49  @untitled table
50  true object is valid
51  false object is invalid, uninitialized, etc.
52  Remarks:
53  Overrides virtual ON_Object::IsValid
54  */
55  ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
56 
57  void Dump( ON_TextLog& ) const; // for debugging
58 
59  ON_BOOL32 Write(
60  ON_BinaryArchive& // serialize definition to binary archive
61  ) const;
62 
63  ON_BOOL32 Read(
64  ON_BinaryArchive& // restore definition from binary archive
65  );
66 
68 };
69 
70 class ON_CLASS ON_AnnotationArrow : public ON_Geometry
71 {
72  // 3d annotation arrow
73  ON_OBJECT_DECLARE(ON_AnnotationArrow);
74 public:
79 
80  /////////////////////////////////////////////////////////////////
81  //
82  // ON_Object overrides
83  //
84 
85  /*
86  Description:
87  Tests an object to see if its data members are correctly
88  initialized.
89  Parameters:
90  text_log - [in] if the object is not valid and text_log
91  is not NULL, then a brief englis description of the
92  reason the object is not valid is appened to the log.
93  The information appended to text_log is suitable for
94  low-level debugging purposes by programmers and is
95  not intended to be useful as a high level user
96  interface tool.
97  Returns:
98  @untitled table
99  true object is valid
100  false object is invalid, uninitialized, etc.
101  Remarks:
102  Overrides virtual ON_Object::IsValid
103  */
104  ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
105 
106  void Dump( ON_TextLog& ) const; // for debugging
107 
108  ON_BOOL32 Write(
109  ON_BinaryArchive& // serialize definition to binary archive
110  ) const;
111 
112  ON_BOOL32 Read(
113  ON_BinaryArchive& // restore definition from binary archive
114  );
115 
116  ON::object_type ObjectType() const;
117 
118  /////////////////////////////////////////////////////////////////
119  //
120  // ON_Geometry overrides
121  //
122 
123  int Dimension() const;
124 
125  // work horse bounding box getter
126  ON_BOOL32 GetBBox( // returns true if successful
127  double*, // boxmin[dim]
128  double*, // boxmax[dim]
129  ON_BOOL32 = false // true means grow box
130  ) const;
131 
132  ON_BOOL32 Transform(
133  const ON_Xform&
134  );
135 
136  /////////////////////////////////////////////////////////////////
137  //
138  // Interface
139  //
141  ON_3dPoint Head() const;
142  ON_3dPoint Tail() const;
143 
146 };
147 
148 ////////////////////////////////////////////////////////////////
149 //
150 // ON_Annotation - used to serialize definitions of annotation
151 // objects (dimensions, text blocks, etc.).
152 //
153 
154 class ON_CLASS ON_Annotation : public ON_Geometry
155 {
156  ON_OBJECT_DECLARE(ON_Annotation);
157 
158  enum SYMBOLS
159  {
160  degreesym = 176,
161  radiussym = 'R',
162  diametersym = 216,
163  plusminussym = 177,
164  };
165 
166 
167 
168 public:
169 
170  virtual ON_BOOL32 IsRealObject() const = 0;
171 
176 
177  void Create(); // initialize class's fields assuming
178  // memory is uninitialized
179  void Destroy();
181 
182  /////////////////////////////////////////////////////////////////
183  //
184  // ON_Object overrides
185  //
186 
187  /*
188  Description:
189  Tests an object to see if its data members are correctly
190  initialized.
191  Parameters:
192  text_log - [in] if the object is not valid and text_log
193  is not NULL, then a brief englis description of the
194  reason the object is not valid is appened to the log.
195  The information appended to text_log is suitable for
196  low-level debugging purposes by programmers and is
197  not intended to be useful as a high level user
198  interface tool.
199  Returns:
200  @untitled table
201  true object is valid
202  false object is invalid, uninitialized, etc.
203  Remarks:
204  Overrides virtual ON_Object::IsValid
205  */
206  ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
207 
208  void Dump( ON_TextLog& ) const; // for debugging
209 
210  ON_BOOL32 Write(
211  ON_BinaryArchive& // serialize definition to binary archive
212  ) const;
213 
214  ON_BOOL32 Read(
215  ON_BinaryArchive& // restore definition from binary archive
216  );
217 
218  ON::object_type ObjectType() const;
219 
220  /////////////////////////////////////////////////////////////////
221  //
222  // ON_Geometry overrides
223  //
224 
225  int Dimension() const;
226 
227  ON_BOOL32 GetBBox( // returns true if successful
228  double*, // boxmin[dim]
229  double*, // boxmax[dim]
230  ON_BOOL32 = false // true means grow box
231  ) const;
232 
233  ON_BOOL32 Transform(
234  const ON_Xform&
235  );
236 
237  /////////////////////////////////////////////////////////////////
238  //
239  // ON_Annotation interface
240  //
241 
242  // use these to get/set the current annotation settings
245 
246  bool IsText() const;
247  bool IsLeader() const;
248  bool IsDimension() const;
249 
250  virtual double NumericValue() const;
251  virtual void SetTextToDefault();
252 
253  void SetType( ON::eAnnotationType type );
254  ON::eAnnotationType Type() const;
255  void SetTextDisplayMode( ON::eTextDisplayMode mode);
256  ON::eTextDisplayMode TextDisplayMode() const;
257 
258  void SetPlane( const ON_Plane& plane );
259  ON_Plane Plane() const;
260  int PointCount() const;
261  void SetPoints( const ON_SimpleArray<ON_2dPoint>& points );
263  void SetPoint( int idx, ON_3dPoint point );
264  ON_2dPoint Point( int idx ) const;
265  void SetUserText( const wchar_t* string );
266  const ON_wString& UserText() const;
267  void SetDefaultText( const wchar_t* string );
268  const ON_wString& DefaultText() const;
269  void SetUserPositionedText( int bUserPositionedText );
270  bool UserPositionedText() const;
271 
272  // to convert world 3d points to and from annotation 2d points
273  bool GetECStoWCSXform( ON_Xform& xform ) const;
274  bool GeWCStoECSXform( ON_Xform& xform ) const;
275 
276  ON::eAnnotationType m_type; // enum for type of annotation
277  // DimLinear, DimRadius, etc.
278 
279  ON::eTextDisplayMode m_textdisplaymode; // how the text is displayed
280  // Horizontal, InLine, AboveLine
281 
282  ON_Plane m_plane; // ECS reference plane in WCS coordinates
283  ON_SimpleArray<ON_2dPoint> m_points; // Definition points for the dimension
284 
285  ON_wString m_usertext; // "<>", or user override
286  ON_wString m_defaulttext; // The displayed text string
287 
288  bool m_userpositionedtext; // true: User has positioned text
289  // false: use default location
290 };
291 
292 
293 class ON_CLASS ON_LinearDimension : public ON_Annotation
294 {
295  ON_OBJECT_DECLARE(ON_LinearDimension);
296 
297 public:
298  ON_BOOL32 IsRealObject() const;
303 
304  double NumericValue();
307 };
308 
309 class ON_CLASS ON_RadialDimension : public ON_Annotation
310 {
311  ON_OBJECT_DECLARE(ON_RadialDimension);
312 
313 public:
314  ON_BOOL32 IsRealObject() const;
319 
320  double NumericValue();
322 
324 };
325 
326 class ON_CLASS ON_AngularDimension : public ON_Annotation
327 {
328  ON_OBJECT_DECLARE(ON_AngularDimension);
329 
330 public:
331  ON_BOOL32 IsRealObject() const;
332 
337 
339 
340  ON_BOOL32 Write( ON_BinaryArchive& file ) const;
341  ON_BOOL32 Read( ON_BinaryArchive& file );
342 
343  void SetAngle( double angle ) { m_angle = angle; }
344  double Angle() const { return m_angle; }
345  void SetRadius( double radius ) { m_radius = radius; }
346  double Radius() const { return m_radius; }
347 
348  double NumericValue();
350 
351 
352 private:
353  double m_angle; // angle being dimensioned
354  double m_radius; // radius for dimension arc
355 };
356 
357 class ON_CLASS ON_TextEntity : public ON_Annotation
358 {
359  ON_OBJECT_DECLARE(ON_TextEntity);
360 
361 public:
362  ON_BOOL32 IsRealObject() const;
367 
369 
370  ON_BOOL32 Write( ON_BinaryArchive& file ) const;
371  ON_BOOL32 Read( ON_BinaryArchive& file );
372 
373  void SetFaceName( ON_wString string ) { m_facename = string; }
374  ON_wString FaceName() const { return m_facename; }
375  void SetFontWeight( int weight ) { m_fontweight = weight; }
376  int FontWeight() const { return m_fontweight; }
377  void SetHeight( double height ) { m_height = height; }
378  double Height() const { return m_height; }
379 
380 private:
381  ON_wString m_facename;
382  int m_fontweight; // windows - 400 = NORMAL )
383  double m_height; // gets multiplied by dimscale
384 };
385 
386 class ON_CLASS ON_Leader : public ON_Annotation
387 {
388  ON_OBJECT_DECLARE(ON_Leader);
389 
390 public:
391  ON_BOOL32 IsRealObject() const;
396 
398 };
399 
400 
401 
402 
403 #endif
404 
ON_3dVector
Definition: opennurbs_point.h:953
ON_Annotation::ON_Annotation
ON_Annotation(const ON_Annotation &)
ON_Leader::IsRealObject
ON_BOOL32 IsRealObject() const
ON_TextEntity::ON_TextEntity
ON_TextEntity()
ON_Annotation::UserText
const ON_wString & UserText() const
ON_AnnotationArrow::operator=
ON_AnnotationArrow & operator=(const ON_AnnotationArrow &)
ON_AnnotationArrow::m_tail
ON_3dPoint m_tail
Definition: opennurbs_annotation.h:144
ON_Annotation::NumericValue
virtual double NumericValue() const
ON_Annotation
Definition: opennurbs_annotation.h:155
ON_AnnotationTextDot::Dump
void Dump(ON_TextLog &) const
ON_AnnotationTextDot::~ON_AnnotationTextDot
~ON_AnnotationTextDot()
ON_Annotation::SetPlane
void SetPlane(const ON_Plane &plane)
ON_TextEntity::SetFontWeight
void SetFontWeight(int weight)
Definition: opennurbs_annotation.h:375
ON_TextEntity::ON_TextEntity
ON_TextEntity(const ON_TextEntity &)
ON_RadialDimension::SetTextToDefault
void SetTextToDefault()
ON_Leader::ON_Leader
ON_Leader()
ON_RadialDimension
Definition: opennurbs_annotation.h:310
ON_2dPoint
Definition: opennurbs_point.h:267
ON_RadialDimension::NumericValue
double NumericValue()
ON_Leader
Definition: opennurbs_annotation.h:387
ON_TextEntity::SetFaceName
void SetFaceName(ON_wString string)
Definition: opennurbs_annotation.h:373
ON_Annotation::SetUserText
void SetUserText(const wchar_t *string)
ON_TextEntity::FaceName
ON_wString FaceName() const
Definition: opennurbs_annotation.h:374
ON_LinearDimension::EmergencyDestroy
void EmergencyDestroy()
ON_LinearDimension::~ON_LinearDimension
~ON_LinearDimension()
ON_Annotation::SetPoint
void SetPoint(int idx, ON_3dPoint point)
ON_Annotation::~ON_Annotation
~ON_Annotation()
ON_Annotation::m_usertext
ON_wString m_usertext
Definition: opennurbs_annotation.h:285
ON_AnnotationTextDot::m_text
ON_wString m_text
Definition: opennurbs_annotation.h:67
ON_Annotation::Dump
void Dump(ON_TextLog &) const
ON_LinearDimension::SetTextToDefault
void SetTextToDefault()
ON_AngularDimension::ON_AngularDimension
ON_AngularDimension()
ON_Annotation::SetType
void SetType(ON::eAnnotationType type)
ON_Annotation::SetUserPositionedText
void SetUserPositionedText(int bUserPositionedText)
ON_RadialDimension::~ON_RadialDimension
~ON_RadialDimension()
ON_Leader::operator=
ON_Leader & operator=(const ON_Leader &)
ON_Xform
Definition: opennurbs_xform.h:29
ON_AnnotationArrow::IsValid
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON_Annotation::SetTextToDefault
virtual void SetTextToDefault()
ON_AngularDimension::SetTextToDefault
void SetTextToDefault()
ON_Annotation::Destroy
void Destroy()
ON_AnnotationArrow
Definition: opennurbs_annotation.h:71
ON_TextEntity::SetHeight
void SetHeight(double height)
Definition: opennurbs_annotation.h:377
ON_SimpleArray< ON_2dPoint >
ON_Annotation::GeWCStoECSXform
bool GeWCStoECSXform(ON_Xform &xform) const
ON_Leader::EmergencyDestroy
void EmergencyDestroy()
ON_Annotation::operator=
ON_Annotation & operator=(const ON_Annotation &)
ON_AnnotationArrow::ON_AnnotationArrow
ON_AnnotationArrow()
ON_wString
Definition: opennurbs_string.h:701
ON_Annotation::IsDimension
bool IsDimension() const
ON_Annotation::DefaultText
const ON_wString & DefaultText() const
ON_AngularDimension::Read
ON_BOOL32 Read(ON_BinaryArchive &file)
ON_AnnotationArrow::Dump
void Dump(ON_TextLog &) const
ON_Leader::~ON_Leader
~ON_Leader()
ON_Annotation::GetBBox
ON_BOOL32 GetBBox(double *, double *, ON_BOOL32=false) const
ON_Geometry
Definition: opennurbs_geometry.h:37
ON_LinearDimension::ON_LinearDimension
ON_LinearDimension()
ON_AnnotationArrow::GetBBox
ON_BOOL32 GetBBox(double *, double *, ON_BOOL32=false) const
ON_LinearDimension::operator=
ON_LinearDimension & operator=(const ON_LinearDimension &)
ON_Point
Definition: opennurbs_pointgeometry.h:25
ON_Annotation::SetDefaultText
void SetDefaultText(const wchar_t *string)
ON_AnnotationTextDot::operator=
ON_AnnotationTextDot & operator=(const ON_AnnotationTextDot &)
ON_LinearDimension::ON_LinearDimension
ON_LinearDimension(const ON_LinearDimension &)
ON_Annotation::m_defaulttext
ON_wString m_defaulttext
Definition: opennurbs_annotation.h:286
ON_Annotation::IsRealObject
virtual ON_BOOL32 IsRealObject() const =0
ON_TextEntity::IsRealObject
ON_BOOL32 IsRealObject() const
ON_Annotation::Create
void Create()
ON_TextEntity::Read
ON_BOOL32 Read(ON_BinaryArchive &file)
ON_Annotation::Type
ON::eAnnotationType Type() const
ON_Annotation::Read
ON_BOOL32 Read(ON_BinaryArchive &)
ON_RadialDimension::IsRealObject
ON_BOOL32 IsRealObject() const
ON_AnnotationTextDot::Write
ON_BOOL32 Write(ON_BinaryArchive &) const
ON_AngularDimension::Radius
double Radius() const
Definition: opennurbs_annotation.h:346
ON_Annotation::ObjectType
ON::object_type ObjectType() const
ON_Annotation::SetAnnotationSettings
static void SetAnnotationSettings(const ON_3dmAnnotationSettings *)
ON_Annotation::m_userpositionedtext
bool m_userpositionedtext
Definition: opennurbs_annotation.h:288
ON_Annotation::PointCount
int PointCount() const
ON_Annotation::Dimension
int Dimension() const
ON_AngularDimension::SetRadius
void SetRadius(double radius)
Definition: opennurbs_annotation.h:345
ON_Annotation::TextDisplayMode
ON::eTextDisplayMode TextDisplayMode() const
ON_AnnotationArrow::Tail
ON_3dPoint Tail() const
ON_AnnotationArrow::Vector
ON_3dVector Vector() const
ON_LinearDimension::NumericValue
double NumericValue()
ON_Annotation::Point
ON_2dPoint Point(int idx) const
ON_Annotation::m_plane
ON_Plane m_plane
Definition: opennurbs_annotation.h:282
ON_Annotation::m_type
ON::eAnnotationType m_type
Definition: opennurbs_annotation.h:276
ON_Annotation::IsLeader
bool IsLeader() const
ON_Plane
Definition: opennurbs_plane.h:21
ON_Annotation::Plane
ON_Plane Plane() const
ON_TextEntity
Definition: opennurbs_annotation.h:358
ON_Leader::ON_Leader
ON_Leader(const ON_Leader &)
ON_Annotation::Write
ON_BOOL32 Write(ON_BinaryArchive &) const
ON_BinaryArchive
Definition: opennurbs_archive.h:732
ON_RadialDimension::operator=
ON_RadialDimension & operator=(const ON_RadialDimension &)
ON_LinearDimension
Definition: opennurbs_annotation.h:294
ON_Annotation::SetPoints
void SetPoints(const ON_SimpleArray< ON_2dPoint > &points)
ON_TextLog
Definition: opennurbs_textlog.h:23
ON_AngularDimension::IsRealObject
ON_BOOL32 IsRealObject() const
ON_3dPoint
Definition: opennurbs_point.h:419
ON_Annotation::m_points
ON_SimpleArray< ON_2dPoint > m_points
Definition: opennurbs_annotation.h:283
ON_AnnotationArrow::Read
ON_BOOL32 Read(ON_BinaryArchive &)
ON_TextEntity::FontWeight
int FontWeight() const
Definition: opennurbs_annotation.h:376
ON_AngularDimension::~ON_AngularDimension
~ON_AngularDimension()
ON_AnnotationArrow::~ON_AnnotationArrow
~ON_AnnotationArrow()
ON_Annotation::Points
const ON_SimpleArray< ON_2dPoint > & Points() const
ON_Annotation::ON_Annotation
ON_Annotation()
ON_AngularDimension::NumericValue
double NumericValue()
ON_TextEntity::Height
double Height() const
Definition: opennurbs_annotation.h:378
ON_AnnotationTextDot
Definition: opennurbs_annotation.h:22
ON_LinearDimension::IsRealObject
ON_BOOL32 IsRealObject() const
ON_Annotation::IsText
bool IsText() const
ON_Annotation::Transform
ON_BOOL32 Transform(const ON_Xform &)
ON_AnnotationArrow::Dimension
int Dimension() const
ON_Annotation::UserPositionedText
bool UserPositionedText() const
ON_AngularDimension::SetAngle
void SetAngle(double angle)
Definition: opennurbs_annotation.h:343
ON_AnnotationArrow::Head
ON_3dPoint Head() const
ON_AnnotationTextDot::ON_AnnotationTextDot
ON_AnnotationTextDot()
ON_AnnotationArrow::Write
ON_BOOL32 Write(ON_BinaryArchive &) const
ON_TextEntity::EmergencyDestroy
void EmergencyDestroy()
ON_RadialDimension::ON_RadialDimension
ON_RadialDimension(const ON_RadialDimension &)
ON_TextEntity::operator=
ON_TextEntity & operator=(const ON_TextEntity &)
ON_AngularDimension::operator=
ON_AngularDimension & operator=(const ON_AngularDimension &)
ON_Annotation::IsValid
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON_3dmAnnotationSettings
Definition: opennurbs_3dm_settings.h:78
ON_AngularDimension::Write
ON_BOOL32 Write(ON_BinaryArchive &file) const
ON_TextEntity::Write
ON_BOOL32 Write(ON_BinaryArchive &file) const
ON_AnnotationTextDot::Read
ON_BOOL32 Read(ON_BinaryArchive &)
ON_Annotation::GetECStoWCSXform
bool GetECStoWCSXform(ON_Xform &xform) const
ON_RadialDimension::ON_RadialDimension
ON_RadialDimension()
ON_AnnotationArrow::ON_AnnotationArrow
ON_AnnotationArrow(const ON_AnnotationArrow &)
ON_TextEntity::~ON_TextEntity
~ON_TextEntity()
ON_AngularDimension::EmergencyDestroy
void EmergencyDestroy()
ON_AnnotationTextDot::IsValid
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON_Annotation::AnnotationSettings
static const ON_3dmAnnotationSettings & AnnotationSettings()
ON_AngularDimension::Angle
double Angle() const
Definition: opennurbs_annotation.h:344
ON_AngularDimension::ON_AngularDimension
ON_AngularDimension(const ON_AngularDimension &)
ON_Annotation::EmergencyDestroy
void EmergencyDestroy()
ON_AnnotationArrow::ObjectType
ON::object_type ObjectType() const
ON_Annotation::m_textdisplaymode
ON::eTextDisplayMode m_textdisplaymode
Definition: opennurbs_annotation.h:279
ON_AnnotationTextDot::ON_AnnotationTextDot
ON_AnnotationTextDot(const ON_AnnotationTextDot &)
ON_Annotation::SetTextDisplayMode
void SetTextDisplayMode(ON::eTextDisplayMode mode)
ON_AnnotationArrow::Transform
ON_BOOL32 Transform(const ON_Xform &)
ON_AngularDimension
Definition: opennurbs_annotation.h:327
ON_AnnotationArrow::m_head
ON_3dPoint m_head
Definition: opennurbs_annotation.h:145
ON_RadialDimension::EmergencyDestroy
void EmergencyDestroy()