QGIS API Documentation  3.10.0-A Coruña (6c816b4204)
qgsscalebarsettings.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsscalebarsettings.h
3  ---------------------
4  begin : April 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 
17 #ifndef QGSSCALEBARSETTINGS_H
18 #define QGSSCALEBARSETTINGS_H
19 
20 #include "qgis_core.h"
21 #include "qgis.h"
22 #include "qgsunittypes.h"
23 #include "qgstextrenderer.h"
24 #include <QColor>
25 #include <QFont>
26 #include <QPen>
27 #include <QBrush>
28 
36 class CORE_EXPORT QgsScaleBarSettings
37 {
38  public:
39 
43  enum Alignment
44  {
45  AlignLeft = 0,
48  };
49 
54  {
55  SegmentSizeFixed = 0,
56  SegmentSizeFitWidth = 1
57  };
58 
63  {
64  LabelAboveSegment = 0,
66  };
67 
72  {
73  LabelCenteredEdge = 0,
75  };
76 
81  {
82  mPen = QPen( mLineColor );
83  mPen.setJoinStyle( mLineJoinStyle );
84  mPen.setCapStyle( mLineCapStyle );
85  mPen.setWidthF( mLineWidth );
86 
87  mBrush.setColor( mFillColor );
88  mBrush.setStyle( Qt::SolidPattern );
89 
90  mBrush2.setColor( mFillColor2 );
91  mBrush2.setStyle( Qt::SolidPattern );
92 
93  mTextFormat.setSize( 12.0 );
94  mTextFormat.setSizeUnit( QgsUnitTypes::RenderPoints );
95  mTextFormat.setColor( QColor( 0, 0, 0 ) );
96  }
97 
103  int numberOfSegments() const { return mNumSegments; }
104 
110  void setNumberOfSegments( int segments ) { mNumSegments = segments; }
111 
117  int numberOfSegmentsLeft() const { return mNumSegmentsLeft; }
118 
124  void setNumberOfSegmentsLeft( int segments ) { mNumSegmentsLeft = segments; }
125 
130  double unitsPerSegment() const { return mNumUnitsPerSegment; }
131 
136  void setUnitsPerSegment( double units ) { mNumUnitsPerSegment = units; }
137 
144  SegmentSizeMode segmentSizeMode() const { return mSegmentSizeMode; }
145 
152  void setSegmentSizeMode( SegmentSizeMode mode ) { mSegmentSizeMode = mode; }
153 
162  double minimumBarWidth() const { return mMinBarWidth; }
163 
172  void setMinimumBarWidth( double width ) { mMinBarWidth = width; }
173 
182  double maximumBarWidth() const { return mMaxBarWidth; }
183 
192  void setMaximumBarWidth( double width ) { mMaxBarWidth = width; }
193 
198  QgsUnitTypes::DistanceUnit units() const { return mUnits; }
199 
204  void setUnits( QgsUnitTypes::DistanceUnit units ) { mUnits = units; }
205 
210  double mapUnitsPerScaleBarUnit() const { return mNumMapUnitsPerScaleBarUnit; }
211 
216  void setMapUnitsPerScaleBarUnit( double units ) { mNumMapUnitsPerScaleBarUnit = units; }
217 
222  QString unitLabel() const { return mUnitLabeling; }
223 
228  void setUnitLabel( const QString &label ) { mUnitLabeling = label; }
229 
235  QgsTextFormat &textFormat() { return mTextFormat; }
236 
242  QgsTextFormat textFormat() const SIP_SKIP { return mTextFormat; }
243 
249  void setTextFormat( const QgsTextFormat &format ) { mTextFormat = format; }
250 
256  Q_DECL_DEPRECATED QFont font() const SIP_DEPRECATED { return mTextFormat.font(); }
257 
263  Q_DECL_DEPRECATED void setFont( const QFont &font ) SIP_DEPRECATED
264  {
265  mTextFormat.setFont( font );
266  if ( font.pointSizeF() > 0 )
267  {
268  mTextFormat.setSize( font.pointSizeF() );
269  mTextFormat.setSizeUnit( QgsUnitTypes::RenderPoints );
270  }
271  else if ( font.pixelSize() > 0 )
272  {
273  mTextFormat.setSize( font.pixelSize() );
274  mTextFormat.setSizeUnit( QgsUnitTypes::RenderPixels );
275  }
276  }
277 
284  Q_DECL_DEPRECATED QColor fontColor() const SIP_DEPRECATED { return mTextFormat.color(); }
285 
292  Q_DECL_DEPRECATED void setFontColor( const QColor &color ) SIP_DEPRECATED { mTextFormat.setColor( color ); }
293 
299  QColor fillColor() const { return mFillColor; }
300 
306  void setFillColor( const QColor &color ) { mFillColor = color; mBrush.setColor( color ); }
307 
313  QColor fillColor2() const {return mFillColor2;}
314 
320  void setFillColor2( const QColor &color ) { mFillColor2 = color; mBrush2.setColor( color ); }
321 
326  QColor lineColor() const { return mLineColor; }
327 
332  void setLineColor( const QColor &color ) { mLineColor = color; mPen.setColor( mLineColor ); }
333 
338  double lineWidth() const { return mLineWidth; }
339 
344  void setLineWidth( double width ) { mLineWidth = width; mPen.setWidthF( width ); }
345 
351  QPen pen() const { return mPen; }
352 
357  void setPen( const QPen &pen ) { mPen = pen; }
358 
365  QBrush brush() const { return mBrush; }
366 
371  void setBrush( const QBrush &brush ) { mBrush = brush; }
372 
379  QBrush brush2() const { return mBrush2; }
380 
385  void setBrush2( const QBrush &brush ) { mBrush2 = brush; }
386 
391  double height() const { return mHeight; }
392 
397  void setHeight( double height ) { mHeight = height; }
398 
403  double labelBarSpace() const { return mLabelBarSpace; }
404 
409  void setLabelBarSpace( double space ) { mLabelBarSpace = space; }
410 
416  LabelVerticalPlacement labelVerticalPlacement() const { return mLabelVerticalPlacement; }
417 
423  void setLabelVerticalPlacement( LabelVerticalPlacement placement ) { mLabelVerticalPlacement = placement; }
424 
430  LabelHorizontalPlacement labelHorizontalPlacement() const { return mLabelHorizontalPlacement; }
431 
437  void setLabelHorizontalPlacement( LabelHorizontalPlacement placement ) { mLabelHorizontalPlacement = placement; }
438 
443  double boxContentSpace() const { return mBoxContentSpace; }
444 
449  void setBoxContentSpace( double space ) { mBoxContentSpace = space; }
450 
455  Alignment alignment() const { return mAlignment; }
456 
461  void setAlignment( Alignment alignment ) { mAlignment = alignment; }
462 
467  Qt::PenJoinStyle lineJoinStyle() const { return mLineJoinStyle; }
468 
473  void setLineJoinStyle( Qt::PenJoinStyle style ) { mLineJoinStyle = style; mPen.setJoinStyle( style ); }
474 
479  Qt::PenCapStyle lineCapStyle() const { return mLineCapStyle; }
480 
485  void setLineCapStyle( Qt::PenCapStyle style ) { mLineCapStyle = style; mPen.setCapStyle( style ); }
486 
487  private:
488 
490  int mNumSegments = 2;
492  int mNumSegmentsLeft = 0;
494  double mNumUnitsPerSegment = 0;
496  double mNumMapUnitsPerScaleBarUnit = 1.0;
498  SegmentSizeMode mSegmentSizeMode = SegmentSizeFixed;
500  double mMinBarWidth = 50.0;
502  double mMaxBarWidth = 150.0;
503 
505  QString mUnitLabeling;
506 
508  QgsTextFormat mTextFormat;
509 
511  QColor mFillColor = QColor( 0, 0, 0 );
513  QColor mFillColor2 = QColor( 255, 255, 255 );
515  QColor mLineColor = QColor( 0, 0, 0 );
517  double mLineWidth = 0.3;
519  QPen mPen;
521  QBrush mBrush;
523  QBrush mBrush2;
525  double mHeight = 3.0;
526 
528  double mLabelBarSpace = 3.0;
530  LabelVerticalPlacement mLabelVerticalPlacement = LabelAboveSegment;
532  LabelHorizontalPlacement mLabelHorizontalPlacement = LabelCenteredEdge;
533 
535  double mBoxContentSpace = 1.0;
536 
537  Alignment mAlignment = AlignLeft;
538 
540 
541  Qt::PenJoinStyle mLineJoinStyle = Qt::MiterJoin;
542  Qt::PenCapStyle mLineCapStyle = Qt::SquareCap;
543 
544 };
545 
546 #endif // QGSSCALEBARSETTINGS_H
547 
void setMinimumBarWidth(double width)
Sets the minimum width (in millimeters) for scale bar segments.
double mapUnitsPerScaleBarUnit() const
Returns the number of map units per scale bar unit used by the scalebar.
QBrush brush() const
Returns the primary brush used for filling the scalebar.
void setLineColor(const QColor &color)
Sets the color used for lines in the scalebar.
QString unitLabel() const
Returns the label for units.
QgsTextFormat textFormat() const
Returns the text format used for drawing text in the scalebar.
QPen pen() const
Returns the pen used for drawing outlines in the scalebar.
LabelVerticalPlacement
Label vertical placement.
Alignment alignment() const
Returns the scalebar alignment.
void setPen(const QPen &pen)
Sets the pen used for drawing outlines in the scalebar.
QColor fillColor2() const
Returns the secondary color used for fills in the scalebar.
SegmentSizeMode segmentSizeMode() const
Returns the size mode for the scale bar segments.
void setLabelVerticalPlacement(LabelVerticalPlacement placement)
Sets the vertical placement of text labels.
double lineWidth() const
Returns the line width in millimeters for lines in the scalebar.
Alignment
Scalebar alignment.
QColor lineColor() const
Returns the color used for lines in the scalebar.
Q_DECL_DEPRECATED QFont font() const
Returns the font used for drawing text in the scalebar.
LabelHorizontalPlacement
Label horizontal placement.
QColor fillColor() const
Returns the color used for fills in the scalebar.
double height() const
Returns the scalebar height (in millimeters).
LabelVerticalPlacement labelVerticalPlacement() const
Returns the vertical placement of text labels.
void setFillColor(const QColor &color)
Sets the color used for fills in the scalebar.
int numberOfSegments() const
Returns the number of segments included in the scalebar.
double minimumBarWidth() const
Returns the minimum width (in millimeters) for scale bar segments.
void setLineCapStyle(Qt::PenCapStyle style)
Sets the cap style used when drawing the lines in the scalebar.
void setMapUnitsPerScaleBarUnit(double units)
Sets the number of map units per scale bar unit used by the scalebar.
#define SIP_SKIP
Definition: qgis_sip.h:126
void setAlignment(Alignment alignment)
Sets the scalebar alignment.
QgsUnitTypes::DistanceUnit units() const
Returns the distance units used by the scalebar.
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.
void setMaximumBarWidth(double width)
Sets the maximum width (in millimeters) for scale bar segments.
void setBoxContentSpace(double space)
Sets the space (margin) between the scalebar box and content in millimeters.
void setUnitsPerSegment(double units)
Sets the number of scalebar units per segment.
void setSegmentSizeMode(SegmentSizeMode mode)
Sets the size mode for scale bar segments.
void setFillColor2(const QColor &color)
Sets the secondary color used for fills in the scalebar.
SegmentSizeMode
Modes for setting size for scale bar segments.
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
LabelHorizontalPlacement labelHorizontalPlacement() const
Returns the horizontal placement of text labels.
QgsScaleBarSettings()
Constructor for QgsScaleBarSettings.
double maximumBarWidth() const
Returns the maximum width (in millimeters) for scale bar segments.
QgsTextFormat & textFormat()
Returns the text format used for drawing text in the scalebar.
DistanceUnit
Units of distance.
Definition: qgsunittypes.h:66
void setHeight(double height)
Sets the scalebar height (in millimeters).
Q_DECL_DEPRECATED QColor fontColor() const
Returns the color used for drawing text in the scalebar.
Points (e.g., for font sizes)
Definition: qgsunittypes.h:151
Q_DECL_DEPRECATED void setFontColor(const QColor &color)
Sets the color used for drawing text in the scalebar.
void setLineJoinStyle(Qt::PenJoinStyle style)
Sets the join style used when drawing the lines in the scalebar.
void setLineWidth(double width)
Sets the line width in millimeters for lines in the scalebar.
void setLabelBarSpace(double space)
Sets the spacing (in millimeters) between labels and the scalebar.
Labels are drawn centered relative to segment.
void setLabelHorizontalPlacement(LabelHorizontalPlacement placement)
Sets the horizontal placement of text labels.
void setBrush2(const QBrush &brush)
Sets the secondary brush used for filling the scalebar.
double unitsPerSegment() const
Returns the number of scalebar units per segment.
Qt::PenCapStyle lineCapStyle() const
Returns the cap style used for drawing lines in the scalebar.
void setNumberOfSegmentsLeft(int segments)
Sets the number of segments included in the left part of the scalebar.
QBrush brush2() const
Returns the secondary brush for the scalebar.
void setTextFormat(const QgsTextFormat &format)
Sets the text format used for drawing text in the scalebar.
Container for all settings relating to text rendering.
Qt::PenJoinStyle lineJoinStyle() const
Returns the join style used for drawing lines in the scalebar.
int numberOfSegmentsLeft() const
Returns the number of segments included in the left part of the scalebar.
void setUnits(QgsUnitTypes::DistanceUnit units)
Sets the distance units used by the scalebar.
Labels are drawn below the scalebar.
void setBrush(const QBrush &brush)
Sets the primary brush used for filling the scalebar.
Q_DECL_DEPRECATED void setFont(const QFont &font)
Sets the font used for drawing text in the scalebar.
void setUnitLabel(const QString &label)
Sets the label for units.
void setNumberOfSegments(int segments)
Sets the number of segments included in the scalebar.
The QgsScaleBarSettings class stores the appearance and layout settings for scalebar drawing with Qgs...