Files
pixelarium/lib/rendering/CvMatRender.hpp
T
m-aXimilian 0be064bb8e Gerneric image codec abstraction init (#6)
* remove raw pointer from resource manager

* towards generic images

* 💅 and pin libCZI module

* remove raw pointer from resource manager

* towards generic images

* fix rendering

* fix rendering

* fix unit tests

* fix pipeline

* fix gcc build

* re-enable tests

* add czi impl

* remove resource button

* refactor user code app to being a "default app"

* ui resources

* missing lib?

* init czi render support

* typos
2026-02-16 20:36:48 +01:00

54 lines
1.5 KiB
C++

#pragma once
// windows.h must come before GL/GL.h here.
// clang format would change this, effectively rendering the build broken.
// clang-format off
#include <memory>
#ifdef _WIN32
#include <windows.h>
#include <GL/GL.h>
#else
#define GL_SILENCE_DEPRECATION
#if defined(IMGUI_IMPL_OPENGL_ES2)
#include <GLES2/gl2.h>
#endif
#include <GLFW/glfw3.h> // Will drag system OpenGL headers
#endif
#include "imaging/IPixelariumImage.hpp"
// clang-format on
namespace pixelarium::render
{
class CvMatRender
{
public:
// we want the default constructor for the time being
// (although it does not make much sense and should
// get removed in the future)
// as the using AppGLFW constructs it empty as a member
// when coming to life.
CvMatRender() = default;
CvMatRender(CvMatRender&) = delete;
CvMatRender(const CvMatRender&) = delete;
CvMatRender(CvMatRender&&) = delete;
CvMatRender& operator=(CvMatRender&) = default;
CvMatRender& operator=(CvMatRender&& other) = default;
~CvMatRender();
explicit CvMatRender(std::shared_ptr<pixelarium::imaging::IPixelariumImage>& img);
public:
GLuint Render();
GLuint Render(float factor);
GLuint Render(size_t width, size_t height);
void ResetRenderImage();
void ResetRenderImage(std::shared_ptr<pixelarium::imaging::IPixelariumImage>& img);
private:
cv::Mat img_;
std::shared_ptr<pixelarium::imaging::IPixelariumImage> base_;
GLuint texture_;
GLuint uploadTexture();
};
} // namespace pixelarium::render