Add document frame render automation
This commit is contained in:
@@ -288,6 +288,45 @@ pp::foundation::Result<DocumentFaceCompositeResult> composite_document_face(
|
||||
return pp::foundation::Result<DocumentFaceCompositeResult>::success(std::move(result));
|
||||
}
|
||||
|
||||
pp::foundation::Result<DocumentFrameCompositeResult> composite_document_frame(
|
||||
DocumentFrameCompositeRequest request)
|
||||
{
|
||||
if (request.document == nullptr) {
|
||||
return pp::foundation::Result<DocumentFrameCompositeResult>::failure(
|
||||
pp::foundation::Status::invalid_argument("document frame composite request requires a document"));
|
||||
}
|
||||
|
||||
if (request.frame_index >= request.document->frames().size()) {
|
||||
return pp::foundation::Result<DocumentFrameCompositeResult>::failure(
|
||||
pp::foundation::Status::out_of_range("document frame composite index is outside the document"));
|
||||
}
|
||||
|
||||
DocumentFrameCompositeResult result;
|
||||
result.extent = pp::renderer::Extent2D {
|
||||
.width = request.document->width(),
|
||||
.height = request.document->height(),
|
||||
};
|
||||
result.visited_layer_count = request.document->layers().size();
|
||||
|
||||
for (std::uint32_t face_index = 0; face_index < pp::document::cube_face_count; ++face_index) {
|
||||
auto face = composite_document_face(DocumentFaceCompositeRequest {
|
||||
.document = request.document,
|
||||
.frame_index = request.frame_index,
|
||||
.face_index = face_index,
|
||||
.clear_color = request.clear_color,
|
||||
});
|
||||
if (!face) {
|
||||
return pp::foundation::Result<DocumentFrameCompositeResult>::failure(face.status());
|
||||
}
|
||||
|
||||
result.composited_layer_face_count += face.value().composited_layer_count;
|
||||
result.face_payload_count += face.value().face_payload_count;
|
||||
result.faces[face_index] = std::move(face.value());
|
||||
}
|
||||
|
||||
return pp::foundation::Result<DocumentFrameCompositeResult>::success(std::move(result));
|
||||
}
|
||||
|
||||
bool stroke_composite_requires_feedback(
|
||||
pp::paint::BlendMode layer_blend_mode,
|
||||
pp::paint::StrokeBlendMode stroke_blend_mode,
|
||||
|
||||
Reference in New Issue
Block a user