Extract app frame and export dialog helpers

This commit is contained in:
2026-06-16 11:58:22 +02:00
parent d2a841f348
commit 01854f9b10
9 changed files with 786 additions and 584 deletions

View File

@@ -811,6 +811,82 @@ inline void execute_legacy_canvas_draw_merge_layer_path(
};
}
template <
typename BindBlenderFramebuffer,
typename ClearBlenderFramebuffer,
typename UnbindBlenderFramebuffer,
typename BindSampler,
typename BindNearestSampler,
typename BindStencilSampler,
typename SetActiveTextureUnit,
typename BindTemporaryTexture,
typename UnbindTemporaryTexture,
typename BindSmaskTexture,
typename UnbindSmaskTexture,
typename BindTemporaryDualTexture,
typename UnbindTemporaryDualTexture,
typename BindPatternTexture,
typename DrawFace,
typename BindBlenderTexture,
typename UnbindBlenderTexture,
typename BindDestinationTexture,
typename UnbindDestinationTexture,
typename CopyDestinationFramebuffer,
typename DrawDebugOutline,
typename DrawFrame>
[[nodiscard]] inline LegacyCanvasDrawMergeLayerPathExecution make_legacy_canvas_draw_merge_layer_path_gl_execution(
const LegacyCanvasDrawMergeLayerPathGlUniforms& uniforms,
BindBlenderFramebuffer&& bind_blender_framebuffer,
ClearBlenderFramebuffer&& clear_blender_framebuffer,
UnbindBlenderFramebuffer&& unbind_blender_framebuffer,
BindSampler&& bind_sampler,
BindNearestSampler&& bind_nearest_sampler,
BindStencilSampler&& bind_stencil_sampler,
SetActiveTextureUnit&& set_active_texture_unit,
BindTemporaryTexture&& bind_temporary_texture,
UnbindTemporaryTexture&& unbind_temporary_texture,
BindSmaskTexture&& bind_smask_texture,
UnbindSmaskTexture&& unbind_smask_texture,
BindTemporaryDualTexture&& bind_temporary_dual_texture,
UnbindTemporaryDualTexture&& unbind_temporary_dual_texture,
BindPatternTexture&& bind_pattern_texture,
DrawFace&& draw_face,
BindBlenderTexture&& bind_blender_texture,
UnbindBlenderTexture&& unbind_blender_texture,
BindDestinationTexture&& bind_destination_texture,
UnbindDestinationTexture&& unbind_destination_texture,
CopyDestinationFramebuffer&& copy_destination_framebuffer,
DrawDebugOutline&& draw_debug_outline,
DrawFrame&& draw_frame)
{
return make_legacy_canvas_draw_merge_layer_path_gl_execution(
uniforms,
LegacyCanvasDrawMergeLayerPathGlExecution {
.bind_blender_framebuffer = std::forward<BindBlenderFramebuffer>(bind_blender_framebuffer),
.clear_blender_framebuffer = std::forward<ClearBlenderFramebuffer>(clear_blender_framebuffer),
.unbind_blender_framebuffer = std::forward<UnbindBlenderFramebuffer>(unbind_blender_framebuffer),
.bind_sampler = std::forward<BindSampler>(bind_sampler),
.bind_nearest_sampler = std::forward<BindNearestSampler>(bind_nearest_sampler),
.bind_stencil_sampler = std::forward<BindStencilSampler>(bind_stencil_sampler),
.set_active_texture_unit = std::forward<SetActiveTextureUnit>(set_active_texture_unit),
.bind_temporary_texture = std::forward<BindTemporaryTexture>(bind_temporary_texture),
.unbind_temporary_texture = std::forward<UnbindTemporaryTexture>(unbind_temporary_texture),
.bind_smask_texture = std::forward<BindSmaskTexture>(bind_smask_texture),
.unbind_smask_texture = std::forward<UnbindSmaskTexture>(unbind_smask_texture),
.bind_temporary_dual_texture = std::forward<BindTemporaryDualTexture>(bind_temporary_dual_texture),
.unbind_temporary_dual_texture = std::forward<UnbindTemporaryDualTexture>(unbind_temporary_dual_texture),
.bind_pattern_texture = std::forward<BindPatternTexture>(bind_pattern_texture),
.draw_face = std::forward<DrawFace>(draw_face),
.bind_blender_texture = std::forward<BindBlenderTexture>(bind_blender_texture),
.unbind_blender_texture = std::forward<UnbindBlenderTexture>(unbind_blender_texture),
.bind_destination_texture = std::forward<BindDestinationTexture>(bind_destination_texture),
.unbind_destination_texture = std::forward<UnbindDestinationTexture>(unbind_destination_texture),
.copy_destination_framebuffer = std::forward<CopyDestinationFramebuffer>(copy_destination_framebuffer),
.draw_debug_outline = std::forward<DrawDebugOutline>(draw_debug_outline),
.draw_frame = std::forward<DrawFrame>(draw_frame),
});
}
template <typename PlanOnionRange, typename ShouldDrawPlane, typename VisitLayerPlane, typename LogOnionRangeFailure>
inline void execute_legacy_canvas_draw_layer_traversal(
size_t layer_count,