#pragma once

#include "legacy_canvas_stroke_execution_services.h"

#include <array>
#include <vector>

class Canvas;

namespace pp::panopainter {

[[nodiscard]] LegacyCanvasStrokeMixPassShell make_legacy_canvas_stroke_mix_pass_shell(
    Canvas& canvas,
    const glm::vec2& bb_min,
    const glm::vec2& bb_sz);

void legacy_canvas_stroke_end(Canvas& canvas);
void legacy_canvas_stroke_cancel(Canvas& canvas);
void legacy_canvas_stroke_draw_mix(Canvas& canvas, const glm::vec2& bb_min, const glm::vec2& bb_sz);
[[nodiscard]] std::array<std::vector<vertex_t>, 6> legacy_canvas_stroke_draw_project(
    const Canvas& canvas,
    std::array<vertex_t, 4>& B,
    bool project_3d = false,
    glm::mat4 mv = glm::mat4(1));
void legacy_canvas_stroke_update(Canvas& canvas, glm::vec3 point, float pressure);
void legacy_canvas_stroke_start(Canvas& canvas, glm::vec3 point, float pressure);

} // namespace pp::panopainter
