File indexing completed on 2024-04-21 03:49:47

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2007 Carlos Licea <carlos _licea@hotmail.com>
0004 // SPDX-FileCopyrightText: 2008 Inge Wallin <inge@lysator.liu.se>
0005 // SPDX-FileCopyrightText: 2011 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
0006 //
0007 
0008 #ifndef MARBLE_MERCATORSCANLINETEXTUREMAPPER_H
0009 #define MARBLE_MERCATORSCANLINETEXTUREMAPPER_H
0010 
0011 
0012 #include "TextureMapperInterface.h"
0013 
0014 #include "MarbleGlobal.h"
0015 
0016 #include <QThreadPool>
0017 #include <QImage>
0018 
0019 
0020 namespace Marble
0021 {
0022 
0023 class StackedTileLoader;
0024 
0025 class MercatorScanlineTextureMapper : public TextureMapperInterface
0026 {
0027  public:
0028     explicit MercatorScanlineTextureMapper( StackedTileLoader *tileLoader );
0029 
0030     void mapTexture( GeoPainter *painter,
0031                              const ViewportParams *viewport,
0032                              int tileZoomLevel,
0033                              const QRect &dirtyRect,
0034                              TextureColorizer *texColorizer ) override;
0035 
0036  private:
0037     void mapTexture( const ViewportParams *viewport, int tileZoomLevel, MapQuality mapQuality );
0038 
0039  private:
0040     class RenderJob;
0041 
0042     StackedTileLoader *const m_tileLoader;
0043     int m_radius;
0044     QImage m_canvasImage;
0045     int    m_oldYPaintedTop;
0046     QThreadPool m_threadPool;
0047 };
0048 
0049 }
0050 
0051 #endif