File indexing completed on 2024-12-08 12:14:55
0001 #ifndef OSMTILECLUSTERRENDERER_H 0002 #define OSMTILECLUSTERRENDERER_H 0003 0004 #include "mapreproject.h" 0005 #include "ReadOnlyMapDefinition.h" 0006 0007 #include <QDir> 0008 #include <QObject> 0009 #include <QVector> 0010 #include <QImage> 0011 0012 class ReadOnlyMapImage; 0013 0014 class OsmTileClusterRenderer: public QObject 0015 { 0016 Q_OBJECT 0017 0018 public: 0019 explicit OsmTileClusterRenderer( QObject * const parent = nullptr ); 0020 0021 void setClusterEdgeLengthTiles( int const clusterEdgeLengthTiles ); 0022 void setMapSources( QVector<ReadOnlyMapDefinition> const & mapSources ); 0023 void setOsmBaseDirectory( QDir const & osmBaseDirectory ); 0024 void setOsmTileLevel( int const level ); 0025 0026 Q_SIGNALS: 0027 void clusterRendered( OsmTileClusterRenderer * ); 0028 0029 public Q_SLOTS: 0030 void initMapSources(); 0031 void renderOsmTileCluster( int const clusterX, int const clusterY ); 0032 0033 private: 0034 QDir checkAndCreateDirectory( int const tileX ) const; 0035 QImage renderOsmTile( int const tileX, int const tileY ); 0036 double osmPixelXtoLonRad( int const pixelX ) const; 0037 double osmPixelYtoLatRad( int const pixelY ) const; 0038 0039 int const m_osmTileEdgeLengthPixel; 0040 QRgb const m_emptyPixel; 0041 0042 QDir m_osmBaseDirectory; 0043 int m_osmTileLevel; 0044 int m_osmMapEdgeLengthPixel; 0045 int m_clusterEdgeLengthTiles; 0046 0047 QVector<ReadOnlyMapDefinition> m_mapSourceDefinitions; 0048 QVector<ReadOnlyMapImage*> m_mapSources; 0049 int m_mapSourceCount; 0050 }; 0051 0052 #endif