45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "MapLayer.h"
|
|
#include <memory>
|
|
#include <QImage>
|
|
#include <QVector>
|
|
|
|
class RasterDataProvider;
|
|
class RasterRenderer;
|
|
|
|
class RasterLayer : public MapLayer
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit RasterLayer(const QString& name, const QString& uri);
|
|
~RasterLayer();
|
|
|
|
LayerType layerType() const override;
|
|
|
|
// Access provider/renderer
|
|
RasterDataProvider* dataProvider() const;
|
|
RasterRenderer* renderer() const;
|
|
|
|
// Create or open provider based on this layer's uri
|
|
bool openDataProvider();
|
|
|
|
bool isValidPixel(int x, int y);
|
|
bool readPixelSpectrum(int x, int y, QVector<double>& wavelengths, QVector<double>& spectrum);
|
|
|
|
struct RenderParams {
|
|
double rWave = 665.0; // default wavelengths (nm)
|
|
double gWave = 560.0;
|
|
double bWave = 490.0;
|
|
double minValue = 0.0; // optional stretch
|
|
double maxValue = 4095.0;
|
|
};
|
|
|
|
// Render the raster using current provider and renderer. Returns an empty QImage on failure.
|
|
QImage render(const RenderParams& params);
|
|
|
|
private:
|
|
std::unique_ptr<RasterDataProvider> m_provider;
|
|
std::unique_ptr<RasterRenderer> m_renderer;
|
|
};
|