27 #include "../../../common/Translator.h"
28 #include "../../../fe/Expression.h"
29 #include "../../../maptools/Utils.h"
30 #include "../../../xml/AbstractWriter.h"
31 #include "../../../xml/Reader.h"
32 #include "../../../se/LineSymbolizer.h"
33 #include "../../../se/ParameterValue.h"
34 #include "../../../se/PointSymbolizer.h"
35 #include "../../../se/PolygonSymbolizer.h"
36 #include "../../../se/RasterSymbolizer.h"
37 #include "../../../se/TextSymbolizer.h"
38 #include "../../../xlink/serialization/xml/XLinkSerializer.h"
39 #include "../../Exception.h"
40 #include "../../Utils.h"
49 #include <boost/format.hpp>
65 m_fncts[symbolizerType] = fncts;
72 SymbolizerFnctIdxType::const_iterator it = m_fncts.find(symbolizerType);
74 if(it == m_fncts.end())
75 throw Exception((boost::format(
TE_TR(
"Could not find a reader for the following symbolizer type: %1%.")) % symbolizerType).str());
77 assert(it->second.second);
79 return it->second.first(reader);
86 SymbolizerFnctIdxType::const_iterator it = m_fncts.find(symbolizer->
getType());
88 if(it == m_fncts.end())
89 throw Exception((boost::format(
TE_TR(
"Could not find a writer for the following symbolizer type: %1%.")) % symbolizer->
getType()).str());
91 assert(it->second.second);
93 return it->second.second(symbolizer, writer);
A TextSymbolizer is used to render text labels according to various graphical parameters.
const Fill * getFill() const
Gets the Fill associates with the PolygonSymbolizer.
te::se::Symbolizer * TextSymbolizerReader(te::xml::Reader &reader)
const LabelPlacement * getLabelPlacement() const
const Graphic * getGraphic() const
void LineSymbolizerWriter(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
const te::fe::PropertyName * getGeometry() const
This class models a XML reader object.
A PolygonSymbolizer is used to draw a polygon (or other area-type geometries), including filling its ...
virtual void writeStartElement(const std::string &qName)=0
A Symbolizer describes how a feature is to appear on a map.
te::se::Symbolizer * PolygonSymbolizerReader(te::xml::Reader &reader)
const te::fe::PropertyName * getGeometry() const
ParameterValue * getOffset() const
void PointSymbolizerWriter(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
te::se::ChannelSelection * getChannelSelection() const
std::pair< SymbolizerReadFnctType, SymbolizerWriteFnctType > SymbolizerFnctSerializeType
A PointSymbolizer specifies the rendering of a graphic Symbolizer at a point.
TESEEXPORT te::se::ContrastEnhancement * ReadContrastEnhancement(te::xml::Reader &reader)
TESEEXPORT double GetDouble(const te::se::ParameterValue *param)
It gets the parameter value as a double.
This class models a XML writer object.
#define TE_TR(message)
It marks a string in order to get translated.
TESEEXPORT te::se::Fill * ReadFill(te::xml::Reader &reader)
TESEEXPORT te::se::Halo * ReadHalo(te::xml::Reader &reader)
The "ParameterValueType" uses WFS-Filter expressions to give values for SE graphic parameters...
TESEEXPORT te::se::ParameterValue * ReadParameterValue(te::xml::Reader &reader)
te::se::ContrastEnhancement * getContrastEnhancement() const
virtual std::string getElementLocalName() const =0
It returns the local part of the element name in the case of an element node.
te::se::Symbolizer * LineSymbolizerReader(te::xml::Reader &reader)
te::se::Symbolizer * RasterSymbolizerReader(te::xml::Reader &reader)
TESEEXPORT te::se::Stroke * ReadStroke(te::xml::Reader &reader)
ParameterValue * getGain() const
ShadedRelief * getShadedRelief() const
TESEEXPORT RasterSymbolizer::OverlapBehavior ReadOverlapBehavior(te::xml::Reader &reader)
virtual void writeElement(const std::string &qName, const std::string &value)=0
void WriteSymbolizerHelper(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
te::se::Symbolizer * read(te::xml::Reader &reader) const
void reg(const std::string &symbolizerType, const SymbolizerFnctSerializeType &fncts)
TESEEXPORT te::se::Displacement * ReadDisplacement(te::xml::Reader &reader)
ParameterValue * getOpacity() const
Auxiliary classes and functions to serialize Symbolizer informations from a XML document.
OverlapBehavior getOverlapBehavior() const
const Stroke * getStroke() const
Gets the Stroke associates with the PolygonSymbolizer.
The RasterSymbolizer describes how to render raster/matrix-coverage data (e.g., satellite photos...
void WriteGeometryPropertyHelper(const te::fe::PropertyName *p, te::xml::AbstractWriter &writer)
const ParameterValue * getPerpendicularOffset() const
te::fe::PropertyName * ReadGeometryPropertyHelper(te::xml::Reader &reader)
const Font * getFont() const
TESEEXPORT void Save(const te::se::AnchorPoint *ap, te::xml::AbstractWriter &writer)
const Displacement * getDisplacement() const
TESEEXPORT te::se::ColorMap * ReadColorMap(te::xml::Reader &reader)
TESEEXPORT te::se::LabelPlacement * ReadLabelPlacement(te::xml::Reader &reader)
const Stroke * getStroke() const
Data serialization for the Symbology Encoder module.
const te::fe::PropertyName * getGeometry() const
void TextSymbolizerWriter(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
const ParameterValue * getLabel() const
const ParameterValue * getPerpendicularOffset() const
TESEEXPORT te::se::ChannelSelection * ReadChannelSelection(te::xml::Reader &reader)
virtual NodeType getNodeType() const =0
It return the type of node read.
boost::function< te::se::Symbolizer *(te::xml::Reader &)> SymbolizerReadFnctType
virtual std::string getElementValue() const =0
It returns the element data value in the case of VALUE node.
TESEEXPORT te::se::ImageOutline * ReadImageOutline(te::xml::Reader &reader)
virtual void writeEndElement(const std::string &qName)=0
A LineSymbolizer is used to style a stroke along a linear geometry type, such as a string of line seg...
TESEEXPORT te::se::Font * ReadFont(te::xml::Reader &reader)
const Fill * getFill() const
te::se::ColorMap * getColorMap() const
void write(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer) const
void PolygonSymbolizerWriter(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
boost::function< void(const te::se::Symbolizer *, te::xml::AbstractWriter &)> SymbolizerWriteFnctType
SymbolizerFnctIdxType m_fncts
void WriteParameterValuePtrHelper(const std::string &elementName, const te::se::ParameterValue *p, te::xml::AbstractWriter &writer)
virtual const std::string & getType() const =0
It returns the symbolizer type.
const Halo * getHalo() const
virtual bool next()=0
It gets the next event to be read.
te::se::Symbolizer * PointSymbolizerReader(te::xml::Reader &reader)
void ReadSymbolizerHelper(te::se::Symbolizer *symbolizer, te::xml::Reader &reader)
void RasterSymbolizerWriter(const te::se::Symbolizer *symbolizer, te::xml::AbstractWriter &writer)
TESEEXPORT te::se::Graphic * ReadGraphic(te::xml::Reader &reader)
TESEEXPORT te::se::ShadedRelief * ReadShadedRelief(te::xml::Reader &reader)
te::se::ImageOutline * getImageOutline() const