#pragma once #include #include #include "CvMatRender.hpp" #include "ILog.hpp" #include "IPixelariumImage.hpp" #include "IPixelariumImageView.hpp" #include "imgui.h" #include "libCZI_DimCoordinate.h" namespace pixelarium::application { /// @brief A CZI-specific implementation of IPixelariumImageView. class PixelariumImageViewCzi : public IPixelariumImageView { using Image = imaging::IPixelariumImageCvMat; using Log = utils::log::ILog; public: explicit PixelariumImageViewCzi(std::shared_ptr img, const Log& log); PixelariumImageViewCzi() = delete; PixelariumImageViewCzi(PixelariumImageViewCzi&) = delete; PixelariumImageViewCzi(const PixelariumImageViewCzi&) = delete; PixelariumImageViewCzi(PixelariumImageViewCzi&&) = delete; PixelariumImageViewCzi& operator=(PixelariumImageViewCzi&) = delete; PixelariumImageViewCzi& operator=(PixelariumImageViewCzi&&) = delete; void ShowImage() override; private: ImVec2 curr_dim_{}; const Log& log_; std::unordered_map dimension_map_; std::unique_ptr render_; private: void RefreshCachedImage(); }; } // namespace pixelarium::application