QGIS API Documentation
2.2.0-Valmiera
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
src
core
symbology-ng
qgssymbollayerv2registry.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgssymbollayerv2registry.cpp
3
---------------------
4
begin : November 2009
5
copyright : (C) 2009 by Martin Dobias
6
email : wonder dot sk at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgssymbollayerv2registry.h
"
17
18
#include "
qgsellipsesymbollayerv2.h
"
19
#include "
qgsmarkersymbollayerv2.h
"
20
#include "
qgslinesymbollayerv2.h
"
21
#include "
qgsfillsymbollayerv2.h
"
22
#include "
qgsvectorfieldsymbollayer.h
"
23
24
QgsSymbolLayerV2Registry::QgsSymbolLayerV2Registry
()
25
{
26
// init registry with known symbol layers
27
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleLine"
,
QObject::tr
(
"Simple line"
),
QgsSymbolV2::Line
,
28
QgsSimpleLineSymbolLayerV2::create
,
QgsSimpleLineSymbolLayerV2::createFromSld
) );
29
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"MarkerLine"
,
QObject::tr
(
"Marker line"
),
QgsSymbolV2::Line
,
30
QgsMarkerLineSymbolLayerV2::create
,
QgsMarkerLineSymbolLayerV2::createFromSld
) );
31
32
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleMarker"
,
QObject::tr
(
"Simple marker"
),
QgsSymbolV2::Marker
,
33
QgsSimpleMarkerSymbolLayerV2::create
,
QgsSimpleMarkerSymbolLayerV2::createFromSld
) );
34
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SvgMarker"
,
QObject::tr
(
"SVG marker"
),
QgsSymbolV2::Marker
,
35
QgsSvgMarkerSymbolLayerV2::create
,
QgsSvgMarkerSymbolLayerV2::createFromSld
) );
36
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"FontMarker"
,
QObject::tr
(
"Font marker"
),
QgsSymbolV2::Marker
,
37
QgsFontMarkerSymbolLayerV2::create
,
QgsFontMarkerSymbolLayerV2::createFromSld
) );
38
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"EllipseMarker"
,
QObject::tr
(
"Ellipse marker"
),
QgsSymbolV2::Marker
,
39
QgsEllipseSymbolLayerV2::create
,
QgsEllipseSymbolLayerV2::createFromSld
) );
40
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"VectorField"
,
QObject::tr
(
"Vector Field marker"
),
QgsSymbolV2::Marker
,
41
QgsVectorFieldSymbolLayer::create
) );
42
43
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleFill"
,
QObject::tr
(
"Simple fill"
),
QgsSymbolV2::Fill
,
44
QgsSimpleFillSymbolLayerV2::create
,
QgsSimpleFillSymbolLayerV2::createFromSld
) );
45
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"GradientFill"
,
QObject::tr
(
"Gradient fill"
),
QgsSymbolV2::Fill
,
46
QgsGradientFillSymbolLayerV2::create
) );
47
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SVGFill"
,
QObject::tr
(
"SVG fill"
),
QgsSymbolV2::Fill
,
48
QgsSVGFillSymbolLayer::create
,
QgsSVGFillSymbolLayer::createFromSld
) );
49
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"CentroidFill"
,
QObject::tr
(
"Centroid fill"
),
QgsSymbolV2::Fill
,
50
QgsCentroidFillSymbolLayerV2::create
,
QgsCentroidFillSymbolLayerV2::createFromSld
) );
51
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"LinePatternFill"
,
QObject::tr
(
"Line pattern fill"
),
QgsSymbolV2::Fill
,
52
QgsLinePatternFillSymbolLayer::create
,
QgsLinePatternFillSymbolLayer::createFromSld
) );
53
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"PointPatternFill"
,
QObject::tr
(
"Point pattern fill"
),
QgsSymbolV2::Fill
,
54
QgsPointPatternFillSymbolLayer::create
,
QgsPointPatternFillSymbolLayer::createFromSld
) );
55
}
56
57
QgsSymbolLayerV2Registry::~QgsSymbolLayerV2Registry
()
58
{
59
foreach
( QString name,
mMetadata
.keys() )
60
{
61
delete
mMetadata
[name];
62
}
63
mMetadata
.clear();
64
}
65
66
bool
QgsSymbolLayerV2Registry::addSymbolLayerType
(
QgsSymbolLayerV2AbstractMetadata
* metadata )
67
{
68
if
( metadata == NULL ||
mMetadata
.contains( metadata->
name
() ) )
69
return
false
;
70
71
mMetadata
[metadata->
name
()] = metadata;
72
return
true
;
73
}
74
75
76
QgsSymbolLayerV2AbstractMetadata
*
QgsSymbolLayerV2Registry::symbolLayerMetadata
( QString name )
const
77
{
78
if
(
mMetadata
.contains( name ) )
79
return
mMetadata
.value( name );
80
else
81
return
NULL;
82
}
83
84
QgsSymbolLayerV2Registry
*
QgsSymbolLayerV2Registry::instance
()
85
{
86
static
QgsSymbolLayerV2Registry
mInstance;
87
return
&mInstance;
88
}
89
90
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::defaultSymbolLayer
(
QgsSymbolV2::SymbolType
type )
91
{
92
switch
( type )
93
{
94
case
QgsSymbolV2::Marker
:
95
return
QgsSimpleMarkerSymbolLayerV2::create
();
96
97
case
QgsSymbolV2::Line
:
98
return
QgsSimpleLineSymbolLayerV2::create
();
99
100
case
QgsSymbolV2::Fill
:
101
return
QgsSimpleFillSymbolLayerV2::create
();
102
}
103
return
NULL;
104
}
105
106
107
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::createSymbolLayer
( QString name,
const
QgsStringMap
& properties )
const
108
{
109
if
( !
mMetadata
.contains( name ) )
110
return
NULL;
111
112
return
mMetadata
[name]->createSymbolLayer( properties );
113
}
114
115
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::createSymbolLayerFromSld
( QString name, QDomElement& element )
const
116
{
117
if
( !
mMetadata
.contains( name ) )
118
return
NULL;
119
120
return
mMetadata
[name]->createSymbolLayerFromSld( element );
121
}
122
123
QStringList
QgsSymbolLayerV2Registry::symbolLayersForType
(
QgsSymbolV2::SymbolType
type )
124
{
125
QStringList lst;
126
QMap<QString, QgsSymbolLayerV2AbstractMetadata*>::ConstIterator it =
mMetadata
.begin();
127
for
( ; it !=
mMetadata
.end(); ++it )
128
{
129
if
(( *it )->type() == type )
130
lst.append( it.key() );
131
}
132
return
lst;
133
}
Generated on Sun Feb 23 2014 14:27:20 for QGIS API Documentation by
1.8.1.2