Mapper  0.9.0
API documentation
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
OpenOrienteering::OcdFileExport Class Reference

An exporter for OCD files. More...

#include <ocd_file_export.h>

Inheritance diagram for OpenOrienteering::OcdFileExport:
Inheritance graph
[legend]
Collaboration diagram for OpenOrienteering::OcdFileExport:
Collaboration graph
[legend]

Public Member Functions

 OcdFileExport (const QString &path, const Map *map, const MapView *view, quint16 version)
 
 ~OcdFileExport () override
 
template<>
void exportSetup (OcdFile< Ocd::FormatV8 > &file)
 
- Public Member Functions inherited from OpenOrienteering::Exporter
 Exporter (const QString &path, const Map *map, const MapView *view)
 Creates a new Exporter with the given path, map, and view. More...
 
 ~Exporter () override
 Destroys the current Exporter. More...
 
bool doExport ()
 Exports the map and view. More...
 
- Public Member Functions inherited from OpenOrienteering::ImportExport
 ImportExport (QIODevice *device=nullptr)
 Creates a new importer or exporter with the given IO device. More...
 
 ImportExport (const ImportExport &)=delete
 
 ImportExport (ImportExport &&)=delete
 
virtual ~ImportExport ()
 Destroys an importer or exporter. More...
 
virtual bool supportsQIODevice () const noexcept
 Returns true when the importer/exporter supports QIODevice. More...
 
QIODevicedevice () const noexcept
 Returns the input device if it has been set or created. More...
 
void setDevice (QIODevice *device)
 Sets a custom input device to be used for import. More...
 
void setOption (const QString &name, const QVariant &value)
 Sets an option in this importer or exporter. More...
 
QVariant option (const QString &name) const
 Retrieves the value of an option in this instance. More...
 
void addWarning (const QString &str)
 Adds a string to the current list of warnings. More...
 
const std::vector< QString > & warnings () const noexcept
 Returns the current list of warnings collected by this object. More...
 

Static Public Attributes

static quint16 default_version = 9
 

Protected Member Functions

bool exportImplementation () override
 Exports an OCD file. More...
 
template<class Encoding >
QTextCodecdetermineEncoding ()
 
template<class Format >
bool exportImplementation ()
 Actual implementation of the export. More...
 
MapCoord calculateAreaOffset ()
 Calculates an offset to be applied to the coordinates so that the map data is moved into the limited OCD drawing area. More...
 
template<class Format >
void exportSetup (OcdFile< Format > &file)
 
void exportSetup ()
 
void exportGeoreferencing ()
 
template<class Format >
void exportSymbols (OcdFile< Format > &file)
 
template<class OcdBaseSymbol >
void setupBaseSymbol (const Symbol *symbol, quint32 symbol_number, OcdBaseSymbol &ocd_base_symbol)
 
template<class OcdBaseSymbol >
void setupIcon (const Symbol *symbol, OcdBaseSymbol &ocd_base_symbol)
 
template<class OcdPointSymbol >
QByteArray exportPointSymbol (const PointSymbol *point_symbol)
 
template<class Element >
qint16 exportPattern (const PointSymbol *point, QByteArray &byte_array)
 
template<class Element >
qint16 exportSubPattern (const MapCoordVector &coords, const Symbol *symbol, QByteArray &byte_array)
 
template<class OcdAreaSymbol >
QByteArray exportAreaSymbol (const AreaSymbol *area_symbol)
 
template<class OcdAreaSymbol >
QByteArray exportAreaSymbol (const AreaSymbol *area_symbol, quint32 symbol_number)
 
template<class OcdAreaSymbolCommon >
quint8 exportAreaSymbolCommon (const AreaSymbol *area_symbol, OcdAreaSymbolCommon &ocd_area_common, const PointSymbol *&pattern_symbol)
 
template<class OcdAreaSymbol >
void exportAreaSymbolSpecial (const AreaSymbol *area_symbol, OcdAreaSymbol &ocd_area_symbol)
 
template<class OcdLineSymbol >
QByteArray exportLineSymbol (const LineSymbol *line_symbol)
 
