All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
LegendModel.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file LegendModel.cpp
22 
23  \brief
24 
25  \ingroup layout
26 */
27 
28 // TerraLib
29 #include "LegendModel.h"
30 #include "MapModel.h"
31 #include "../core/property/Property.h"
32 #include "../core/property/Properties.h"
33 #include "../core/property/SharedProperties.h"
34 #include "../../maptools/CanvasConfigurer.h"
35 #include "../../se/Symbolizer.h"
36 #include "../../se/Style.h"
37 #include "../../se/Rule.h"
38 #include "../../geometry/Polygon.h"
39 #include "../../geometry/Geometry.h"
40 #include "../../geometry/Envelope.h"
41 #include "../core/enum/Enums.h"
42 #include "../../maptools/GroupingItem.h"
43 #include "../../maptools/Enums.h"
44 
45 // STL
46 #include <string>
47 #include <sstream>
48 
49 
50 
52  m_mapName(""),
53  m_layer(0),
54  m_borderDisplacement(1),
55  m_displacementBetweenSymbols(1),
56  m_displacementBetweenTitleAndSymbols(3),
57  m_displacementBetweenSymbolsAndText(2),
58  m_symbolsize(5)
59 {
60  m_type = Enums::getInstance().getEnumObjectType()->getLegendItem();
61 
62  m_box = te::gm::Envelope(0., 0., 70., 50.);
63 
65  m_fontColor.setColor(0,0,0);
66 }
67 
69 {
70 
71 }
72 
74 {
75  te::color::RGBAColor** pixmap = 0;
76 
77  te::map::Canvas* canvas = context.getCanvas();
78  Utils* utils = context.getUtils();
79 
80  if(context.isResizeCanvas())
81  utils->configCanvas(m_box);
82 
83  if(context.isResizeCanvas())
84  pixmap = utils->getImageW(m_box);
85 
86  context.setPixmap(pixmap);
87 
88  notifyAll(context);
89  return;
90 
91  //te::color::RGBAColor** pixmap = 0;
92 
93  //te::map::Canvas* canvas = context.getCanvas();
94  //Utils* utils = context.getUtils();
95 
96  if((!canvas) || (!utils))
97  return;
98 
99  if(context.isResizeCanvas())
100  utils->configCanvas(m_box);
101 
102  drawBackground(context);
103 
104  childrenFreeMemory();
105 
106  drawLegend(canvas, utils);
107 
108  if(context.isResizeCanvas())
109  pixmap = utils->getImageW(m_box);
110 
111  context.setPixmap(pixmap);
112  notifyAll(context);
113 }
114 
116 {
117  if(!m_layer)
118  return;
119 
120  //Header
121  std::string layerName = m_layer->getTitle();
122 
123  double wtxt = 0;
124  double htxt = 0;
125 
126  canvas->setTextPointSize(m_font.getPointSize());
127  canvas->setTextUnderline(m_font.isUnderline());
128  canvas->setTextStrikeOut(m_font.isStrikeout());
129  canvas->setTextColor(m_fontColor);
130 
131  utils->textBoundingBox(wtxt, htxt, layerName);
132 
133  double x1 = m_box.getLowerLeftX() + m_borderDisplacement;
134  double y1 = m_box.getUpperRightY() - m_borderDisplacement - htxt;
135  canvas->drawText(x1, y1, layerName, 0);
136 
137  te::map::Grouping* grouping = m_layer->getGrouping();
138 
139  if (grouping != 0 && grouping->isVisible() == true)
140  {
141  this->drawGroupingLegend(grouping, canvas, utils);
142  }
143  else if (m_layer->getStyle() != 0)
144  {
145  this->drawStyleLegend(m_layer->getStyle(), canvas, utils);
146  }
147 
148 }
149 
151 {
152  std::string propertyName = grouping->getPropertyName();
153 
154  std::vector<te::map::GroupingItem*> items = grouping->getGroupingItems();
155 
156  te::map::GroupingType type = grouping->getType();
157 
158  std::string layerName = m_layer->getTitle();
159 
160  double wtxt = 0;
161  double htxt = 0;
162 
163  utils->textBoundingBox(wtxt, htxt, layerName);
164 
165  double x1 = m_box.getLowerLeftX() + m_borderDisplacement;
166  double y1 = m_box.getUpperRightY() - m_borderDisplacement - htxt;
167 
168  for (unsigned int i = 0; i < items.size(); ++i)
169  {
170  std::string label = propertyName;
171  label += ": ";
172 
173  te::map::GroupingItem* item = items[i];
174 
175  if (type == te::map::UNIQUE_VALUE)
176  {
177  label += item->getValue();
178  }
179  else
180  {
181  std::string upperLimit = item->getUpperLimit();
182  std::string lowerLimit = item->getLowerLimit();
183 
184  label += lowerLimit;
185  label += " ~ ";
186  label += upperLimit;
187  }
188 
189  //Test
190  te::gm::Envelope box(x1, y1 - m_displacementBetweenTitleAndSymbols - (m_displacementBetweenSymbols * i),
191  x1 + m_symbolsize, y1 - m_displacementBetweenTitleAndSymbols - (m_displacementBetweenSymbols * i) - m_symbolsize);
192  utils->drawRectW(box);
193 
194  canvas->setTextPointSize(m_font.getPointSize());
195  canvas->setTextUnderline(m_font.isUnderline());
196  canvas->setTextStrikeOut(m_font.isStrikeout());
197  canvas->setTextColor(m_fontColor);
198 
199  utils->textBoundingBox(wtxt, htxt, label);
200  canvas->drawText(box.getLowerLeftX() + m_symbolsize + m_displacementBetweenSymbolsAndText, box.m_ury, label, 0);
201  }
202 }
203 
205 {
206  // Number of rules defined on feature type style
207  std::size_t nRules = m_layer->getStyle()->getRules().size();
208 
209  // Creates a canvas configurer
210  te::map::CanvasConfigurer cc(canvas);
211 
212  //Header
213  std::string layerName = m_layer->getTitle();
214 
215  double wtxt = 0;
216  double htxt = 0;
217 
218  canvas->setTextPointSize(m_font.getPointSize());
219  canvas->setTextUnderline(m_font.isUnderline());
220  canvas->setTextStrikeOut(m_font.isStrikeout());
221  canvas->setTextColor(m_fontColor);
222 
223  utils->textBoundingBox(wtxt, htxt, layerName);
224 
225  double x1 = m_box.getLowerLeftX() + m_borderDisplacement;
226  double y1 = m_box.getUpperRightY() - m_borderDisplacement - htxt;
227 
228  for(std::size_t i = 0; i < nRules; ++i) // for each <Rule>
229  {
230  // The current rule
231  te::se::Rule* rule = style->getRule(i);
232  assert(rule);
233 
234  // Gets the set of symbolizers defined on current rule
235  const std::vector<te::se::Symbolizer*>& symbolizers = rule->getSymbolizers();
236 
237  if(symbolizers.empty())
238  {
239  continue;
240  }
241 
242  std::size_t nSymbolizers = symbolizers.size();
243 
244  for(std::size_t j = 0; j < nSymbolizers; ++j) // for each <Symbolizer>
245  {
246  // The current symbolizer
247  te::se::Symbolizer* symb = symbolizers[j];
248 
249  // Let's config the canvas based on the current symbolizer
250  cc.config(symb);
251 
252  //Test
253  te::gm::Envelope box(x1, y1 - m_displacementBetweenTitleAndSymbols - (m_displacementBetweenSymbols * j),
254  x1 + m_symbolsize, y1 - m_displacementBetweenTitleAndSymbols - (m_displacementBetweenSymbols * j) - m_symbolsize);
255  utils->drawRectW(box);
256 
257  canvas->setTextPointSize(m_font.getPointSize());
258  canvas->setTextUnderline(m_font.isUnderline());
259  canvas->setTextStrikeOut(m_font.isStrikeout());
260  canvas->setTextColor(m_fontColor);
261  std::string* nameRule = const_cast<std::string*>(rule->getName());
262  std::string n = symb->getName();
263  std::string name;
264  if(nameRule)
265  {
266  name = nameRule->c_str();
267  }
268  else
269  {
270  std::ostringstream convert;
271  convert << j;
272  name = "Legend_" + convert.str();
273  }
274 
275  te::gm::Point* coord = new te::gm::Point(x1, y1 - m_displacementBetweenTitleAndSymbols - (m_displacementBetweenSymbols * j));
276  m_coordChildren[coord] = name;
277 
278  utils->textBoundingBox(wtxt, htxt, name);
279  canvas->drawText(box.getLowerLeftX() + m_symbolsize + m_displacementBetweenSymbolsAndText, box.m_ury, name, 0);
280  } // end for each <Symbolizer>
281 
282  } // end for each <Rule>
283 }
284 
286 {
288 
290 
291  Property pro_mapName(m_hashCode);
292  pro_mapName.setName(m_sharedProps->getMapName());
293  pro_mapName.setValue(m_mapName, dataType->getDataTypeStringList());
294  Variant v;
295  v.setValue(m_mapName, dataType->getDataTypeString());
296  pro_mapName.addOption(v);
297 
298  m_properties->addProperty(pro_mapName);
299 
300  Property pro_font(m_hashCode);
301  pro_font.setName("Font");
302  pro_font.setValue(m_font, dataType->getDataTypeFont());
303  pro_font.setMenu(true);
304  m_properties->addProperty(pro_font);
305 
306  Property pro_fontcolor(m_hashCode);
307  pro_fontcolor.setName("font_color");
308  pro_fontcolor.setValue(m_fontColor, dataType->getDataTypeColor());
309  pro_fontcolor.setMenu(true);
310  m_properties->addProperty(pro_fontcolor);
311 
312  return m_properties;
313 }
314 
316 {
318 
319  Properties* vectorProps = const_cast<Properties*>(properties);
320 
321  Property pro_mapName = vectorProps->contains(m_sharedProps->getMapName());
322 
323  if(!pro_mapName.isNull())
324  {
325  m_mapName = pro_mapName.getOptionByCurrentChoice().toString();
326  }
327 
328  Property pro_font = vectorProps->contains("Font");
329 
330  if(!pro_font.isNull())
331  {
332  m_font = pro_font.getValue().toFont();
333  }
334 
335  Property pro_fontColor = vectorProps->contains("font_color");
336 
337  if(!pro_fontColor.isNull())
338  {
339  m_fontColor = pro_fontColor.getValue().toColor();
340  }
341 }
342 
344 {
345  MapModel* map = dynamic_cast<MapModel*>(m_visitable);
346 
347  if(map)
348  {
349  m_layer = map->getLayer();
350 
351  this->updateBox(context);
352 
353  draw(context);
354  }
355 }
356 
358 {
359  m_borderDisplacement = value;
360 }
361 
363 {
364  return m_borderDisplacement;
365 }
366 
368 {
369  m_displacementBetweenSymbols = value;
370 }
371 
373 {
374  return m_displacementBetweenSymbols;
375 }
376 
378 {
379  m_displacementBetweenTitleAndSymbols = value;
380 }
381 
383 {
384  return m_displacementBetweenTitleAndSymbols;
385 }
386 
388 {
389  m_displacementBetweenSymbolsAndText = value;
390 }
391 
393 {
394  return m_displacementBetweenSymbolsAndText;
395 }
396 
397 std::map<te::gm::Point*, std::string> te::layout::LegendModel::getCoordChildren()
398 {
399  return m_coordChildren;
400 }
401 
403 {
404  std::map<te::gm::Point*, std::string>::iterator it;
405  for(it = m_coordChildren.begin() ; it != m_coordChildren.end() ; ++it)
406  {
407  te::gm::Point* p = it->first;
408  if(p)
409  {
410  delete p;
411  p = 0;
412  }
413  }
414  m_coordChildren.clear();
415 }
416 
418 {
419  return m_layer;
420 }
421 
423 {
424  return m_font;
425 }
426 
428 {
429  if (!m_layer)
430  {
431  return;
432  }
433 
434  te::map::Canvas* canvas = context.getCanvas();
435  te::layout::Utils* utils = context.getUtils();
436 
437  canvas->setTextPointSize(m_font.getPointSize());
438  canvas->setTextUnderline(m_font.isUnderline());
439  canvas->setTextStrikeOut(m_font.isStrikeout());
440  canvas->setTextColor(m_fontColor);
441 
442  double wtxt = 0.;
443  double htxt = 0.;
444 
445  std::string title = m_layer->getTitle();
446 
447  utils->textBoundingBox(wtxt, htxt, title);
448 
449  te::gm::Envelope box = m_box;
450 
451  double boxWidth = box.getWidth();
452  double boxHeight = box.getHeight();
453 
454  double sumWidth = (double) (m_borderDisplacement + wtxt + m_borderDisplacement);
455 
456  if (boxWidth < sumWidth)
457  {
458  box = te::gm::Envelope(box.getLowerLeftX(), box.getLowerLeftY(), sumWidth, boxHeight);
459 
460  boxWidth = sumWidth;
461  }
462 
463  double sumHeight = (double) (m_borderDisplacement + htxt + m_displacementBetweenTitleAndSymbols);
464 
465  if (boxHeight < sumHeight)
466  {
467  box = te::gm::Envelope(box.getLowerLeftX(), box.getLowerLeftY(), boxWidth, sumHeight);
468 
469  boxHeight = sumHeight;
470  }
471 
472  te::map::Grouping* grouping = m_layer->getGrouping();
473 
474  if (grouping != 0 && grouping->isVisible() == true)
475  {
476  std::string propertyName = grouping->getPropertyName();
477 
478  std::vector<te::map::GroupingItem*> items = grouping->getGroupingItems();
479 
480  te::map::GroupingType type = grouping->getType();
481 
482  for (unsigned int i = 0; i < items.size(); ++i)
483  {
484  std::string label = propertyName;
485  label += ": ";
486 
487  te::map::GroupingItem* item = items[i];
488 
489  if (type == te::map::UNIQUE_VALUE)
490  {
491  label += item->getValue();
492  }
493  else
494  {
495  std::string upperLimit = item->getUpperLimit();
496  std::string lowerLimit = item->getLowerLimit();
497 
498  label += lowerLimit;
499  label += " ~ ";
500  label += upperLimit;
501  }
502 
503  utils->textBoundingBox(wtxt, htxt, label);
504 
505  sumWidth = (double) (m_borderDisplacement + m_symbolsize + m_displacementBetweenSymbolsAndText + wtxt + m_borderDisplacement);
506 
507  if (boxWidth < sumWidth)
508  {
509  box = te::gm::Envelope(box.getLowerLeftX(), box.getLowerLeftY(), sumWidth, boxHeight);
510 
511  boxWidth = sumWidth;
512  }
513 
514  sumHeight += (double) (htxt + m_displacementBetweenSymbols);
515 
516  if (boxHeight < sumHeight)
517  {
518  box = te::gm::Envelope(box.getLowerLeftX(), box.getLowerLeftY(), boxWidth, sumHeight);
519 
520  boxHeight = sumHeight;
521  }
522  }
523  }
524  else if (m_layer->getStyle() != 0)
525  {
526 
527  }
528 
529  m_box = box;
530 
531  this->notifyAll(context);
532 
533 }
534 
536 {
537  return m_symbolsize;
538 }
539 
540 void te::layout::LegendModel::setSymbolSize( const double& value )
541 {
542  m_symbolsize = value;
543 }
544 
546 {
547  return m_fontColor;
548 }
virtual double getDisplacementBetweenTitleAndSymbols()
Class responsible for maintaining the drawing context of a MVC component. It is always used by the "M...
Definition: ContextItem.h:49
Class that represents a "Model" part of Legend MVC component. Its coordinate system is the same of sc...
Class specifies a font.
Definition: Font.h:46
virtual ~LegendModel()
Destructor.
Definition: LegendModel.cpp:68
virtual void setPixmap(te::color::RGBAColor **pixmap)
Stores pixmap generated after drawing.
Definition: ContextItem.cpp:85
Variant getValue()
Returns stored value.
Definition: Property.cpp:72
virtual EnumDataType * getEnumDataType()
Returns data type enumeration.
Definition: Enums.cpp:52
void setColor(const std::string &hexColor)
It sets the color using a two hexadecimal RGB-encoded color.
Definition: RGBAColor.h:329
The Style defines the styling that is to be applied to a geographic dataset (vector geometries or cov...
Definition: Style.h:65
void addOption(Variant variant)
Definition: Property.cpp:77
virtual double getSymbolSize()
virtual void textBoundingBox(double &w, double &h, std::string txt)
A method that calculates the height and width of a text.
Definition: Utils.cpp:271
const std::string & getValue() const
It gets the value of the legend item.
A Symbolizer describes how a feature is to appear on a map.
Definition: Symbolizer.h:80
bool isNull()
Returns true if no value has been set, false otherwise.
Definition: Property.cpp:146
virtual void setDisplacementBetweenTitleAndSymbols(double value)
virtual void drawRectW(te::gm::Envelope box)
Draw a rectangle in world coordinates (mm).
Definition: Utils.cpp:58
te::color::RGBAColor m_fontColor
Definition: LegendModel.h:134
std::string getPropertyName() const
It gets the property name whose values will be grouped.
Definition: Grouping.cpp:68
virtual void drawText(int x, int y, const std::string &txt, float angle=0.0, te::at::HorizontalAlignment hAlign=te::at::Start, te::at::VerticalAlignment vAlign=te::at::Baseline)=0
It draws a text.
virtual te::map::AbstractLayerPtr getLayer()
Variant getOptionByCurrentChoice()
Definition: Property.cpp:104
virtual te::color::RGBAColor getFontColor()
const double & getLowerLeftY() const
It returns a constant refernce to the y coordinate of the lower left corner.
Definition: Envelope.h:400
double getWidth() const
It returns the envelope width.
Definition: Envelope.h:443
The Properties class represents a persistent set of properties. The Properties can be saved to a file...
Definition: Properties.h:52
void setPointSize(int point)
Sets point size of the font.
Definition: Font.cpp:66
virtual std::map< te::gm::Point *, std::string > getCoordChildren()
EnumType * m_type
type of the MVC component
virtual void updateProperties(te::layout::Properties *properties)
Reimplemented from Observable.
Font toFont()
Returns the value of te::layout::Font type. (The setValue method received a te::layout::Font). Complex type.
Definition: Variant.cpp:346
Rule * getRule(std::size_t i) const
Definition: Style.cpp:105
virtual Font getFont()
This class contains the parameters needed for grouping the values of a Property.
Definition: Grouping.h:59
virtual void setTextUnderline(bool b)=0
It sets the text underline flag.
virtual void setSymbolSize(const double &value)
static Enums & getInstance()
It returns a reference to the singleton instance.
A point with x and y coordinate values.
Definition: Point.h:50
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
A GroupingItem contains information about a grouping item associated to a layer.
Definition: GroupingItem.h:48
virtual Utils * getUtils()
const std::string & getName() const
Definition: Symbolizer.cpp:72
virtual double getDisplacementBetweenSymbols()
Class to represent a data type enumeration. Ex.: int, double, bool, te::color::RGBAColor (color)...
Definition: EnumDataType.h:48
te::gm::Envelope m_box
bounding rectangle
virtual te::map::AbstractLayerPtr getLayer()
Definition: MapModel.cpp:226
virtual void drawGroupingLegend(te::map::Grouping *grouping, te::map::Canvas *canvas, Utils *utils)
Class that represents a "Model" part of Map MVC component. Its coordinate system is the same of scene...
virtual void setTextColor(const te::color::RGBAColor &color)=0
It sets the text drawing color.
virtual Properties * getProperties() const
Reimplemented from Observable.
Class acts like a union for some C++/TerraLib5 data types. Responsible for storing the value...
Definition: Variant.h:80
virtual EnumType * getDataTypeColor() const
Returns value that represents type te::color::RGBAColor** (color) belonging to enumeration.
virtual void visitDependent(ContextItem context)
visit and if necessary redraw
virtual te::map::Canvas * getCanvas()
Return canvas.
LegendModel()
Constructor.
Definition: LegendModel.cpp:51
virtual void setDisplacementBetweenSymbolAndText(double value)
Class that represents a "Model" part of Map MVC component. Its coordinate system is the same of scene...
Definition: MapModel.h:61
const std::vector< Symbolizer * > & getSymbolizers() const
Definition: Rule.cpp:158
virtual void draw(ContextItem context)
Drawing method of the MVC component.
Definition: LegendModel.cpp:73
virtual void setTextStrikeOut(bool b)=0
It sets the text strike out flag.
virtual void setDisplacementBetweenSymbols(double value)
A canvas is an abstraction of a drawing area.
Definition: Canvas.h:91
bool isVisible() const
It gets the grouping visibility.
Definition: Grouping.cpp:142
virtual Properties * getProperties() const
Reimplemented from Observable.
const std::vector< te::map::GroupingItem * > & getGroupingItems() const
It gets the vector of grouping items.
Definition: Grouping.cpp:130
GroupingType
The grouping type associated to the layer.
Definition: Enums.h:150
A Rule is used to attach property/scale conditions to and group the individual symbols used for rende...
Definition: Rule.h:78
const std::string & getUpperLimit() const
It gets the upper limit value of the legend item.
void setValue(ValueType value, EnumType *type)
Stores a copy of value.
Definition: Property.h:298
virtual void drawLegend(te::map::Canvas *canvas, Utils *utils)
double m_ury
Upper right corner y-coordinate.
Definition: Envelope.h:347
virtual double getBorderDisplacement()
virtual te::color::RGBAColor ** getImageW(te::gm::Envelope boxmm)
Returns a pointer RGBA colors that representing an image.
Definition: Utils.cpp:111
virtual void childrenFreeMemory()
virtual EnumType * getDataTypeFont() const
Returns value that represents type Font belonging to enumeration.
virtual EnumType * getDataTypeStringList() const
Returns value that represents type StringList (string) belonging to enumeration.
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
Definition: Envelope.h:390
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
Definition: RGBAColor.h:57
const GroupingType getType() const
It gets the grouping type.
Definition: Grouping.cpp:90
virtual void drawStyleLegend(te::se::Style *style, te::map::Canvas *canvas, Utils *utils)
std::string toString()
Returns the value of string type. (The setValue method received a string)
Definition: Variant.cpp:311
std::string convert(const path &v)
URI path to string.
Definition: path.cpp:219
virtual void configCanvas(te::gm::Envelope box, bool resize=true, bool applyZoom=true)
Sets the viewport and window of the canvas. The viewport is only changed if the resize parameter is t...
Definition: Utils.cpp:138
void setName(std::string name)
Sets the name of this property.
Definition: Property.cpp:62
virtual void setMenu(bool menu)
Sets true if property will be used in a menu, false otherwise.
Definition: Property.cpp:228
te::color::RGBAColor toColor()
Returns the value of te::color::RGBAColor type. (The setValue method received a te::color::RGBAColor)...
Definition: Variant.cpp:341
void config(const te::se::Symbolizer *symbolizer)
It configs the canvas based on given symbolizer.
virtual EnumType * getDataTypeString() const
Returns value that represents type string belonging to enumeration.
const std::string & getLowerLimit() const
It gets the lower limit value of the legend item.
Utility class with functions to manipulate the canvas and conversion between projections.
Definition: Utils.h:61
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
virtual bool isResizeCanvas()
Returns whether the canvas should or should not be resized.
Definition: ContextItem.cpp:95
double getHeight() const
It returns the envelope height.
Definition: Envelope.h:448
virtual bool contains(Property property)
Checks if the property is contained within the set of properties.
Definition: Properties.h:251
A property acts like a attribute member of a object and stores the state of this attribute. A set of properties stores the state of an object. Any data type, not included in the convertValue method in the class te::layout::Variant, it will be by default "std::string" value.
Definition: Property.h:47
virtual double getDisplacementBetweenSymbolAndText()
virtual void setBorderDisplacement(double value)
virtual void updateProperties(te::layout::Properties *properties)
Reimplemented from Observable.
virtual void updateBox(ContextItem context)
void setValue(ValueType value, EnumType *type)
Stores a copy of value.
Definition: Variant.h:288
virtual void setTextPointSize(double size)=0
It sets the text point Size.
A Symbology Enconding visitor that configures a given canvas based on symbolizers elements...
const std::string * getName() const
Definition: Rule.cpp:64