Maria GDK 5.0.0.738
Documentation of native code in develop branch
Loading...
Searching...
No Matches
Maria::PointSymbolRenderer Class Reference

#include <MPointSymbolRenderer.h>

Public Member Functions

 PointSymbolRenderer (const std::shared_ptr< STK::ShaderProgramManager > &shaderManager, std::shared_ptr< Maria::SymbolCache > symbolCache, int gridRows=18, int gridCols=36)
 
void redraw (const std::shared_ptr< Maria::RasterProjector > &viewport, const STK::Camera &cam)
 
void update (const Maria::GenericGeoObjectAdapter &trk, const std::shared_ptr< Maria::CompositeStyleItem > &style)
 
void update (const Maria::ItemId &itemId, const BasicGeoTypes::GeoPos &gp, const std::string &symbolType, const std::string &symbolCode, Maria::HorizontalAnchor hAnchor=Maria::HorizontalAnchor::Center, Maria::VerticalAnchor vAnchor=Maria::VerticalAnchor::Middle, float rotation=0.0f, float scale=1.0f, float alpha=1.0f, bool grayscale=false)
 
float getSymbolSize () const
 
void setSymbolSize (float symbolSize)
 Set point symbol size (in pixels).
 
void setSymbolSet (std::string symbolset)
 
bool hasPoint (const Maria::ItemId &itemId) const
 
float getSymbolRotation (float angle) const
 Get actual rotation angle for a point symbol which is rotated in 22.5 degree steps.
 
float getAlphaValue (float alpha) const
 
float getSymbolScale (float scale) const
 
void filterVisibleItems (const std::set< Maria::ItemId > &visibleItems)
 Update visible items by removing all items that are not in the visible items list.
 
void removePoint (const Maria::ItemId &itemId)
 
void removePoints (const std::vector< Maria::ItemId > &itemIds)
 
void removePoints (const std::vector< std::shared_ptr< Maria::GenericGeoObjectAdapter > > &points)
 
void removePoints (const std::string &listId="")
 
STK::OrientedBoundingBox2f calcOrientedBoundingBox (const Maria::GenericGeoObjectAdapter &trk, const std::shared_ptr< Maria::CompositeStyleItem > &style, const std::shared_ptr< RasterProjector > &vp)
 
void circleHitTest (const std::shared_ptr< RasterProjector > &vp, double px, double py, float symbolSize, int pickRadius, std::vector< Maria::ItemId > &items) const
 
int getIntersectingItems (const std::shared_ptr< RasterProjector > &vp, double x, double y, std::vector< Maria::ItemId > &items, int pickRadius=4)
 

Protected Member Functions

bool initShader ()
 
void initQuadBuffer ()
 
std::shared_ptr< PointSymbolRenderLayergetOrCreateLayer (SymbolCache::LayerIndexT layerId)
 
SymbolCache::SymbolIndexT getSymbolIndex (const Maria::GenericGeoObjectAdapter &trk, const std::shared_ptr< Maria::CompositeStyleItem > &style)
 
std::uint32_t getSymbolFlags (const Maria::GenericGeoObjectAdapter &trk, const std::shared_ptr< Maria::CompositeStyleItem > &style)
 
uint8_t calcAnchorBits (float anchor)
 
std::uint32_t encodeSymbolFlags (float alpha, float scale, float rotation, float hAnchor, float vAnchor, bool grayscale)
 
std::uint8_t calcAlphaBits (float alpha) const
 
std::uint8_t calcRotationBits (float angle) const
 
std::uint8_t calcScalingBits (float scale) const
 
void cleanupGL ()
 
void internalRemovePoints (const std::vector< Maria::ItemId > &itemIds)
 
void internalUpdate (const Maria::ItemId &itemId, const BasicGeoTypes::GeoPos &gp, SymbolCache::SymbolIndexT symbolIndex, std::uint32_t flags)
 

Protected Attributes

std::shared_ptr< STK::ShaderProgramManager_shaderManager
 
std::shared_ptr< SymbolCache_symbolCache
 
int _gridRows = 0
 
int _gridCols = 0
 
std::mutex _mutex
 
std::map< Maria::ItemId, SymbolRenderItem_renderItems
 
GLuint _quadVBO = 0
 
std::shared_ptr< STK::ShaderProgram_shader
 
std::shared_ptr< STK::ShaderProgram_hitShader
 
float _symbolScale = 1.0
 
std::string _symbolSet
 
std::vector< std::shared_ptr< PointSymbolRenderLayer > > _gridLayers
 

Detailed Description

PointSymbolRenderer - Short description. Detailed description.

Member Function Documentation

◆ encodeSymbolFlags()

std::uint32_t PointSymbolRenderer::encodeSymbolFlags ( float  alpha,
float  scale,
float  rotation,
float  hAnchor,
float  vAnchor,
bool  grayscale 
)
protected

Encode flags for scale, rotation, alpha, anchor alignment and grayscale. The flags are packed into 32 bits as follows: +----—+-----—+-----—+-------—+------—+-----—+ | alpha | Scale | Rotate | hAnchor | vAnchor | Misc. | +----—+-----—+-----—+-------—+------—+-----—+ 4b 8b 8b 5b 5b 2b

The "Misc" category currently only contains "grayscale" on the LSB.

◆ getSymbolRotation()

float Maria::PointSymbolRenderer::getSymbolRotation ( float  angle) const
inline

Get actual rotation angle for a point symbol which is rotated in 22.5 degree steps.

Parameters
angleInput angle, 0-360
Returns
Output angle snapped to nearest 22.5 degree interval.

◆ getSymbolSize()

float Maria::PointSymbolRenderer::getSymbolSize ( ) const
inline

Get point symbol size (in pixels).

◆ internalRemovePoints()

void PointSymbolRenderer::internalRemovePoints ( const std::vector< Maria::ItemId > &  itemIds)
protected

This is an internal version of removePoint, which assumes that an outer function has taken the mutex lock.

◆ removePoints()

void PointSymbolRenderer::removePoints ( const std::string &  listId = "")

Clear all points with the given list ID. If an empty list ID is given, all points are cleared.


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