template<class OcdLineSymbol >
QByteArray exportLineSymbol (const LineSymbol *line_symbol, quint32 symbol_number)
 
template<class OcdLineSymbolCommon >
quint32 exportLineSymbolCommon (const LineSymbol *line_symbol, OcdLineSymbolCommon &ocd_line_common)
 
template<class OcdLineSymbolCommon >
void exportLineSymbolDoubleLine (const LineSymbol *line_symbol, quint32 fill_color, OcdLineSymbolCommon &ocd_line_common)
 
template<class Format , class OcdTextSymbol >
void exportTextSymbol (OcdFile< Format > &file, const TextSymbol *text_symbol)
 
template<class OcdTextSymbol >
QByteArray exportTextSymbol (const TextSymbol *text_symbol, quint32 symbol_number, int alignment)
 
template<class OcdTextSymbol >
void setupTextSymbolExtra (const TextSymbol *text_symbol, OcdTextSymbol &ocd_text_symbol)
 
template<class OcdTextSymbolBasic >
void setupTextSymbolBasic (const TextSymbol *text_symbol, int alignment, OcdTextSymbolBasic &ocd_text_basic)
 
template<class OcdTextSymbolSpecial >
void setupTextSymbolSpecial (const TextSymbol *text_symbol, OcdTextSymbolSpecial &ocd_text_special)
 
template<class OcdTextSymbolFraming >
void setupTextSymbolFraming (const TextSymbol *text_symbol, OcdTextSymbolFraming &ocd_text_framing)
 
template<class Format >
void exportCombinedSymbol (OcdFile< Format > &file, const CombinedSymbol *combined_symbol)
 
template<class Format >
void exportGenericCombinedSymbol (OcdFile< Format > &file, const CombinedSymbol *combined_symbol)
 
template<class OcdAreaSymbol >
QByteArray exportCombinedAreaSymbol (quint32 symbol_number, const CombinedSymbol *combined_symbol, const AreaSymbol *area_symbol, const LineSymbol *line_symbol)
 
template<class OcdLineSymbol >
QByteArray exportCombinedLineSymbol (quint32 symbol_number, const CombinedSymbol *combined_symbol, const LineSymbol *main_line, const LineSymbol *framing, const LineSymbol *double_line)
 
template<class Format >
void exportObjects (OcdFile< Format > &file)
 
template<class OcdObject >
void handleObjectExtras (const Object *object, OcdObject &ocd_object, typename OcdObject::IndexEntryType &entry)
 Object setup which depends on the type features, not on minor type variations of members. More...
 
template<class OcdObject >
QByteArray exportPointObject (const PointObject *point, typename OcdObject::IndexEntryType &entry)
 
template<class Format >
void exportPathObject (OcdFile< Format > &file, const PathObject *path, bool lines_only=false)
 
template<class OcdObject >
QByteArray exportTextObject (const TextObject *text, typename OcdObject::IndexEntryType &entry)
 
template<class OcdObject >
QByteArray exportObjectCommon (const Object *object, OcdObject &ocd_object, typename OcdObject::IndexEntryType &entry)
 
template<class Format >
void exportTemplates (OcdFile< Format > &file)
 
void exportTemplates ()
 
template<class Format >
void exportExtras (OcdFile< Format > &file)
 
void exportExtras ()
 
quint16 convertColor (const MapColor *color) const
 
quint16 getPointSymbolExtent (const PointSymbol *symbol) const
 
quint16 exportCoordinates (const MapCoordVector &coords, const Symbol *symbol, QByteArray &byte_array)
 
quint16 exportCoordinates (const MapCoordVector &coords, const Symbol *symbol, QByteArray &byte_array, MapCoord &bottom_left, MapCoord &top_right)
 
quint16 exportTextCoordinatesSingle (const TextObject *object, QByteArray &byte_array, MapCoord &bottom_left, MapCoord &top_right)
 
quint16 exportTextCoordinatesBox (const TextObject *object, QByteArray &byte_array, MapCoord &bottom_left, MapCoord &top_right)
 
QByteArray exportTextData (const TextObject *object, int chunk_size, int max_chunks)
 
