QGIS API Documentation
2.0.1-Dufour
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::mInstance
= NULL;
25
26
QgsSymbolLayerV2Registry::QgsSymbolLayerV2Registry
()
27
{
28
// init registry with known symbol layers
29
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleLine"
,
QObject::tr
(
"Simple line"
),
QgsSymbolV2::Line
,
30
QgsSimpleLineSymbolLayerV2::create
,
QgsSimpleLineSymbolLayerV2::createFromSld
) );
31
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"MarkerLine"
,
QObject::tr
(
"Marker line"
),
QgsSymbolV2::Line
,
32
QgsMarkerLineSymbolLayerV2::create
,
QgsMarkerLineSymbolLayerV2::createFromSld
) );
33
34
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleMarker"
,
QObject::tr
(
"Simple marker"
),
QgsSymbolV2::Marker
,
35
QgsSimpleMarkerSymbolLayerV2::create
,
QgsSimpleMarkerSymbolLayerV2::createFromSld
) );
36
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SvgMarker"
,
QObject::tr
(
"SVG marker"
),
QgsSymbolV2::Marker
,
37
QgsSvgMarkerSymbolLayerV2::create
,
QgsSvgMarkerSymbolLayerV2::createFromSld
) );
38
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"FontMarker"
,
QObject::tr
(
"Font marker"
),
QgsSymbolV2::Marker
,
39
QgsFontMarkerSymbolLayerV2::create
,
QgsFontMarkerSymbolLayerV2::createFromSld
) );
40
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"EllipseMarker"
,
QObject::tr
(
"Ellipse marker"
),
QgsSymbolV2::Marker
,
41
QgsEllipseSymbolLayerV2::create
,
QgsEllipseSymbolLayerV2::createFromSld
) );
42
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"VectorField"
,
QObject::tr
(
"Vector Field marker"
),
QgsSymbolV2::Marker
,
43
QgsVectorFieldSymbolLayer::create
) );
44
45
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleFill"
,
QObject::tr
(
"Simple fill"
),
QgsSymbolV2::Fill
,
46
QgsSimpleFillSymbolLayerV2::create
,
QgsSimpleFillSymbolLayerV2::createFromSld
) );
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
if
( !
mInstance
)
87
mInstance
=
new
QgsSymbolLayerV2Registry
();
88
return
mInstance
;
89
}
90
91
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::defaultSymbolLayer
(
QgsSymbolV2::SymbolType
type )
92
{
93
switch
( type )
94
{
95
case
QgsSymbolV2::Marker
:
96
return
QgsSimpleMarkerSymbolLayerV2::create
();
97
98
case
QgsSymbolV2::Line
:
99
return
QgsSimpleLineSymbolLayerV2::create
();
100
101
case
QgsSymbolV2::Fill
:
102
return
QgsSimpleFillSymbolLayerV2::create
();
103
}
104
return
NULL;
105
}
106
107
108
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::createSymbolLayer
( QString name,
const
QgsStringMap
& properties )
const
109
{
110
if
( !
mMetadata
.contains( name ) )
111
return
NULL;
112
113
return
mMetadata
[name]->createSymbolLayer( properties );
114
}
115
116
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::createSymbolLayerFromSld
( QString name, QDomElement& element )
const
117
{
118
if
( !
mMetadata
.contains( name ) )
119
return
NULL;
120
121
return
mMetadata
[name]->createSymbolLayerFromSld( element );
122
}
123
124
QStringList
QgsSymbolLayerV2Registry::symbolLayersForType
(
QgsSymbolV2::SymbolType
type )
125
{
126
QStringList lst;
127
QMap<QString, QgsSymbolLayerV2AbstractMetadata*>::ConstIterator it =
mMetadata
.begin();
128
for
( ; it !=
mMetadata
.end(); ++it )
129
{
130
if
(( *it )->type() == type )
131
lst.append( it.key() );
132
}
133
return
lst;
134
}
Generated on Tue Sep 24 2013 14:41:48 for QGIS API Documentation by
1.8.1.2