Mapper  0.9.0
API documentation
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
OpenOrienteering::CombinedSymbol Class Reference

Symbol which can combine other line and area symbols, creating renderables for each of them. More...

#include <combined_symbol.h>

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

Public Member Functions

 CombinedSymbol ()
 
 ~CombinedSymbol () override
 
bool validate () const override
 
void createRenderables (const Object *object, const VirtualCoordVector &coords, ObjectRenderables &output, Symbol::RenderableOptions options) const override
 Creates renderables for a generic object. More...
 
void createRenderables (const PathObject *object, const PathPartVector &path_parts, ObjectRenderables &output, Symbol::RenderableOptions options) const override
 Creates renderables for a path object. More...
 
void colorDeletedEvent (const MapColor *color) override
 Called when a color is removed from the map. More...
 
bool containsColor (const MapColor *color) const override
 Returns if the given color is used by this symbol. More...
 
const MapColorguessDominantColor () const override
 Returns the dominant color of this symbol. More...
 
void replaceColors (const MapColorMap &color_map) override
 Replaces colors used by this symbol. More...
 
bool symbolChangedEvent (const Symbol *old_symbol, const Symbol *new_symbol) override
 Called when a symbol was changed, replaced, or removed. More...
 
bool containsSymbol (const Symbol *symbol) const override
 Returns true if the given symbol is referenced by this symbol. More...
 
void scale (double factor) override
 Scales the symbol. More...
 
TypeCombination getContainedTypes () const override
 Returns the combined bitmask of all symbol types this symbol contains. More...
 
bool loadingFinishedEvent (Map *map) override
 Called when loading the map is finished. More...
 
qreal dimensionForIcon () const override
 Returns the dimension which shall considered when scaling the icon. More...
 
qreal calculateLargestLineExtent () const override
 Returns the largest extent of all primitive lines which are part of the symbol. More...
 
int getNumParts () const
 
void setNumParts (int num)
 
const SymbolgetPart (int i) const
 
void setPart (int i, const Symbol *symbol, bool is_private)
 
bool isPartPrivate (int i) const
 
void setPartPrivate (int i, bool set_private)
 
SymbolPropertiesWidgetcreatePropertiesWidget (SymbolSettingDialog *dialog) override
 Creates a properties widget for the symbol. More...
 
- Public Member Functions inherited from OpenOrienteering::Symbol
 Symbol (Type type) noexcept
 
virtual ~Symbol ()
 
Symboloperator= (const Symbol &)=delete
 
Symboloperator= (Symbol &&)=delete
 
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...
 
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 void createBaselineRenderables (const PathObject *object, const PathPartVector &path_parts, ObjectRenderables &output, const MapColor *color) const
 Creates baseline renderables for a path object. 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...
 
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...
 

Protected Member Functions

 CombinedSymbol (const CombinedSymbol &proto)
 
CombinedSymbolduplicate () const override
 
void saveImpl (QXmlStreamWriter &xml, const Map &map) const override
 Must be overridden to save type-specific symbol properties. More...
 
bool loadImpl (QXmlStreamReader &xml, const Map &map, SymbolDictionary &symbol_dict, int version) override
 Must be overridden to load type-specific symbol properties. More...
 
bool equalsImpl (const Symbol *other, Qt::CaseSensitivity case_sensitivity) const override
 Must be overridden to compare specific attributes. More...
 
- Protected Member Functions inherited from OpenOrienteering::Symbol
 Symbol (const Symbol &proto)
 
void setRotatable (bool value)
 Sets the rotatability state of the symbol. More...
 

Protected Attributes

std::vector< boolprivate_parts
 
std::vector< const Symbol * > parts
 
std::vector< int > temp_part_indices
 

Friends

class CombinedSymbolSettings
 
class PointSymbolEditorWidget
 
class OCAD8FileImport
 

Additional Inherited Members

- Public Types inherited from OpenOrienteering::Symbol
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...
 
- Static Public Member Functions inherited from OpenOrienteering::Symbol
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 inherited from OpenOrienteering::Symbol
static constexpr auto number_components = 3u
 Number of components of symbol numbers. More...
 

Detailed Description

Symbol which can combine other line and area symbols, creating renderables for each of them.

To use, set the number of parts with setNumParts() and set the individual part pointers with setPart(). Parts can be private, i.e. the CombinedSymbol owns the part symbol and it is not entered in the map as an individual symbol.

Constructor & Destructor Documentation

◆ CombinedSymbol() [1/2]

OpenOrienteering::CombinedSymbol::CombinedSymbol ( )

◆ ~CombinedSymbol()

OpenOrienteering::CombinedSymbol::~CombinedSymbol ( )
override

◆ CombinedSymbol() [2/2]

OpenOrienteering::CombinedSymbol::CombinedSymbol ( const CombinedSymbol proto)
explicitprotected

Member Function Documentation

◆ calculateLargestLineExtent()

qreal OpenOrienteering::CombinedSymbol::calculateLargestLineExtent ( ) const
overridevirtual

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

Effectively, this is the half line width.

Reimplemented from OpenOrienteering::Symbol.