void addTextTruncationWarning (QString text, int pos)
 
quint32 makeUniqueSymbolNumber (quint32 initial_number) const
 

Additional Inherited Members

- Protected Attributes inherited from OpenOrienteering::Exporter
const QString path
 The output path. More...
 
const Map *const map
 The Map to import or export. More...
 
const MapView *const view
 The MapView to import or export. More...
 

Detailed Description

An exporter for OCD files.

The functions in this class are designed around the following pattern:

From template<class Format> void OcdFileExport::exportImplementation() we call into template functions so that we get a template function instantiation for the actual types of the format. This is what we can do:

Constructor & Destructor Documentation

◆ OcdFileExport()

OpenOrienteering::OcdFileExport::OcdFileExport ( const QString path,
const Map map,
const MapView view,
quint16  version 
)

◆ ~OcdFileExport()

OpenOrienteering::OcdFileExport::~OcdFileExport ( )
overridedefault

Member Function Documentation

◆ addTextTruncationWarning()

void OpenOrienteering::OcdFileExport::addTextTruncationWarning ( QString  text,
int  pos 
)
protected

◆ calculateAreaOffset()

MapCoord OpenOrienteering::OcdFileExport::calculateAreaOffset ( )
protected

Calculates an offset to be applied to the coordinates so that the map data is moved into the limited OCD drawing area.

◆ convertColor()

quint16 OpenOrienteering::OcdFileExport::convertColor ( const MapColor color) const
protected

◆ determineEncoding()

template<class Encoding >
QTextCodec * OpenOrienteering::OcdFileExport::determineEncoding ( )
protected

◆ exportAreaSymbol() [1/2]

template<class OcdAreaSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportAreaSymbol ( const AreaSymbol area_symbol)
protected

◆ exportAreaSymbol() [2/2]

template<class OcdAreaSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportAreaSymbol ( const AreaSymbol area_symbol,
quint32  symbol_number 
)
protected

◆ exportAreaSymbolCommon()

template<class OcdAreaSymbolCommon >
quint8 OpenOrienteering::OcdFileExport::exportAreaSymbolCommon ( const AreaSymbol area_symbol,
OcdAreaSymbolCommon &  ocd_area_common,
const PointSymbol *&  pattern_symbol 
)
protected

◆ exportAreaSymbolSpecial()

template<class OcdAreaSymbol >
void OpenOrienteering::OcdFileExport::exportAreaSymbolSpecial ( const AreaSymbol area_symbol,
OcdAreaSymbol &  ocd_area_symbol 
)
protected

◆ exportCombinedAreaSymbol()

template<class OcdAreaSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportCombinedAreaSymbol ( quint32  symbol_number,
const CombinedSymbol combined_symbol,
const AreaSymbol area_symbol,
const LineSymbol line_symbol 
)
protected

◆ exportCombinedLineSymbol()

template<class OcdLineSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportCombinedLineSymbol ( quint32  symbol_number,
const CombinedSymbol combined_symbol,
const LineSymbol main_line,
const LineSymbol framing,
const LineSymbol double_line 
)
protected

◆ exportCombinedSymbol()

template<class Format >
void OpenOrienteering::OcdFileExport::exportCombinedSymbol ( OcdFile< Format > &  file,
const CombinedSymbol combined_symbol 
)
protected

◆ exportCoordinates() [1/2]

quint16 OpenOrienteering::OcdFileExport::exportCoordinates ( const MapCoordVector coords,
const Symbol symbol,
QByteArray byte_array 
)
protected

◆ exportCoordinates() [2/2]

quint16 OpenOrienteering::OcdFileExport::exportCoordinates ( const MapCoordVector coords,
const Symbol symbol,
QByteArray byte_array,
MapCoord bottom_left,
MapCoord top_right 
)
protected

◆ exportExtras() [1/2]

template<class Format >
void OpenOrienteering::OcdFileExport::exportExtras ( OcdFile< Format > &  file)
protected

◆ exportExtras() [2/2]

void OpenOrienteering::OcdFileExport::exportExtras ( )
protected

