QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
scalebar
qgsscalebarrendererregistry.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsscalebarrendererregistry.cpp
3
-----------------------
4
begin : March 2020
5
copyright : (C) 2020 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
#include "
qgsscalebarrendererregistry.h
"
18
19
#include "
qgsdoubleboxscalebarrenderer.h
"
20
#include "
qgshollowscalebarrenderer.h
"
21
#include "
qgsnumericscalebarrenderer.h
"
22
#include "
qgsscalebarrenderer.h
"
23
#include "
qgssingleboxscalebarrenderer.h
"
24
#include "
qgssteppedlinescalebarrenderer.h
"
25
#include "
qgsticksscalebarrenderer.h
"
26
27
QgsScaleBarRendererRegistry::QgsScaleBarRendererRegistry
()
28
{
29
addRenderer
(
new
QgsDoubleBoxScaleBarRenderer
() );
30
addRenderer
(
new
QgsNumericScaleBarRenderer
() );
31
addRenderer
(
new
QgsSingleBoxScaleBarRenderer
() );
32
addRenderer
(
new
QgsTicksScaleBarRenderer
(
QgsTicksScaleBarRenderer::TicksUp
) );
33
addRenderer
(
new
QgsTicksScaleBarRenderer
(
QgsTicksScaleBarRenderer::TicksDown
) );
34
addRenderer
(
new
QgsTicksScaleBarRenderer
(
QgsTicksScaleBarRenderer::TicksMiddle
) );
35
addRenderer
(
new
QgsSteppedLineScaleBarRenderer
() );
36
addRenderer
(
new
QgsHollowScaleBarRenderer
() );
37
}
38
39
QgsScaleBarRendererRegistry::~QgsScaleBarRendererRegistry
()
40
{
41
qDeleteAll( mRenderers );
42
}
43
44
QStringList
QgsScaleBarRendererRegistry::renderers
()
const
45
{
46
return
mRenderers.keys();
47
}
48
49
QStringList
QgsScaleBarRendererRegistry::sortedRendererList
()
const
50
{
51
QStringList ids = mRenderers.keys();
52
53
std::sort( ids.begin(), ids.end(), [
this
](
const
QString &a,
const
QString &b ) ->
bool
{
54
if ( sortKey( a ) < sortKey( b ) )
55
return true;
56
else if ( sortKey( a ) > sortKey( b ) )
57
return false;
58
else
59
{
60
const int res = QString::localeAwareCompare( visibleName( a ), visibleName( b ) );
61
if ( res < 0 )
62
return true;
63
else if ( res > 0 )
64
return false;
65
}
66
return
false
;
67
} );
68
return
ids;
69
}
70
71
void
QgsScaleBarRendererRegistry::addRenderer
(
QgsScaleBarRenderer
*
renderer
)
72
{
73
if
( !
renderer
)
74
return
;
75
76
mRenderers.insert(
renderer
->id(),
renderer
);
77
}
78
79
void
QgsScaleBarRendererRegistry::removeRenderer
(
const
QString &
id
)
80
{
81
if
(
QgsScaleBarRenderer
*
renderer
= mRenderers.take(
id
) )
82
{
83
delete
renderer
;
84
}
85
}
86
87
QgsScaleBarRenderer
*
QgsScaleBarRendererRegistry::renderer
(
const
QString &
id
)
const
88
{
89
if
( mRenderers.contains(
id
) )
90
return
mRenderers.value(
id
)->
clone
();
91
92
return
nullptr
;
93
}
94
95
QString
QgsScaleBarRendererRegistry::visibleName
(
const
QString &
id
)
const
96
{
97
if
( mRenderers.contains(
id
) )
98
return
mRenderers.value(
id
)->
visibleName
();
99
100
return
QString();
101
}
102
103
int
QgsScaleBarRendererRegistry::sortKey
(
const
QString &
id
)
const
104
{
105
if
( mRenderers.contains(
id
) )
106
return
mRenderers.value(
id
)->sortKey();
107
108
return
0;
109
}
QgsDoubleBoxScaleBarRenderer
Double box with alternating colors.
Definition
qgsdoubleboxscalebarrenderer.h:31
QgsHollowScaleBarRenderer
Scalebar style that draws a single box with alternating color for the segments, with horizontal lines...
Definition
qgshollowscalebarrenderer.h:35
QgsNumericScaleBarRenderer
A scale bar style that draws text in the form of '1:XXXXX'.
Definition
qgsnumericscalebarrenderer.h:31
QgsScaleBarRendererRegistry::addRenderer
void addRenderer(QgsScaleBarRenderer *renderer)
Adds a new renderer to the registry.
Definition
qgsscalebarrendererregistry.cpp:71
QgsScaleBarRendererRegistry::sortedRendererList
QStringList sortedRendererList() const
Returns a list of the renderer ids currently contained in the registry, sorted in an order respecting...
Definition
qgsscalebarrendererregistry.cpp:49
QgsScaleBarRendererRegistry::renderers
QStringList renderers() const
Returns a list of the renderer ids currently contained in the registry.
Definition
qgsscalebarrendererregistry.cpp:44
QgsScaleBarRendererRegistry::sortKey
int sortKey(const QString &id) const
Returns the sorting key for the renderer with matching id.
Definition
qgsscalebarrendererregistry.cpp:103
QgsScaleBarRendererRegistry::visibleName
QString visibleName(const QString &id) const
Returns the translated, user-visible name for the renderer with matching id.
Definition
qgsscalebarrendererregistry.cpp:95
QgsScaleBarRendererRegistry::QgsScaleBarRendererRegistry
QgsScaleBarRendererRegistry()
You should not normally need to create your own scalebar renderer registry.
Definition
qgsscalebarrendererregistry.cpp:27
QgsScaleBarRendererRegistry::renderer
QgsScaleBarRenderer * renderer(const QString &id) const
Creates a new scalebar renderer by id.
Definition
qgsscalebarrendererregistry.cpp:87
QgsScaleBarRendererRegistry::removeRenderer
void removeRenderer(const QString &id)
Removes the renderer with matching id from the registry.
Definition
qgsscalebarrendererregistry.cpp:79
QgsScaleBarRendererRegistry::~QgsScaleBarRendererRegistry
~QgsScaleBarRendererRegistry()
Definition
qgsscalebarrendererregistry.cpp:39
QgsScaleBarRenderer
Abstract base class for scale bar renderers.
Definition
qgsscalebarrenderer.h:39
QgsScaleBarRenderer::visibleName
virtual QString visibleName() const =0
Returns the user friendly, translated name for the renderer.
QgsScaleBarRenderer::clone
virtual QgsScaleBarRenderer * clone() const =0
Returns a clone of the renderer.
QgsSingleBoxScaleBarRenderer
Scalebar style that draws a single box with alternating color for the segments.
Definition
qgssingleboxscalebarrenderer.h:32
QgsSteppedLineScaleBarRenderer
Scalebar style that draws a stepped line representation of a scalebar.
Definition
qgssteppedlinescalebarrenderer.h:32
QgsTicksScaleBarRenderer
A scale bar that draws segments using short ticks.
Definition
qgsticksscalebarrenderer.h:29
QgsTicksScaleBarRenderer::TicksUp
@ TicksUp
Render ticks above line.
Definition
qgsticksscalebarrenderer.h:34
QgsTicksScaleBarRenderer::TicksMiddle
@ TicksMiddle
Render ticks crossing line.
Definition
qgsticksscalebarrenderer.h:36
QgsTicksScaleBarRenderer::TicksDown
@ TicksDown
Render ticks below line.
Definition
qgsticksscalebarrenderer.h:35
qgsdoubleboxscalebarrenderer.h
qgshollowscalebarrenderer.h
qgsnumericscalebarrenderer.h
qgsscalebarrenderer.h
qgsscalebarrendererregistry.h
qgssingleboxscalebarrenderer.h
qgssteppedlinescalebarrenderer.h
qgsticksscalebarrenderer.h
Generated on
for QGIS API Documentation by
1.17.0