Narrow stroke execution planning helpers
This commit is contained in:
@@ -30,6 +30,60 @@ struct LegacyStrokeSampleExecutionResult {
|
||||
glm::vec4 dirty_bounds {};
|
||||
};
|
||||
|
||||
struct LegacyCanvasStrokeFaceDirtyRequest {
|
||||
pp::renderer::Extent2D extent {};
|
||||
glm::vec4 previous_accumulated_dirty_box {};
|
||||
glm::vec4 previous_pass_dirty_box {};
|
||||
glm::vec4 sample_dirty_box {};
|
||||
bool include_in_committed_dirty_box = true;
|
||||
};
|
||||
|
||||
struct LegacyCanvasStrokeFaceDirtyResult {
|
||||
glm::vec4 accumulated_dirty_box {};
|
||||
glm::vec4 pass_dirty_box {};
|
||||
bool has_dirty_pixels = false;
|
||||
bool committed_dirty = false;
|
||||
bool pass_dirty = false;
|
||||
};
|
||||
|
||||
[[nodiscard]] inline pp::paint_renderer::CanvasStrokeBox legacy_canvas_stroke_box(glm::vec4 box) noexcept
|
||||
{
|
||||
return pp::paint_renderer::CanvasStrokeBox {
|
||||
.min_x = box.x,
|
||||
.min_y = box.y,
|
||||
.max_x = box.z,
|
||||
.max_y = box.w,
|
||||
};
|
||||
}
|
||||
|
||||
[[nodiscard]] inline glm::vec4 legacy_canvas_stroke_glm_box(
|
||||
pp::paint_renderer::CanvasStrokeBox box) noexcept
|
||||
{
|
||||
return glm::vec4(box.min_x, box.min_y, box.max_x, box.max_y);
|
||||
}
|
||||
|
||||
[[nodiscard]] inline LegacyCanvasStrokeFaceDirtyResult plan_legacy_canvas_stroke_face_dirty_update(
|
||||
const LegacyCanvasStrokeFaceDirtyRequest& request) noexcept
|
||||
{
|
||||
const auto plan = pp::paint_renderer::plan_canvas_stroke_face_dirty_update(
|
||||
pp::paint_renderer::CanvasStrokeFaceDirtyUpdateRequest {
|
||||
.extent = request.extent,
|
||||
.previous_accumulated_dirty_box =
|
||||
legacy_canvas_stroke_box(request.previous_accumulated_dirty_box),
|
||||
.previous_pass_dirty_box = legacy_canvas_stroke_box(request.previous_pass_dirty_box),
|
||||
.sample_dirty_box = legacy_canvas_stroke_box(request.sample_dirty_box),
|
||||
.include_in_committed_dirty_box = request.include_in_committed_dirty_box,
|
||||
});
|
||||
|
||||
return LegacyCanvasStrokeFaceDirtyResult {
|
||||
.accumulated_dirty_box = legacy_canvas_stroke_glm_box(plan.accumulated_dirty_box),
|
||||
.pass_dirty_box = legacy_canvas_stroke_glm_box(plan.pass_dirty_box),
|
||||
.has_dirty_pixels = plan.has_dirty_pixels,
|
||||
.committed_dirty = plan.committed_dirty,
|
||||
.pass_dirty = plan.pass_dirty,
|
||||
};
|
||||
}
|
||||
|
||||
[[nodiscard]] inline LegacyStrokeSampleExecutionResult execute_legacy_canvas_stroke_sample(
|
||||
const LegacyStrokeSampleExecutionRequest& request)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user