◆ colorDeletedEvent()

void OpenOrienteering::CombinedSymbol::colorDeletedEvent ( const MapColor color)
overridevirtual

Called when a color is removed from the map.

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

Implements OpenOrienteering::Symbol.

◆ containsColor()

bool OpenOrienteering::CombinedSymbol::containsColor ( const MapColor color) const
overridevirtual

Returns if the given color is used by this symbol.

Implements OpenOrienteering::Symbol.

◆ containsSymbol()

bool OpenOrienteering::CombinedSymbol::containsSymbol ( const Symbol symbol) const
overridevirtual

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 from OpenOrienteering::Symbol.

◆ createPropertiesWidget()

SymbolPropertiesWidget * OpenOrienteering::CombinedSymbol::createPropertiesWidget ( SymbolSettingDialog dialog)
overridevirtual

Creates a properties widget for the symbol.

Implements OpenOrienteering::Symbol.

◆ createRenderables() [1/2]

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

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.

Implements OpenOrienteering::Symbol.

◆ createRenderables() [2/2]

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

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 from OpenOrienteering::Symbol.

◆ dimensionForIcon()

qreal OpenOrienteering::CombinedSymbol::dimensionForIcon ( ) const
overridevirtual

Returns the dimension which shall considered when scaling the icon.

Reimplemented from OpenOrienteering::Symbol.

◆ duplicate()

CombinedSymbol * OpenOrienteering::CombinedSymbol::duplicate ( ) const
overrideprotectedvirtual

◆ equalsImpl()

bool OpenOrienteering::CombinedSymbol::equalsImpl ( const Symbol other,
Qt::CaseSensitivity  case_sensitivity 
) const
overrideprotectedvirtual

Must be overridden to compare specific attributes.

Implements OpenOrienteering::Symbol.

◆ getContainedTypes()

Symbol::TypeCombination OpenOrienteering::CombinedSymbol::getContainedTypes ( ) const
overridevirtual

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

Reimplemented from OpenOrienteering::Symbol.

◆ getNumParts()

int OpenOrienteering::CombinedSymbol::getNumParts ( ) const
inline

◆ getPart()

const Symbol* OpenOrienteering::CombinedSymbol::getPart ( int  i) const
inline

◆ guessDominantColor()

const MapColor * OpenOrienteering::CombinedSymbol::guessDominantColor ( ) const
overridevirtual

Returns the dominant color of this symbol.

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

Implements OpenOrienteering::Symbol.

◆ isPartPrivate()

bool OpenOrienteering::CombinedSymbol::isPartPrivate ( int  i) const
inline

◆ loadImpl()

bool OpenOrienteering::CombinedSymbol::loadImpl ( QXmlStreamReader xml,
const Map map,
SymbolDictionary symbol_dict,
int  version 
)
overrideprotectedvirtual

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.

Implements OpenOrienteering::Symbol.

◆ loadingFinishedEvent()

bool OpenOrienteering::CombinedSymbol::loadingFinishedEvent ( Map map)
overridevirtual

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 from OpenOrienteering::Symbol.

◆ replaceColors()

void OpenOrienteering::CombinedSymbol::replaceColors ( const MapColorMap color_map)
overridevirtual

Replaces colors used by this symbol.

Implements OpenOrienteering::Symbol.

◆ saveImpl()

void OpenOrienteering::CombinedSymbol::saveImpl ( QXmlStreamWriter xml,
const Map map 
) const
overrideprotectedvirtual

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.

Implements OpenOrienteering::Symbol.

◆ scale()

void OpenOrienteering::CombinedSymbol::scale ( double  factor)
overridevirtual

Scales the symbol.

Implements OpenOrienteering::Symbol.

◆ setNumParts()

void OpenOrienteering::CombinedSymbol::setNumParts ( int  num)
inline

◆ setPart()

void OpenOrienteering::CombinedSymbol::setPart ( int  i,
const Symbol symbol,
bool  is_private 
)

◆ setPartPrivate()

void OpenOrienteering::CombinedSymbol::setPartPrivate ( int  i,
bool  set_private 
)
inline

◆ symbolChangedEvent()

bool OpenOrienteering::CombinedSymbol::symbolChangedEvent ( const Symbol old_symbol,
const Symbol new_symbol 
)
overridevirtual

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 from OpenOrienteering::Symbol.

◆ validate()

bool OpenOrienteering::CombinedSymbol::validate ( ) const
overridevirtual

Reimplemented from OpenOrienteering::Symbol.

Friends And Related Function Documentation

◆ CombinedSymbolSettings

friend class CombinedSymbolSettings
friend

◆ OCAD8FileImport

friend class OCAD8FileImport
friend

◆ PointSymbolEditorWidget

friend class PointSymbolEditorWidget
friend

Member Data Documentation

◆ parts

std::vector<const Symbol*> OpenOrienteering::CombinedSymbol::parts
protected

◆ private_parts

std::vector<bool> OpenOrienteering::CombinedSymbol::private_parts
protected

◆ temp_part_indices

std::vector<int> OpenOrienteering::CombinedSymbol::temp_part_indices
protected

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