LibrePCB Developers Documentation
|
The Length class is used to represent a length (for example 12.75 millimeters) More...
#include <length.h>
Public Member Functions | |
constexpr | Length () noexcept |
Default Constructor. More... | |
constexpr | Length (const Length &length) noexcept |
Copy Constructor. More... | |
constexpr | Length (LengthBase_t nanometers) noexcept |
Constructor with length in nanometers. More... | |
~Length ()=default | |
Destructor. More... | |
void | setLengthNm (LengthBase_t nanometers) noexcept |
Set the length in nanometers. More... | |
void | setLengthMm (qreal millimeters) |
Set the length in millimeters. More... | |
void | setLengthMm (const QString &millimeters) |
Set the length in millimeters, represented in a QString. More... | |
void | setLengthInch (qreal inches) |
Set the length in inches. More... | |
void | setLengthMil (qreal mils) |
Set the length in mils (1/1000 inch) More... | |
void | setLengthPx (qreal pixels) |
Set the length in pixels (from QGraphics* objects) More... | |
LengthBase_t | toNm () const noexcept |
Get the length in nanometers. More... | |
QString | toNmString () const noexcept |
Get the length in nanometers as a QString. More... | |
qreal | toMicrometers () const noexcept |
Get the length in micrometers. More... | |
qreal | toMm () const noexcept |
Get the length in millimeters. More... | |
QString | toMmString () const noexcept |
Get the length in millimeters as a QString. More... | |
qreal | toInch () const noexcept |
Get the length in inches. More... | |
qreal | toMil () const noexcept |
Get the length in mils (1/1000 inches) More... | |
qreal | toPx () const noexcept |
Get the length in pixels (for QGraphics* objects) More... | |
Length | abs () const noexcept |
Get a Length object with absolute value (mNanometers >= 0) More... | |
Length & | makeAbs () noexcept |
Make the length absolute (mNanometers >= 0) More... | |
Length | mappedToGrid (const Length &gridInterval) const noexcept |
Get a Length object which is mapped to a specific grid interval. More... | |
Length & | mapToGrid (const Length &gridInterval) noexcept |
Map this Length object to a specific grid interval. More... | |
Length | scaled (qreal factor) const noexcept |
Get a Length object which is scaled with a specific factor. More... | |
Length & | scale (qreal factor) noexcept |
Scale this Length object with a specific factor. More... | |
Length & | operator= (const Length &rhs) |
Length & | operator+= (const Length &rhs) |
Length & | operator-= (const Length &rhs) |
Length & | operator*= (const Length &rhs) |
Length & | operator*= (LengthBase_t rhs) |
Length & | operator/= (const Length &rhs) |
Length & | operator/= (LengthBase_t rhs) |
Length | operator+ (const Length &rhs) const |
Length | operator- () const |
Length | operator- (const Length &rhs) const |
Length | operator* (const Length &rhs) const |
Length | operator* (LengthBase_t rhs) const |
Length | operator/ (const Length &rhs) const |
Length | operator/ (LengthBase_t rhs) const |
Length | operator% (const Length &rhs) const |
constexpr bool | operator> (const Length &rhs) const |
constexpr bool | operator> (LengthBase_t rhs) const |
constexpr bool | operator< (const Length &rhs) const |
constexpr bool | operator< (LengthBase_t rhs) const |
constexpr bool | operator>= (const Length &rhs) const |
constexpr bool | operator>= (LengthBase_t rhs) const |
constexpr bool | operator<= (const Length &rhs) const |
constexpr bool | operator<= (LengthBase_t rhs) const |
constexpr bool | operator== (const Length &rhs) const |
constexpr bool | operator== (LengthBase_t rhs) const |
constexpr bool | operator!= (const Length &rhs) const |
constexpr bool | operator!= (LengthBase_t rhs) const |
Static Public Member Functions | |
static bool | isValidMm (qreal millimeters) noexcept |
Check if a float value in millimeters is in the allowed range. More... | |
static Length | fromMm (qreal millimeters, const Length &gridInterval=Length(0)) |
Get a Length object with a specific length and map it to a specific grid. More... | |
static Length | fromMm (const QString &millimeters, const Length &gridInterval=Length(0)) |
Get a Length object with a specific length and map it to a specific grid. More... | |
static Length | fromInch (qreal inches, const Length &gridInterval=Length(0)) |
Get a Length object with a specific length and map it to a specific grid. More... | |
static Length | fromMil (qreal mils, const Length &gridInterval=Length(0)) |
Get a Length object with a specific length and map it to a specific grid. More... | |
static Length | fromPx (qreal pixels, const Length &gridInterval=Length(0)) |
Get a Length object with a specific length and map it to a specific grid. More... | |
static Length | min () noexcept |
Get the smallest possible length value. More... | |
static Length | max () noexcept |
Get the highest possible length value. More... | |
Private Member Functions | |
void | setLengthFromFloat (qreal nanometers) |
Set the length from a floating point number in nanometers. More... | |
Static Private Member Functions | |
static bool | checkRange (qreal nanometers, bool doThrow=false) |
Check if a float value in nanometers is in the allowed range. More... | |
static LengthBase_t | mapNmToGrid (LengthBase_t nanometers, const Length &gridInterval) noexcept |
Map a length in nanometers to a grid interval in nanometers. More... | |
static LengthBase_t | mmStringToNm (const QString &millimeters) |
Convert a length from a QString (in millimeters) to an integer (in nanometers) More... | |
Private Attributes | |
LengthBase_t | mNanometers |
the length in nanometers More... | |
Static Private Attributes | |
static constexpr LengthBase_t | sNmPerInch = 25400000 |
1 inch = 25.4mm More... | |
static constexpr LengthBase_t | sNmPerMil = 25400 |
1 inch = 25.4mm More... | |
static constexpr LengthBase_t | sPixelsPerInch |
72 dpi for the QGraphics* objects More... | |
static constexpr qreal | sNmPerPixel = (qreal)sNmPerInch / sPixelsPerInch |
static constexpr qreal | sPixelsPerNm = (qreal)sPixelsPerInch / sNmPerInch |
The Length class is used to represent a length (for example 12.75 millimeters)
This class is used to represent ALL length values in Symbols, Schematics, Footprints, Layouts and so on. You should never use another length type, like integer or float! It's very important to have a consistent length type over the whole project.
All lengths are stored in the integer base type librepcb::LengthBase_t. The internal unit is always nanometers, but this class provides also some converting methods to other units. Read the documentation of librepcb::LengthBase_t for more details.
|
inlineconstexprnoexcept |
Default Constructor.
The length will be initialized with zero nanometers.
Copy Constructor.
length | Another Length object |
|
inlineconstexprnoexcept |
Constructor with length in nanometers.
nanometers | The length in nanometers |
|
default |
Destructor.
|
inlinenoexcept |
Set the length in nanometers.
nanometers | The length in nanometers |
|
inline |
Set the length in millimeters.
millimeters | The length in millimeters |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
|
inline |
Set the length in millimeters, represented in a QString.
millimeters | The length in millimeters in a QString with locale "C" |
Exception | If the string is not valid or the number is out of range, an Exception will be thrown |
|
inline |
Set the length in inches.
inches | The length in inches |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
|
inline |
Set the length in mils (1/1000 inch)
mils | The length in mils |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
|
inline |
Set the length in pixels (from QGraphics* objects)
pixels | The length in pixels, from a QGraphics* object |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
|
inlinenoexcept |
Get the length in nanometers.
|
inlinenoexcept |
Get the length in nanometers as a QString.
|
inlinenoexcept |
Get the length in micrometers.
|
inlinenoexcept |
Get the length in millimeters.
|
noexcept |
Get the length in millimeters as a QString.
|
inlinenoexcept |
Get the length in inches.
|
inlinenoexcept |
Get the length in mils (1/1000 inches)
|
inlinenoexcept |
Get the length in pixels (for QGraphics* objects)
|
noexcept |
Get a Length object with absolute value (mNanometers >= 0)
|
noexcept |
Make the length absolute (mNanometers >= 0)
Get a Length object which is mapped to a specific grid interval.
gridInterval | The grid interval in nanometers (e.g. 2540000 for 2.54mm). If this parameter is zero, this method will do nothing. |
Map this Length object to a specific grid interval.
gridInterval | The grid interval in nanometers (e.g. 2540000 for 2.54mm). If this parameter is zero, this method will do nothing. |
|
noexcept |
Get a Length object which is scaled with a specific factor.
factor | The scale factor (1.0 does nothing) |
|
noexcept |
Scale this Length object with a specific factor.
factor | The scale factor (1.0 does nothing) |
|
inlinestaticnoexcept |
Check if a float value in millimeters is in the allowed range.
millimeters | The value to check |
true | Value is valid, can construct a Length from it. |
false | Value is invalid, constructing a Length would throw. |
Get a Length object with a specific length and map it to a specific grid.
millimeters | See setLengthMm(qreal) |
gridInterval | See mapToGrid() |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
Get a Length object with a specific length and map it to a specific grid.
This method can be used to create a Length object from a QString which contains a floating point number in millimeters, like QString("123.456") for 123.456 millimeters. The string must not depend on the locale settings (see QLocale), it have always to represent a number in the "C" locale. The maximum count of decimals after the decimal point is 6, because the 6th decimal represents one nanometer.
millimeters | See setLengthMm(const QString&) |
gridInterval | See mapToGrid() |
Get a Length object with a specific length and map it to a specific grid.
inches | See setLengthInch() |
gridInterval | See mapToGrid() |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
Get a Length object with a specific length and map it to a specific grid.
mils | See setLengthMil() |
gridInterval | See mapToGrid() |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
Get a Length object with a specific length and map it to a specific grid.
pixels | See setLengthPx() |
gridInterval | See mapToGrid() |
RangeError | If the argument is out of range, a RangeError exception will be thrown |
|
staticnoexcept |
Get the smallest possible length value.
|
staticnoexcept |
Get the highest possible length value.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
private |
Set the length from a floating point number in nanometers.
This is a helper method for the setLength*() methods.
nanometers | A floating point number in nanometers. |
|
staticprivate |
Check if a float value in nanometers is in the allowed range.
nanometers | The value to check |
doThrow | If true, throw a librepcb::RangeError if out of range instead of returning the result |
true | Value is valid, can construct a Length from it. |
false | Value is invalid, constructing a Length would throw. |
|
staticprivatenoexcept |
Map a length in nanometers to a grid interval in nanometers.
This is a helper function for mapToGrid().
nanometers | The length we want to map to the grid |
gridInterval | The grid interval |
|
staticprivate |
Convert a length from a QString (in millimeters) to an integer (in nanometers)
This is a helper function for Length(const QString&) and setLengthMm().
millimeters | A QString which contains a floating point number with maximum six decimals after the decimal point. The locale of the string have to be "C"! Example: QString("-1234.56") for -1234.56mm |
|
private |
the length in nanometers
|
staticconstexprprivate |
1 inch = 25.4mm
|
staticconstexprprivate |
1 inch = 25.4mm
|
staticconstexprprivate |
72 dpi for the QGraphics* objects
|
staticconstexprprivate |
|
staticconstexprprivate |