QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
opennurbs_defines.h
Go to the documentation of this file.
1/* $NoKeywords: $ */
2/*
3//
4// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
5// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
6//
7// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
8// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
9// MERCHANTABILITY ARE HEREBY DISCLAIMED.
10//
11// For complete openNURBS copyright information see <http://www.opennurbs.org>.
12//
14*/
15
17//
18// Includes all openNURBS toolkit defines and enums.
19//
21
22#if !defined(OPENNURBS_DEFINES_INC_)
23#define OPENNURBS_DEFINES_INC_
24
25#if defined (cplusplus) || defined(_cplusplus) || defined(__cplusplus) || defined(ON_CPLUSPLUS)
26// C++ extern "C" declaration for C linkage
27
28#if !defined(ON_CPLUSPLUS)
29#define ON_CPLUSPLUS
30#endif
31#define ON_EXTERNC extern "C"
32#define ON_BEGIN_EXTERNC extern "C" {
33#define ON_END_EXTERNC }
34
35#else
36
37/* C file - no extern declaration required or permitted */
38
39#define ON_EXTERNC
40#define ON_BEGIN_EXTERNC
41#define ON_END_EXTERNC
42
43#endif
44
45
46#if defined(_DEBUG)
47/* enable OpenNurbs debugging code */
48#if !defined(ON_DEBUG)
49#define ON_DEBUG
50#endif
51#endif
52
53/*
54// Declarations in header (.H) files look like
55//
56// ON_DECL type function():
57// extern ON_EXTERN_DECL type global_variable;
58// class ON_CLASS classname {};
59// ON_TEMPLATE template class ON_CLASS template<T>;
60//
61*/
62
63/* export/import */
64#if defined(ON_DLL_EXPORTS)
65
66#if !defined(ON_COMPILING_OPENNURBS)
67#error When compiling an OpenNURBS DLL, ON_DLL_EXPORTS must be defined
68#endif
69
70/* compiling OpenNurbs as a Windows DLL - export classes, functions, templates, and globals */
71#define ON_CLASS __declspec(dllexport)
72#define ON_DECL __declspec(dllexport)
73#define ON_EXTERN_DECL __declspec(dllexport)
74#define ON_DLL_TEMPLATE
75
76#elif defined(ON_DLL_IMPORTS)
77
78#if defined(ON_COMPILING_OPENNURBS)
79#error When compiling an OpenNURBS DLL, ON_DLL_IMPORTS must NOT be defined
80#endif
81
82/* using OpenNurbs as a Windows DLL - import classes, functions, templates, and globals */
83#define ON_CLASS __declspec(dllimport)
84#define ON_DECL __declspec(dllimport)
85#define ON_EXTERN_DECL __declspec(dllimport)
86#define ON_DLL_TEMPLATE extern
87
88#else
89
90/* compiling or using OpenNurbs as a static library */
91#define ON_CLASS
92#define ON_DECL
93#define ON_EXTERN_DECL
94
95#if defined(ON_DLL_TEMPLATE)
96#undef ON_DLL_TEMPLATE
97#endif
98
99#endif
100
101
102// ON_DEPRECATED is used to mark deprecated functions.
103#if defined(ON_COMPILER_MSC)
104#define ON_DEPRECATED __declspec(deprecated)
105#else
106#define ON_DEPRECATED
107#endif
108
109#if defined(PI)
110#define ON_PI PI
111#else
112#define ON_PI 3.141592653589793238462643
113#endif
114
115#define ON_DEGREES_TO_RADIANS ON_PI/180.0
116#define ON_RADIANS_TO_DEGREES 180.0/ON_PI
117
118#define ON_SQRT2 1.414213562373095048801689
119#define ON_SQRT3 1.732050807568877293527446
120#define ON_SQRT3_OVER_2 0.8660254037844386467637230
121#define ON_1_OVER_SQRT2 0.7071067811865475244008445
122#define ON_SIN_PI_OVER_12 0.2588190451025207623488990
123#define ON_COS_PI_OVER_12 0.9659258262890682867497433
124
125#define ON_LOG2 0.6931471805599453094172321
126#define ON_LOG10 2.302585092994045684017991
127
128#define ON_ArrayCount(a) (sizeof(a)/sizeof((a)[0]))
129
130#if defined(DBL_MAX)
131#define ON_DBL_MAX DBL_MAX
132#else
133#define ON_DBL_MAX 1.7976931348623158e+308
134#endif
135
136#if defined(DBL_MIN)
137#define ON_DBL_MIN DBL_MIN
138#else
139#define ON_DBL_MIN 2.22507385850720200e-308
140#endif
141
142#if defined(DBL_EPSILON)
143#define ON_EPSILON DBL_EPSILON
144#else
145#define ON_EPSILON 2.2204460492503131e-16
146#endif
147#define ON_SQRT_EPSILON 1.490116119385000000e-8
148
149
150/*
151// In cases where lazy evaluation of a double value is
152// performed, b-rep tolerances being a notable example,
153// this value is used to indicate the value has not been
154// computed. This value must be < -1.0e308. and > -ON_DBL_MAX
155//
156// The reasons ON_UNSET_VALUE is a valid finite number are:
157//
158// 1) It needs to round trip through fprintf/sscanf.
159// 2) It needs to persist unchanged through assigment
160/ and not generate exceptions when assigned.
161// 3) ON_UNSET_VALUE == ON_UNSET_VALUE needs to be true.
162// 4) ON_UNSET_VALUE != ON_UNSET_VALUE needs to be false.
163//
164// Ideally, it would also have these SNaN attributes
165// * When used in a calculation, a floating point exception
166// occures.
167// * No possibility of a valid calculation would generate
168// ON_UNSET_VALUE.
169// * float f = (float)ON_UNSET_VALUE would create an invalid
170// float and generate an exception.
171*/
172#define ON_UNSET_VALUE -1.23432101234321e+308
173
174/*
175// ON_UNSET_FLOAT is used to indicate a texture coordinate
176// value cannot be calculated or is not well defined.
177// In hindsight, this value should have been ON_FLT_QNAN
178// because many calculation convert float texture coordinates
179// to doubles and the "unset"ness attribute is lost.
180*/
181#define ON_UNSET_FLOAT -1.234321e+38f
182
183
185
186// IEEE 754 special values
187extern ON_EXTERN_DECL const double ON_DBL_QNAN;
188extern ON_EXTERN_DECL const double ON_DBL_PINF;
189extern ON_EXTERN_DECL const double ON_DBL_NINF;
190
191extern ON_EXTERN_DECL const float ON_FLT_QNAN;
192extern ON_EXTERN_DECL const float ON_FLT_PINF;
193extern ON_EXTERN_DECL const float ON_FLT_NINF;
194
195/*
196Description:
197Paramters:
198 x - [out] returned value of x is an SNan
199 (signalling not a number).
200Remarks:
201 Any time an SNaN passes through an Intel FPU, the result
202 is a QNaN (quiet nan) and the invalid operation excpetion
203 flag is set. If this exception is not masked, then the
204 exception handler is invoked.
205
206 double x, y;
207 ON_DBL_SNAN(&x);
208 y = x; // y = QNAN and invalid op exception occurs
209 z = sin(x) // z = QNAN and invalid op exception occurs
210
211 So, if you want to reliably initialize doubles to SNaNs,
212 you must use memcpy() or some other method that does not
213 use the Intel FPU.
214*/
216void ON_DBL_SNAN( double* x );
217
219void ON_FLT_SNAN( float* x );
220
222
223/*
224// In cases where lazy evaluation of a color value is
225// performed, this value is used to indicate the value
226// has not been computed.
227*/
228#define ON_UNSET_COLOR 0xFFFFFFFF
229
230/*
231// In rare cases when an absolute "zero" tolerance is
232// required, ON_ZERO_TOLERANCE is used to compare
233// numbers. This number should be no smaller than
234// ON_EPSILON and should be several orders of
235// magnitude smaller than ON_SQRT_EPSILON
236//
237*/
238#define ON_ZERO_TOLERANCE 1.0e-12
239
240/* default value for angle tolerances = 1 degree */
241#define ON_DEFAULT_ANGLE_TOLERANCE (ON_PI/180.0)
242#define ON_MINIMUM_ANGLE_TOLERANCE (ON_DEFAULT_ANGLE_TOLERANCE/10.0)
243
244// pair of integer indices. This
245// is intentionally a struct/typedef
246// rather than a class so that it
247// can be used in other structs.
249{
250 int i;
251 int j;
252};
253
254typedef struct tagON_2dex ON_2dex;
255
256// triplet of integer indices. This
257// is intentionally a struct/typedef
258// rather than a class so that it
259// can be used in other structs.
261{
262 int i;
263 int j;
264 int k;
265};
266
267typedef struct tagON_3dex ON_3dex;
268
269union ON_U
270{
271 char b[8]; // 8 bytes
272 ON__INT64 h; // 64 bit "hyper" integer
273 ON__INT32 i; // 32 bit integer
274 int j[2]; // two 32 bit integers
275 void* p;
276 double d;
277};
278
279#if defined(ON_CPLUSPLUS)
280
281// OpenNurbs enums
282class ON_CLASS ON
283{
284public:
285 /*
286 Description:
287 Call before using openNURBS to ensure all class definitions
288 are linked.
289 */
290 static void Begin();
291
292
293 /*
294 Description:
295 Call when finished with openNURBS.
296 Remarks:
297 Currently does nothing.
298 */
299 static void End();
300
302 // Version of opennurbs (YYYYMMDDn)
303 static
304 int Version();
305
307 // McNeel subversion revsion used to build opennurbs
308 static
309 const char* Revision();
310
312
313 static
314 FILE* OpenFile( // like fopen() - needed when OpenNURBS is used as a DLL
315 const char* filename,
316 const char* filemode
317 );
318
319 static
320 FILE* OpenFile( // like fopen() - needed when OpenNURBS is used as a DLL
321 const wchar_t* filename,
322 const wchar_t* filemode
323 );
324
325 static
326 int CloseFile( // like fclose() - needed when OpenNURBS is used as a DLL
327 FILE* // pointer returned by OpenFile()
328 );
329
330 static
331 int CloseAllFiles(); // like _fcloseall() - needed when OpenNURBS is used as a DLL
332
333 /*
334 Description:
335 Uses the flavor of fstat that is appropriate for the platform.
336 Parameters:
337 filename - [in]
338 fp - [in]
339 filesize - [out] (can be NULL if you do not want filesize)
340 create_time - [out] (can be NULL if you do not want last create time)
341 lastmodify_time - [out] (can be NULL if you do not want last modification time)
342 Returns:
343 True if file exists, can be opened for read, and fstat worked.
344 */
345 static
346 bool GetFileStats( const wchar_t* filename,
347 size_t* filesize,
348 time_t* create_time,
349 time_t* lastmodify_time
350 );
351
352 static
353 bool GetFileStats( FILE* fp,
354 size_t* filesize,
355 time_t* create_time,
356 time_t* lastmodify_time
357 );
358
360 enum eAnnotationType
361 {
362 dtNothing,
363 dtDimLinear,
364 dtDimAligned,
365 dtDimAngular,
366 dtDimDiameter,
367 dtDimRadius,
368 dtLeader,
369 dtTextBlock,
370 dtDimOrdinate,
371 };
372
373 static eAnnotationType AnnotationType(int); // convert integer to eAnnotationType enum
374
375
377 enum eTextDisplayMode
378 {
379 dtNormal = 0,
380 dtHorizontal = 1,
381 dtAboveLine = 2,
382 dtInLine = 3,
383 };
384
385 static eTextDisplayMode TextDisplayMode( int);
386
387 // Defines the current working space.
388 enum active_space
389 {
390 no_space = 0,
391 model_space = 1, // 3d modeling or "world" space
392 page_space = 2 // page/layout/paper/printing space
393 };
394
395 static active_space ActiveSpace(int); // convert integer to active_space enum
396
397
398
400 enum unit_system
401 {
402 // The constant enum values are saved in 3dm files
403 // and must never be changed. The values > 11 were
404 // added 5 April 2006.
405 no_unit_system = 0,
406
407 // atomic distances
408 angstroms = 12, // 1.0e-10 meters
409
410 // SI units
411 nanometers = 13, // 1.0e-9 meters
412 microns = 1, // 1.0e-6 meters
413 millimeters = 2, // 1.0e-3 meters
414 centimeters = 3, // 1.0e-2 meters
415 decimeters = 14, // 1.0e-1 meters
416 meters = 4,
417 dekameters = 15, // 1.0e+1 meters
418 hectometers = 16, // 1.0e+2 meters
419 kilometers = 5, // 1.0e+3 meters
420 megameters = 17, // 1.0e+6 meters
421 gigameters = 18, // 1.0e+9 meters
422
423 // english distances
424 microinches = 6, // 2.54e-8 meters (1.0e-6 inches)
425 mils = 7, // 2.54e-5 meters (0.001 inches)
426 inches = 8, // 0.0254 meters
427 feet = 9, // 0.3408 meters (12 inches)
428 yards = 19, // 0.9144 meters (36 inches)
429 miles = 10, // 1609.344 meters (5280 feet)
430
431 // printer distances
432 printer_point = 20, // 1/72 inches (computer points)
433 printer_pica = 21, // 1/6 inches (computer picas)
434
435 // terrestrial distances
436 nautical_mile = 22, // 1852 meters
437 // Approximately 1 minute of arc on a terrestrial great circle.
438 // See http://en.wikipedia.org/wiki/Nautical_mile.
439
440 // astronomical distances
441 astronomical = 23, // 1.4959787e+11 // http://en.wikipedia.org/wiki/Astronomical_unit
442 // 1.495979e+11 // http://units.nist.gov/Pubs/SP811/appenB9.htm
443 // An astronomical unit (au) is the mean distance from the
444 // center of the earth to the center of the sun.
445 lightyears = 24, // 9.4607304725808e+15 // http://en.wikipedia.org/wiki/Light_year
446 // 9.46073e+15 meters // http://units.nist.gov/Pubs/SP811/appenB9.htm
447 // A light year is the distance light travels in one Julian year.
448 // The speed of light is exactly 299792458 meters/second.
449 // A Julian year is exactly 365.25 * 86400 seconds and is
450 // approximately the time it takes for one earth orbit.
451 parsecs = 25, // 3.08567758e+16 // http://en.wikipedia.org/wiki/Parsec
452 // 3.085678e+16 // http://units.nist.gov/Pubs/SP811/appenB9.htm
453
454 // Custom unit systems
455 custom_unit_system = 11 // x meters with x defined in ON_3dmUnitsAndTolerances.m_custom_unit_scale
456 };
457
458 static unit_system UnitSystem(int); // convert integer to unit_system enum
459
460 /*
461 Description:
462 Scale factor for changing unit "standard" systems.
463 Parameters:
464 us_from - [in]
465 us_to - [in]
466 For example:
467
468 100.0 = ON::UnitScale( ON::meters, ON::centimeters )
469 2.54 = ON::UnitScale( ON::inches, ON::centimeters )
470 12.0 = ON::UnitScale( ON::feet, ON::inches )
471
472 Remarks:
473 If you are using custom unit systems, use the version
474 that takes ON_UnitSystem or ON_3dmUnitsAndTolerances
475 parameters.
476 */
477 static double UnitScale(
478 ON::unit_system us_from,
479 ON::unit_system us_to
480 );
481 static double UnitScale(
482 const class ON_UnitSystem& us_from,
483 const class ON_UnitSystem& us_to
484 );
485 static double UnitScale(
486 ON::unit_system us_from,
487 const class ON_UnitSystem& us_to
488 );
489 static double UnitScale(
490 const class ON_UnitSystem& us_from,
491 ON::unit_system us_to
492 );
493 static double UnitScale(
494 const class ON_3dmUnitsAndTolerances& us_from,
495 const class ON_3dmUnitsAndTolerances& us_to
496 );
497
500 {
501 decimal = 0,
502 fractional = 1,
503 feet_inches = 2
504 };
505
506 static distance_display_mode DistanceDisplayMode(int); // convert integer to distance_display_mode enum
507
508
510 enum point_style
511 {
512 unknown_point_style = 0,
513 not_rational = 1,
514 homogeneous_rational = 2,
515 euclidean_rational = 3,
516 intrinsic_point_style = 4, // point format used in definition
517 point_style_count = 5
518 };
519
520 static point_style PointStyle(int); // convert integer to point_style enum
521
523 enum knot_style // if a knot vector meets the conditions of two styles,
524 { // then the style with the lowest value is used
525 unknown_knot_style = 0, // unknown knot style
526 uniform_knots = 1, // uniform knots (ends not clamped)
527 quasi_uniform_knots = 2, // uniform knots (clamped ends, degree >= 2)
528 piecewise_bezier_knots = 3, // all internal knots have full multiplicity
529 clamped_end_knots = 4, // clamped end knots (with at least 1 interior non-uniform knot)
530 non_uniform_knots = 5, // known to be none of the above
531 knot_style_count = 6
532 };
533
534 static knot_style KnotStyle(int); // convert integer to knot_style enum
535
537 enum continuity
538 {
539 unknown_continuity = 0,
540
541 // These test for parametric continuity. In particular,
542 // all types of ON_Curves are considered infinitely
543 // continuous at the start/end of the evaluation domain.
544 C0_continuous = 1, // continuous function
545 C1_continuous = 2, // continuous first derivative
546 C2_continuous = 3, // continuous first and second derivative
547 G1_continuous = 4, // continuous unit tangent
548 G2_continuous = 5, // continuous unit tangent and curvature
549
550 // 20 March 2003 Dale Lear added these.
551 //
552 // Continuity tests using the following enum values
553 // are identical to tests using the preceding enum values
554 // on the INTERIOR of a curve's domain. At the END of
555 // a curve a "locus" test is performed in place of a
556 // parametric test. In particular, at the END of a domain,
557 // all open curves are locus discontinuous. At the END of
558 // a domain, all closed curves are at least C0_locus_continuous.
559 // By convention all ON_Curves are considered
560 // locus continuous at the START of the evaluation domain.
561 // This convention is not strictly correct, but is was
562 // adopted to make iterative kink finding tools easier to
563 // use and so that locus discontinuities are reported once
564 // at the end parameter of a curve rather than twice.
565 C0_locus_continuous = 6, // locus continuous function
566 C1_locus_continuous = 7, // locus continuous first derivative
567 C2_locus_continuous = 8, // locus continuous first and second derivative
568 G1_locus_continuous = 9, // locus continuous unit tangent
569 G2_locus_continuous = 10, // locus continuous unit tangent and curvature
570
571 Cinfinity_continuous = 11, // analytic discontinuity
572 };
573
574 /*
575 Description:
576 Convert int to ON::continuity enum value
577 */
578 static continuity Continuity(int);
579
580 /*
581 Description:
582 Convert int to ON::continuity enum value and
583 convert the locus flavored values to the parametric
584 flavored values.
585 */
586 static continuity ParametricContinuity(int);
587
589 enum curve_style
590 {
591 unknown_curve_style = 0,
592 line = 1,
593 circle = 2,
594 ellipse = 3, // with distinct foci (not a circle)
595 parabola = 4,
596 hyperbola = 5,
597 planar_polyline = 6, // not a line segment
598 polyline = 7, // non-planar polyline
599 planar_freeform_curve = 8, // planar but none of the above
600 freeform_curve = 9, // known to be none of the above
601 curve_style_count = 10
602 };
603
604 static curve_style CurveStyle(int); // convert integer to curve_style enum
605
607 enum surface_style
608 {
609 unknown_surface_style = 0,
610 plane = 1,
611 circular_cylinder = 2, // portion of right circular cylinder
612 elliptical_cylinder = 3, // portion of right elliptical cylinder
613 circular_cone = 4, // portion of right circular cone
614 elliptical_cone = 5, // portion of right elliptical cone
615 sphere = 6, // portion of sphere
616 torus = 7, // portion of torus
617 surface_of_revolution = 8, // portion of surface of revolution that is none of the above
618 ruled_surface = 9, // portion of a ruled surface this is none of the above
619 freeform_surface = 10, // known to be none of the above
620 surface_style_count = 11
621 };
622
623 static surface_style SurfaceStyle(int); // convert integer to surface_style enum
624
626 enum sort_algorithm
627 {
628 heap_sort = 0,
629 quick_sort = 1
630 };
631
632 static sort_algorithm SortAlgorithm(int); // convert integer to sort_method enum
633
635 enum endian {
636 little_endian = 0, // least significant byte first or reverse byte order - Intel x86, ...
637 big_endian = 1 // most significant byte first - Motorola, Sparc, MIPS, ...
638 };
639
640 static endian Endian(int); // convert integer to endian enum
641 static endian Endian(); // returns endian-ness of current CPU
642
644 enum archive_mode
645 {
646 unknown_archive_mode = 0,
647 read = 1, // all read modes have bit 0x0001 set
648 write = 2, // all write modes have bit 0x0002 set
649 readwrite = 3,
650 read3dm = 5,
651 write3dm = 6
652 };
653 static archive_mode ArchiveMode(int); // convert integer to endian enum
654
655
657
658 // The x/y/z_2pt_perspective_view projections are ordinary perspective
659 // projection. Using these values insures the ON_Viewport member
660 // fuctions properly constrain the camera up and camera direction vectors
661 // to preserve the specified perspective vantage.
662 enum view_projection
663 {
664 unknown_view = 0,
665 parallel_view = 1,
666 perspective_view = 2
667 };
668
669 /*
670 Description:
671 Converts integer into ON::view_projection enum value.
672 Parameters:
673 i - [in]
674 Returns:
675 ON::view_projection enum with same value as i.
676 If i is not an ON::view_projection enum value,
677 then ON::unknow_view is returned.
678 */
679 static view_projection ViewProjection(int i);
680
681 /*
682 Parameters:
683 projection - [in]
684 Returns:
685 True if projection is ON::perspective_view.
686 */
687 static bool IsPerspectiveProjection( ON::view_projection projection );
688
689
690 /*
691 Parameters:
692 projection - [in]
693 Returns:
694 True if projection is ON::parallel_view.
695 */
696 static bool IsParallelProjection( ON::view_projection projection );
697
699
700 enum coordinate_system
701 {
702 world_cs = 0,
703 camera_cs = 1,
704 clip_cs = 2,
705 screen_cs = 3
706 };
707
708 static coordinate_system CoordinateSystem(int); // convert integer to coordinate_system enum
709
711 enum exception_type
712 {
713 unknown_exception = 0,
714 out_of_memory,
715 corrupt_object, // invalid object encountered - continuing would crash or
716 // result in corrupt object being saved in archive.
717 unable_to_write_archive, // write operation failed - out of file space/read only mode/...?
718 unable_to_read_archive, // read operation failed - truncated archive/locked file/... ?
719 unable_to_seek_archive, // seek operation failed - locked file/size out of bounds/... ?
720 unexpected_end_of_archive, // truncated archive
721 unexpected_value_in_archive // corrupt archive?
722 };
723 static exception_type ExceptionType(int); // convert integer to exception_type enum
724
726 // OBSOLETE
727 enum layer_mode
728 {
729 normal_layer = 0, // visible, objects on layer can be selected and changed
730 hidden_layer = 1, // not visible, objects on layer cannot be selected or changed
731 locked_layer = 2, // visible, objects on layer cannot be selected or changed
732 layer_mode_count = 3
733 };
734 static layer_mode LayerMode(int); // convert integer to layer_mode enum
735
737 enum object_mode
738 {
739 normal_object = 0, // object mode comes from layer
740 hidden_object = 1, // not visible, object cannot be selected or changed
741 locked_object = 2, // visible, object cannot be selected or changed
742 idef_object = 3, // object is part of an ON_InstanceDefinition. The
743 // ON_InstanceDefinition m_object_uuid[] array will
744 // contain this object attribute's uuid.
745 object_mode_count = 4
746 };
747 static object_mode ObjectMode(int); // convert integer to object_mode enum
748
750 enum object_color_source
751 {
752 color_from_layer = 0, // use color assigned to layer
753 color_from_object = 1, // use color assigned to object
754 color_from_material = 2, // use diffuse render material color
755 color_from_parent = 3 // for objects with parents (like objects in instance references, use parent linetype)
756 // if no parent, treat as color_from_layer
757 };
758 static object_color_source ObjectColorSource(int); // convert integer to object_color_source enum
759
761 enum plot_color_source
762 {
763 plot_color_from_layer = 0, // use plot color assigned to layer
764 plot_color_from_object = 1, // use plot color assigned to object
765 plot_color_from_display = 2, // use display color
766 plot_color_from_parent = 3 // for objects with parents (like objects in instance references, use parent plot color)
767 // if no parent, treat as plot_color_from_layer
768 };
769 static plot_color_source PlotColorSource(int); // convert integer to plot_color_source enum
770
772 enum plot_weight_source
773 {
774 plot_weight_from_layer = 0, // use plot color assigned to layer
775 plot_weight_from_object = 1, // use plot color assigned to object
776 plot_weight_from_parent = 3 // for objects with parents (like objects in instance references, use parent plot color)
777 // if no parent, treat as plot_color_from_layer
778 };
779 static plot_weight_source PlotWeightSource(int); // convert integer to plot_color_source enum
780
782 enum object_linetype_source
783 {
784 linetype_from_layer = 0, // use line style assigned to layer
785 linetype_from_object = 1, // use line style assigned to object
786 linetype_from_parent = 3 // for objects with parents (like objects in instance references, use parent linetype)
787 // if not parent, treat as linetype_from_layer.
788 };
789 static object_linetype_source ObjectLinetypeSource(int); // convert integer to object_linetype_source enum
790
792 enum object_material_source
793 {
794 material_from_layer = 0, // use material assigned to layer
795 material_from_object = 1, // use material assigned to object
796 material_from_parent = 3 // for objects with parents, like
797 // definition geometry in instance
798 // references and faces in polysurfaces,
799 // this value indicates the material
800 // definition should come from the parent.
801 // If the object does not have an
802 // obvious "parent", then treat
803 // it the same as material_from_layer.
804 };
805 static object_material_source ObjectMaterialSource(int); // convert integer to object_color_source enum
806
808 enum light_style
809 {
810 unknown_light_style = 0,
811 //view_directional_light = 1, // light location and direction in clip coordinates
812 //view_point_light = 2,
813 //view_spot_light = 3,
814 camera_directional_light = 4, // light location and direction in camera coordinates
815 camera_point_light = 5, // +x points to right, +y points up, +z points towards camera
816 camera_spot_light = 6,
817 world_directional_light = 7, // light location and direction in world coordinates
818 world_point_light = 8,
819 world_spot_light = 9,
820 ambient_light = 10, // pure ambient light
821 world_linear_light = 11,
822 world_rectangular_light = 12,
823 light_style_count = 13
824 };
825 static light_style LightStyle(int); // convert integer to light_style enum
826
828 enum curvature_style
829 {
830 unknown_curvature_style = 0,
831 gaussian_curvature = 1,
832 mean_curvature = 2, // unsigned mean curvature
833 min_curvature = 3, // minimum unsigned radius of curvature
834 max_curvature = 4, // maximum unsigned radius of curvature
835 curvature_style_count = 5
836 };
837 static curvature_style CurvatureStyle(int); // convert integer to curvature_style enum
838
840 enum display_mode
841 {
842 default_display = 0, // default display
843 wireframe_display = 1, // wireframe display
844 shaded_display = 2, // shaded display
845 renderpreview_display = 3 // render preview display
846 };
847 static display_mode DisplayMode(int); // convert integer to display_mode enum
848
849
850 enum view_type
851 {
852 model_view_type = 0, // standard model space 3d view
853 page_view_type = 1, // a.k.a "paper space", "plot view", etc.
854 // A page view must be orthographic,
855 // the camera frame x,y,z direction must be
856 // world x,y,z (which means the camera direction
857 // is always (0,0,-1)).
858 nested_view_type = 2, // This view is a "model" view that is nested
859 // in another view. The nesting and parent
860 // information is saved in ON_3dmView.
861 };
862 static view_type ViewType(int); // convert integer to display_mode enum
863
864
866 //
867 // OBSOLETE
868 enum texture_mode
869 {
870 no_texture = 0, // texture disabled
871 modulate_texture = 1, // modulate with material diffuse color
872 decal_texture = 2 // decal
873 };
874 // OBSOLETE
875 static texture_mode TextureMode(int); // convert integer to texture_mode enum
876 // OBSOLETE
877 //
879
881 enum object_type
882 {
883 // Use with ON_Object::ObjectType() in situations where
884 // using a switch() is better than a long string of if else if ...
885 // if ( ON_Curve::Cast() ) ... else if ( ON_Surface::Cast() ) ...
886 // ...
887 unknown_object_type = 0,
888
889 point_object = 1, // some type of ON_Point
890 pointset_object = 2, // some type of ON_PointCloud, ON_PointGrid, ...
891 curve_object = 4, // some type of ON_Curve like ON_LineCurve, ON_NurbsCurve, etc.
892 surface_object = 8, // some type of ON_Surface like ON_PlaneSurface, ON_NurbsSurface, etc.
893 brep_object = 0x10, // some type of ON_Brep
894 mesh_object = 0x20, // some type of ON_Mesh
895 layer_object = 0x40, // some type of ON_Layer
896 material_object = 0x80, // some type of ON_Material
897 light_object = 0x100, // some type of ON_Light
898 annotation_object = 0x200, // some type of ON_Annotation
899 userdata_object = 0x400, // some type of ON_UserData
900 instance_definition = 0x800, // some type of ON_InstanceDefinition
901 instance_reference = 0x1000, // some type of ON_InstanceRef
902 text_dot = 0x2000, // some type of ON_TextDot
903 grip_object = 0x4000, // selection filter value - not a real object type
904 detail_object = 0x8000, // some type of ON_DetailView
905 hatch_object = 0x10000, // some type of ON_Hatch
906 morph_control_object = 0x20000, // some type of ON_MorphControl
907 loop_object = 0x80000, // some type of ON_BrepLoop
908 polysrf_filter = 0x200000, // selection filter value - not a real object type
909 edge_filter = 0x400000, // selection filter value - not a real object type
910 polyedge_filter = 0x800000, // selection filter value - not a real object type
911 meshvertex_object = 0x01000000, // some type of ON_MeshVertexRef
912 meshedge_object = 0x02000000, // some type of ON_MeshEdgeRef
913 meshface_object = 0x04000000, // some type of ON_MeshFaceRef
914 cage_object = 0x08000000, // some type of ON_NurbsCage
915 phantom_object = 0x10000000,
916 clipplane_object = 0x20000000,
917 beam_object = 0x40000000, // obsolete - use extrusion_object
918 extrusion_object = 0x40000000, // some type of ON_Extrusion
919
920 any_object = 0xFFFFFFFF
921
922 // Please discuss any changes with Dale Lear
923 };
924
925 static object_type ObjectType(int); // convert integer to object_type enum
926
928 enum bitmap_type
929 {
930 unknown_bitmap_type = 0,
931 windows_bitmap = 1, // BITMAPINFO style
932 opengl_bitmap = 2, // unpacked OpenGL RGB or RGBA
933 png_bitmap = 3
934 };
935 static bitmap_type BitmapType(int); // convert integer to bitmap_type enum
936
937 enum object_decoration
938 {
939 no_object_decoration = 0,
940 start_arrowhead = 0x08, // arrow head at start
941 end_arrowhead = 0x10, // arrow head at end
942 both_arrowhead = 0x18 // arrow heads at start and end
943 };
944 static object_decoration ObjectDecoration(int); // convert integer to line_pattern enum
945
946 enum mesh_type
947 {
948 default_mesh = 0,
949 render_mesh = 1,
950 analysis_mesh = 2,
951 preview_mesh = 3,
952 any_mesh = 4
953 };
954 static mesh_type MeshType(int); // convert integer to mesh_type enum
955
956
957 // Types of object snapping.
958 // In situations where more than one type of snap applies,
959 // snaps with higher value take precedence.
960 // enum values must be a power of 2.
961 // ON_ObjRef saves these values in files. Do not change
962 // the values. The reason for the gaps between the enum
963 // values is to leave room for future snaps with prededence
964 // falling between existing snaps
965 enum osnap_mode
966 {
967 os_none = 0,
968 os_near = 2,
969 os_focus = 8,
970 os_center = 0x20,
971 os_vertex = 0x40,
972 os_knot = 0x80,
973 os_quadrant = 0x200,
974 os_midpoint = 0x800,
975 os_intersection = 0x2000,
976 os_end = 0x20000,
977 os_perpendicular = 0x80000,
978 os_tangent = 0x200000,
979 os_point = 0x08000000,
980 // andrew: case value evaluates to 4294967295, which cannot be narrowed to type 'int' [-Wc++11-narrowing]
981 //os_all_snaps = 0xFFFFFFFF
982 os_all_snaps = 0xFFFFFFF
983 };
984 static osnap_mode OSnapMode(int); // convert integer to osnap_mode enum
985
986
988 enum eCurveType
989 {
990 ctCurve, // nothing
991 ctArc,
992 ctCircle,
993 ctLine,
994 ctNurbs,
995 ctOnsurface,
996 ctProxy,
997 ctPolycurve,
998 ctPolyline,
999 };
1000
1001
1003 //
1004 // End condition paramter values for ON_Curve::CreateCubicLoft() and
1005 // ON_Surface::CreateCubicLoft().
1006 enum cubic_loft_end_condition
1007 {
1008 cubic_loft_ec_quadratic = 0,
1009 cubic_loft_ec_linear = 1,
1010 cubic_loft_ec_cubic = 2,
1011 cubic_loft_ec_natural = 3,
1012 cubic_loft_ec_unit_tangent = 4,
1013 cubic_loft_ec_1st_derivative = 5,
1014 cubic_loft_ec_2nd_derivative = 6,
1015 cubic_loft_ec_free_cv = 7
1016 };
1017
1018 /*
1019 Description:
1020 Convert an integer to cubic_loft_end_condition enum.
1021 Parameters:
1022 i - [in]
1023 Returns:
1024 corresponding cubic_loft_end_condition enum value.
1025 Remarks:
1026 If i does not correspond to a cubic_loft_end_condition
1027 enum value, then cubic_loft_ec_quadratic is returned.
1028 */
1029 static
1030 cubic_loft_end_condition CubicLoftEndCondition(int i);
1031
1032private:
1033 // prohibit instantiaion
1034 //ON(); // no implementation
1035 //ON( const ON& ); // no implementation
1036 //~ON(); // no implementation
1037};
1038
1039
1040/*
1041Description:
1042 Component indices are used to provide a persistent way
1043 to identify portions of complex objects.
1044
1045*/
1046class ON_CLASS ON_COMPONENT_INDEX
1047{
1048public:
1049
1050 // Do not change these values; they are stored in 3dm archives
1051 // and provide a persistent way to indentify components of
1052 // complex objects.
1053 enum TYPE
1054 {
1055 invalid_type = 0,
1056
1057 brep_vertex = 1,
1058 brep_edge = 2,
1059 brep_face = 3,
1060 brep_trim = 4,
1061 brep_loop = 5,
1062 mesh_vertex = 11,
1063 meshtop_vertex = 12,
1064 meshtop_edge = 13,
1065 mesh_face = 14,
1066 idef_part = 21,
1067 polycurve_segment = 31,
1068 pointcloud_point = 41,
1069 group_member = 51,
1070 extrusion_bottom_profile = 61,
1071 extrusion_top_profile = 62,
1072 dim_linear_point = 100,
1073 dim_radial_point = 101,
1074 dim_angular_point = 102,
1075 dim_ordinate_point = 103,
1076 dim_text_point = 104,
1077
1078 // andrew: case value evaluates to 4294967295, which cannot be narrowed to type 'int' [-Wc++11-narrowing]
1079 //no_type = 0xFFFFFFFF
1080 no_type = 0xFFFFFFF
1081 };
1082
1083 /*
1084 Description:
1085 Safe conversion of integer value to TYPE enum.
1086 Parameters:
1087 i - [in] integer with value equal to one of the TYPE enums.
1088 Returns:
1089 The TYPE enum with the same numeric value
1090 or ON_COMPONENT_INDEX::invalid_type if no corresponding enum
1091 exists.
1092 */
1093 static
1094 TYPE Type(int i);
1095
1096 /*
1097 Description:
1098 Dictionary compare on m_type, m_index as ints.
1099 Returns:
1100 < 0: a < b
1101 = 0: a = b
1102 > 0: a > b
1103 */
1104 static
1105 int Compare( const ON_COMPONENT_INDEX* a, const ON_COMPONENT_INDEX* b);
1106
1107 /*
1108 Description:
1109 Sets m_type = invalid_type and m_index = -1.
1110 */
1111 ON_COMPONENT_INDEX();
1112
1113 /*
1114 Description:
1115 Sets m_type = type and m_index = index.
1116 */
1117 ON_COMPONENT_INDEX(TYPE type,int index);
1118
1119 bool operator==(const ON_COMPONENT_INDEX& other) const;
1120 bool operator!=(const ON_COMPONENT_INDEX& other) const;
1121 bool operator<(const ON_COMPONENT_INDEX& other) const;
1122 bool operator<=(const ON_COMPONENT_INDEX& other) const;
1123 bool operator>(const ON_COMPONENT_INDEX& other) const;
1124 bool operator>=(const ON_COMPONENT_INDEX& other) const;
1125
1126 void Set(TYPE type,int index);
1127
1128 /*
1129 Description:
1130 Sets m_type = invalid_type and m_index = -1.
1131 */
1132 void UnSet();
1133
1134 /*
1135 Returns:
1136 True if m_type is set to a TYPE enum value between
1137 brep_vertex and polycurve_segment.
1138 */
1139 bool IsSet() const;
1140
1141 /*
1142 Returns:
1143 True if m_type is set to one of the mesh or meshtop
1144 TYPE enum values and m_index >= 0.
1145 */
1146 bool IsMeshComponentIndex() const;
1147
1148 /*
1149 Returns:
1150 True if m_type is set to one of the
1151 brep TYPE enum values and m_index >= 0.
1152 */
1153 bool IsBrepComponentIndex() const;
1154
1155
1156 /*
1157 Returns:
1158 True if m_type = idef_part and m_index >= 0.
1159 */
1160 bool IsIDefComponentIndex() const;
1161
1162 /*
1163 Returns:
1164 True if m_type = polycurve_segment and m_index >= 0.
1165 */
1166 bool IsPolyCurveComponentIndex() const;
1167
1168 /*
1169 Returns:
1170 True if m_type = group_member and m_index >= 0.
1171 */
1172 bool IsGroupMemberComponentIndex() const;
1173
1174 /*
1175 Returns:
1176 True if m_type = extrusion_bottom_profile or extrusion_top_profile
1177 and m_index >= 0.
1178 */
1179 bool IsExtrusionProfileComponentIndex() const;
1180
1181 /*
1182 Returns:
1183 True if m_type = pointcloud_point and m_index >= 0.
1184 */
1185 bool IsPointCloudComponentIndex() const;
1186
1187 /*
1188 Returns:
1189 True if m_type = dim_... and m_index >= 0.
1190 */
1191 bool IsAnnotationComponentIndex() const;
1192
1193 TYPE m_type;
1194
1195 /*
1196 The interpretation of m_index depends on the m_type value.
1197
1198 m_type m_index interpretation (0 based indices)
1199
1200 no_type used when context makes it clear what array is being index
1201 brep_vertex ON_Brep.m_V[] array index
1202 brep_edge ON_Brep.m_E[] array index
1203 brep_face ON_Brep.m_F[] array index
1204 brep_trim ON_Brep.m_T[] array index
1205 brep_loop ON_Brep.m_L[] array index
1206 mesh_vertex ON_Mesh.m_V[] array index
1207 meshtop_vertex ON_MeshTopology.m_topv[] array index
1208 meshtop_edge ON_MeshTopology.m_tope[] array index
1209 mesh_face ON_Mesh.m_F[] array index
1210 idef_part ON_InstanceDefinition.m_object_uuid[] array index
1211 polycurve_segment ON_PolyCurve::m_segment[] array index
1212 extrusion_bottom_profile
1213 extrusion_top_profile
1214 Use ON_Extrusion::Bottom/TopProfile(index)
1215 to get a 3d profile curve.
1216 dim_linear_point ON_LinearDimension2::POINT_INDEX
1217 dim_radial_point ON_RadialDimension2::POINT_INDEX
1218 dim_angular_point ON_AngularDimension2::POINT_INDEX
1219 dim_ordinate_point ON_OrdinateDimension2::POINT_INDEX
1220 dim_text_point ON_TextEntity2 origin point
1221 */
1222 int m_index;
1223};
1224
1225#endif
1226
1228
1229/*
1230Description:
1231 Sets Windows code page used to convert UNICODE (wchar_t) strings
1232 to multibyte (char) strings and vice verse.
1233Parameters:
1234 code_page - [in] code page to use when converting UNICODE strings
1235 to multibyte strings and vice verse.
1236Returns:
1237 previous value of Windows code page.
1238Remarks:
1239 For Windows NT/2000/XP, CP_THREAD_ACP will work for all
1240 locales if your app's thread is correctly configured.
1241 For Windows 95/98/ME you have to choose the locale.
1242
1243 Conversions between UNICODE and multibyte strings happens when
1244 ON_wString converts a char* string to a wchar_t* string and
1245 when and ON_String converts a wchar_t* string to a char* string.
1246
1247 All pertinant code is in opennurbs_defines.cpp.
1248
1249See Also:
1250 ON_GetStringConversionWindowsCodePage
1251 on_WideCharToMultiByte
1252 on_MultiByteToWideChar
1253 ON_wString::operator=(const char*)
1254 ON_String::operator=(const wchar_t*)
1255*/
1256ON_DECL
1258 unsigned int code_page
1259 );
1260
1261/*
1262Description:
1263 Gets Windows code page used to convert UNICODE (wchar_t) strings
1264 to multibyte (char) strings and vice verse.
1265Returns:
1266 Value of Windows code page used to convert strings.
1267Remarks:
1268 For Windows NT/2000/XP, CP_THREAD_ACP will work for all
1269 locales if your app's thread is correctly configured.
1270 For Windows 95/98/ME you have to choose the locale.
1271
1272 Conversions between UNICODE and multibyte strings happens when
1273 ON_wString converts a char* string to a wchar_t* string and
1274 when and ON_String converts a wchar_t* string to a char* string.
1275
1276 All pertinant code is in opennurbs_defines.cpp.
1277
1278See Also:
1279 ON_GetStringConversionWindowsCodePage
1280 on_WideCharToMultiByte
1281 on_MultiByteToWideChar
1282 ON_wString::operator=(const char*)
1283 ON_String::operator=(const wchar_t*)
1284*/
1285ON_DECL
1287
1288
1289/*
1290Description:
1291 Sets Windows locale id used in case insensitive string
1292 compares.
1293Parameters:
1294 locale_id - [in] Windows locale id to use in case insensitive
1295 string compares.
1296 bWin9X - [in] True if OS is Windows 95/98/ME (which has
1297 poor UNICODE support).
1298Returns:
1299 Previous value of Windows locale id.
1300Remarks:
1301 All pertinant code is in opennurbs_defines.cpp.
1302See Also:
1303 ON_GetStringConversionWindowsLocaleID
1304 on_wcsicmp
1305*/
1306ON_DECL
1308 unsigned int locale_id,
1309 ON_BOOL32 bWin9X
1310 );
1311
1312/*
1313Description:
1314 Gets Windows locale id used in case insensitive string
1315 compares.
1316Returns:
1317 Value of Windows locale id used in case insensitive string
1318 compares.
1319Remarks:
1320 All pertinant code is in opennurbs_defines.cpp.
1321See Also:
1322 ON_SetStringConversionWindowsLocaleID
1323 on_wcsicmp
1324*/
1325ON_DECL
1327
1328// on_wcsicmp() is a wrapper for case insensitive wide string compare
1329// and calls one of _wcsicmp() or wcscasecmp() depending on OS.
1330ON_DECL
1331int on_wcsicmp( const wchar_t*, const wchar_t* );
1332
1333// on_wcsupr() calls _wcsupr() or wcsupr() depending on OS
1334ON_DECL
1335wchar_t* on_wcsupr(wchar_t*);
1336
1337// on_wcslwr() calls _wcslwr() or wcslwr() depending on OS
1338ON_DECL
1339wchar_t* on_wcslwr(wchar_t*);
1340
1341// on_wcsrev() calls _wcsrev() or wcsrev() depending on OS
1342ON_DECL
1343wchar_t* on_wcsrev(wchar_t*);
1344
1345// on_stricmp() is a wrapper for case insensitive string compare
1346// and calls one of _stricmp(), stricmp(), or strcasecmp()
1347// depending on OS.
1348ON_DECL
1349int on_stricmp(const char*, const char*);
1350
1351// on_stricmp() is a wrapper for case insensitive string compare
1352// and calls one of _strnicmp() or strncasecmp()
1353// depending on OS.
1354ON_DECL
1355int on_strnicmp(const char * s1, const char * s2, int n);
1356
1357// on_strupr() calls _strupr() or strupr() depending on OS
1358ON_DECL
1359char* on_strupr(char*);
1360
1361// on_strlwr() calls _strlwr() or strlwr() depending on OS
1362ON_DECL
1363char* on_strlwr(char*);
1364
1365// on_strrev() calls _strrev() or strrev() depending on OS
1366ON_DECL
1367char* on_strrev(char*);
1368
1369/*
1370Description:
1371 Calls Windows ::WideCharToMultiByte() or does a hack
1372 UNICODE to ASCII conversion for other OSs
1373See Also:
1374 ON_SetStringConversionWindowsCodePage
1375 ON_GetStringConversionWindowsCodePage
1376 ON_String::operator=(const wchar_t*)
1377*/
1378ON_DECL
1380 const wchar_t*, // lpWideCharStr,
1381 int, // cchWideChar,
1382 char*, // lpMultiByteStr,
1383 int // cchMultiByte,
1384 );
1385
1386/*
1387Description:
1388 Calls Windows ::WideCharToMultiByte() or does a hack
1389 ASCII to UNICODE conversion for other OSs
1390See Also:
1391 ON_SetStringConversionWindowsCodePage
1392 ON_GetStringConversionWindowsCodePage
1393 ON_wString::operator=(const char*)
1394*/
1395ON_DECL
1397 const char*, // lpMultiByteStr,
1398 int, // cchMultiByte,
1399 wchar_t*, // lpWideCharStr,
1400 int // cchWideChar
1401 );
1402
1404
1405#endif
1406
bool operator<(const RPainterPath &p1, const RPainterPath &p2)
This operator allows us to sort painter paths based on z-level.
Definition RPainterPath.cpp:765
int i
Copyright (c) 2011-2018 by Andrew Mustun.
Definition autostart.js:32
This action handles the user interaction to close the current drawing.
Definition CloseFile.js:9
Definition opennurbs_3dm_settings.h:26
Definition opennurbs_string.h:688
Handles all user interaction to open documents.
Definition OpenFile.js:11
@ TYPE
Definition inflate.h:32
distance_display_mode
Definition opennurbs_defines.cpp:1298
@ decimal
Definition opennurbs_defines.cpp:1299
@ feet_inches
Definition opennurbs_defines.cpp:1301
@ fractional
Definition opennurbs_defines.cpp:1300
ON_EXTERN_DECL const float ON_FLT_NINF
Definition opennurbs_object.cpp:375
ON_EXTERN_DECL const float ON_FLT_QNAN
Definition opennurbs_object.cpp:373
ON_DECL int on_wcsicmp(const wchar_t *, const wchar_t *)
Definition opennurbs_defines.cpp:381
ON_DECL wchar_t * on_wcslwr(wchar_t *)
Definition opennurbs_defines.cpp:520
ON_DECL int on_WideCharToMultiByte(const wchar_t *, int, char *, int)
Definition opennurbs_defines.cpp:715
ON_EXTERN_DECL const float ON_FLT_PINF
Definition opennurbs_object.cpp:374
ON_DECL int on_MultiByteToWideChar(const char *, int, wchar_t *, int)
Definition opennurbs_defines.cpp:769
ON_DECL int on_strnicmp(const char *s1, const char *s2, int n)
Definition opennurbs_archive.cpp:5377
#define ON_BEGIN_EXTERNC
Definition opennurbs_defines.h:40
ON_DECL wchar_t * on_wcsupr(wchar_t *)
Definition opennurbs_defines.cpp:494
ON_DECL void ON_FLT_SNAN(float *x)
Definition opennurbs_object.cpp:446
#define ON_DECL
Definition opennurbs_defines.h:92
ON_BEGIN_EXTERNC ON_EXTERN_DECL const double ON_DBL_QNAN
Definition opennurbs_object.cpp:369
ON_DECL unsigned int ON_GetStringConversionWindowsLocaleID()
Definition opennurbs_defines.cpp:108
ON_DECL unsigned int ON_SetStringConversionWindowsLocaleID(unsigned int locale_id, ON_BOOL32 bWin9X)
Definition opennurbs_defines.cpp:100
ON_EXTERN_DECL const double ON_DBL_NINF
Definition opennurbs_object.cpp:371
ON_EXTERN_DECL const double ON_DBL_PINF
Definition opennurbs_object.cpp:370
ON_DECL char * on_strrev(char *)
Definition opennurbs_defines.cpp:75
ON_DECL char * on_strupr(char *)
Definition opennurbs_defines.cpp:43
ON_DECL unsigned int ON_GetStringConversionWindowsCodePage()
Definition opennurbs_defines.cpp:1991
ON_DECL int on_stricmp(const char *, const char *)
Definition opennurbs_defines.cpp:32
ON_DECL char * on_strlwr(char *)
Definition opennurbs_defines.cpp:59
ON_DECL void ON_DBL_SNAN(double *x)
Definition opennurbs_object.cpp:377
#define ON_CLASS
Definition opennurbs_defines.h:91
ON_BEGIN_EXTERNC ON_DECL unsigned int ON_SetStringConversionWindowsCodePage(unsigned int code_page)
Definition opennurbs_defines.cpp:1984
#define ON_EXTERN_DECL
Definition opennurbs_defines.h:93
ON_DECL wchar_t * on_wcsrev(wchar_t *)
Definition opennurbs_defines.cpp:697
#define ON_END_EXTERNC
Definition opennurbs_defines.h:41
long long ON__INT64
Definition opennurbs_system.h:353
int ON__INT32
Definition opennurbs_system.h:323
int ON_BOOL32
Definition opennurbs_system.h:362
Definition opennurbs_defines.h:249
int j
Definition opennurbs_defines.h:251
int i
Definition opennurbs_defines.h:250
Definition opennurbs_defines.h:261
int j
Definition opennurbs_defines.h:263
int i
Definition opennurbs_defines.h:262
int k
Definition opennurbs_defines.h:264
Definition opennurbs_defines.h:270
ON__INT64 h
Definition opennurbs_defines.h:272
char b[8]
Definition opennurbs_defines.h:271
void * p
Definition opennurbs_defines.h:275
int j[2]
Definition opennurbs_defines.h:274
ON__INT32 i
Definition opennurbs_defines.h:273
double d
Definition opennurbs_defines.h:276