~ubuntu-branches/ubuntu/wily/qgis/wily

« back to all changes in this revision

Viewing changes to src/core/symbology-ng/qgssinglesymbolrendererv2.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Johan Van de Wauw
  • Date: 2010-07-11 20:23:24 UTC
  • mfrom: (3.1.4 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100711202324-5ktghxa7hracohmr
Tags: 1.4.0+12730-3ubuntu1
* Merge from Debian unstable (LP: #540941).
* Fix compilation issues with QT 4.7
* Add build-depends on libqt4-webkit-dev 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#include "qgssinglesymbolrendererv2.h"
 
3
 
 
4
#include "qgssymbolv2.h"
 
5
#include "qgssymbollayerv2utils.h"
 
6
 
 
7
#include <QDomDocument>
 
8
#include <QDomElement>
 
9
 
 
10
QgsSingleSymbolRendererV2::QgsSingleSymbolRendererV2( QgsSymbolV2* symbol )
 
11
    : QgsFeatureRendererV2( "singleSymbol" )
 
12
{
 
13
  mSymbol = symbol;
 
14
}
 
15
 
 
16
QgsSingleSymbolRendererV2::~QgsSingleSymbolRendererV2()
 
17
{
 
18
  delete mSymbol;
 
19
}
 
20
 
 
21
QgsSymbolV2* QgsSingleSymbolRendererV2::symbolForFeature( QgsFeature& feature )
 
22
{
 
23
  return mSymbol;
 
24
}
 
25
 
 
26
void QgsSingleSymbolRendererV2::startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer )
 
27
{
 
28
  mSymbol->startRender( context );
 
29
}
 
30
 
 
31
void QgsSingleSymbolRendererV2::stopRender( QgsRenderContext& context )
 
32
{
 
33
  mSymbol->stopRender( context );
 
34
}
 
35
 
 
36
QList<QString> QgsSingleSymbolRendererV2::usedAttributes()
 
37
{
 
38
  return QList<QString>();
 
39
}
 
40
 
 
41
QgsSymbolV2* QgsSingleSymbolRendererV2::symbol() const
 
42
{
 
43
  return mSymbol;
 
44
}
 
45
 
 
46
void QgsSingleSymbolRendererV2::setSymbol( QgsSymbolV2* s )
 
47
{
 
48
  delete mSymbol;
 
49
  mSymbol = s;
 
50
}
 
51
 
 
52
QString QgsSingleSymbolRendererV2::dump()
 
53
{
 
54
  return QString( "SINGLE: %1" ).arg( mSymbol->dump() );
 
55
}
 
56
 
 
57
QgsFeatureRendererV2* QgsSingleSymbolRendererV2::clone()
 
58
{
 
59
  QgsSingleSymbolRendererV2* r = new QgsSingleSymbolRendererV2( mSymbol->clone() );
 
60
  r->setUsingSymbolLevels( usingSymbolLevels() );
 
61
  return r;
 
62
}
 
63
 
 
64
QgsSymbolV2List QgsSingleSymbolRendererV2::symbols()
 
65
{
 
66
  QgsSymbolV2List lst;
 
67
  lst.append( mSymbol );
 
68
  return lst;
 
69
}
 
70
 
 
71
QgsFeatureRendererV2* QgsSingleSymbolRendererV2::create( QDomElement& element )
 
72
{
 
73
  QDomElement symbolsElem = element.firstChildElement( "symbols" );
 
74
  if ( symbolsElem.isNull() )
 
75
    return NULL;
 
76
 
 
77
  QgsSymbolV2Map symbolMap = QgsSymbolLayerV2Utils::loadSymbols( symbolsElem );
 
78
 
 
79
  if ( !symbolMap.contains( "0" ) )
 
80
    return NULL;
 
81
 
 
82
  QgsSingleSymbolRendererV2* r = new QgsSingleSymbolRendererV2( symbolMap.take( "0" ) );
 
83
 
 
84
  // delete symbols if there are any more
 
85
  QgsSymbolLayerV2Utils::clearSymbolMap( symbolMap );
 
86
 
 
87
  // TODO: symbol levels
 
88
  return r;
 
89
}
 
90
 
 
91
QDomElement QgsSingleSymbolRendererV2::save( QDomDocument& doc )
 
92
{
 
93
  QDomElement rendererElem = doc.createElement( RENDERER_TAG_NAME );
 
94
  rendererElem.setAttribute( "type", "singleSymbol" );
 
95
  rendererElem.setAttribute( "symbollevels", ( mUsingSymbolLevels ? "1" : "0" ) );
 
96
 
 
97
  QgsSymbolV2Map symbols;
 
98
  symbols["0"] = mSymbol;
 
99
  QDomElement symbolsElem = QgsSymbolLayerV2Utils::saveSymbols( symbols, "symbols", doc );
 
100
  rendererElem.appendChild( symbolsElem );
 
101
 
 
102
  return rendererElem;
 
103
}
 
104
 
 
105
QgsLegendSymbologyList QgsSingleSymbolRendererV2::legendSymbologyItems( QSize iconSize )
 
106
{
 
107
  QPixmap pix = QgsSymbolLayerV2Utils::symbolPreviewPixmap( mSymbol, iconSize );
 
108
 
 
109
  QgsLegendSymbologyList lst;
 
110
  lst << qMakePair( QString(), pix );
 
111
  return lst;
 
112
}