Files
pixelarium/lib/rendering/PixelariumImageView.hpp
T

37 lines
1.1 KiB
C++
Raw Normal View History

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