47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <QImage>
|
|
|
|
#include "RasterRendererBase.h"
|
|
#include "RasterRenderParams.h"
|
|
|
|
class RasterLayer;
|
|
class RasterRendererBase;
|
|
class MultibandRasterRenderer;
|
|
class SinglebandRasterRenderer;
|
|
|
|
class RasterImageLayer
|
|
{
|
|
public:
|
|
enum class RendererType {
|
|
Multiband,
|
|
Singleband
|
|
};
|
|
|
|
RasterImageLayer(RasterLayer* layer, RendererType type, bool initRenderParamsFromFile);
|
|
~RasterImageLayer();
|
|
|
|
void ensureRenderer();
|
|
QImage render();
|
|
|
|
RasterLayer* layer() const { return m_layer; }
|
|
RasterRendererBase* renderer() const { return m_renderer.get(); }
|
|
RendererType rendererType() const { return m_rendererType; }
|
|
|
|
// Type-safe params access
|
|
MultibandRenderParams multibandParams() const { return m_multibandParams; }
|
|
SinglebandRenderParams singlebandParams() const { return m_singlebandParams; }
|
|
|
|
void setMultibandParams(const MultibandRenderParams& params);
|
|
void setSinglebandParams(const SinglebandRenderParams& params);
|
|
|
|
private:
|
|
RasterLayer* m_layer;
|
|
RendererType m_rendererType;
|
|
std::unique_ptr<RasterRendererBase> m_renderer;
|
|
MultibandRenderParams m_multibandParams;
|
|
SinglebandRenderParams m_singlebandParams;
|
|
bool m_rendererInitialized = false;
|
|
};
|