QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgslayoutmeasurementconverter.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutmeasurementconverter.cpp
3 ---------------------------------
4 begin : June 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
21{
22 if ( measurement.units() == targetUnits )
23 {
24 return measurement;
25 }
26
27 switch ( targetUnits )
28 {
30 return QgsLayoutMeasurement( convertToMillimeters( measurement ), Qgis::LayoutUnit::Millimeters );
32 return QgsLayoutMeasurement( convertToCentimeters( measurement ), Qgis::LayoutUnit::Centimeters );
34 return QgsLayoutMeasurement( convertToMeters( measurement ), Qgis::LayoutUnit::Meters );
36 return QgsLayoutMeasurement( convertToInches( measurement ), Qgis::LayoutUnit::Inches );
38 return QgsLayoutMeasurement( convertToFeet( measurement ), Qgis::LayoutUnit::Feet );
40 return QgsLayoutMeasurement( convertToPoints( measurement ), Qgis::LayoutUnit::Points );
42 return QgsLayoutMeasurement( convertToPicas( measurement ), Qgis::LayoutUnit::Picas );
44 return QgsLayoutMeasurement( convertToPixels( measurement ), Qgis::LayoutUnit::Pixels );
45 }
46
47 //will never be reached, but required to prevent warnings
48 return QgsLayoutMeasurement( convertToMillimeters( measurement ), Qgis::LayoutUnit::Millimeters );
49}
50
52{
53 if ( size.units() == targetUnits )
54 {
55 return size;
56 }
57
58 QgsLayoutSize result( size );
59 result.setUnits( targetUnits );
60 const QgsLayoutMeasurement width = QgsLayoutMeasurement( size.width(), size.units() );
61 const QgsLayoutMeasurement height = QgsLayoutMeasurement( size.height(), size.units() );
62 switch ( targetUnits )
63 {
65 result.setSize( convertToMillimeters( width ), convertToMillimeters( height ) );
66 break;
68 result.setSize( convertToCentimeters( width ), convertToCentimeters( height ) );
69 break;
71 result.setSize( convertToMeters( width ), convertToMeters( height ) );
72 break;
74 result.setSize( convertToInches( width ), convertToInches( height ) );
75 break;
77 result.setSize( convertToFeet( width ), convertToFeet( height ) );
78 break;
80 result.setSize( convertToPoints( width ), convertToPoints( height ) );
81 break;
83 result.setSize( convertToPicas( width ), convertToPicas( height ) );
84 break;
86 result.setSize( convertToPixels( width ), convertToPixels( height ) );
87 break;
88 }
89 return result;
90}
91
93{
94 if ( point.units() == targetUnits )
95 {
96 return point;
97 }
98
99 QgsLayoutPoint result( point );
100 result.setUnits( targetUnits );
101 const QgsLayoutMeasurement x = QgsLayoutMeasurement( point.x(), point.units() );
102 const QgsLayoutMeasurement y = QgsLayoutMeasurement( point.y(), point.units() );
103 switch ( targetUnits )
104 {
106 result.setPoint( convertToMillimeters( x ), convertToMillimeters( y ) );
107 break;
109 result.setPoint( convertToCentimeters( x ), convertToCentimeters( y ) );
110 break;
112 result.setPoint( convertToMeters( x ), convertToMeters( y ) );
113 break;
115 result.setPoint( convertToInches( x ), convertToInches( y ) );
116 break;
118 result.setPoint( convertToFeet( x ), convertToFeet( y ) );
119 break;
121 result.setPoint( convertToPoints( x ), convertToPoints( y ) );
122 break;
124 result.setPoint( convertToPicas( x ), convertToPicas( y ) );
125 break;
127 result.setPoint( convertToPixels( x ), convertToPixels( y ) );
128 break;
129 }
130 return result;
131}
132
133double QgsLayoutMeasurementConverter::convertToMillimeters( const QgsLayoutMeasurement measurement ) const
134{
135 switch ( measurement.units() )
136 {
138 return measurement.length();
140 return measurement.length() * 10.0;
142 return measurement.length() * 1000.0;
144 return measurement.length() * 25.4;
146 return measurement.length() * 304.8;
148 return measurement.length() * 0.352777778;
150 return measurement.length() * 4.23333333;
152 return measurement.length() * 25.4 / mDpi;
153 }
154
155 //will never be reached, but required to prevent warnings
156 return measurement.length();
157}
158
159double QgsLayoutMeasurementConverter::convertToCentimeters( const QgsLayoutMeasurement measurement ) const
160{
161 return convertToMillimeters( measurement ) / 10.0;
162}
163
164double QgsLayoutMeasurementConverter::convertToMeters( const QgsLayoutMeasurement measurement ) const
165{
166 return convertToMillimeters( measurement ) / 1000.0;
167}
168
169double QgsLayoutMeasurementConverter::convertToInches( const QgsLayoutMeasurement measurement ) const
170{
171 return convertToMillimeters( measurement ) / 25.4;
172}
173
174double QgsLayoutMeasurementConverter::convertToFeet( const QgsLayoutMeasurement measurement ) const
175{
176 return convertToMillimeters( measurement ) / 304.8;
177}
178
179double QgsLayoutMeasurementConverter::convertToPoints( const QgsLayoutMeasurement measurement ) const
180{
181 return convertToMillimeters( measurement ) * 2.83464567;
182}
183
184double QgsLayoutMeasurementConverter::convertToPicas( const QgsLayoutMeasurement measurement ) const
185{
186 return convertToMillimeters( measurement ) * 0.236220472;
187}
188
189double QgsLayoutMeasurementConverter::convertToPixels( const QgsLayoutMeasurement measurement ) const
190{
191 return convertToMillimeters( measurement ) * mDpi / 25.4;
192}
LayoutUnit
Layout measurement units.
Definition qgis.h:5203
@ Feet
Feet.
Definition qgis.h:5208
@ Centimeters
Centimeters.
Definition qgis.h:5205
@ Millimeters
Millimeters.
Definition qgis.h:5204
@ Points
Typographic points.
Definition qgis.h:5209
@ Meters
Meters.
Definition qgis.h:5206
@ Picas
Typographic picas.
Definition qgis.h:5210
@ Pixels
Pixels.
Definition qgis.h:5211
@ Inches
Inches.
Definition qgis.h:5207
QgsLayoutMeasurement convert(QgsLayoutMeasurement measurement, Qgis::LayoutUnit targetUnits) const
Converts a measurement from one unit to another.
Provides a method of storing measurements for use in QGIS layouts using a variety of different measur...
Qgis::LayoutUnit units() const
Returns the units for the measurement.
double length() const
Returns the length of the measurement.
Provides a method of storing points, consisting of an x and y coordinate, for use in QGIS layouts.
double x() const
Returns x coordinate of point.
void setUnits(const Qgis::LayoutUnit units)
Sets the units for the point.
double y() const
Returns y coordinate of point.
Qgis::LayoutUnit units() const
Returns the units for the point.
void setPoint(const double x, const double y)
Sets new x and y coordinates for the point.
Provides a method of storing sizes, consisting of a width and height, for use in QGIS layouts.
void setUnits(const Qgis::LayoutUnit units)
Sets the units for the size.
void setSize(const double width, const double height)
Sets new width and height for the size.
double height() const
Returns the height of the size.
Qgis::LayoutUnit units() const
Returns the units for the size.
double width() const
Returns the width of the size.