◆ exportGenericCombinedSymbol()

template<class Format >
void OpenOrienteering::OcdFileExport::exportGenericCombinedSymbol ( OcdFile< Format > &  file,
const CombinedSymbol combined_symbol 
)
protected

◆ exportGeoreferencing()

void OpenOrienteering::OcdFileExport::exportGeoreferencing ( )
protected

◆ exportImplementation() [1/2]

bool OpenOrienteering::OcdFileExport::exportImplementation ( )
overrideprotectedvirtual

Exports an OCD file.

For now, this simply uses the OCAD8FileExport class unless the file name ends with "test-vVERSION.ocd".

Implements OpenOrienteering::Exporter.

◆ exportImplementation() [2/2]

template<class Format >
bool OpenOrienteering::OcdFileExport::exportImplementation ( )
protectedvirtual

Actual implementation of the export.

Exporters which support input from QIODevice shall use the device(). They must not open or close the device.

If information might be lost in the export, a message shall be recorded by calling addWarning() with a translated, useful description of the issue. If a fatal error is encountered, then this method may either throw an exception, or log an error message with addWarning() and return false.

There is no default implementation.

Implements OpenOrienteering::Exporter.

◆ exportLineSymbol() [1/2]

template<class OcdLineSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportLineSymbol ( const LineSymbol line_symbol)
protected

◆ exportLineSymbol() [2/2]

template<class OcdLineSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportLineSymbol ( const LineSymbol line_symbol,
quint32  symbol_number 
)
protected

◆ exportLineSymbolCommon()

template<class OcdLineSymbolCommon >
quint32 OpenOrienteering::OcdFileExport::exportLineSymbolCommon ( const LineSymbol line_symbol,
OcdLineSymbolCommon &  ocd_line_common 
)
protected

◆ exportLineSymbolDoubleLine()

template<class OcdLineSymbolCommon >
void OpenOrienteering::OcdFileExport::exportLineSymbolDoubleLine ( const LineSymbol line_symbol,
quint32  fill_color,
OcdLineSymbolCommon &  ocd_line_common 
)
protected

◆ exportObjectCommon()

template<class OcdObject >
QByteArray OpenOrienteering::OcdFileExport::exportObjectCommon ( const Object object,
OcdObject &  ocd_object,
typename OcdObject::IndexEntryType &  entry 
)
protected

◆ exportObjects()

template<class Format >
void OpenOrienteering::OcdFileExport::exportObjects ( OcdFile< Format > &  file)
protected
Todo:
move pattern origin etc.

◆ exportPathObject()

template<class Format >
void OpenOrienteering::OcdFileExport::exportPathObject ( OcdFile< Format > &  file,
const PathObject path,
bool  lines_only = false 
)
protected

◆ exportPattern()

template<class Element >
qint16 OpenOrienteering::OcdFileExport::exportPattern ( const PointSymbol point,
QByteArray byte_array 
)
protected

◆ exportPointObject()

template<class OcdObject >
QByteArray OpenOrienteering::OcdFileExport::exportPointObject ( const PointObject point,
typename OcdObject::IndexEntryType &  entry 
)
protected

◆ exportPointSymbol()

template<class OcdPointSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportPointSymbol ( const PointSymbol point_symbol)
protected

◆ exportSetup() [1/3]

template<class Format >
void OpenOrienteering::OcdFileExport::exportSetup ( OcdFile< Format > &  file)
protected

◆ exportSetup() [2/3]

void OpenOrienteering::OcdFileExport::exportSetup ( )
protected

◆ exportSetup() [3/3]

template<>
void OpenOrienteering::OcdFileExport::exportSetup ( OcdFile< Ocd::FormatV8 > &  file)
Todo:
addWarning(...)

◆ exportSubPattern()

template<class Element >
qint16 OpenOrienteering::OcdFileExport::exportSubPattern ( const MapCoordVector coords,
const Symbol symbol,
QByteArray byte_array 
)
protected

◆ exportSymbols()

template<class Format >
void OpenOrienteering::OcdFileExport::exportSymbols ( OcdFile< Format > &  file)
protected

