QGIS API Documentation  3.0.2-Girona (307d082)
qgslayoutitemscalebar.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayoutitemscalebar.h
3  ------------------------
4  begin : November 2017
5  copyright : (C) 2017 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 #ifndef QGSLAYOUTITEMSCALEBAR_H
17 #define QGSLAYOUTITEMSCALEBAR_H
18 
19 #include "qgis_core.h"
20 #include "qgis.h"
21 #include "qgslayoutitem.h"
24 #include <QFont>
25 #include <QPen>
26 #include <QColor>
27 
28 class QgsLayoutItemMap;
29 
35 class CORE_EXPORT QgsLayoutItemScaleBar: public QgsLayoutItem
36 {
37  Q_OBJECT
38 
39  public:
40 
45 
46  int type() const override;
47  QIcon icon() const override;
48 
54  static QgsLayoutItemScaleBar *create( QgsLayout *layout ) SIP_FACTORY;
55  QgsLayoutSize minimumSize() const override;
56 
62  int numberOfSegments() const { return mSettings.numberOfSegments(); }
63 
69  void setNumberOfSegments( int segments );
70 
76  int numberOfSegmentsLeft() const { return mSettings.numberOfSegmentsLeft(); }
77 
83  void setNumberOfSegmentsLeft( int segments );
84 
89  double unitsPerSegment() const { return mSettings.unitsPerSegment(); }
90 
95  void setUnitsPerSegment( double units );
96 
103  QgsScaleBarSettings::SegmentSizeMode segmentSizeMode() const { return mSettings.segmentSizeMode(); }
104 
111  void setSegmentSizeMode( QgsScaleBarSettings::SegmentSizeMode mode );
112 
121  double minimumBarWidth() const { return mSettings.minimumBarWidth(); }
122 
131  void setMinimumBarWidth( double minWidth );
132 
141  double maximumBarWidth() const { return mSettings.maximumBarWidth(); }
142 
151  void setMaximumBarWidth( double maxWidth );
152 
157  double mapUnitsPerScaleBarUnit() const { return mSettings.mapUnitsPerScaleBarUnit(); }
158 
163  void setMapUnitsPerScaleBarUnit( double units ) { mSettings.setMapUnitsPerScaleBarUnit( units ); }
164 
169  QString unitLabel() const { return mSettings.unitLabel(); }
170 
175  void setUnitLabel( const QString &label ) { mSettings.setUnitLabel( label );}
176 
181  QFont font() const;
182 
187  void setFont( const QFont &font );
188 
194  QColor fontColor() const { return mSettings.fontColor(); }
195 
201  void setFontColor( const QColor &color ) { mSettings.setFontColor( color ); }
202 
208  QColor fillColor() const { return mSettings.fillColor(); }
209 
215  void setFillColor( const QColor &color ) { mSettings.setFillColor( color ); }
216 
222  QColor fillColor2() const { return mSettings.fillColor2(); }
223 
229  void setFillColor2( const QColor &color ) { mSettings.setFillColor2( color ); }
230 
235  QColor lineColor() const { return mSettings.lineColor(); }
236 
241  void setLineColor( const QColor &color ) { mSettings.setLineColor( color ); }
242 
247  double lineWidth() const { return mSettings.lineWidth(); }
248 
253  void setLineWidth( double width ) { mSettings.setLineWidth( width ); }
254 
260  QPen pen() const { return mSettings.pen(); }
261 
269  QBrush brush() const {return mSettings.brush();}
270 
278  QBrush brush2() const {return mSettings.brush2(); }
279 
284  double height() const { return mSettings.height(); }
285 
290  void setHeight( double height ) { mSettings.setHeight( height ); }
291 
296  void setLinkedMap( QgsLayoutItemMap *map );
297 
302  QgsLayoutItemMap *linkedMap() const { return mMap; }
303 
308  double labelBarSpace() const { return mSettings.labelBarSpace(); }
309 
314  void setLabelBarSpace( double space ) {mSettings.setLabelBarSpace( space );}
315 
320  double boxContentSpace() const { return mSettings.boxContentSpace(); }
321 
326  void setBoxContentSpace( double space );
327 
332  QgsScaleBarSettings::Alignment alignment() const { return mSettings.alignment(); }
333 
338  void setAlignment( QgsScaleBarSettings::Alignment alignment );
339 
344  QgsUnitTypes::DistanceUnit units() const { return mSettings.units(); }
345 
350  void setUnits( QgsUnitTypes::DistanceUnit units );
351 
356  Qt::PenJoinStyle lineJoinStyle() const { return mSettings.lineJoinStyle(); }
357 
362  void setLineJoinStyle( Qt::PenJoinStyle style );
363 
368  Qt::PenCapStyle lineCapStyle() const { return mSettings.lineCapStyle(); }
369 
374  void setLineCapStyle( Qt::PenCapStyle style );
375 
380  void applyDefaultSettings();
381 
389  QgsUnitTypes::DistanceUnit guessUnits() const;
390 
395  void applyDefaultSize( QgsUnitTypes::DistanceUnit units = QgsUnitTypes::DistanceMeters );
396 
400  void resizeToMinimumWidth();
401 
411  void setStyle( const QString &name );
412 
417  QString style() const;
418 
422  void update();
423 
425  void finalizeRestoreFromXml() override;
426  protected:
427 
428  void draw( QgsLayoutItemRenderContext &context ) override;
429  bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
430  bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
431 
432  private slots:
433  void updateScale();
434  void disconnectCurrentMap();
435 
436  private:
437 
439  QgsLayoutItemMap *mMap = nullptr;
440  QString mMapUuid;
441 
442  QgsScaleBarSettings mSettings;
443 
445  std::unique_ptr< QgsScaleBarRenderer > mStyle;
446 
448  double mSegmentMillimeters = 0.0;
449 
451  void refreshSegmentMillimeters();
452 
454  double mapWidth() const;
455 
456  QgsScaleBarRenderer::ScaleBarContext createScaleContext() const;
457 
459 
460 };
461 
462 #endif //QGSLAYOUTITEMSCALEBAR_H
463 
464 
The class is used as a container of context for various read/write operations on other objects...
virtual QIcon icon() const
Returns the item&#39;s icon.
void setLineWidth(double width)
Sets the line width in millimeters for lines in the scalebar.
Base class for graphical items within a QgsLayout.
int type() const override
Returns a unique graphics item type identifier.
QColor fillColor2() const
Returns the secondary color used for fills in the scalebar.
void setFontColor(const QColor &color)
Sets the color used for drawing text in the scalebar.
QgsScaleBarSettings::Alignment alignment() const
Returns the scalebar alignment.
Alignment
Scalebar alignment.
QBrush brush() const
Returns the primary brush for the scalebar.
void setHeight(double height)
Sets the scalebar height (in millimeters).
void setLineColor(const QColor &color)
Sets the color used for lines in the scalebar.
QColor lineColor() const
Returns the color used for lines in the scalebar.
void setFillColor(const QColor &color)
Sets the color used for fills in the scalebar.
Qt::PenCapStyle lineCapStyle() const
Returns the cap style used for drawing lines in the scalebar.
Layout graphical items for displaying a map.
int numberOfSegments() const
Returns the number of segments included in the scalebar.
virtual QgsLayoutSize minimumSize() const
Returns the minimum allowed size of the item, if applicable, or an empty size if item can be freely r...
virtual bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
double height() const
Returns the scalebar height (in millimeters).
void setMapUnitsPerScaleBarUnit(double units)
Sets the number of map units per scale bar unit used by the scalebar.
QString unitLabel() const
Returns the label for units.
QColor fillColor() const
Returns the color used for fills in the scalebar.
QBrush brush2() const
Returns the secondary brush for the scalebar.
Qt::PenJoinStyle lineJoinStyle() const
Returns the join style used for drawing lines in the scalebar.
QPen pen() const
Returns the pen used for drawing outlines in the scalebar.
double unitsPerSegment() const
Returns the number of scalebar units per segment.
#define SIP_FACTORY
Definition: qgis_sip.h:69
void setUnitLabel(const QString &label)
Sets the label for units.
void setFillColor2(const QColor &color)
Sets the secondary color used for fills in the scalebar.
SegmentSizeMode
Modes for setting size for scale bar segments.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
double lineWidth() const
Returns the line width in millimeters for lines in the scalebar.
QgsLayoutItemMap * linkedMap() const
Returns the map item linked to the scalebar.
Contains settings and helpers relating to a render of a QgsLayoutItem.
Definition: qgslayoutitem.h:43
DistanceUnit
Units of distance.
Definition: qgsunittypes.h:43
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
QgsScaleBarSettings::SegmentSizeMode segmentSizeMode() const
Returns the size mode for the scale bar segments.
QgsCompositionConverter class converts a QGIS 2.x composition to a QGIS 3.x layout.
double boxContentSpace() const
Returns the spacing (margin) between the scalebar box and content in millimeters. ...
double labelBarSpace() const
Returns the spacing (in millimeters) between labels and the scalebar.
int numberOfSegmentsLeft() const
Returns the number of segments included in the left part of the scalebar.
virtual bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Stores item state within an XML DOM element.
virtual void refreshDataDefinedProperty(const QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::AllProperties)
Refreshes a data defined property for the item by reevaluating the property&#39;s value and redrawing the...
double maximumBarWidth() const
Returns the maximum width (in millimeters) for scale bar segments.
A layout item subclass for scale bars.
double minimumBarWidth() const
Returns the minimum width (in millimeters) for scale bar segments.
QColor fontColor() const
Returns the color used for drawing text in the scalebar.
virtual void draw(QgsLayoutItemRenderContext &context)=0
Draws the item&#39;s contents using the specified item render context.
This class provides a method of storing sizes, consisting of a width and height, for use in QGIS layo...
Definition: qgslayoutsize.h:40
DataDefinedProperty
Data defined properties for different item types.
QgsUnitTypes::DistanceUnit units() const
Returns the distance units used by the scalebar.
double mapUnitsPerScaleBarUnit() const
Returns the number of map units per scale bar unit used by the scalebar.
All properties for item.
The QgsScaleBarSettings class stores the appearance and layout settings for scalebar drawing with Qgs...
void setLabelBarSpace(double space)
Sets the spacing (in millimeters) between labels and the scalebar.
Contains parameters regarding scalebar calculations.