QGIS API Documentation  2.99.0-Master (90ae728)
qgscomposerutils.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposerutils.h
3  -------------------
4  begin : July 2014
5  copyright : (C) 2014 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 #ifndef QGSCOMPOSERUTILS_H
18 #define QGSCOMPOSERUTILS_H
19 
20 #include "qgis_core.h"
21 #include "qgscomposition.h" //for page size and orientation enums
22 #include "qgsrendercontext.h"
23 #include <QPointF>
24 #include <QRectF>
25 
26 class QPainter;
27 
31 class CORE_EXPORT QgsComposerUtils
32 {
33  public:
34 
43  static void drawArrowHead( QPainter* p, const double x, const double y, const double angle, const double arrowHeadWidth );
44 
51  static double angle( QPointF p1, QPointF p2 );
52 
58  static void rotate( const double angle, double& x, double& y );
59 
65  static double normalizedAngle( const double angle );
66 
71  static double snappedAngle( const double angle );
72 
80  static QRectF largestRotatedRectWithinBounds( const QRectF &originalRect, const QRectF &boundsRect, const double rotation );
81 
86  static double pointsToMM( const double pointSize );
87 
92  static double mmToPoints( const double mmSize );
93 
101  static void relativeResizeRect( QRectF &rectToResize, const QRectF &boundsBefore, const QRectF &boundsAfter );
102 
111  static double relativePosition( const double position, const double beforeMin, const double beforeMax, const double afterMin, const double afterMax );
112 
118  static QgsComposition::PaperOrientation decodePaperOrientation( const QString& orientationString, bool &ok );
119 
126  static bool decodePresetPaperSize( const QString& presetString, double &width, double &height );
127 
133  static void readOldDataDefinedPropertyMap( const QDomElement &itemElem,
134  QgsPropertyCollection& dataDefinedProperties );
135 
140  static QgsProperty readOldDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property, const QDomElement &ddElem );
141 
148  static QFont scaledFontPixelSize( const QFont& font );
149 
159  static double fontAscentMM( const QFont& font );
160 
170  static double fontDescentMM( const QFont& font );
171 
182  static double fontHeightMM( const QFont& font );
183 
195  static double fontHeightCharacterMM( const QFont& font, QChar character );
196 
209  static double textWidthMM( const QFont& font, const QString& text );
210 
221  static double textHeightMM( const QFont& font, const QString& text, double multiLineHeight = 1.0 );
222 
232  static void drawText( QPainter* painter, QPointF pos, const QString& text, const QFont& font, const QColor& color = QColor() );
233 
246  static void drawText( QPainter* painter, const QRectF& rect, const QString& text, const QFont& font, const QColor& color = QColor(), const Qt::AlignmentFlag halignment = Qt::AlignLeft, const Qt::AlignmentFlag valignment = Qt::AlignTop, const int flags = Qt::TextWordWrap );
247 
256  static QgsRenderContext createRenderContextForMap( QgsComposerMap* map, QPainter* painter, double dpi = -1 );
257 
265  static QgsRenderContext createRenderContextForComposition( QgsComposition* composition, QPainter* painter );
266 
267 };
268 
269 #endif
DataDefinedProperty
Data defined properties for different item types.
A store for object properties.
Definition: qgsproperty.h:186
Graphics scene for map printing.
Object representing map window.
Contains information about the context of a rendering operation.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
double ANALYSIS_EXPORT angle(Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
Definition: MathUtils.cc:857
Utilities for compositions.