File indexing completed on 2024-03-24 03:52:42
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2007 Torsten Rahn <tackat@kde.org> 0004 // SPDX-FileCopyrightText: 2011 Bernhard Beschow <bbeschow@cs.tu-berlin.de> 0005 // 0006 0007 #ifndef MARBLE_SPHERICALSCANLINETEXTUREMAPPER_H 0008 #define MARBLE_SPHERICALSCANLINETEXTUREMAPPER_H 0009 0010 0011 #include "TextureMapperInterface.h" 0012 0013 #include "MarbleGlobal.h" 0014 0015 #include <QThreadPool> 0016 #include <QImage> 0017 0018 0019 namespace Marble 0020 { 0021 0022 class StackedTileLoader; 0023 0024 0025 /* 0026 * @short Texture mapping onto a sphere 0027 * 0028 * This class provides a fast way to map textures onto a sphere 0029 * without making use of hardware acceleration. 0030 * 0031 * @author Torsten Rahn <rahn@kde.org> 0032 */ 0033 0034 class SphericalScanlineTextureMapper : public TextureMapperInterface 0035 { 0036 public: 0037 explicit SphericalScanlineTextureMapper( StackedTileLoader *tileLoader ); 0038 0039 void mapTexture( GeoPainter *painter, 0040 const ViewportParams *viewport, 0041 int tileZoomLevel, 0042 const QRect &dirtyRect, 0043 TextureColorizer *texColorizer ) override; 0044 0045 private: 0046 void mapTexture( const ViewportParams *viewport, int tileZoomLevel, MapQuality mapQuality ); 0047 0048 private: 0049 class RenderJob; 0050 StackedTileLoader *const m_tileLoader; 0051 int m_radius; 0052 QImage m_canvasImage; 0053 QThreadPool m_threadPool; 0054 }; 0055 0056 } 0057 0058 #endif