Branch data Line data Source code
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 "qgstextformat.h" 24 : : #include <QColor> 25 : : #include <QFont> 26 : : #include <QPen> 27 : : #include <QBrush> 28 : : 29 : : class QgsNumericFormat; 30 : : class QgsLineSymbol; 31 : : class QgsFillSymbol; 32 : : 33 : : /** 34 : : * \class QgsScaleBarSettings 35 : : * \ingroup core 36 : : * \brief The QgsScaleBarSettings class stores the appearance and layout settings 37 : : * for scalebar drawing with QgsScaleBarRenderer. 38 : : * \since QGIS 3.0 39 : : */ 40 : : class CORE_EXPORT QgsScaleBarSettings 41 : : { 42 : : public: 43 : : 44 : : /** 45 : : * Scalebar alignment. 46 : : */ 47 : : enum Alignment 48 : : { 49 : : AlignLeft = 0, //!< Left aligned 50 : : AlignMiddle, //!< Center aligned 51 : : AlignRight, //!< Right aligned 52 : : }; 53 : : 54 : : /** 55 : : * Modes for setting size for scale bar segments. 56 : : */ 57 : : enum SegmentSizeMode 58 : : { 59 : : SegmentSizeFixed = 0, //!< Scale bar segment size is fixed to a map unit 60 : : SegmentSizeFitWidth = 1 //!< Scale bar segment size is calculated to fit a size range 61 : : }; 62 : : 63 : : /** 64 : : * Label vertical placement. 65 : : */ 66 : : enum LabelVerticalPlacement 67 : : { 68 : : LabelAboveSegment = 0, //!< Labels are drawn above the scalebar 69 : : LabelBelowSegment, //!< Labels are drawn below the scalebar 70 : : }; 71 : : 72 : : /** 73 : : * Label horizontal placement. 74 : : */ 75 : : enum LabelHorizontalPlacement 76 : : { 77 : : LabelCenteredEdge = 0, //!< Labels are drawn centered relative to segment's edge 78 : : LabelCenteredSegment, //!< Labels are drawn centered relative to segment 79 : : }; 80 : : 81 : : /** 82 : : * Constructor for QgsScaleBarSettings. 83 : : */ 84 : : QgsScaleBarSettings(); 85 : : 86 : : ~QgsScaleBarSettings(); 87 : : 88 : : /** 89 : : * Copy constructor 90 : : */ 91 : : QgsScaleBarSettings( const QgsScaleBarSettings &other ); 92 : : 93 : : QgsScaleBarSettings &operator=( const QgsScaleBarSettings &other ); 94 : : 95 : : /** 96 : : * Returns the number of segments included in the scalebar. 97 : : * \see setNumberOfSegments() 98 : : * \see numberOfSegmentsLeft() 99 : : */ 100 : 0 : int numberOfSegments() const { return mNumSegments; } 101 : : 102 : : /** 103 : : * Sets the number of \a segments included in the scalebar. 104 : : * \see numberOfSegments() 105 : : * \see setNumberOfSegmentsLeft() 106 : : */ 107 : 0 : void setNumberOfSegments( int segments ) { mNumSegments = segments; } 108 : : 109 : : /** 110 : : * Returns the number of segments included in the left part of the scalebar. 111 : : * \see setNumberOfSegmentsLeft() 112 : : * \see numberOfSegments() 113 : : */ 114 : 0 : int numberOfSegmentsLeft() const { return mNumSegmentsLeft; } 115 : : 116 : : /** 117 : : * Sets the number of \a segments included in the left part of the scalebar. 118 : : * \see numberOfSegmentsLeft() 119 : : * \see setNumberOfSegments() 120 : : */ 121 : 0 : void setNumberOfSegmentsLeft( int segments ) { mNumSegmentsLeft = segments; } 122 : : 123 : : /** 124 : : * Returns the number of subdivisions for segments included in the right part of the scalebar (only used for some scalebar types). 125 : : * 126 : : * \note The number of subdivisions represents the number of subdivision segments, not the number of subdivision lines. E.g. 127 : : * if the number is 1 then NO subdivision lines will be shown. 128 : : * 129 : : * \see setNumberOfSubdivisions() 130 : : * \since QGIS 3.14 131 : : */ 132 : 0 : int numberOfSubdivisions() const { return mNumSubdivisions; } 133 : : 134 : : /** 135 : : * Sets the number of \a subdivisions for segments included in the right part of the scalebar (only used for some scalebar types). 136 : : * 137 : : * \note The number of subdivisions represents the number of subdivision segments, not the number of subdivision lines. E.g. 138 : : * if the number is 1 then NO subdivision lines will be shown. 139 : : * 140 : : * \see numberOfSubdivisions() 141 : : * \since QGIS 3.14 142 : : */ 143 : 0 : void setNumberOfSubdivisions( int subdivisions ) { mNumSubdivisions = subdivisions; } 144 : : 145 : : /** 146 : : * Returns the scalebar subdivisions height (in millimeters) for segments included in the right part of the scalebar (only used for some scalebar types). 147 : : * \see setSubdivisionsHeight() 148 : : * \since QGIS 3.14 149 : : */ 150 : 0 : double subdivisionsHeight() const { return mSubdivisionsHeight; } 151 : : 152 : : /** 153 : : * Sets the scalebar subdivisions \a height (in millimeters) for segments included in the right part of the scalebar (only used for some scalebar types). 154 : : * \see subdivisionsHeight() 155 : : * \since QGIS 3.14 156 : : */ 157 : 0 : void setSubdivisionsHeight( double height ) { mSubdivisionsHeight = height; } 158 : : 159 : : /** 160 : : * Returns the number of scalebar units per segment. 161 : : * \see setUnitsPerSegment() 162 : : */ 163 : 0 : double unitsPerSegment() const { return mNumUnitsPerSegment; } 164 : : 165 : : /** 166 : : * Sets the number of scalebar \a units per segment. 167 : : * \see unitsPerSegment() 168 : : */ 169 : 0 : void setUnitsPerSegment( double units ) { mNumUnitsPerSegment = units; } 170 : : 171 : : /** 172 : : * Returns the size mode for the scale bar segments. 173 : : * \see setSegmentSizeMode() 174 : : * \see minimumBarWidth() 175 : : * \see maximumBarWidth() 176 : : */ 177 : 0 : SegmentSizeMode segmentSizeMode() const { return mSegmentSizeMode; } 178 : : 179 : : /** 180 : : * Sets the size \a mode for scale bar segments. 181 : : * \see segmentSizeMode() 182 : : * \see setMinimumBarWidth() 183 : : * \see setMaximumBarWidth() 184 : : */ 185 : 0 : void setSegmentSizeMode( SegmentSizeMode mode ) { mSegmentSizeMode = mode; } 186 : : 187 : : /** 188 : : * Returns the minimum width (in millimeters) for scale bar segments. This 189 : : * property is only effective if the segmentSizeMode() is set 190 : : * to SegmentSizeFitWidth. 191 : : * \see segmentSizeMode() 192 : : * \see setMinimumBarWidth() 193 : : * \see maximumBarWidth() 194 : : */ 195 : 0 : double minimumBarWidth() const { return mMinBarWidth; } 196 : : 197 : : /** 198 : : * Sets the minimum \a width (in millimeters) for scale bar segments. This 199 : : * property is only effective if the segmentSizeMode() is set 200 : : * to SegmentSizeFitWidth. 201 : : * \see minimumBarWidth() 202 : : * \see setMaximumBarWidth() 203 : : * \see setSegmentSizeMode() 204 : : */ 205 : 0 : void setMinimumBarWidth( double width ) { mMinBarWidth = width; } 206 : : 207 : : /** 208 : : * Returns the maximum width (in millimeters) for scale bar segments. This 209 : : * property is only effective if the segmentSizeMode() is set 210 : : * to SegmentSizeFitWidth. 211 : : * \see segmentSizeMode() 212 : : * \see setMaximumBarWidth() 213 : : * \see minimumBarWidth() 214 : : */ 215 : 0 : double maximumBarWidth() const { return mMaxBarWidth; } 216 : : 217 : : /** 218 : : * Sets the maximum \a width (in millimeters) for scale bar segments. This 219 : : * property is only effective if the segmentSizeMode() is set 220 : : * to SegmentSizeFitWidth. 221 : : * \see minimumBarWidth() 222 : : * \see setMinimumBarWidth() 223 : : * \see setSegmentSizeMode() 224 : : */ 225 : 0 : void setMaximumBarWidth( double width ) { mMaxBarWidth = width; } 226 : : 227 : : /** 228 : : * Returns the distance units used by the scalebar. 229 : : * \see setUnits() 230 : : */ 231 : 0 : QgsUnitTypes::DistanceUnit units() const { return mUnits; } 232 : : 233 : : /** 234 : : * Sets the distance \a units used by the scalebar. 235 : : * \see units() 236 : : */ 237 : 0 : void setUnits( QgsUnitTypes::DistanceUnit units ) { mUnits = units; } 238 : : 239 : : /** 240 : : * Returns the number of map units per scale bar unit used by the scalebar. 241 : : * \see setMapUnitsPerScaleBarUnit() 242 : : */ 243 : 0 : double mapUnitsPerScaleBarUnit() const { return mNumMapUnitsPerScaleBarUnit; } 244 : : 245 : : /** 246 : : * Sets the number of map \a units per scale bar unit used by the scalebar. 247 : : * \see mapUnitsPerScaleBarUnit() 248 : : */ 249 : 0 : void setMapUnitsPerScaleBarUnit( double units ) { mNumMapUnitsPerScaleBarUnit = units; } 250 : : 251 : : /** 252 : : * Returns the label for units. 253 : : * \see setUnitLabel() 254 : : */ 255 : 0 : QString unitLabel() const { return mUnitLabeling; } 256 : : 257 : : /** 258 : : * Sets the \a label for units. 259 : : * \see unitLabel() 260 : : */ 261 : 0 : void setUnitLabel( const QString &label ) { mUnitLabeling = label; } 262 : : 263 : : /** 264 : : * Returns the text format used for drawing text in the scalebar. 265 : : * \see setTextFormat() 266 : : * \since QGIS 3.2 267 : : */ 268 : 0 : QgsTextFormat &textFormat() { return mTextFormat; } 269 : : 270 : : /** 271 : : * Returns the text format used for drawing text in the scalebar. 272 : : * \see setTextFormat() 273 : : * \since QGIS 3.2 274 : : */ 275 : 0 : QgsTextFormat textFormat() const SIP_SKIP { return mTextFormat; } 276 : : 277 : : /** 278 : : * Sets the text \a format used for drawing text in the scalebar. 279 : : * \see textFormat() 280 : : * \since QGIS 3.2 281 : : */ 282 : 0 : void setTextFormat( const QgsTextFormat &format ) { mTextFormat = format; } 283 : : 284 : : /** 285 : : * Returns the font used for drawing text in the scalebar. 286 : : * \see setFont() 287 : : * \deprecated use textFormat() instead 288 : : */ 289 : 0 : Q_DECL_DEPRECATED QFont font() const SIP_DEPRECATED { return mTextFormat.font(); } 290 : : 291 : : /** 292 : : * Sets the \a font used for drawing text in the scalebar. 293 : : * \see font() 294 : : * \deprecated use setTextFormat() instead 295 : : */ 296 : 0 : Q_DECL_DEPRECATED void setFont( const QFont &font ) SIP_DEPRECATED 297 : : { 298 : 0 : mTextFormat.setFont( font ); 299 : 0 : if ( font.pointSizeF() > 0 ) 300 : : { 301 : 0 : mTextFormat.setSize( font.pointSizeF() ); 302 : 0 : mTextFormat.setSizeUnit( QgsUnitTypes::RenderPoints ); 303 : 0 : } 304 : 0 : else if ( font.pixelSize() > 0 ) 305 : : { 306 : 0 : mTextFormat.setSize( font.pixelSize() ); 307 : 0 : mTextFormat.setSizeUnit( QgsUnitTypes::RenderPixels ); 308 : 0 : } 309 : 0 : } 310 : : 311 : : /** 312 : : * Returns the color used for drawing text in the scalebar. 313 : : * \see setFontColor() 314 : : * \see font() 315 : : * \deprecated use textFormat() instead 316 : : */ 317 : : Q_DECL_DEPRECATED QColor fontColor() const SIP_DEPRECATED { return mTextFormat.color(); } 318 : : 319 : : /** 320 : : * Sets the \a color used for drawing text in the scalebar. 321 : : * \see fontColor() 322 : : * \see setFont() 323 : : * \deprecated use textFormat() instead 324 : : */ 325 : : Q_DECL_DEPRECATED void setFontColor( const QColor &color ) SIP_DEPRECATED { mTextFormat.setColor( color ); } 326 : : 327 : : /** 328 : : * Returns the color used for fills in the scalebar. 329 : : * \see setFillColor() 330 : : * \see fillColor2() 331 : : * \deprecated use fillSymbol() instead. 332 : : */ 333 : : Q_DECL_DEPRECATED QColor fillColor() const SIP_DEPRECATED; 334 : : 335 : : /** 336 : : * Sets the \a color used for fills in the scalebar. 337 : : * \see fillColor() 338 : : * \see setFillColor2() 339 : : * \deprecated use setFillSymbol() instead. 340 : : */ 341 : : Q_DECL_DEPRECATED void setFillColor( const QColor &color ) SIP_DEPRECATED; 342 : : 343 : : /** 344 : : * Returns the secondary color used for fills in the scalebar. 345 : : * \see setFillColor2() 346 : : * \see fillColor() 347 : : * \deprecated use alternateFillSymbol() instead 348 : : */ 349 : : Q_DECL_DEPRECATED QColor fillColor2() const SIP_DEPRECATED; 350 : : 351 : : /** 352 : : * Sets the secondary \a color used for fills in the scalebar. 353 : : * \see fillColor2() 354 : : * \see setFillColor2() 355 : : * \deprecated use setAlternateFillSymbol() instead. 356 : : */ 357 : : Q_DECL_DEPRECATED void setFillColor2( const QColor &color ) SIP_DEPRECATED; 358 : : 359 : : /** 360 : : * Returns the color used for lines in the scalebar. 361 : : * \see setLineColor() 362 : : * \deprecated use lineSymbol() instead. 363 : : */ 364 : : Q_DECL_DEPRECATED QColor lineColor() const SIP_DEPRECATED; 365 : : 366 : : /** 367 : : * Sets the \a color used for lines in the scalebar. 368 : : * \see lineColor() 369 : : * \deprecated use setLineSymbol() instead. 370 : : */ 371 : : Q_DECL_DEPRECATED void setLineColor( const QColor &color ) SIP_DEPRECATED; 372 : : 373 : : /** 374 : : * Returns the line width in millimeters for lines in the scalebar. 375 : : * \see setLineWidth() 376 : : * \deprecated use lineSymbol() instead. 377 : : */ 378 : : Q_DECL_DEPRECATED double lineWidth() const SIP_DEPRECATED; 379 : : 380 : : /** 381 : : * Sets the line \a width in millimeters for lines in the scalebar. 382 : : * \see lineWidth() 383 : : * \deprecated use setLineSymbol() instead. 384 : : */ 385 : : Q_DECL_DEPRECATED void setLineWidth( double width ) SIP_DEPRECATED; 386 : : 387 : : /** 388 : : * Returns the pen used for drawing outlines in the scalebar. 389 : : * \see setPen() 390 : : * \see brush() 391 : : * \deprecated use lineSymbol() instead. 392 : : */ 393 : : Q_DECL_DEPRECATED QPen pen() const SIP_DEPRECATED; 394 : : 395 : : /** 396 : : * Sets the pen used for drawing outlines in the scalebar. 397 : : * \see pen() 398 : : * \deprecated use setLineSymbol() instead. 399 : : */ 400 : : Q_DECL_DEPRECATED void setPen( const QPen &pen ) SIP_DEPRECATED; 401 : : 402 : : /** 403 : : * Returns the line symbol used to render the scalebar (only used for some scalebar types). 404 : : * 405 : : * Ownership is not transferred. 406 : : * 407 : : * \see setLineSymbol() 408 : : * \see divisionLineSymbol() 409 : : * \see subdivisionLineSymbol() 410 : : * \since QGIS 3.14 411 : : */ 412 : : QgsLineSymbol *lineSymbol() const; 413 : : 414 : : /** 415 : : * Sets the line \a symbol used to render the scalebar (only used for some scalebar types). Ownership of \a symbol is 416 : : * transferred to the scalebar. 417 : : * 418 : : * \see lineSymbol() 419 : : * \see setDivisionLineSymbol() 420 : : * \see setSubdivisionLineSymbol() 421 : : * \since QGIS 3.14 422 : : */ 423 : : void setLineSymbol( QgsLineSymbol *symbol SIP_TRANSFER ); 424 : : 425 : : /** 426 : : * Returns the line symbol used to render the scalebar divisions (only used for some scalebar types). 427 : : * 428 : : * Ownership is not transferred. 429 : : * 430 : : * \see setDivisionLineSymbol() 431 : : * \see lineSymbol() 432 : : * \see subdivisionLineSymbol() 433 : : * \since QGIS 3.14 434 : : */ 435 : : QgsLineSymbol *divisionLineSymbol() const; 436 : : 437 : : /** 438 : : * Sets the line \a symbol used to render the scalebar divisions (only used for some scalebar types). Ownership of \a symbol is 439 : : * transferred to the scalebar. 440 : : * 441 : : * \see divisionLineSymbol() 442 : : * \see setLineSymbol() 443 : : * \see setSubdivisionLineSymbol() 444 : : * \since QGIS 3.14 445 : : */ 446 : : void setDivisionLineSymbol( QgsLineSymbol *symbol SIP_TRANSFER ); 447 : : 448 : : /** 449 : : * Returns the line symbol used to render the scalebar subdivisions (only used for some scalebar types). 450 : : * 451 : : * Ownership is not transferred. 452 : : * 453 : : * \see setSubdivisionLineSymbol() 454 : : * \see lineSymbol() 455 : : * \see divisionLineSymbol() 456 : : * \since QGIS 3.14 457 : : */ 458 : : QgsLineSymbol *subdivisionLineSymbol() const; 459 : : 460 : : /** 461 : : * Sets the line \a symbol used to render the scalebar subdivisions (only used for some scalebar types). Ownership of \a symbol is 462 : : * transferred to the scalebar. 463 : : * 464 : : * \see subdivisionLineSymbol() 465 : : * \see setLineSymbol() 466 : : * \see setDivisionLineSymbol() 467 : : * \since QGIS 3.14 468 : : */ 469 : : void setSubdivisionLineSymbol( QgsLineSymbol *symbol SIP_TRANSFER ); 470 : : 471 : : /** 472 : : * Returns the primary fill symbol used to render the scalebar (only used for some scalebar types). 473 : : * 474 : : * Ownership is not transferred. 475 : : * 476 : : * \see setFillSymbol() 477 : : * \see alternateFillSymbol() 478 : : * \since QGIS 3.14 479 : : */ 480 : : QgsFillSymbol *fillSymbol() const; 481 : : 482 : : /** 483 : : * Sets the primary fill \a symbol used to render the scalebar (only used for some scalebar types). Ownership of \a symbol is 484 : : * transferred to the scalebar. 485 : : * 486 : : * \see fillSymbol() 487 : : * \see setAlternateFillSymbol() 488 : : * \since QGIS 3.14 489 : : */ 490 : : void setFillSymbol( QgsFillSymbol *symbol SIP_TRANSFER ); 491 : : 492 : : 493 : : /** 494 : : * Returns the secondary fill symbol used to render the scalebar (only used for some scalebar types). 495 : : * 496 : : * Ownership is not transferred. 497 : : * 498 : : * \see setAlternateFillSymbol() 499 : : * \see fillSymbol() 500 : : * \since QGIS 3.14 501 : : */ 502 : : QgsFillSymbol *alternateFillSymbol() const; 503 : : 504 : : /** 505 : : * Sets the secondary fill \a symbol used to render the scalebar (only used for some scalebar types). Ownership of \a symbol is 506 : : * transferred to the scalebar. 507 : : * 508 : : * \see alternateFillSymbol() 509 : : * \see setFillSymbol() 510 : : * \since QGIS 3.14 511 : : */ 512 : : void setAlternateFillSymbol( QgsFillSymbol *symbol SIP_TRANSFER ); 513 : : 514 : : /** 515 : : * Returns the primary brush used for filling the scalebar. 516 : : * \see setBrush() 517 : : * \see brush2() 518 : : * \see pen() 519 : : * \deprecated use fillSymbol() instead 520 : : */ 521 : : Q_DECL_DEPRECATED QBrush brush() const SIP_DEPRECATED; 522 : : 523 : : /** 524 : : * Sets the primary brush used for filling the scalebar. 525 : : * \see brush() 526 : : * \deprecated use setFillSymbol() instead 527 : : */ 528 : : Q_DECL_DEPRECATED void setBrush( const QBrush &brush ) SIP_DEPRECATED; 529 : : 530 : : /** 531 : : * Returns the secondary brush for the scalebar. This is used for alternating color style scalebars, such 532 : : * as single and double box styles. 533 : : * \see setBrush2() 534 : : * \see brush() 535 : : * \deprecated use alternateFillSymbol() instead 536 : : */ 537 : : Q_DECL_DEPRECATED QBrush brush2() const SIP_DEPRECATED; 538 : : 539 : : /** 540 : : * Sets the secondary brush used for filling the scalebar. 541 : : * \see brush() 542 : : * \deprecated use setAlternateFillSymbol() instead 543 : : */ 544 : : Q_DECL_DEPRECATED void setBrush2( const QBrush &brush ) SIP_DEPRECATED; 545 : : 546 : : /** 547 : : * Returns the scalebar height (in millimeters). 548 : : * \see setHeight() 549 : : */ 550 : 0 : double height() const { return mHeight; } 551 : : 552 : : /** 553 : : * Sets the scalebar \a height (in millimeters). 554 : : * \see height() 555 : : */ 556 : 0 : void setHeight( double height ) { mHeight = height; } 557 : : 558 : : /** 559 : : * Returns the spacing (in millimeters) between labels and the scalebar. 560 : : * \see setLabelBarSpace() 561 : : */ 562 : 0 : double labelBarSpace() const { return mLabelBarSpace; } 563 : : 564 : : /** 565 : : * Sets the spacing (in millimeters) between labels and the scalebar. 566 : : * \see labelBarSpace() 567 : : */ 568 : 0 : void setLabelBarSpace( double space ) { mLabelBarSpace = space; } 569 : : 570 : : /** 571 : : * Returns the vertical placement of text labels. 572 : : * \see setLabelVerticalPlacement() 573 : : * \since QGIS 3.10 574 : : */ 575 : 0 : LabelVerticalPlacement labelVerticalPlacement() const { return mLabelVerticalPlacement; } 576 : : 577 : : /** 578 : : * Sets the vertical \a placement of text labels. 579 : : * \see labelVerticalPlacement() 580 : : * \since QGIS 3.10 581 : : */ 582 : 0 : void setLabelVerticalPlacement( LabelVerticalPlacement placement ) { mLabelVerticalPlacement = placement; } 583 : : 584 : : /** 585 : : * Returns the horizontal placement of text labels. 586 : : * \see setLabelHorizontalPlacement() 587 : : * \since QGIS 3.10 588 : : */ 589 : 0 : LabelHorizontalPlacement labelHorizontalPlacement() const { return mLabelHorizontalPlacement; } 590 : : 591 : : /** 592 : : * Sets the horizontal \a placement of text labels. 593 : : * \see labelHorizontalPlacement() 594 : : * \since QGIS 3.10 595 : : */ 596 : 0 : void setLabelHorizontalPlacement( LabelHorizontalPlacement placement ) { mLabelHorizontalPlacement = placement; } 597 : : 598 : : /** 599 : : * Returns the spacing (margin) between the scalebar box and content in millimeters. 600 : : * \see setBoxContentSpace() 601 : : */ 602 : 0 : double boxContentSpace() const { return mBoxContentSpace; } 603 : : 604 : : /** 605 : : * Sets the \a space (margin) between the scalebar box and content in millimeters. 606 : : * \see boxContentSpace() 607 : : */ 608 : 0 : void setBoxContentSpace( double space ) { mBoxContentSpace = space; } 609 : : 610 : : /** 611 : : * Returns the scalebar alignment. 612 : : * \see setAlignment() 613 : : */ 614 : 0 : Alignment alignment() const { return mAlignment; } 615 : : 616 : : /** 617 : : * Sets the scalebar \a alignment. 618 : : * \see alignment() 619 : : */ 620 : 0 : void setAlignment( Alignment alignment ) { mAlignment = alignment; } 621 : : 622 : : /** 623 : : * Returns the join style used for drawing lines in the scalebar. 624 : : * \see setLineJoinStyle() 625 : : * \deprecated use lineSymbol() instead 626 : : */ 627 : : Q_DECL_DEPRECATED Qt::PenJoinStyle lineJoinStyle() const SIP_DEPRECATED; 628 : : 629 : : /** 630 : : * Sets the join \a style used when drawing the lines in the scalebar 631 : : * \see lineJoinStyle() 632 : : * \deprecated use setLineSymbol() instead 633 : : */ 634 : : Q_DECL_DEPRECATED void setLineJoinStyle( Qt::PenJoinStyle style ) SIP_DEPRECATED; 635 : : 636 : : /** 637 : : * Returns the cap style used for drawing lines in the scalebar. 638 : : * \see setLineCapStyle() 639 : : * \deprecated use lineSymbol() instead 640 : : */ 641 : : Q_DECL_DEPRECATED Qt::PenCapStyle lineCapStyle() const SIP_DEPRECATED; 642 : : 643 : : /** 644 : : * Sets the cap \a style used when drawing the lines in the scalebar. 645 : : * \see lineCapStyle() 646 : : * \deprecated use setLineSymbol() instead 647 : : */ 648 : : Q_DECL_DEPRECATED void setLineCapStyle( Qt::PenCapStyle style ) SIP_DEPRECATED; 649 : : 650 : : /** 651 : : * Returns the numeric format used for numbers in the scalebar. 652 : : * 653 : : * \see setNumericFormat() 654 : : * \since QGIS 3.12 655 : : */ 656 : : const QgsNumericFormat *numericFormat() const; 657 : : 658 : : /** 659 : : * Sets the numeric \a format used for numbers in the scalebar. 660 : : * 661 : : * Ownership of \a format is transferred to the settings. 662 : : * 663 : : * \see numericFormat() 664 : : * \since QGIS 3.12 665 : : */ 666 : : void setNumericFormat( QgsNumericFormat *format SIP_TRANSFER ); 667 : : 668 : : private: 669 : : 670 : : //! Number of segments on right side 671 : : int mNumSegments = 2; 672 : : //! Number of segments on left side 673 : : int mNumSegmentsLeft = 0; 674 : : //! Number of subdivisions on right side 675 : : int mNumSubdivisions = 1; 676 : : //! Height of subdivisions on right side 677 : : double mSubdivisionsHeight = 1.5; 678 : : //! Size of a segment (in map units) 679 : : double mNumUnitsPerSegment = 0; 680 : : //! Number of map units per scale bar units (e.g. 1000 to have km for a map with m units) 681 : : double mNumMapUnitsPerScaleBarUnit = 1.0; 682 : : //! Either fixed (i.e. mNumUnitsPerSegment) or try to best fit scale bar width (mMinBarWidth, mMaxBarWidth) 683 : : SegmentSizeMode mSegmentSizeMode = SegmentSizeFixed; 684 : : //! Minimum allowed bar width, when mSegmentSizeMode is FitWidth 685 : : double mMinBarWidth = 50.0; 686 : : //! Maximum allowed bar width, when mSegmentSizeMode is FitWidth 687 : : double mMaxBarWidth = 150.0; 688 : : 689 : : //! Labeling of map units 690 : : QString mUnitLabeling; 691 : : 692 : : //! Text format 693 : : QgsTextFormat mTextFormat; 694 : : 695 : : //! Height of bars/lines 696 : : double mHeight = 3.0; 697 : : 698 : : std::unique_ptr< QgsLineSymbol > mLineSymbol; 699 : : std::unique_ptr< QgsLineSymbol > mDivisionLineSymbol; 700 : : std::unique_ptr< QgsLineSymbol > mSubdivisionLineSymbol; 701 : : std::unique_ptr< QgsFillSymbol > mFillSymbol; 702 : : std::unique_ptr< QgsFillSymbol > mAlternateFillSymbol; 703 : : 704 : : //! Space between bar and Text labels 705 : : double mLabelBarSpace = 3.0; 706 : : //! Label's vertical placement 707 : : LabelVerticalPlacement mLabelVerticalPlacement = LabelAboveSegment; 708 : : //! Label's horizontal placement 709 : : LabelHorizontalPlacement mLabelHorizontalPlacement = LabelCenteredEdge; 710 : : 711 : : //! Space between content and item box 712 : : double mBoxContentSpace = 1.0; 713 : : 714 : : Alignment mAlignment = AlignLeft; 715 : : 716 : : QgsUnitTypes::DistanceUnit mUnits = QgsUnitTypes::DistanceMeters; 717 : : 718 : : 719 : : std::unique_ptr< QgsNumericFormat > mNumericFormat; 720 : : 721 : : }; 722 : : 723 : : #endif // QGSSCALEBARSETTINGS_H 724 : :