Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/ui/qt/viewport_widget/src/offscreen_viewport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,39 @@ OffscreenViewport::OffscreenViewport(const std::string name, bool sync_with_main
}
},

[=](render_viewport_to_image_atom,
const int width,
const int height,
const media_reader::ImageBufPtr image) -> result<thumbnail::ThumbnailBufferPtr> {
try {
// Render a supplied full-res image down to a thumbnail via the
// viewport's colour-managed pipeline. The image buffer may be in
// any reader-provided format; the offscreen render normalises it to
// RGBA_16F, which rgb96thumbFromHalfFloatImage expects.
if (!image || width <= 0 || height <= 0)
return caf::make_error(
xstudio_error::error,
"OffscreenViewport render-to-thumbnail: invalid image or "
"dimensions.");
media_reader::ImageBufPtr rendered(new media_reader::ImageBuffer());
renderToImageBuffer(
width,
height,
rendered,
ImageFormat::RGBA_16F,
true,
utility::clock::now(),
image,
false, // include_overlays
true); // include_drawings
thumbnail::ThumbnailBufferPtr r = rgb96thumbFromHalfFloatImage(rendered);
r->convert_to(thumbnail::TF_RGB24);
return r;
} catch (std::exception &e) {
return caf::make_error(xstudio_error::error, e.what());
}
},

[=](render_viewport_to_image_atom,
caf::actor media_actor,
const int media_frame,
Expand Down
Loading