From e98c8f484069fa179bbfa22a347557a4f58da537 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sun, 14 Jun 2026 05:25:21 +0200 Subject: [PATCH] Extract draw merge final plane composite helper --- src/canvas.cpp | 56 ++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/src/canvas.cpp b/src/canvas.cpp index 0e1d42c..b56edb6 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -508,6 +508,36 @@ static void execute_canvas_draw_merge_final_plane_composite( pp::panopainter::execute_legacy_canvas_draw_merge_final_plane_composite(uniforms, execution); } +static pp::panopainter::LegacyCanvasDrawMergeFinalPlaneCompositeExecution +make_canvas_draw_merge_final_plane_composite_execution(Canvas& canvas) +{ + return { + .bind_merged_texture_copy_target = [&] { + canvas.set_active_texture_unit(2); + canvas.m_merge_tex.bind(); + }, + .copy_merged_framebuffer = [&] { + canvas.copy_framebuffer_to_texture_2d(0, 0, 0, 0, canvas.m_width, canvas.m_height); + }, + .enable_blend = [&] { + canvas.apply_canvas_capability(canvas.blend_state(), true); + }, + .draw = [&] { + canvas.m_plane.draw_fill(); + }, + .bind_sampler = [&] { + canvas.m_sampler.bind(0); + }, + .bind_merged_texture = [&] { + canvas.set_active_texture_unit(0); + canvas.m_merge_tex.bind(); + }, + .unbind_merged_texture = [&] { + canvas.m_merge_tex.unbind(); + }, + }; +} + static void execute_canvas_draw_merge_plane_final_composite( Canvas& canvas, const glm::mat4& ortho, @@ -1450,31 +1480,7 @@ void Canvas::draw_merge_final_plane_composite( }, .draw_checkerboard = draw_checkerboard, }, - pp::panopainter::LegacyCanvasDrawMergeFinalPlaneCompositeExecution { - .bind_merged_texture_copy_target = [&] { - set_active_texture_unit(2); - m_merge_tex.bind(); - }, - .copy_merged_framebuffer = [&] { - copy_framebuffer_to_texture_2d(0, 0, 0, 0, m_width, m_height); - }, - .enable_blend = [&] { - apply_canvas_capability(blend_state(), true); - }, - .draw = [&] { - m_plane.draw_fill(); - }, - .bind_sampler = [&] { - m_sampler.bind(0); - }, - .bind_merged_texture = [&] { - set_active_texture_unit(0); - m_merge_tex.bind(); - }, - .unbind_merged_texture = [&] { - m_merge_tex.unbind(); - }, - }); + make_canvas_draw_merge_final_plane_composite_execution(*this)); } void Canvas::stroke_draw_dual_pass(