Files
opennurbs/opennurbs_internal_V5_dimstyle.h
2019-04-09 10:11:17 -07:00

732 lines
27 KiB
C++

/*
//
// Copyright (c) 1993-2017 Robert McNeel & Associates. All rights reserved.
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
// McNeel & Associates.
//
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
//
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
//
////////////////////////////////////////////////////////////////
*/
#if !defined(OPENNURBS_INTERNAL_V5_DIMSTYLE_INC_)
#define OPENNURBS_INTERNAL_V5_DIMSTYLE_INC_
#include "opennurbs_internal_defines.h"
#if defined(ON_COMPILING_OPENNURBS)
// ON_V5x_DimStyle is used to read and write version 5 and earlier archives.
// ON_DimStyle is the class for runtime dimension style.
class ON_V5x_DimStyle : public ON_ModelComponent
{
ON_OBJECT_DECLARE(ON_V5x_DimStyle);
private:
friend class ON_DimStyle;
public:
enum eArrowType
{
// eArrowType is used for V5 and earlier dimensions
// V6 dimensions (ON_Dimension) use ON_Arrowhead::arrow_type
solidtriangle = 0, // 2:1
dot = 1,
tick = 2,
shorttriangle = 3, // 1:1
arrow = 4,
rectangle = 5,
longtriangle = 6, // 4:1
longertriangle = 7, // 6:1
};
public:
ON_V5x_DimStyle();
~ON_V5x_DimStyle();
ON_V5x_DimStyle(const ON_V5x_DimStyle&) = default;
ON_V5x_DimStyle& operator=(const ON_V5x_DimStyle&) = default;
public:
ON_V5x_DimStyle( const class ON_3dmAnnotationSettings& src);
ON_V5x_DimStyle(
ON::LengthUnitSystem model_length_unit_system,
const class ON_DimStyle& src
);
public:
bool CompareDimstyle(const ON_V5x_DimStyle& src) const;
bool CompareValidFields(const ON_V5x_DimStyle& src) const;
//////////////////////////////////////////////////////////////////////
//
// ON_Object overrides
bool IsValid( class ON_TextLog* text_log = nullptr ) const override;
// virtual
void Dump( ON_TextLog& ) const override; // for debugging
// virtual
bool Write(
ON_BinaryArchive& // serialize definition to binary archive
) const override;
// virtual
bool Read(
ON_BinaryArchive& // restore definition from binary archive
) override;
// When a V5 file is being read into v6
// Copy the fields that were in DimstyleExtra in v5 into the v6 dimstyle
// that now contains the fields that were in DimstyleExtra
///void ConsolidateDimstyleExtra();
bool AttachDimstyleExtra();
bool Write_v5(
ON_BinaryArchive& // serialize definition to binary archive
) const;
private:
bool Internal_Read_v5(
ON_BinaryArchive& // restore definition from binary archive
);
//bool Write_v6(
// ON_BinaryArchive& // serialize definition to binary archive
// ) const;
bool Internal_Read_v6(
ON_BinaryArchive& // restore definition from binary archive
);
public:
void EmergencyDestroy();
//////////////////////////////////////////////////////////////////////
//
// Interface
void SetDefaultsNoExtension();
double ExtExtension() const;
void SetExtExtension( const double);
double ExtOffset() const;
void SetExtOffset( const double);
double ArrowSize() const;
void SetArrowSize( const double);
double LeaderArrowSize() const;
void SetLeaderArrowSize( const double);
double CenterMark() const;
void SetCenterMark( const double);
ON_INTERNAL_OBSOLETE::V5_TextDisplayMode TextAlignment() const;
void SetTextAlignment( ON_INTERNAL_OBSOLETE::V5_TextDisplayMode);
int ArrowType() const; // For ON_OBSOLETE_V2_Annotation & ON_OBSOLETE_V5_Annotation derived dimensions
void SetArrowType( eArrowType); // ON_Dimension derived dimensions use ArrowType1() and ArrowType2()
int LeaderArrowType() const;
void SetLeaderArrowType( eArrowType);
int AngularUnits() const;
void SetAngularUnits( int);
int LengthFormat() const;
void SetLengthFormat( int);
int AngleFormat() const;
void SetAngleFormat( int);
int LengthResolution() const;
void SetLengthResolution( int);
int AngleResolution() const;
void SetAngleResolution( int);
const class ON_TextStyle& V5TextStyle() const;
void SetV5TextStyle(
const class ON_TextStyle& v5_text_style
);
double TextGap() const;
void SetTextGap( double gap);
double TextHeight() const;
void SetTextHeight( double height);
double LengthFactor() const;
void SetLengthFactor( double);
bool Alternate() const;
void SetAlternate( bool);
double AlternateLengthFactor() const;
void SetAlternateLengthFactor( double);
int AlternateLengthFormat() const;
void SetAlternateLengthFormat( int);
int AlternateLengthResolution() const;
void SetAlternateLengthResolution( int);
int AlternateAngleFormat() const;
void SetAlternateAngleFormat( int);
int AlternateAngleResolution() const;
void SetAlternateAngleResolution( int);
void GetPrefix( ON_wString& ) const;
const wchar_t* Prefix() const;
void SetPrefix( const wchar_t*);
void SetPrefix( wchar_t*);
void GetSuffix( ON_wString& ) const;
const wchar_t* Suffix() const;
void SetSuffix( const wchar_t*);
void SetSuffix( wchar_t*);
void GetAlternatePrefix( ON_wString& ) const;
const wchar_t* AlternatePrefix() const;
void SetAlternatePrefix( const wchar_t*);
void SetAlternatePrefix( wchar_t*);
void GetAlternateSuffix( ON_wString& ) const;
const wchar_t* AlternateSuffix() const;
void SetAlternateSuffix( const wchar_t*);
void SetAlternateSuffix( wchar_t*);
bool SuppressExtension1() const;
void SetSuppressExtension1( bool);
bool SuppressExtension2() const;
void SetSuppressExtension2( bool);
// Don't change these enum values
// They are used in file reading & writing
enum class Field : unsigned int
{
fn_name = 0,
fn_index = 1,
fn_extextension = 2,
fn_extoffset = 3,
fn_arrowsize = 4,
fn_centermark = 5,
fn_textgap = 6,
fn_textheight = 7,
fn_textalign = 8,
fn_arrowtype = 9, // For v5 and previous ON_OBSOLETE_V2_Annotation and ON_OBSOLETE_V5_Annotation dimensions
fn_angularunits = 10,
fn_lengthformat = 11,
fn_angleformat = 12,
fn_angleresolution = 13,
fn_lengthresolution = 14,
fn_fontindex = 15,
fn_lengthfactor = 16,
fn_bAlternate = 17,
fn_alternate_lengthfactor = 18,
fn_alternate_lengthformat = 19,
fn_alternate_lengthresolution = 20,
fn_alternate_angleformat = 21,
fn_alternate_angleresolution = 22,
fn_prefix = 23,
fn_suffix = 24,
fn_alternate_prefix = 25,
fn_alternate_suffix = 26,
fn_dimextension = 27,
fn_leaderarrowsize = 28,
fn_leaderarrowtype = 29,
fn_suppressextension1 = 30,
fn_suppressextension2 = 31,
fn_last = 32, // not used - left here for sdk
// Added for v5 - 5/01/07 LW
// version 1.6
fn_overall_scale = 33,
fn_ext_line_color_source = 34,
fn_dim_line_color_source = 35,
fn_arrow_color_source = 36,
fn_text_color_source = 37,
fn_ext_line_color = 38,
fn_dim_line_color = 39,
fn_arrow_color = 40,
fn_text_color = 41,
fn_ext_line_plot_color_source = 42,
fn_dim_line_plot_color_source = 43,
fn_arrow_plot_color_source = 44,
fn_text_plot_color_source = 45,
fn_ext_line_plot_color = 46,
fn_dim_line_plot_color = 47,
fn_arrow_plot_color = 48,
fn_text_plot_color = 49,
fn_ext_line_plot_weight_source = 50,
fn_dim_line_plot_weight_source = 51,
fn_ext_line_plot_weight_mm = 52,
fn_dim_line_plot_weight_mm = 53,
fn_tolerance_style = 54,
fn_tolerance_resolution = 55,
fn_tolerance_upper_value = 56,
fn_tolerance_lower_value = 57,
fn_tolerance_height_scale = 58,
fn_baseline_spacing = 59,
// Added for v5 - 12/15/09 LW
// version 1.7
fn_draw_mask = 60,
fn_mask_color_source = 61,
fn_mask_color = 62,
fn_mask_border = 63,
// Added for v5 - 12/17/09 LW
// version 1.8
fn_dimscale = 64,
fn_dimscale_source = 65,
// Added for V6 -
// version 2.0
fn_fixed_extension_len = 66,
fn_fixed_extension_on = 67,
fn_text_rotation = 68,
fn_tolerance_alt_resolution = 69,
fn_tolerance_textheight_fraction = 70,
fn_suppress_arrow1 = 71,
fn_suppress_arrow2 = 72,
fn_textmove_leader = 73,
fn_arclength_sym = 74,
fn_stack_textheight_fraction = 75,
fn_stack_format = 76,
fn_alt_round = 77,
fn_round = 78,
fn_alt_zero_suppress = 79,
fn_tol_zero_suppress = 80,
fn_ang_zero_suppress = 81,
fn_zero_suppress = 82,
fn_alt_below = 83,
fn_dim_arrow_type1 = 84, // For ON_Dimension derived dimensions
fn_dim_arrow_type2 = 85,
fn_dim_arrow_blockname1 = 86,
fn_dim_arrow_blockname2 = 87,
FieldCount,
fn_unset = 0xFFFE,
fn_really_last = 0xFFFF
};
enum : unsigned int
{
// must be 1 + the maximum value of an ON_V5x_DimStyle::Field enum value.
FieldCount = 88
};
// Combines a field id and a field value
// Dimensions will have an array of DimstyleField's to record
// dimension style overrides for individual dimensions
class DimstyleField
{
public:
DimstyleField()
: m_next(nullptr)
, m_field_id(ON_V5x_DimStyle::Field::fn_unset)
{
m_val.s_val = nullptr;
}
~DimstyleField()
{
if (nullptr != m_next)
{
delete m_next;
m_next = nullptr;
}
if (nullptr != m_val.s_val)
{
delete m_val.s_val;
m_val.s_val = nullptr;
}
}
DimstyleField* m_next;
ON_V5x_DimStyle::Field m_field_id;
union
{
bool b_val;
int i_val;
unsigned char uc_val;
double d_val;
unsigned int c_val;
const ON_wString* s_val;
} m_val;
};
// added version 1.3
double DimExtension() const;
void SetDimExtension( const double);
// This section Added for v5 - 4-24-07 LW
// version 1.6
// Test if a specific field has been set in this dimstyle
// and not inherited from its parent.
bool IsFieldOverride(ON_V5x_DimStyle::Field field_id) const;
// Set a field to be overridden or not
// Fields that aren't overrides inherit from their parent dimstyle
void SetFieldOverride(ON_V5x_DimStyle::Field field_id, bool bOverride);
/*
Clear all field overrides
*/
void ClearAllFieldOverrides();
// Test if the dimstyle has any field override flags set
bool HasOverrides() const;
// Change the fields in this dimstyle to match the fields of the
// source dimstyle for all of the fields that are marked overridden in the source
// and to match the parent for all of the fields not marked overriden.
// Returns true if any overrides were set.
bool OverrideFields( const ON_V5x_DimStyle& source, const ON_V5x_DimStyle& parent);
//
// Change the fields in this dimstyle to match the fields of the
// parent dimstyle for all of the fields that are not marked overridden in the
// target dimstyle.
// This is the complement of OverrideFields()
bool InheritFields( const ON_V5x_DimStyle& parent);
// Test if this dimstyle is the child of any other dimstyle
bool IsChildDimstyle() const;
// Test if this dimstyle is the child of a given dimstyle
// A dimstyle may have several child dimstyles, but only one parent
bool IsChildOf(const ON_UUID& parent_uuid) const;
// use ON_ModelComponent parent id - // ON_UUID ParentId() const;
// Set the parent of this dimstyle
// use ON_ModelComponent parent id - //void SetParentId(ON_UUID parent_uuid);
// Tolerances
// Tolerance style
// 0: None
// 1: Symmetrical
// 2: Deviation
// 3: Limits
// 4: Basic
enum eToleranceStyle
{
tsMin = 0,
tsNone = 0,
tsSymmetrical = 1,
tsDeviation = 2,
tsLimits = 3,
tsBasic = 4,
tsMax = 4
};
int ToleranceStyle() const;
int ToleranceResolution() const;
double ToleranceUpperValue() const;
double ToleranceLowerValue() const;
double ToleranceHeightScale() const;
double BaselineSpacing() const;
void SetToleranceStyle( int style);
void SetToleranceResolution( int resolution);
void SetToleranceUpperValue( double upper_value);
void SetToleranceLowerValue( double lower_value);
void SetToleranceHeightScale( double scale);
void SetBaselineSpacing( double spacing = false);
// Determines whether or not to draw a Text Mask
bool DrawTextMask() const;
void SetDrawTextMask(bool bDraw);
// Determines where to get the color to draw a Text Mask
// 0: Use background color of the viewport. Initially, gradient backgrounds will not be supported
// 1: Use the ON_Color returned by MaskColor()
int MaskColorSource() const;
void SetMaskColorSource(int source);
ON_Color MaskColor() const; // Only works right if MaskColorSource returns 1.
// Does not return viewport background color
void SetMaskColor(ON_Color color);
// Per DimStyle DimScale
void SetDimScaleSource(int source);
int DimScaleSource() const; // 0: Global DimScale, 1: DimStyle DimScale
void SetDimScale(double scale);
double DimScale() const;
// Offset for the border around text to the rectangle used to draw the mask
// This number * CRhinoAnnotation::TextHeight() for the text is the offset
// on each side of the tight rectangle around the text characters to the mask rectangle.
double MaskOffsetFactor() const;
void Scale( double scale);
// UUID of the dimstyle this was originally copied from
// so Restore Defaults has some place to look
void SetSourceDimstyle(ON_UUID source_uuid);
ON_UUID SourceDimstyle() const;
// ver 2.0 V6
void SetExtensionLineColorSource(const ON::object_color_source src);
ON::object_color_source ExtensionLineColorSource() const;
void SetDimensionLineColorSource(const ON::object_color_source src);
ON::object_color_source DimensionLineColorSource() const;
void SetArrowColorSource(const ON::object_color_source src);
ON::object_color_source ArrowColorSource() const;
void SetExtensionLineColor(ON_Color c);
ON_Color ExtensionLineColor() const;
void SetDimensionLineColor(ON_Color c);
ON_Color DimensionLineColor() const;
void SetArrowColor(ON_Color c);
ON_Color ArrowColor() const;
void SetTextColor(ON_Color c);
ON_Color TextColor() const;
void SetExtensionLinePlotColorSource(const ON::plot_color_source src);
ON::plot_color_source ExtensionLinePlotColorSource() const;
void SetDimensionLinePlotColorSource(const ON::plot_color_source src);
ON::plot_color_source DimensionLinePlotColorSource() const;
void SetArrowPlotColorSource(const ON::plot_color_source src);
ON::plot_color_source ArrowPlotColorSource() const;
void SetExtensionLinePlotColor(ON_Color c);
ON_Color ExtensionLinePlotColor() const;
void SetDimensionLinePlotColor(ON_Color c);
ON_Color DimensionLinePlotColor() const;
void SetArrowPlotColor(ON_Color c);
ON_Color ArrowPlotColor() const;
void SetTextPlotColor(ON_Color c);
ON_Color TextPlotColor() const;
void SetExtensionLinePlotWeightSource(const ON::plot_weight_source src);
ON::plot_weight_source ExtensionLinePlotWeightSource() const;
void SetDimensionLinePlotWeightSource(const ON::plot_weight_source src);
ON::plot_weight_source DimensionLinePlotWeightSource() const;
void SetExtensionLinePlotWeight(double w);
double ExtensionLinePlotWeight() const;
void SetDimensionLinePlotWeight(double w);
double DimensionLinePlotWeight() const;
void SetFixedExtensionLen(double l);
double FixedExtensionLen() const;
void SetFixedExtensionLenOn(bool on);
bool FixedExtensionLenOn() const;
void SetTextRotation(double r);
double TextRotation() const;
void SetAlternateToleranceResolution(int r);
int AlternateToleranceResolution() const;
//void SetAlternateTolHeightFraction(double f);
//double AltTolHeightFraction() const;
void SetSuppressArrow1(bool s);
bool SuppressArrow1() const;
void SetSuppressArrow2(bool s);
bool SuppressArrow2() const;
void SetTextMoveLeader(int m);
int TextMoveLeader() const;
void SetArcLengthSymbol(int m);
int ArcLengthSymbol() const;
void SetStackFractionFormat(int f);
int StackFractionFormat() const;
void SetStackHeightFraction(double f);
double StackHeightFraction() const;
void SetRoundOff(double r);
double RoundOff() const;
void SetAlternateRoundOff(double r);
double AlternateRoundOff() const;
void SetZeroSuppress(int s);
int ZeroSuppress() const;
void SetAlternateZeroSuppress(int s);
int AlternateZeroSuppress() const;
void SetToleranceZeroSuppress(int s);
int ToleranceZeroSuppress() const;
void SetAngleZeroSuppress(int s);
int AngleZeroSuppress() const;
void SetAlternateBelow(bool below);
bool AlternateBelow() const;
void SetArrowType1(ON_Arrowhead::arrow_type); // ON_Dimension derived dimensions
ON_Arrowhead::arrow_type ArrowType1() const;
void SetArrowBlockId1(ON_UUID id);
ON_UUID ArrowBlockId1() const;
void SetArrowType2(ON_Arrowhead::arrow_type);
ON_Arrowhead::arrow_type ArrowType2() const;
void SetArrowBlockId2(ON_UUID id);
ON_UUID ArrowBlockId2() const;
const ON_Arrowhead& Arrowhead1() const;
const ON_Arrowhead& Arrowhead2() const;
// Defaults for values stored in Userdata extension - needed to read and write pre-v6 files
static int DefaultToleranceStyle();
static int DefaultToleranceResolution();
static double DefaultToleranceUpperValue();
static double DefaultToleranceLowerValue();
static double DefaultToleranceHeightScale();
static double DefaultBaselineSpacing();
static bool DefaultDrawTextMask(); // false
static int DefaultMaskColorSource(); // 0;
static ON_Color DefaultMaskColor(); // .SetRGB(255,255,255);
static double DefaultDimScale(); // 1.0;
static int DefaultDimScaleSource(); // 0;
bool CompareFields(const ON_V5x_DimStyle& other) const;
public:
double m_extextension = 0.5; // extension line extension
double m_extoffset = 0.5; // extension line offset
double m_arrowsize = 1.0; // length of an arrow - may mean different things to different arrows
double m_centermark = 0.5; // size of the + at circle centers
double m_textgap = 0.25; // gap around the text for clipping dim line
double m_textheight = 1.0; // model unit height of dimension text before applying dimscale
ON_INTERNAL_OBSOLETE::V5_TextDisplayMode m_dimstyle_textalign = ON_INTERNAL_OBSOLETE::V5_TextDisplayMode::kAboveLine; // text alignment relative to the dimension line
int m_arrowtype = 0; // 0: filled narrow triangular arrow - For ON_OBSOLETE_V2_Annotation & ON_OBSOLETE_V5_Annotation derived dimensnions
// m_arrowtype = ((ON_Arrowhead::arrow_type enum value as int) - 2)
int m_angularunits = 0; // 0: degrees, 1: radians
int m_lengthformat = 0; // 0: decimal, 1: fractional, 2: feet & inches
int m_angleformat = 0; // 0: decimal degrees, 1:DMS, ...
int m_angleresolution = 2; // for decimal degrees, digits past decimal
int m_lengthresolution = 2; // depends on m_lengthformat
// for decimal, digits past the decimal point
private:
ON_TextStyle m_v5_text_style = ON_TextStyle::Default;
public:
// added fields version 1.2, Jan 13, 05
double m_lengthfactor = 1.0; // (dimlfac) model units multiplier for length display
bool m_bAlternate = false; // (dimalt) display alternate dimension string (or not)
// using m_alternate_xxx values
double m_alternate_lengthfactor = 1.0; // (dimaltf) model units multiplier for alternate length display
int m_alternate_lengthformat = 0; // 0: decimal, 1: feet, 2: feet & inches
int m_alternate_lengthresolution = 2; // depends on m_lengthformat
// for decimal, digits past the decimal point
int m_alternate_angleformat = 0; // 0: decimal degrees, ...
int m_alternate_angleresolution = 2; // for decimal degrees, digits past decimal
ON_wString m_prefix; // string preceding dimension value string
ON_wString m_suffix; // string following dimension value string
ON_wString m_alternate_prefix; // string preceding alternate value string
ON_wString m_alternate_suffix; // string following alternate value string
private:
///unsigned int m_valid = 0; // Obsolete deprecated field to be removed - Do not use
public:
// field added version 1.4, Dec 28, 05
double m_dimextension = 0.0; // (dimdle) dimension line extension past the "tip" location
// fields added version 1.5 Mar 23 06
double m_leaderarrowsize = 1.0; // Like dimension arrow size but applies to leaders
int m_leaderarrowtype = 0; // Like dimension arrow type but applies to leaders
bool m_bSuppressExtension1 = false; // flag to not draw extension lines
bool m_bSuppressExtension2 = false; // flag to not draw extension lines
private:
friend class ON_DimStyleExtra;
// 8 Apr, 2014 - The next few fields were transferred from ON_DimStyleExtra for V6
/// Use ON_ModelComponent.ParentId() /// ON_UUID m_parent_dimstyle = ON_nil_uuid; // ON_nil_uuid if there is no parent dimstyle
unsigned int m_field_override_count = 0; // number of
bool m_field_override[ON_V5x_DimStyle::FieldCount];
public:
int m_tolerance_style = 0;
int m_tolerance_resolution = 4;
double m_tolerance_upper_value = 0.0; // or both upper and lower in symmetrical style
double m_tolerance_lower_value = 0.0;
double m_tolerance_height_scale = 1.0; // relative to the main dimension text
double m_baseline_spacing = 1.0;
// Text mask - added Dec 12 2009
bool m_bDrawMask = false;
int m_mask_color_source = 0;
ON_Color m_mask_color = ON_Color::White;
// Per dimstyle DimScale added Dec 16, 2009
double m_dimscale = 1.0;
int m_dimscale_source = 0;
// 19 Oct 2010 - Added uuid of source dimstyle to restore defaults
ON_UUID m_source_dimstyle = ON_nil_uuid;
// End of fields that were in ON_DimStyleExtra
// Fields added for V6, ver 2.0
unsigned char m_ext_line_color_source = 0;
unsigned char m_dim_line_color_source = 0;
unsigned char m_arrow_color_source = 0;
unsigned char m_text_color_source = 0;
ON_Color m_ext_line_color = ON_Color::Black;
ON_Color m_dim_line_color = ON_Color::Black;
ON_Color m_arrow_color = ON_Color::Black;
ON_Color m_text_color = ON_Color::Black;
unsigned char m_ext_line_plot_color_source = 0;
unsigned char m_dim_line_plot_color_source = 0;
unsigned char m_arrow_plot_color_source = 0;
unsigned char m_text_plot_color_source = 0;
ON_Color m_ext_line_plot_color = ON_Color::Black;
ON_Color m_dim_line_plot_color = ON_Color::Black;
ON_Color m_arrow_plot_color = ON_Color::Black;
ON_Color m_text_plot_color = ON_Color::Black;
unsigned char m_ext_line_plot_weight_source = 0;
unsigned char m_dim_line_plot_weight_source = 0;
double m_ext_line_plot_weight_mm = 0.0;
double m_dim_line_plot_weight_mm = 0.0;
double m_fixed_extension_len = 1.0; // Fixed extension line length if m_fixed_extension_len_on is true
bool m_fixed_extension_len_on = false; // true: use fixed_extension_len, false: don't use m_fixed_extension_len
double m_text_rotation = 0.0; // Dimension text rotation around text point (radians)
int m_alt_tol_resolution = 4; // for decimal, digits past the decimal point, fractions: 1/2^n
double m_tol_textheight_fraction = 1.0; // fraction of main text height
bool m_suppress_arrow1 = false; // false: dont suppress, true: suppress
bool m_suppress_arrow2 = false; // false: dont suppress, true: suppress
int m_textmove_leader = 0; // 0: move text anywhere, 1: add leader when moving text
int m_arclength_sym = 0; // 0: symbol before dim text, 1: symbol above dim text, no symbol
double m_stack_textheight_fraction = 1.0; // fraction of main text height
int m_stack_format = 0; // 0: no stacking, 1: horizontal, 2: diagonal
double m_alt_round = 0.0; // rounds to nearest specified value
double m_round = 0.0;
int m_alt_zero_suppress = 0; // 0: no zero suppressing
int m_tol_zero_suppress = 0; // 1: suppress zero feet
int m_zero_suppress = 0; // 2: suppress zero inches
int m_ang_zero_suppress = 0; // 3: suppress both zero feet and 0 inches
// 4: suppress leading zeros
// 8: suppress trailing zeros
// 12: suppress both leading and trailing zeros
bool m_alt_below = false; // true: display alternate text below main text
// true: display alternate text after main text
//ON_Arrowhead::arrow_type m_arrow_type_1; // Arrow types for ON_Dimension derived dimensions
//ON_Arrowhead::arrow_type m_arrow_type_2;
//ON_wString m_dim_arrow_block1;
//ON_wString m_dim_arrow_block2;
ON_Arrowhead m_arrow_1;
ON_Arrowhead m_arrow_2;
};
void ON_Internal_FixBogusDimStyleLengthFactor(
const class ON_BinaryArchive& file,
double& dimstyle_length_factor
);
#endif
#endif