Quantum GIS API Documentation
1.7.5-Wroclaw
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
core
symbology-ng
qgssymbollayerv2registry.cpp
Go to the documentation of this file.
1
2
#include "
qgssymbollayerv2registry.h
"
3
4
#include "
qgsmarkersymbollayerv2.h
"
5
#include "
qgslinesymbollayerv2.h
"
6
#include "
qgsfillsymbollayerv2.h
"
7
8
QgsSymbolLayerV2Registry
*
QgsSymbolLayerV2Registry::mInstance
= NULL;
9
10
QgsSymbolLayerV2Registry::QgsSymbolLayerV2Registry
()
11
{
12
// init registry with known symbol layers
13
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleLine"
, QObject::tr(
"Simple line"
),
QgsSymbolV2::Line
,
14
QgsSimpleLineSymbolLayerV2::create
) );
15
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"MarkerLine"
, QObject::tr(
"Marker line"
),
QgsSymbolV2::Line
,
16
QgsMarkerLineSymbolLayerV2::create
) );
17
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"LineDecoration"
, QObject::tr(
"Line decoration"
),
QgsSymbolV2::Line
,
18
QgsLineDecorationSymbolLayerV2::create
) );
19
20
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleMarker"
, QObject::tr(
"Simple marker"
),
QgsSymbolV2::Marker
,
21
QgsSimpleMarkerSymbolLayerV2::create
) );
22
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SvgMarker"
, QObject::tr(
"SVG marker"
),
QgsSymbolV2::Marker
,
23
QgsSvgMarkerSymbolLayerV2::create
) );
24
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"FontMarker"
, QObject::tr(
"Font marker"
),
QgsSymbolV2::Marker
,
25
QgsFontMarkerSymbolLayerV2::create
) );
26
27
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SimpleFill"
, QObject::tr(
"Simple fill"
),
QgsSymbolV2::Fill
,
28
QgsSimpleFillSymbolLayerV2::create
) );
29
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"SVGFill"
, QObject::tr(
"SVG fill"
),
QgsSymbolV2::Fill
,
30
QgsSVGFillSymbolLayer::create
) );
31
addSymbolLayerType
(
new
QgsSymbolLayerV2Metadata
(
"CentroidFill"
, QObject::tr(
"Centroid fill"
),
QgsSymbolV2::Fill
,
32
QgsCentroidFillSymbolLayerV2::create
) );
33
}
34
35
QgsSymbolLayerV2Registry::~QgsSymbolLayerV2Registry
()
36
{
37
foreach
( QString name,
mMetadata
.keys() )
38
{
39
delete
mMetadata
[name];
40
}
41
mMetadata
.clear();
42
}
43
44
bool
QgsSymbolLayerV2Registry::addSymbolLayerType
(
QgsSymbolLayerV2AbstractMetadata
* metadata )
45
{
46
if
( metadata == NULL ||
mMetadata
.contains( metadata->
name
() ) )
47
return
false
;
48
49
mMetadata
[metadata->
name
()] = metadata;
50
return
true
;
51
}
52
53
54
QgsSymbolLayerV2AbstractMetadata
*
QgsSymbolLayerV2Registry::symbolLayerMetadata
( QString name )
const
55
{
56
if
(
mMetadata
.contains( name ) )
57
return
mMetadata
.value( name );
58
else
59
return
NULL;
60
}
61
62
QgsSymbolLayerV2Registry
*
QgsSymbolLayerV2Registry::instance
()
63
{
64
if
( !
mInstance
)
65
mInstance
=
new
QgsSymbolLayerV2Registry
();
66
return
mInstance
;
67
}
68
69
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::defaultSymbolLayer
(
QgsSymbolV2::SymbolType
type )
70
{
71
switch
( type )
72
{
73
case
QgsSymbolV2::Marker
:
74
return
QgsSimpleMarkerSymbolLayerV2::create
();
75
76
case
QgsSymbolV2::Line
:
77
return
QgsSimpleLineSymbolLayerV2::create
();
78
79
case
QgsSymbolV2::Fill
:
80
return
QgsSimpleFillSymbolLayerV2::create
();
81
}
82
return
NULL;
83
}
84
85
86
QgsSymbolLayerV2
*
QgsSymbolLayerV2Registry::createSymbolLayer
( QString name,
const
QgsStringMap
& properties )
const
87
{
88
if
( !
mMetadata
.contains( name ) )
89
return
NULL;
90
91
return
mMetadata
[name]->createSymbolLayer( properties );
92
}
93
94
QStringList
QgsSymbolLayerV2Registry::symbolLayersForType
(
QgsSymbolV2::SymbolType
type )
95
{
96
QStringList lst;
97
QMap<QString, QgsSymbolLayerV2AbstractMetadata*>::ConstIterator it =
mMetadata
.begin();
98
for
( ; it !=
mMetadata
.end(); ++it )
99
{
100
if
(( *it )->type() == type )
101
lst.append( it.key() );
102
}
103
return
lst;
104
}
Generated on Wed Jun 13 2012 13:54:11 for Quantum GIS API Documentation by
1.8.1