KiCad PCB EDA Suite
base_units.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2012 CERN
5  * Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
32 #ifndef _BASE_UNITS_H_
33 #define _BASE_UNITS_H_
34 
35 #include <string>
36 
37 #include <common.h>
38 #include <convert_to_biu.h>
39 #include <math/util.h> // for KiROUND
40 #include <math/vector2d.h>
41 
42 //TODO: Abstract Base Units to a single class
43 
48 #define INDETERMINATE wxString( "..." )
49 
50 
52 inline int Mm2mils( double x ) { return KiROUND( x * 1000./25.4 ); }
53 
55 inline int Mils2mm( double x ) { return KiROUND( x * 25.4 / 1000. ); }
56 
65 std::string Double2Str( double aValue );
66 
73 void StripTrailingZeros( wxString& aStringValue, unsigned aTrailingZeroAllowed = 1 );
74 
75 
85 double To_User_Unit( EDA_UNITS aUnit, double aValue, bool aUseMils = false );
86 
92 wxString AngleToStringDegrees( double aAngle );
93 
112 wxString MessageTextFromValue( EDA_UNITS aUnits, double aValue, bool aUseMils = false );
113 
114 wxString MessageTextFromValue( EDA_UNITS aUnits, int aValue, bool aUseMils = false );
115 
116 wxString MessageTextFromValue( EDA_UNITS aUnits, long long int aValue, bool aUseMils = false );
117 
138 wxString StringFromValue(
139  EDA_UNITS aUnit, double aValue, bool aAddUnitSymbol = false, bool aUseMils = false );
140 
145 double From_User_Unit( EDA_UNITS aUnit, double aValue, bool aUseMils = false );
146 
147 
156 double DoubleValueFromString( EDA_UNITS aUnits, const wxString& aTextValue, bool aUseMils = false );
157 
167 long long int ValueFromString(
168  EDA_UNITS aUnits, const wxString& aTextValue, bool aUseMils = false );
169 
174 void FetchUnitsFromString( const wxString& aTextValue, EDA_UNITS& aUnits, bool& aUseMils );
175 
182 wxString GetAbbreviatedUnitsLabel( EDA_UNITS aUnit, bool aUseMils = false );
183 
195 std::string FormatInternalUnits( int aValue );
196 
206 std::string FormatAngle( double aAngle );
207 
208 std::string FormatInternalUnits( const wxPoint& aPoint );
209 
210 std::string FormatInternalUnits( const wxSize& aSize );
211 
212 std::string FormatInternalUnits( const VECTOR2I& aPoint );
213 
214 
215 #endif // _BASE_UNITS_H_
EDA_UNITS
Definition: common.h:72
int Mm2mils(double x)
Convert mm to mils.
Definition: base_units.h:52
double From_User_Unit(EDA_UNITS aUnit, double aValue, bool aUseMils=false)
Return in internal units the value "val" given in a real unit such as "in", "mm" or "deg".
Definition: base_units.cpp:291
VECTOR2 defines a general 2D-vector/point.
Definition: vector2d.h:61
double To_User_Unit(EDA_UNITS aUnit, double aValue, bool aUseMils=false)
Function To_User_Unit convert aValue in internal units to the appropriate user units defined by aUnit...
Definition: base_units.cpp:95
std::string Double2Str(double aValue)
Helper function Double2Str to print a float number without using scientific notation and no trailing ...
Definition: base_units.cpp:65
wxString GetAbbreviatedUnitsLabel(EDA_UNITS aUnit, bool aUseMils=false)
Get the units string for a given units type.
Definition: base_units.cpp:452
wxString StringFromValue(EDA_UNITS aUnit, double aValue, bool aAddUnitSymbol=false, bool aUseMils=false)
Function StringFromValue returns the string from aValue according to units (inch, mm ....
Definition: base_units.cpp:219
int Mils2mm(double x)
Convert mils to mm.
Definition: base_units.h:55
double DoubleValueFromString(EDA_UNITS aUnits, const wxString &aTextValue, bool aUseMils=false)
Function DoubleValueFromString converts aTextValue to a double.
Definition: base_units.cpp:316
wxString AngleToStringDegrees(double aAngle)
Function AngleToStringDegrees is a helper to convert the double aAngle (in internal unit) to a string...
Definition: base_units.cpp:441
void StripTrailingZeros(wxString &aStringValue, unsigned aTrailingZeroAllowed=1)
Function StripTrailingZeros Remove trailing 0 from a string containing a converted float number.
Definition: base_units.cpp:187
wxString MessageTextFromValue(EDA_UNITS aUnits, double aValue, bool aUseMils=false)
Function MessageTextFromValue is a helper to convert the double length aValue to a string in inches,...
Definition: base_units.cpp:141
std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from internal units to a string appropriate for writing ...
Definition: base_units.cpp:480
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:61
The common library.
long long int ValueFromString(EDA_UNITS aUnits, const wxString &aTextValue, bool aUseMils=false)
Function ValueFromString converts aTextValue in aUnits to internal units used by the application.
Definition: base_units.cpp:429
void FetchUnitsFromString(const wxString &aTextValue, EDA_UNITS &aUnits, bool &aUseMils)
Function FetchUnitsFromString writes any unit info found in the string to aUnits and aUseMils.
Definition: base_units.cpp:390
std::string FormatAngle(double aAngle)
Function FormatAngle converts aAngle from board units to a string appropriate for writing to file.
Definition: base_units.cpp:513