Extract draw merge temporary composite wrapper

This commit is contained in:
2026-06-13 18:56:21 +02:00
parent bef1482821
commit 1a5d828d5c
3 changed files with 27 additions and 2 deletions

View File

@@ -480,6 +480,22 @@ void Canvas::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz)
gl.restore();
}
template <typename Setup, typename BindSamplers, typename BindTextures, typename Draw, typename UnbindTextures>
static void execute_canvas_draw_merge_temporary_composite(
Setup&& setup,
BindSamplers&& bind_samplers,
BindTextures&& bind_textures,
Draw&& draw,
UnbindTextures&& unbind_textures)
{
pp::panopainter::execute_legacy_canvas_stroke_temporary_composite(
std::forward<Setup>(setup),
std::forward<BindSamplers>(bind_samplers),
std::forward<BindTextures>(bind_textures),
std::forward<Draw>(draw),
std::forward<UnbindTextures>(unbind_textures));
}
std::array<std::vector<vertex_t>, 6> Canvas::stroke_draw_project(std::array<vertex_t, 4>& B, bool project_3d /*= false*/, glm::mat4 mv /*= glm::mat4(1)*/) const
{
// intersect P with the current face to clip diverging points from the plane
@@ -1435,7 +1451,7 @@ void Canvas::draw_merge(bool draw_checkerboard, std::array<bool, 6> faces /*= SI
use_blend,
pp::panopainter::LegacyCanvasDrawMergeLayerCompositeExecution {
.execute_temporary_erase = [&] {
pp::panopainter::execute_legacy_canvas_stroke_temporary_composite(
execute_canvas_draw_merge_temporary_composite(
[&] {
//ShaderManager::u_vec2(kShaderUniform::Resolution, zw(m_box) / zoom);
//ShaderManager::u_int(kShaderUniform::Lock, m_layers[layer_index]->m_alpha_locked);
@@ -1479,7 +1495,7 @@ void Canvas::draw_merge(bool draw_checkerboard, std::array<bool, 6> faces /*= SI
if (b->m_pattern_flipx) patt_scale.x *= -1.f;
if (b->m_pattern_flipy) patt_scale.y *= -1.f;
pp::panopainter::execute_legacy_canvas_stroke_temporary_composite(
execute_canvas_draw_merge_temporary_composite(
[&] {
pp::panopainter::setup_legacy_stroke_composite_shader(
pp::panopainter::LegacyStrokeCompositeUniforms {