1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
//
// This file is part of the Marble Virtual Globe.
//
// This program is free software licensed under the GNU LGPL. You can
// find a copy of this license in LICENSE.txt in the top directory of
// the source code.
//
// Copyright 2007 Torsten Rahn <tackat@kde.org>
// Copyright 2011 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
//
#ifndef MARBLE_SPHERICALSCANLINETEXTUREMAPPER_H
#define MARBLE_SPHERICALSCANLINETEXTUREMAPPER_H
#include "TextureMapperInterface.h"
#include "MarbleGlobal.h"
#include <QThreadPool>
#include <QImage>
namespace Marble
{
class StackedTileLoader;
/*
* @short Texture mapping onto a sphere
*
* This class provides a fast way to map textures onto a sphere
* without making use of hardware acceleration.
*
* @author Torsten Rahn <rahn@kde.org>
*/
class SphericalScanlineTextureMapper : public TextureMapperInterface
{
public:
explicit SphericalScanlineTextureMapper( StackedTileLoader *tileLoader );
void mapTexture( GeoPainter *painter,
const ViewportParams *viewport,
int tileZoomLevel,
const QRect &dirtyRect,
TextureColorizer *texColorizer ) override;
private:
void mapTexture( const ViewportParams *viewport, int tileZoomLevel, MapQuality mapQuality );
private:
class RenderJob;
StackedTileLoader *const m_tileLoader;
int m_radius;
QImage m_canvasImage;
QThreadPool m_threadPool;
};
}
#endif
|