/** * @RDE_HEADER@ * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "symbology_xml_export.h" #include "symbol.h" #include #include class QFile; class QXmlStreamWriter; namespace SymbologyXML { class Primitive; /** \brief Write a Symbol to a XML-String of XML-File. This class generates a full XML-Description of a given Symbol. A Symbols XML-Description can either be written to a File or to a String for storing it into whatever media intended. For reading a Symbol back from XML, use SymbolReader. @author Stephan Kuhagen */ class SYMBOLOGY_XML_EXPORT SymbolWriter { public: SymbolWriter(); ~SymbolWriter() = default; Q_DISABLE_COPY(SymbolWriter) /** Filter-Bits for Primitive-Attributes. Defines the Attributes, that should not be saved. */ enum t_attFilterPrimitive { AFP_NO_FILTER = 0, AFP_CLOSED = 1, AFP_COLOR = 2, AFP_EXTENT = 4, AFP_FILL = 8, AFP_LINESTYLE = 16, AFP_LINEWIDTH = 32, AFP_ROTATE = 64, AFP_START = 128, AFP_TRANSFORM = 256 }; /** Write a symbols XML-representation into a QString \param symbol: The Symbol \param attributeFilter: Filter-Mask for Attributes. \see(t_attFilterPrimitive) \return A QString containing the Symbols XML-description */ QByteArray toString(const Symbol& symbol, t_attFilterPrimitive attributeFilter = AFP_NO_FILTER) const; /** Write a symbols XML-representation into a File \param symbol: The Symbol \param file: The file to write into \return True on success, false otherwise */ bool toFile(const Symbol &symbol, QFile *file, t_attFilterPrimitive attributeFilter = AFP_NO_FILTER) const; private: //! NGLLogger NGL::INGLLogger& logger; /** Create a string from a primitive. \param p: Pointer to the primitive \param attributeFilter: Filter-Mask for Attributes. \see(t_attFilterPrimitive) \return The primitive as xml-string */ static void primitiveToString(QXmlStreamWriter &sw, const Primitive *p, t_attFilterPrimitive attributeFilter); static void writePrimitiveAttributes(QXmlStreamWriter &sw, const Primitive *p, t_attFilterPrimitive attributeFilter); }; // class SymbolWriter } // namespace SymbologyXML