#pragma once

#include "canvas.h"

class Canvas;

namespace pp::panopainter {

void legacy_canvas_draw_merge_temporary_paint_branch(
    Canvas& canvas,
    int layer_index,
    int plane_index,
    std::shared_ptr<Layer> layer,
    const Brush& brush,
    const glm::mat4& ortho);
void legacy_canvas_draw_merge_branch_orchestration(
    Canvas& canvas,
    int plane_index,
    int layer_index,
    const std::shared_ptr<Layer>& layer,
    const Brush& brush,
    const glm::mat4& ortho,
    bool use_blend,
    bool copy_blend_destination);
void legacy_canvas_draw_merge_final_plane_composite(
    Canvas& canvas,
    const glm::mat4& ortho,
    bool draw_checkerboard);
void legacy_canvas_stroke_commit_timelapse(Canvas& canvas);
void legacy_canvas_draw_merge(
    Canvas& canvas,
    bool draw_checkerboard,
    std::array<bool, 6> faces = SIXPLETTE(true));
void legacy_canvas_destroy(Canvas& canvas);
bool legacy_canvas_create(Canvas& canvas, int width, int height);
void legacy_canvas_clear_context(Canvas& canvas);
CameraData legacy_canvas_render_shell_get_camera(const Canvas& canvas);
void legacy_canvas_render_shell_set_camera(Canvas& canvas, const CameraData& camera);

} // namespace pp::panopainter
