2025-08-18 22:39:43 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
2025-09-22 23:13:28 +02:00
|
|
|
#include "imaging/IPixelariumImage.hpp"
|
2025-08-18 22:39:43 +00:00
|
|
|
#include "imgui.h"
|
|
|
|
|
#include "rendering/CvMatRender.hpp"
|
|
|
|
|
|
2025-09-13 14:49:59 +02:00
|
|
|
namespace pixelarium::render
|
2025-08-18 22:39:43 +00:00
|
|
|
{
|
|
|
|
|
class PixelariumImageView
|
|
|
|
|
{
|
2025-09-22 23:13:28 +02:00
|
|
|
using Image = imaging::IPixelariumImage;
|
2025-08-18 22:39:43 +00:00
|
|
|
using Render = render::CvMatRender;
|
|
|
|
|
|
|
|
|
|
public:
|
2025-09-22 23:13:28 +02:00
|
|
|
explicit PixelariumImageView(std::shared_ptr<Image> img) : img_(img) { render_ = Render(img_); }
|
2025-08-18 22:39:43 +00:00
|
|
|
PixelariumImageView() = delete;
|
|
|
|
|
PixelariumImageView(PixelariumImageView&) = delete;
|
|
|
|
|
PixelariumImageView(const PixelariumImageView&) = delete;
|
|
|
|
|
PixelariumImageView(PixelariumImageView&&) = delete;
|
|
|
|
|
PixelariumImageView& operator=(PixelariumImageView&) = delete;
|
|
|
|
|
PixelariumImageView& operator=(PixelariumImageView&&) = delete;
|
|
|
|
|
|
2025-09-13 14:49:59 +02:00
|
|
|
// void ToggleView(bool target) { open_p = target; }
|
|
|
|
|
const bool* GetStatus() const noexcept { return &this->open_p; }
|
2025-08-18 22:39:43 +00:00
|
|
|
void ShowImage();
|
|
|
|
|
|
|
|
|
|
private:
|
2025-09-22 23:13:28 +02:00
|
|
|
std::shared_ptr<Image> img_;
|
|
|
|
|
std::optional<std::unique_ptr<cv::Mat>> cached_image_ {};
|
2025-08-18 22:39:43 +00:00
|
|
|
Render render_;
|
2025-09-13 14:49:59 +02:00
|
|
|
bool open_p{true};
|
2025-08-18 22:39:43 +00:00
|
|
|
ImVec2 curr_dim_{};
|
|
|
|
|
};
|
2025-09-13 14:49:59 +02:00
|
|
|
} // namespace pixelarium::render
|