Add document face compositor bridge

This commit is contained in:
2026-06-05 17:09:17 +02:00
parent ee46a6497f
commit d4dad133ea
8 changed files with 375 additions and 5 deletions

View File

@@ -1,11 +1,14 @@
#pragma once
#include "document/document.h"
#include "foundation/result.h"
#include "paint/blend.h"
#include "renderer_api/renderer_api.h"
#include <cstddef>
#include <cstdint>
#include <span>
#include <vector>
namespace pp::paint_renderer {
@@ -83,11 +86,29 @@ struct CanvasStrokeFeedbackPlan {
bool compatibility_fallback = false;
};
struct DocumentFaceCompositeRequest {
const pp::document::CanvasDocument* document = nullptr;
std::size_t frame_index = 0;
std::uint32_t face_index = 0;
pp::paint::Rgba clear_color {};
};
struct DocumentFaceCompositeResult {
pp::renderer::Extent2D extent {};
std::vector<pp::paint::Rgba> pixels;
std::size_t visited_layer_count = 0;
std::size_t composited_layer_count = 0;
std::size_t face_payload_count = 0;
};
[[nodiscard]] pp::foundation::Status composite_layer(
std::span<pp::paint::Rgba> destination,
pp::renderer::Extent2D extent,
LayerCompositeView layer) noexcept;
[[nodiscard]] pp::foundation::Result<DocumentFaceCompositeResult> composite_document_face(
DocumentFaceCompositeRequest request);
[[nodiscard]] bool stroke_composite_requires_feedback(
pp::paint::BlendMode layer_blend_mode,
pp::paint::StrokeBlendMode stroke_blend_mode,