Route stroke panel view through app core
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <cmath>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <utility>
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -409,6 +410,74 @@ void stroke_control_plans_validate_values_and_reject_breaking_points(pp::tests::
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_stroke_blend_mode(pp::app::BrushStrokeBlendSetting::pattern, 64));
|
||||
}
|
||||
|
||||
void stroke_panel_view_projects_brush_state(pp::tests::Harness& harness)
|
||||
{
|
||||
pp::app::BrushStrokePanelInput input;
|
||||
input.float_values.push_back(pp::app::BrushStrokeFloatValue {
|
||||
.setting = pp::app::BrushStrokeFloatSetting::tip_size,
|
||||
.value = 42.5F,
|
||||
});
|
||||
input.float_values.push_back(pp::app::BrushStrokeFloatValue {
|
||||
.setting = pp::app::BrushStrokeFloatSetting::jitter_scatter,
|
||||
.value = 0.75F,
|
||||
});
|
||||
input.bool_values.push_back(pp::app::BrushStrokeBoolValue {
|
||||
.setting = pp::app::BrushStrokeBoolSetting::dual_enabled,
|
||||
.value = true,
|
||||
});
|
||||
input.bool_values.push_back(pp::app::BrushStrokeBoolValue {
|
||||
.setting = pp::app::BrushStrokeBoolSetting::pattern_random_offset,
|
||||
.value = false,
|
||||
});
|
||||
input.blend_values.push_back(pp::app::BrushStrokeBlendValue {
|
||||
.setting = pp::app::BrushStrokeBlendSetting::tip,
|
||||
.blend_mode = 4,
|
||||
});
|
||||
input.blend_values.push_back(pp::app::BrushStrokeBlendValue {
|
||||
.setting = pp::app::BrushStrokeBlendSetting::pattern,
|
||||
.blend_mode = 8,
|
||||
});
|
||||
input.tip_thumbnail_path = "data/brushes/thumbs/soft.png";
|
||||
input.dual_thumbnail_path = "data/brushes/thumbs/hard.png";
|
||||
input.pattern_thumbnail_path = "data/patterns/thumbs/noise.png";
|
||||
|
||||
const auto view = pp::app::plan_brush_stroke_panel_view(std::move(input));
|
||||
PP_EXPECT(harness, view);
|
||||
if (view) {
|
||||
PP_EXPECT(harness, view.value().float_values.size() == 2);
|
||||
PP_EXPECT(harness, view.value().bool_values.size() == 2);
|
||||
PP_EXPECT(harness, view.value().blend_values.size() == 2);
|
||||
PP_EXPECT(harness, view.value().float_values[0].setting == pp::app::BrushStrokeFloatSetting::tip_size);
|
||||
PP_EXPECT(harness, view.value().float_values[0].value == 42.5F);
|
||||
PP_EXPECT(harness, view.value().bool_values[0].setting == pp::app::BrushStrokeBoolSetting::dual_enabled);
|
||||
PP_EXPECT(harness, view.value().bool_values[0].value);
|
||||
PP_EXPECT(harness, view.value().blend_values[1].setting == pp::app::BrushStrokeBlendSetting::pattern);
|
||||
PP_EXPECT(harness, view.value().blend_values[1].blend_mode == 8);
|
||||
PP_EXPECT(harness, view.value().tip_thumbnail_path == "data/brushes/thumbs/soft.png");
|
||||
PP_EXPECT(harness, view.value().dual_thumbnail_path == "data/brushes/thumbs/hard.png");
|
||||
PP_EXPECT(harness, view.value().pattern_thumbnail_path == "data/patterns/thumbs/noise.png");
|
||||
PP_EXPECT(harness, view.value().updates_preview);
|
||||
PP_EXPECT(harness, view.value().updates_thumbnails);
|
||||
}
|
||||
}
|
||||
|
||||
void stroke_panel_view_rejects_invalid_brush_state(pp::tests::Harness& harness)
|
||||
{
|
||||
pp::app::BrushStrokePanelInput bad_float;
|
||||
bad_float.float_values.push_back(pp::app::BrushStrokeFloatValue {
|
||||
.setting = pp::app::BrushStrokeFloatSetting::tip_flow,
|
||||
.value = std::nanf(""),
|
||||
});
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_stroke_panel_view(std::move(bad_float)));
|
||||
|
||||
pp::app::BrushStrokePanelInput bad_blend;
|
||||
bad_blend.blend_values.push_back(pp::app::BrushStrokeBlendValue {
|
||||
.setting = pp::app::BrushStrokeBlendSetting::dual,
|
||||
.blend_mode = 64,
|
||||
});
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_stroke_panel_view(std::move(bad_blend)));
|
||||
}
|
||||
|
||||
void texture_list_add_plans_target_paths_and_rejects_bad_input(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_brush_texture_list_add(
|
||||
@@ -852,6 +921,8 @@ int main()
|
||||
harness.run("preset plan preserves color and requires brush", preset_plan_preserves_color_and_requires_brush);
|
||||
harness.run("stroke settings plan updates brush preview", stroke_settings_plan_updates_brush_preview);
|
||||
harness.run("stroke control plans validate values and reject breaking points", stroke_control_plans_validate_values_and_reject_breaking_points);
|
||||
harness.run("stroke panel view projects brush state", stroke_panel_view_projects_brush_state);
|
||||
harness.run("stroke panel view rejects invalid brush state", stroke_panel_view_rejects_invalid_brush_state);
|
||||
harness.run("texture list add plans target paths and rejects bad input", texture_list_add_plans_target_paths_and_rejects_bad_input);
|
||||
harness.run("texture list remove and move plans handle edges", texture_list_remove_and_move_plans_handle_edges);
|
||||
harness.run("preset list plans add select move remove and clear", preset_list_plans_add_select_move_remove_and_clear);
|
||||
|
||||
Reference in New Issue
Block a user