Extract retained stroke preview setup planner
This commit is contained in:
@@ -2421,12 +2421,99 @@ void legacy_node_stroke_preview_pass_sequence_preserves_dual_main_and_composite_
|
||||
PP_EXPECT(h, !missing_dual_prepare);
|
||||
PP_EXPECT(h, steps.empty());
|
||||
|
||||
steps.clear();
|
||||
const bool missing_main_prepare =
|
||||
pp::panopainter::execute_legacy_node_stroke_preview_pass_sequence(
|
||||
pp::panopainter::LegacyNodeStrokePreviewPassSequenceRequest {
|
||||
.dual_pass_enabled = true,
|
||||
.prepare_dual_pass = [&] {
|
||||
steps.emplace_back("prepare_dual");
|
||||
},
|
||||
.execute_dual_pass = [&] {
|
||||
steps.emplace_back("execute_dual");
|
||||
},
|
||||
.capture_background = [&] {
|
||||
steps.emplace_back("capture_background");
|
||||
},
|
||||
.prepare_main_pass = {},
|
||||
.execute_main_pass = [&] {
|
||||
steps.emplace_back("execute_main");
|
||||
},
|
||||
.finish_main_pass = [&] {
|
||||
steps.emplace_back("finish_main");
|
||||
},
|
||||
.execute_final_composite = [&] {
|
||||
steps.emplace_back("execute_composite");
|
||||
},
|
||||
.copy_preview_result = [&] {
|
||||
steps.emplace_back("copy_preview");
|
||||
},
|
||||
});
|
||||
PP_EXPECT(h, !missing_main_prepare);
|
||||
PP_EXPECT(h, steps.empty());
|
||||
|
||||
const bool missing_required =
|
||||
pp::panopainter::execute_legacy_node_stroke_preview_pass_sequence(
|
||||
pp::panopainter::LegacyNodeStrokePreviewPassSequenceRequest {});
|
||||
PP_EXPECT(h, !missing_required);
|
||||
}
|
||||
|
||||
void legacy_node_stroke_preview_stroke_setup_plan_preserves_curve_and_dual_inputs(pp::tests::Harness& h)
|
||||
{
|
||||
const auto plan = pp::panopainter::plan_legacy_node_stroke_preview_stroke_setup(
|
||||
pp::panopainter::LegacyNodeStrokePreviewStrokeSetupRequest {
|
||||
.preview_size = glm::vec2(120.0F, 80.0F),
|
||||
.zoom = 2.0F,
|
||||
.brush_tip_size = 30.0F,
|
||||
.stroke_max_size_override = 0.0F,
|
||||
.pad_override = 17.0F,
|
||||
.tip_size_pressure = false,
|
||||
.dual_enabled = true,
|
||||
.dual_size = 0.25F,
|
||||
.pattern_scale = 0.5F,
|
||||
.pattern_flipx = true,
|
||||
.pattern_flipy = false,
|
||||
.preview_point_count = 4,
|
||||
});
|
||||
|
||||
PP_EXPECT(h, near(plan.stroke_max_size, 60.0F));
|
||||
PP_EXPECT(h, near(plan.dual_stroke_max_size, 15.0F));
|
||||
PP_EXPECT(h, plan.dual_enabled);
|
||||
PP_EXPECT(h, near(plan.pattern_scale, glm::vec2(-0.5F, 0.5F)));
|
||||
PP_EXPECT(h, plan.points.size() == 4U);
|
||||
|
||||
PP_EXPECT(h, near(plan.points[0].position.x, 17.0F));
|
||||
PP_EXPECT(h, near(plan.points[0].position.y, 80.0F));
|
||||
PP_EXPECT(h, near(plan.points[0].position.z, 0.0F));
|
||||
PP_EXPECT(h, near(plan.points[0].pressure, 0.0F));
|
||||
|
||||
PP_EXPECT(h, near(plan.points[1].pressure, 0.55F));
|
||||
PP_EXPECT(h, near(plan.points[2].pressure, 1.0F));
|
||||
PP_EXPECT(h, near(plan.points[3].pressure, 0.55F));
|
||||
|
||||
const auto pressure_fallback = pp::panopainter::plan_legacy_node_stroke_preview_stroke_setup(
|
||||
pp::panopainter::LegacyNodeStrokePreviewStrokeSetupRequest {
|
||||
.preview_size = glm::vec2(120.0F, 80.0F),
|
||||
.zoom = 2.0F,
|
||||
.brush_tip_size = 30.0F,
|
||||
.stroke_max_size_override = 20.0F,
|
||||
.pad_override = NAN,
|
||||
.tip_size_pressure = true,
|
||||
.dual_enabled = false,
|
||||
.dual_size = 2.0F,
|
||||
.pattern_scale = 0.25F,
|
||||
.pattern_flipx = false,
|
||||
.pattern_flipy = true,
|
||||
.preview_point_count = 0,
|
||||
});
|
||||
|
||||
PP_EXPECT(h, near(pressure_fallback.stroke_max_size, 20.0F));
|
||||
PP_EXPECT(h, near(pressure_fallback.dual_stroke_max_size, 40.0F));
|
||||
PP_EXPECT(h, !pressure_fallback.dual_enabled);
|
||||
PP_EXPECT(h, near(pressure_fallback.pattern_scale, glm::vec2(0.25F, -0.25F)));
|
||||
PP_EXPECT(h, pressure_fallback.points.empty());
|
||||
}
|
||||
|
||||
void plans_canvas_blend_gate_from_persisted_indices(pp::tests::Harness& h)
|
||||
{
|
||||
const std::vector<int> normal_layers { 0, 0, 0 };
|
||||
@@ -2887,6 +2974,9 @@ int main()
|
||||
harness.run(
|
||||
"legacy_node_stroke_preview_pass_sequence_preserves_dual_main_and_composite_order",
|
||||
legacy_node_stroke_preview_pass_sequence_preserves_dual_main_and_composite_order);
|
||||
harness.run(
|
||||
"legacy_node_stroke_preview_stroke_setup_plan_preserves_curve_and_dual_inputs",
|
||||
legacy_node_stroke_preview_stroke_setup_plan_preserves_curve_and_dual_inputs);
|
||||
harness.run("plans_canvas_blend_gate_from_persisted_indices", plans_canvas_blend_gate_from_persisted_indices);
|
||||
harness.run("canvas_blend_gate_preserves_legacy_fallbacks", canvas_blend_gate_preserves_legacy_fallbacks);
|
||||
harness.run("plans_canvas_stroke_feedback_paths", plans_canvas_stroke_feedback_paths);
|
||||
|
||||
Reference in New Issue
Block a user