◆ exportTemplates() [1/2]

template<class Format >
void OpenOrienteering::OcdFileExport::exportTemplates ( OcdFile< Format > &  file)
protected

◆ exportTemplates() [2/2]

void OpenOrienteering::OcdFileExport::exportTemplates ( )
protected

◆ exportTextCoordinatesBox()

quint16 OpenOrienteering::OcdFileExport::exportTextCoordinatesBox ( const TextObject object,
QByteArray byte_array,
MapCoord bottom_left,
MapCoord top_right 
)
protected

◆ exportTextCoordinatesSingle()

quint16 OpenOrienteering::OcdFileExport::exportTextCoordinatesSingle ( const TextObject object,
QByteArray byte_array,
MapCoord bottom_left,
MapCoord top_right 
)
protected

◆ exportTextData()

QByteArray OpenOrienteering::OcdFileExport::exportTextData ( const TextObject object,
int  chunk_size,
int  max_chunks 
)
protected

◆ exportTextObject()

template<class OcdObject >
QByteArray OpenOrienteering::OcdFileExport::exportTextObject ( const TextObject text,
typename OcdObject::IndexEntryType &  entry 
)
protected

◆ exportTextSymbol() [1/2]

template<class Format , class OcdTextSymbol >
void OpenOrienteering::OcdFileExport::exportTextSymbol ( OcdFile< Format > &  file,
const TextSymbol text_symbol 
)
protected

◆ exportTextSymbol() [2/2]

template<class OcdTextSymbol >
QByteArray OpenOrienteering::OcdFileExport::exportTextSymbol ( const TextSymbol text_symbol,
quint32  symbol_number,
int  alignment 
)
protected

◆ getPointSymbolExtent()

quint16 OpenOrienteering::OcdFileExport::getPointSymbolExtent ( const PointSymbol symbol) const
protected

◆ handleObjectExtras()

template<class OcdObject >
void OpenOrienteering::OcdFileExport::handleObjectExtras ( const Object object,
OcdObject &  ocd_object,
typename OcdObject::IndexEntryType &  entry 
)
protected

Object setup which depends on the type features, not on minor type variations of members.

◆ makeUniqueSymbolNumber()

quint32 OpenOrienteering::OcdFileExport::makeUniqueSymbolNumber ( quint32  initial_number) const
protected

◆ setupBaseSymbol()

template<class OcdBaseSymbol >
void OpenOrienteering::OcdFileExport::setupBaseSymbol ( const Symbol symbol,
quint32  symbol_number,
OcdBaseSymbol &  ocd_base_symbol 
)
protected

◆ setupIcon()

template<class OcdBaseSymbol >
void OpenOrienteering::OcdFileExport::setupIcon ( const Symbol symbol,
OcdBaseSymbol &  ocd_base_symbol 
)
protected

◆ setupTextSymbolBasic()

template<class OcdTextSymbolBasic >
void OpenOrienteering::OcdFileExport::setupTextSymbolBasic ( const TextSymbol text_symbol,
int  alignment,
OcdTextSymbolBasic &  ocd_text_basic 
)
protected

◆ setupTextSymbolExtra()

template<class OcdTextSymbol >
void OpenOrienteering::OcdFileExport::setupTextSymbolExtra ( const TextSymbol text_symbol,
OcdTextSymbol &  ocd_text_symbol 
)
protected

◆ setupTextSymbolFraming()

template<class OcdTextSymbolFraming >
void OpenOrienteering::OcdFileExport::setupTextSymbolFraming ( const TextSymbol text_symbol,
OcdTextSymbolFraming &  ocd_text_framing 
)
protected

◆ setupTextSymbolSpecial()

template<class OcdTextSymbolSpecial >
void OpenOrienteering::OcdFileExport::setupTextSymbolSpecial ( const TextSymbol text_symbol,
OcdTextSymbolSpecial &  ocd_text_special 
)
protected

Member Data Documentation

◆ default_version

quint16 OpenOrienteering::OcdFileExport::default_version = 9
static
Todo:
Add proper API

The documentation for this class was generated from the following files: