Add micrometre and centimetre units
This commit is contained in:
parent
b7507cbd39
commit
4177b64c27
|
@ -46,7 +46,9 @@ bool EDA_UNIT_UTILS::IsMetricUnit( EDA_UNITS aUnit )
|
||||||
{
|
{
|
||||||
switch( aUnit )
|
switch( aUnit )
|
||||||
{
|
{
|
||||||
|
case EDA_UNITS::MICROMETRES:
|
||||||
case EDA_UNITS::MILLIMETRES:
|
case EDA_UNITS::MILLIMETRES:
|
||||||
|
case EDA_UNITS::CENTIMETRES:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -86,8 +88,13 @@ bool EDA_UNIT_UTILS::FetchUnitsFromString( const wxString& aTextValue, EDA_UNITS
|
||||||
// Check the unit designator (2 ch significant)
|
// Check the unit designator (2 ch significant)
|
||||||
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
|
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
|
||||||
|
|
||||||
if( unit == wxT( "mm" ) )
|
//check for um, μm (µ is MICRO SIGN) and µm (µ is GREEK SMALL LETTER MU) for micrometre
|
||||||
|
if( unit == wxT( "um" ) || unit == wxT( "\u00B5m" ) || unit == wxT( "\u03BCm" ) )
|
||||||
|
aUnits = EDA_UNITS::MICROMETRES;
|
||||||
|
else if( unit == wxT( "mm" ) )
|
||||||
aUnits = EDA_UNITS::MILLIMETRES;
|
aUnits = EDA_UNITS::MILLIMETRES;
|
||||||
|
if( unit == wxT( "cm" ) )
|
||||||
|
aUnits = EDA_UNITS::CENTIMETRES;
|
||||||
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) ) // "mils" or "thou"
|
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) ) // "mils" or "thou"
|
||||||
aUnits = EDA_UNITS::MILS;
|
aUnits = EDA_UNITS::MILS;
|
||||||
else if( unit == wxT( "in" ) || unit == wxT( "\"" ) )
|
else if( unit == wxT( "in" ) || unit == wxT( "\"" ) )
|
||||||
|
@ -106,13 +113,15 @@ wxString EDA_UNIT_UTILS::GetText( EDA_UNITS aUnits, EDA_DATA_TYPE aType )
|
||||||
|
|
||||||
switch( aUnits )
|
switch( aUnits )
|
||||||
{
|
{
|
||||||
case EDA_UNITS::MILLIMETRES: label = wxT( " mm" ); break;
|
case EDA_UNITS::MICROMETRES: label = wxT( " \u00B5m" ); break; //00B5 for µ
|
||||||
case EDA_UNITS::DEGREES: label = wxT( "°" ); break;
|
case EDA_UNITS::MILLIMETRES: label = wxT( " mm" ); break;
|
||||||
case EDA_UNITS::MILS: label = wxT( " mils" ); break;
|
case EDA_UNITS::CENTIMETRES: label = wxT( " cm" ); break;
|
||||||
case EDA_UNITS::INCHES: label = wxT( " in" ); break;
|
case EDA_UNITS::DEGREES: label = wxT( "°" ); break;
|
||||||
case EDA_UNITS::PERCENT: label = wxT( "%" ); break;
|
case EDA_UNITS::MILS: label = wxT( " mils" ); break;
|
||||||
case EDA_UNITS::UNSCALED: break;
|
case EDA_UNITS::INCHES: label = wxT( " in" ); break;
|
||||||
default: UNIMPLEMENTED_FOR( wxS( "Unknown units" ) ); break;
|
case EDA_UNITS::PERCENT: label = wxT( "%" ); break;
|
||||||
|
case EDA_UNITS::UNSCALED: break;
|
||||||
|
default: UNIMPLEMENTED_FOR( wxS( "Unknown units" ) ); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( aType )
|
switch( aType )
|
||||||
|
@ -236,9 +245,15 @@ double EDA_UNIT_UTILS::UI::ToUserUnit( const EDA_IU_SCALE& aIuScale, EDA_UNITS a
|
||||||
{
|
{
|
||||||
switch( aUnit )
|
switch( aUnit )
|
||||||
{
|
{
|
||||||
|
case EDA_UNITS::MICROMETRES:
|
||||||
|
return IU_TO_MM( aValue, aIuScale ) * 1000;
|
||||||
|
|
||||||
case EDA_UNITS::MILLIMETRES:
|
case EDA_UNITS::MILLIMETRES:
|
||||||
return IU_TO_MM( aValue, aIuScale );
|
return IU_TO_MM( aValue, aIuScale );
|
||||||
|
|
||||||
|
case EDA_UNITS::CENTIMETRES:
|
||||||
|
return IU_TO_MM( aValue, aIuScale ) / 10;
|
||||||
|
|
||||||
case EDA_UNITS::MILS:
|
case EDA_UNITS::MILS:
|
||||||
return IU_TO_MILS( aValue, aIuScale );
|
return IU_TO_MILS( aValue, aIuScale );
|
||||||
|
|
||||||
|
@ -383,6 +398,14 @@ wxString EDA_UNIT_UTILS::UI::MessageTextFromValue( const EDA_IU_SCALE& aIuScale,
|
||||||
switch( aUnits )
|
switch( aUnits )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
case EDA_UNITS::MICROMETRES:
|
||||||
|
#if defined( EESCHEMA )
|
||||||
|
format = wxT( "%.0f" );
|
||||||
|
#else
|
||||||
|
format = wxT( "%.1f" );
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
case EDA_UNITS::MILLIMETRES:
|
case EDA_UNITS::MILLIMETRES:
|
||||||
#if defined( EESCHEMA )
|
#if defined( EESCHEMA )
|
||||||
format = wxT( "%.2f" );
|
format = wxT( "%.2f" );
|
||||||
|
@ -391,6 +414,14 @@ wxString EDA_UNIT_UTILS::UI::MessageTextFromValue( const EDA_IU_SCALE& aIuScale,
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EDA_UNITS::CENTIMETRES:
|
||||||
|
#if defined( EESCHEMA )
|
||||||
|
format = wxT( "%.3f" );
|
||||||
|
#else
|
||||||
|
format = wxT( "%.5f" );
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
case EDA_UNITS::MILS:
|
case EDA_UNITS::MILS:
|
||||||
#if defined( EESCHEMA )
|
#if defined( EESCHEMA )
|
||||||
format = wxT( "%.0f" );
|
format = wxT( "%.0f" );
|
||||||
|
@ -462,9 +493,15 @@ double EDA_UNIT_UTILS::UI::FromUserUnit( const EDA_IU_SCALE& aIuScale, EDA_UNITS
|
||||||
{
|
{
|
||||||
switch( aUnits )
|
switch( aUnits )
|
||||||
{
|
{
|
||||||
|
case EDA_UNITS::MICROMETRES:
|
||||||
|
return MM_TO_IU( aValue / 1000.0, aIuScale );
|
||||||
|
|
||||||
case EDA_UNITS::MILLIMETRES:
|
case EDA_UNITS::MILLIMETRES:
|
||||||
return MM_TO_IU( aValue, aIuScale );
|
return MM_TO_IU( aValue, aIuScale );
|
||||||
|
|
||||||
|
case EDA_UNITS::CENTIMETRES:
|
||||||
|
return MM_TO_IU( aValue * 10, aIuScale );
|
||||||
|
|
||||||
case EDA_UNITS::MILS:
|
case EDA_UNITS::MILS:
|
||||||
return MILS_TO_IU( aValue, aIuScale );
|
return MILS_TO_IU( aValue, aIuScale );
|
||||||
|
|
||||||
|
@ -551,14 +588,25 @@ double EDA_UNIT_UTILS::UI::DoubleValueFromString( const EDA_IU_SCALE& aIuScale,
|
||||||
// Check the optional unit designator (2 ch significant)
|
// Check the optional unit designator (2 ch significant)
|
||||||
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
|
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
|
||||||
|
|
||||||
if( aUnits == EDA_UNITS::MILLIMETRES
|
if( aUnits == EDA_UNITS::MICROMETRES
|
||||||
|
|| aUnits == EDA_UNITS::MILLIMETRES
|
||||||
|
|| aUnits == EDA_UNITS::CENTIMETRES
|
||||||
|| aUnits == EDA_UNITS::MILS
|
|| aUnits == EDA_UNITS::MILS
|
||||||
|| aUnits == EDA_UNITS::INCHES )
|
|| aUnits == EDA_UNITS::INCHES )
|
||||||
{
|
{
|
||||||
if( unit == wxT( "mm" ) )
|
//check for um, μm (µ is MICRO SIGN) and µm (µ is GREEK SMALL LETTER MU) for micrometre
|
||||||
|
if( unit == wxT( "um" ) || unit == wxT( "\u00B5m" ) || unit == wxT( "\u03BCm" ) )
|
||||||
|
{
|
||||||
|
aUnits = EDA_UNITS::MICROMETRES;
|
||||||
|
}
|
||||||
|
else if( unit == wxT( "mm" ) )
|
||||||
{
|
{
|
||||||
aUnits = EDA_UNITS::MILLIMETRES;
|
aUnits = EDA_UNITS::MILLIMETRES;
|
||||||
}
|
}
|
||||||
|
else if( unit == wxT( "cm" ) )
|
||||||
|
{
|
||||||
|
aUnits = EDA_UNITS::CENTIMETRES;
|
||||||
|
}
|
||||||
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) )
|
else if( unit == wxT( "mi" ) || unit == wxT( "th" ) )
|
||||||
{
|
{
|
||||||
aUnits = EDA_UNITS::MILS;
|
aUnits = EDA_UNITS::MILS;
|
||||||
|
@ -611,4 +659,4 @@ long long int EDA_UNIT_UTILS::UI::ValueFromString( const wxString& aTextValue )
|
||||||
double value = DoubleValueFromString( aTextValue );
|
double value = DoubleValueFromString( aTextValue );
|
||||||
|
|
||||||
return KiROUND<double, long long int>( value );
|
return KiROUND<double, long long int>( value );
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,8 @@ enum class EDA_UNITS
|
||||||
DEGREES = 3,
|
DEGREES = 3,
|
||||||
PERCENT = 4,
|
PERCENT = 4,
|
||||||
MILS = 5,
|
MILS = 5,
|
||||||
|
MICROMETRES = 6, //The S is because MILLIMETRES already has an S at the end. But it is
|
||||||
|
CENTIMETRES = 7, //micrometre and centimetre and not micrometre (or cm) times second.
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace EDA_UNIT_UTILS
|
namespace EDA_UNIT_UTILS
|
||||||
|
@ -262,4 +264,4 @@ namespace EDA_UNIT_UTILS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue