Mapper  0.9.0
API documentation
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
OpenOrienteering::Symbol Class Referenceabstract

Abstract base class for map symbols. More...

#include <symbol.h>

Inheritance diagram for OpenOrienteering::Symbol:
Inheritance graph
[legend]

Classes

struct  lessByColor
 A functor for comparing symbols by dominant colors. More...
 

Public Types

enum  Type {
  Point = 1, Line = 2, Area = 4, Text = 8,
  Combined = 16, NoSymbol = 0, AllSymbols = Point | Line | Area | Text | Combined
}
 Enumeration of all possible symbol types. More...
 
enum  RenderableOption { RenderBaselines = 1 << 0, RenderAreasHatched = 1 << 1, RenderNormal = 0 }
 RenderableOptions denominate variations in painting symbols. More...
 

Public Member Functions

 Symbol (Type type) noexcept
 
virtual ~Symbol ()
 
Symboloperator= (const Symbol &)=delete
 
Symboloperator= (Symbol &&)=delete
 
virtual bool validate () const
 
bool equals (const Symbol *other, Qt::CaseSensitivity case_sensitivity=Qt::CaseSensitive) const
 Checks for equality to the other symbol. More...
 
bool stateEquals (const Symbol *other) const
 Checks protected/hidden state for equality to the other symbol. More...
 
Type getType () const
 Returns the type of the symbol. More...
 
const PointSymbolasPoint () const
 Case to PointSymbol with type checking. More...
 
PointSymbolasPoint ()
 Case to PointSymbol with type checking. More...
 
const LineSymbolasLine () const
 Case to LineSymbol with type checking. More...
 
LineSymbolasLine ()
 Case to LineSymbol with type checking. More...
 
const AreaSymbolasArea () const
 Case to AreaSymbol with type checking. More...
 
AreaSymbolasArea ()
 Case to AreaSymbol with type checking. More...
 
const TextSymbolasText () const
 Case to TextSymbol with type checking. More...
 
TextSymbolasText ()
 Case to TextSymbol with type checking. More...
 
const CombinedSymbolasCombined () const
 Case to CombinedSymbol with type checking. More...
 
CombinedSymbolasCombined ()
 Case to CombinedSymbol with type checking. More...
 
virtual TypeCombination getContainedTypes () const
 Returns the combined bitmask of all symbol types this symbol contains. More...
 
bool isTypeCompatibleTo (const Object *object) const
 Checks if the symbol can be applied to the given object. More...
 
bool numberEquals (const Symbol *other) const
 Returns if the symbol numbers are exactly equal. More...
 
bool numberEqualsRelaxed (const Symbol *other) const
 Returns if the symbol numbers are equal, ignoring trailing zeros. More...
 
void save (QXmlStreamWriter &xml, const Map &map) const
 Saves the symbol in xml format. More...
 
virtual bool loadingFinishedEvent (Map *map)
 Called when loading the map is finished. More...
 
virtual void createRenderables (const Object *object, const VirtualCoordVector &coords, ObjectRenderables &output, Symbol::RenderableOptions options) const =0
 Creates renderables for a generic object. More...
 
virtual void createRenderables (const PathObject *object, const PathPartVector &path_parts, ObjectRenderables &output, Symbol::RenderableOptions options) const
 Creates renderables for a path object. More...
 
virtual void createBaselineRenderables (const PathObject *object, const PathPartVector &path_parts, ObjectRenderables &output, const MapColor *color) const
 Creates baseline renderables for a path object. More...
 
virtual void colorDeletedEvent (const MapColor *color)=0
 Called when a color is removed from the map. More...
 
virtual bool containsColor (const MapColor *color) const =0
 Returns if the given color is used by this symbol. More...
 
virtual const MapColorguessDominantColor () const =0
 Returns the dominant color of this symbol. More...
 
virtual void replaceColors (const MapColorMap &color_map)=0
 Replaces colors used by this symbol. More...
 
virtual bool symbolChangedEvent (const Symbol *old_symbol, const Symbol *new_symbol)
 Called when a symbol was changed, replaced, or removed. More...
 
virtual bool containsSymbol (const Symbol *symbol) const
 Returns true if the given symbol is referenced by this symbol. More...
 
virtual void scale (double factor)=0
 Scales the symbol. More...
 
QImage getCustomIcon () const
 Returns the custom symbol icon. More...
 
void setCustomIcon (const QImage &image)
 Sets a custom symbol icon. More...
 
QImage getIcon (const Map *map) const
 Returns the symbol's icon. More...
 
QImage createIcon (const Map &map, int side_length, bool antialiasing=true, qreal zoom=0) const
 Creates a symbol icon with the given side length (pixels). More...
 
void resetIcon ()
 Clear the symbol's cached icon. More...
 
virtual qreal dimensionForIcon () const
 Returns the dimension which shall considered when scaling the icon. More...
 
virtual qreal calculateLargestLineExtent () const
 Returns the largest extent of all primitive lines which are part of the symbol. More...
 
const QStringgetName () const
 Returns the symbol name. More...
 
QString getPlainTextName () const
 Returns the symbol name with all HTML markup stripped. More...
 
void setName (const QString &new_name)
 Sets the symbol name. More...
 
QString getNumberAsString () const
 Returns the symbol number as string. More...
 
int getNumberComponent (int i) const
 Returns the i-th component of the symbol number as int. More...
 
void setNumberComponent (int i, int new_number)
 Sets the i-th component of the symbol number. More...
 
const QStringgetDescription () const
 Returns the symbol description. More...
 
void setDescription (const QString &new_description)
 Sets the symbol description. More...
 
bool isHelperSymbol () const
 Returns if this is a helper symbol (which is not printed in the final map). More...
 
void setIsHelperSymbol (bool value)
 Sets if this is a helper symbol, see isHelperSymbol(). More...
 
bool isHidden () const
 Returns if this symbol is hidden. More...
 
void setHidden (bool value)
 Sets the hidden state of this symbol. More...
 
bool isProtected () const
 Returns if this symbol is protected. More...
 
void setProtected (bool value)
 Sets the protected state of this symbol. More...
 
bool isRotatable () const
 Returns if objects with this symbol can be rotated in arbitrary directions. More...
 
virtual SymbolPropertiesWidgetcreatePropertiesWidget (SymbolSettingDialog *dialog)=0
 Creates a properties widget for the symbol. More...
 

Static Public Member Functions

template<class S >
static std::unique_ptr< S > duplicate (const S &s)
 Duplicates a symbol. More...
 
static std::unique_ptr< Symbolload (QXmlStreamReader &xml, const Map &map, SymbolDictionary &symbol_dict, int version)
 Load the symbol in xml format. More...
 
static std::unique_ptr< SymbolmakeSymbolForType (Type type)
 Returns a newly created symbol of the given type. More...
 
static bool areTypesCompatible (Type a, Type b)
 Returns if the symbol types can be applied to the same object types. More...
 
static TypeCombination getCompatibleTypes (Type type)
 Returns a bitmask of all types which can be applied to the same objects as the given type. More...
 
static bool lessByNumber (const Symbol *s1, const Symbol *s2)
 Compares two symbols by number. More...
 
static bool lessByColorPriority (const Symbol *s1, const Symbol *s2)
 Compares two symbols by the dominant colors' priorities. More...
 

Static Public Attributes

static constexpr auto number_components = 3u
 Number of components of symbol numbers. More...
 

Protected Member Functions

 Symbol (const Symbol &proto)
 
virtual Symbolduplicate () const =0
 
void setRotatable (bool value)
 Sets the rotatability state of the symbol. More...
 
virtual void saveImpl (QXmlStreamWriter &xml, const Map &map) const =0
 Must be overridden to save type-specific symbol properties. More...
 
virtual bool loadImpl (QXmlStreamReader &xml, const Map &map, SymbolDictionary &symbol_dict, int version)=0
 Must be overridden to load type-specific symbol properties. More...
 
virtual bool equalsImpl (const Symbol *other, Qt::CaseSensitivity case_sensitivity) const =0
 Must be overridden to compare specific attributes. More...
 

Detailed Description

Abstract base class for map symbols.

Provides among other things a symbol number consisting of multiple parts, e.g. "2.4.12". Parts which are not set are assigned the value -1.

Member Enumeration Documentation

◆ RenderableOption

RenderableOptions denominate variations in painting symbols.

Enumerator
RenderBaselines 

Paint cosmetique contours and baselines.

RenderAreasHatched 

Paint hatching instead of opaque fill.

RenderNormal 

Paint normally.

◆ Type

Enumeration of all possible symbol types.

Values are chosen to be able to be used as bits in a bitmask.

Enumerator
Point 
Line 
Area 
Text 
Combined 
NoSymbol 
AllSymbols 

Constructor & Destructor Documentation

◆ Symbol() [1/2]

OpenOrienteering::Symbol::Symbol ( Type  type)
explicitnoexcept

◆ ~Symbol()

OpenOrienteering::Symbol::~Symbol ( )
virtualdefault

◆ Symbol() [2/2]

OpenOrienteering::Symbol::Symbol ( const Symbol proto)
explicitprotected

Member Function Documentation

◆ areTypesCompatible()

bool OpenOrienteering::Symbol::areTypesCompatible ( Symbol::Type  a,
Symbol::Type  b 
)
static

Returns if the symbol types can be applied to the same object types.

◆ asArea() [1/2]

const AreaSymbol * OpenOrienteering::Symbol::asArea ( ) const

Case to AreaSymbol with type checking.

◆ asArea() [2/2]

AreaSymbol * OpenOrienteering::Symbol::asArea ( )

Case to AreaSymbol with type checking.

◆ asCombined() [1/2]

const CombinedSymbol * OpenOrienteering::Symbol::asCombined ( ) const

Case to CombinedSymbol with type checking.

◆ asCombined() [2/2]

CombinedSymbol * OpenOrienteering::Symbol::asCombined ( )

Case to CombinedSymbol with type checking.

◆ asLine() [1/2]

const LineSymbol * OpenOrienteering::Symbol::asLine ( ) const

Case to LineSymbol with type checking.

◆ asLine() [2/2]

LineSymbol * OpenOrienteering::Symbol::asLine ( )

Case to LineSymbol with type checking.

◆ asPoint() [1/2]

const PointSymbol * OpenOrienteering::Symbol::asPoint ( ) const

Case to PointSymbol with type checking.

◆ asPoint() [2/2]

PointSymbol * OpenOrienteering::Symbol::asPoint ( )

Case to PointSymbol with type checking.

◆ asText() [1/2]

const TextSymbol * OpenOrienteering::Symbol::asText ( ) const

Case to TextSymbol with type checking.

◆ asText() [2/2]

TextSymbol * OpenOrienteering::Symbol::asText ( )

Case to TextSymbol with type checking.

◆ calculateLargestLineExtent()

qreal OpenOrienteering::Symbol::calculateLargestLineExtent ( ) const
virtual

Returns the largest extent of all primitive lines which are part of the symbol.

Effectively, this is the half line width.

Reimplemented in OpenOrienteering::LineSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ colorDeletedEvent()

virtual void OpenOrienteering::Symbol::colorDeletedEvent ( const MapColor color)
pure virtual

Called when a color is removed from the map.

Symbols need to remove all references to the given color when this event occurs.

Implemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::TextSymbol, OpenOrienteering::PointSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ containsColor()

virtual bool OpenOrienteering::Symbol::containsColor ( const MapColor color) const
pure virtual

◆ containsSymbol()

bool OpenOrienteering::Symbol::containsSymbol ( const Symbol symbol) const
virtual

Returns true if the given symbol is referenced by this symbol.

A symbol does not contain itself, so it must return true when the given symbol is identical to the symbol this function is being called for.

Reimplemented in OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ createBaselineRenderables()

void OpenOrienteering::Symbol::createBaselineRenderables ( const PathObject object,
const PathPartVector path_parts,
ObjectRenderables output,
const MapColor color 
) const
virtual

Creates baseline renderables for a path object.

Baseline renderables show the coordinate paths with minimum line width.

See also
createRenderables()

◆ createIcon()

QImage OpenOrienteering::Symbol::createIcon ( const Map map,
int  side_length,
bool  antialiasing = true,
qreal  zoom = 0 
) const

Creates a symbol icon with the given side length (pixels).

If the zoom parameter is zero, the map's symbolIconZoom() is used. At a zoom of 1.0 (100%), a square symbol of 1 mm side length would fill 50% of the icon width and height. Larger symbols may be scaled down.

◆ createPropertiesWidget()

virtual SymbolPropertiesWidget* OpenOrienteering::Symbol::createPropertiesWidget ( SymbolSettingDialog dialog)
pure virtual

◆ createRenderables() [1/2]

virtual void OpenOrienteering::Symbol::createRenderables ( const Object object,
const VirtualCoordVector coords,
ObjectRenderables output,
Symbol::RenderableOptions  options 
) const
pure virtual

Creates renderables for a generic object.

This will create the renderables according to the object's properties and the given coordinates.

Implementations must use the coordinates (coords) instead of the object's coordinates.

Implemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::TextSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ createRenderables() [2/2]

void OpenOrienteering::Symbol::createRenderables ( const PathObject object,
const PathPartVector path_parts,
ObjectRenderables output,
Symbol::RenderableOptions  options 
) const
virtual

Creates renderables for a path object.

This will create the renderables according to the object's properties and the coordinates given by the path_parts. This allows the immediate use of precalculated meta-information on paths.

See also
createRenderables()

Reimplemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ dimensionForIcon()

qreal OpenOrienteering::Symbol::dimensionForIcon ( ) const
virtual

Returns the dimension which shall considered when scaling the icon.

Reimplemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::PointSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ duplicate() [1/2]

virtual Symbol* OpenOrienteering::Symbol::duplicate ( ) const
protectedpure virtual

◆ duplicate() [2/2]

template<class S >
static std::unique_ptr<S> OpenOrienteering::Symbol::duplicate ( const S &  s)
inlinestatic

Duplicates a symbol.

This template function mitigates the incompatibility of std::unique_ptr with covariant return types when duplicating instances of the polymorphic type Symbol.

For convenient use outside of (child class) method implementatations, there is a free template function duplicate(const Derived& d).

◆ equals()

bool OpenOrienteering::Symbol::equals ( const Symbol other,
Qt::CaseSensitivity  case_sensitivity = Qt::CaseSensitive 
) const

Checks for equality to the other symbol.

This function does not check the equality of the state (protected/hidden). Use stateEquals(Symbol*) for this comparison.

Parameters
otherThe symbol to compare with.
case_sensitivityComparison mode for strings, e.g. symbol names.

◆ equalsImpl()

virtual bool OpenOrienteering::Symbol::equalsImpl ( const Symbol other,
Qt::CaseSensitivity  case_sensitivity 
) const
protectedpure virtual

◆ getCompatibleTypes()

Symbol::TypeCombination OpenOrienteering::Symbol::getCompatibleTypes ( Symbol::Type  type)
static

Returns a bitmask of all types which can be applied to the same objects as the given type.

◆ getContainedTypes()

Symbol::TypeCombination OpenOrienteering::Symbol::getContainedTypes ( ) const
virtual

Returns the combined bitmask of all symbol types this symbol contains.

Reimplemented in OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ getCustomIcon()

QImage OpenOrienteering::Symbol::getCustomIcon ( ) const
inline

Returns the custom symbol icon.

◆ getDescription()

const QString& OpenOrienteering::Symbol::getDescription ( ) const
inline

Returns the symbol description.

◆ getIcon()

QImage OpenOrienteering::Symbol::getIcon ( const Map map) const

Returns the symbol's icon.

This function returns (a scaled version of) the custom symbol icon if it is set and custom icon display is enabled, or a generated one. The icon is cached, making repeated calls cheap.

◆ getName()

const QString& OpenOrienteering::Symbol::getName ( ) const
inline

Returns the symbol name.

◆ getNumberAsString()

QString OpenOrienteering::Symbol::getNumberAsString ( ) const

Returns the symbol number as string.

◆ getNumberComponent()

int OpenOrienteering::Symbol::getNumberComponent ( int  i) const
inline

Returns the i-th component of the symbol number as int.

◆ getPlainTextName()

QString OpenOrienteering::Symbol::getPlainTextName ( ) const

Returns the symbol name with all HTML markup stripped.

◆ getType()

Type OpenOrienteering::Symbol::getType ( ) const
inline

Returns the type of the symbol.

◆ guessDominantColor()

virtual const MapColor* OpenOrienteering::Symbol::guessDominantColor ( ) const
pure virtual

Returns the dominant color of this symbol.

If it is not possible to efficiently determine this color exactly, an appropriate heuristic should be used.

Implemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::TextSymbol, OpenOrienteering::PointSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ isHelperSymbol()

bool OpenOrienteering::Symbol::isHelperSymbol ( ) const
inline

Returns if this is a helper symbol (which is not printed in the final map).

◆ isHidden()

bool OpenOrienteering::Symbol::isHidden ( ) const
inline

Returns if this symbol is hidden.

◆ isProtected()

bool OpenOrienteering::Symbol::isProtected ( ) const
inline

Returns if this symbol is protected.

Objects with a protected symbol cannot be selected or edited.

◆ isRotatable()

bool OpenOrienteering::Symbol::isRotatable ( ) const
inline

Returns if objects with this symbol can be rotated in arbitrary directions.

◆ isTypeCompatibleTo()

bool OpenOrienteering::Symbol::isTypeCompatibleTo ( const Object object) const

Checks if the symbol can be applied to the given object.

◆ lessByColorPriority()

bool OpenOrienteering::Symbol::lessByColorPriority ( const Symbol s1,
const Symbol s2 
)
static

Compares two symbols by the dominant colors' priorities.

Returns
True if s1's dominant color's priority is lower than s2's dominant color's priority.

◆ lessByNumber()

bool OpenOrienteering::Symbol::lessByNumber ( const Symbol s1,
const Symbol s2 
)
static

Compares two symbols by number.

Returns
True if the number of s1 is less than the number of s2.

◆ load()

std::unique_ptr< Symbol > OpenOrienteering::Symbol::load ( QXmlStreamReader xml,
const Map map,
SymbolDictionary symbol_dict,
int  version 
)
static

Load the symbol in xml format.

This function invokes loadImpl(...) which may be overridden by child classes. It does not add the symbol to the map.

Parameters
xmlStream to load from.
mapReference to the map which will eventually contain the symbol.
symbol_dictDictionary mapping symbol IDs to symbols.

◆ loadImpl()

virtual bool OpenOrienteering::Symbol::loadImpl ( QXmlStreamReader xml,
const Map map,
SymbolDictionary symbol_dict,
int  version 
)
protectedpure virtual

Must be overridden to load type-specific symbol properties.

See also
saveImpl()

Returns false if the current xml tag does not belong to the symbol and should be skipped, true if the element has been read completely.

Implemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::TextSymbol, OpenOrienteering::PointSymbol, and OpenOrienteering::CombinedSymbol.

◆ loadingFinishedEvent()

bool OpenOrienteering::Symbol::loadingFinishedEvent ( Map map)
virtual

Called when loading the map is finished.

This event handler can be overridden in order to do tasks that need to access other symbols or map objects.

Reimplemented in OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ makeSymbolForType()

std::unique_ptr< Symbol > OpenOrienteering::Symbol::makeSymbolForType ( Symbol::Type  type)
static

Returns a newly created symbol of the given type.

◆ numberEquals()

bool OpenOrienteering::Symbol::numberEquals ( const Symbol other) const

Returns if the symbol numbers are exactly equal.

◆ numberEqualsRelaxed()

bool OpenOrienteering::Symbol::numberEqualsRelaxed ( const Symbol other) const

Returns if the symbol numbers are equal, ignoring trailing zeros.

◆ operator=() [1/2]

Symbol& OpenOrienteering::Symbol::operator= ( const Symbol )
delete

◆ operator=() [2/2]

Symbol& OpenOrienteering::Symbol::operator= ( Symbol &&  )
delete

◆ replaceColors()

virtual void OpenOrienteering::Symbol::replaceColors ( const MapColorMap color_map)
pure virtual

◆ resetIcon()

void OpenOrienteering::Symbol::resetIcon ( )

Clear the symbol's cached icon.

Call this function after changes to the symbol definition, custom icon, or general size/zoom/visibility settings. The cached icon will be recreated the next time getIcon() gets called.

◆ save()

void OpenOrienteering::Symbol::save ( QXmlStreamWriter xml,
const Map map 
) const

Saves the symbol in xml format.

This function invokes saveImpl(...) which may be overridden by child classes.

Parameters
xmlStream to save to.
mapReference to the map containing the symbol.

◆ saveImpl()

virtual void OpenOrienteering::Symbol::saveImpl ( QXmlStreamWriter xml,
const Map map 
) const
protectedpure virtual

Must be overridden to save type-specific symbol properties.

The map pointer can be used to get persistent indices to any pointers on map data.

Implemented in OpenOrienteering::AreaSymbol, OpenOrienteering::LineSymbol, OpenOrienteering::TextSymbol, OpenOrienteering::PointSymbol, OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ scale()

virtual void OpenOrienteering::Symbol::scale ( double  factor)
pure virtual

◆ setCustomIcon()

void OpenOrienteering::Symbol::setCustomIcon ( const QImage image)

Sets a custom symbol icon.

The custom icon takes precedence over the generated one when custom icon display is enabled. Like the generated icon, it is not part of the symbol state which is compared by the equals functions. However, it is copied when duplicating an icon.

To clear the custom icon, this function can be called with a null QImage.

◆ setDescription()

void OpenOrienteering::Symbol::setDescription ( const QString new_description)
inline

Sets the symbol description.

◆ setHidden()

void OpenOrienteering::Symbol::setHidden ( bool  value)
inline

Sets the hidden state of this symbol.

◆ setIsHelperSymbol()

void OpenOrienteering::Symbol::setIsHelperSymbol ( bool  value)
inline

Sets if this is a helper symbol, see isHelperSymbol().

◆ setName()

void OpenOrienteering::Symbol::setName ( const QString new_name)
inline

Sets the symbol name.

◆ setNumberComponent()

void OpenOrienteering::Symbol::setNumberComponent ( int  i,
int  new_number 
)
inline

Sets the i-th component of the symbol number.

◆ setProtected()

void OpenOrienteering::Symbol::setProtected ( bool  value)
inline

Sets the protected state of this symbol.

◆ setRotatable()

void OpenOrienteering::Symbol::setRotatable ( bool  value)
protected

Sets the rotatability state of the symbol.

Symbol implementations which are to support user-defined object rotatability shall import this function into public visibility. They also need to handle saving and loading.

◆ stateEquals()

bool OpenOrienteering::Symbol::stateEquals ( const Symbol other) const

Checks protected/hidden state for equality to the other symbol.

◆ symbolChangedEvent()

bool OpenOrienteering::Symbol::symbolChangedEvent ( const Symbol old_symbol,
const Symbol new_symbol 
)
virtual

Called when a symbol was changed, replaced, or removed.

Symbol need top update or remove references to the given old_symbol. If new_symbol is nullptr, the symbol is about to be deleted.

Returns true if this symbol contained the deleted symbol.

Reimplemented in OpenOrienteering::CombinedSymbol, and OpenOrienteering::LineTextSymbol.

◆ validate()

bool OpenOrienteering::Symbol::validate ( ) const
virtual

Member Data Documentation

◆ number_components

constexpr auto OpenOrienteering::Symbol::number_components = 3u
static

Number of components of symbol numbers.


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