54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
#pragma once
|
|
#include <memory>
|
|
#include "../architecture/Renderable.h"
|
|
#include "../Axis/Abs_Axis.h"
|
|
#include "../base/Geometry.h"
|
|
#include "../plottable/Interpolation.h"
|
|
#include "../render/Image.h"
|
|
namespace renderive {
|
|
struct Raster_Image_Private;
|
|
struct Raster_Image_Prop {
|
|
std::weak_ptr<Abs_Axis> domain_axis{};
|
|
std::weak_ptr<Abs_Axis> value_axis{};
|
|
Range domain_range{0.0, 1.0};
|
|
Range value_range{0.0, 1.0};
|
|
RectF source_rect{};
|
|
Image_Interpolation_Mode interpolation_mode = Image_Interpolation_Mode::Nearest;
|
|
};
|
|
class LIB_DECL Raster_Image : public Renderable {
|
|
public:
|
|
void update_image(const Image& image);
|
|
void update_image_frame(
|
|
const Image& image,
|
|
Range domain_range,
|
|
Range value_range,
|
|
RectF source_rect,
|
|
Image_Interpolation_Mode interpolation_mode);
|
|
PROP(std::shared_ptr<Abs_Axis>, domain_axis)
|
|
PROP(std::shared_ptr<Abs_Axis>, value_axis)
|
|
PROP(Range, domain_range)
|
|
PROP(Range, value_range)
|
|
PROP(RectF, source_rect)
|
|
PROP(Image_Interpolation_Mode, interpolation_mode)
|
|
struct Builder;
|
|
Raster_Image();
|
|
private:
|
|
Raster_Image_Private* d();
|
|
Render_Object_Owner create_render_data() override;
|
|
Render_Object_Owner create_render_state() override;
|
|
Render_Object_Owner create_input_data() override;
|
|
};
|
|
struct LIB_DECL Raster_Image::Builder : Raster_Image_Prop {
|
|
PROP_B(std::shared_ptr<Renderable>, parent)
|
|
PROP_B(std::shared_ptr<Abs_Axis>, domain_axis)
|
|
PROP_B(std::shared_ptr<Abs_Axis>, value_axis)
|
|
PROP_B(Range, domain_range)
|
|
PROP_B(Range, value_range)
|
|
PROP_B(RectF, source_rect)
|
|
PROP_B(Image_Interpolation_Mode, interpolation_mode)
|
|
Builder(std::shared_ptr<Renderable> parent, std::shared_ptr<Abs_Axis> domain_axis, std::shared_ptr<Abs_Axis> value_axis);
|
|
std::shared_ptr<Raster_Image> build();
|
|
std::shared_ptr<Renderable> parent{};
|
|
};
|
|
} // namespace renderive
|