From eb54b67caa9f48fcbaf58dd2f71774bb4b9e66c9 Mon Sep 17 00:00:00 2001 From: Bruno Date: Thu, 22 Apr 2021 23:38:00 +0200 Subject: [PATCH] New function to get thumbnail of render view --- RenderView.cpp | 22 ++++++++++++++++++++++ RenderView.h | 2 ++ defines.h | 1 + 3 files changed, 25 insertions(+) diff --git a/RenderView.cpp b/RenderView.cpp index 19428c1..631549e 100644 --- a/RenderView.cpp +++ b/RenderView.cpp @@ -82,3 +82,25 @@ void RenderView::draw() frame_buffer_->end(); } } + + +FrameBufferImage *RenderView::thumbnail () const +{ + FrameBufferImage *thumbnail = nullptr; + + if (frame_buffer_) { + FrameBufferSurface *thumb = new FrameBufferSurface(frame_buffer_); + FrameBuffer *frame_thumbnail = new FrameBuffer( glm::vec3(SESSION_THUMBNAIL_HEIGHT * frame_buffer_->aspectRatio(), SESSION_THUMBNAIL_HEIGHT, 1.f) ); + + frame_thumbnail->begin(); + thumb->draw(glm::identity(), frame_thumbnail->projection()); + frame_thumbnail->end(); + + thumbnail = frame_thumbnail->image(); + + delete thumb; + delete frame_thumbnail; + } + + return thumbnail; +} diff --git a/RenderView.h b/RenderView.h index 987a9a7..d235482 100644 --- a/RenderView.h +++ b/RenderView.h @@ -22,6 +22,8 @@ public: float fading() const; inline FrameBuffer *frame () const { return frame_buffer_; } + + FrameBufferImage *thumbnail () const; }; #endif // RENDERVIEW_H diff --git a/defines.h b/defines.h index 0ca07d0..46db170 100644 --- a/defines.h +++ b/defines.h @@ -59,6 +59,7 @@ #define TRANSITION_MIN_DURATION 0.2f #define TRANSITION_MAX_DURATION 10.f #define ARROWS_MOVEMENT_FACTOR 4.f +#define SESSION_THUMBNAIL_HEIGHT 120.f #define IMGUI_TITLE_MAINWINDOW ICON_FA_CIRCLE_NOTCH " vimix" #define IMGUI_TITLE_MEDIAPLAYER ICON_FA_FILM " Player"