功能比较完善的一版

This commit is contained in:
2026-08-21 19:53:00 +08:00
parent ade34e18f2
commit ae8d2f7272
15 changed files with 403 additions and 154 deletions
+4 -3
View File
@@ -36,6 +36,10 @@ TEST(axis_dispatch, numeric_axis_public_shell_reads_final_private_state) {
EXPECT_DOUBLE_EQ(axis->tick_step({0.0, 20.0}), 5.0);
EXPECT_EQ(axis->tick_label(2.5), "2.5");
EXPECT_EQ(axis->sub_tick_count(5.0), 4);
axis->set<&Abs_Axis::Prop::pixel_length>(-200.0);
axis->advance();
EXPECT_DOUBLE_EQ(axis->coordinate_to_pixel(5.0), -40.0);
EXPECT_DOUBLE_EQ(axis->pixel_to_coordinate(-40.0), 5.0);
}
TEST(axis_dispatch, point_conversion_uses_current_orientation) {
using Object = Impl<Numeric_Axis>;
@@ -71,7 +75,6 @@ TEST(axis_render, scene_prepares_and_paints_uncached_axis_into_frame) {
auto axis = build_axis<Object>();
auto scene = build_axis<Scene_Object>();
axis->set<&Abs_Axis::Prop::position>(Point_F{8.0, 8.0});
axis->set<&Abs_Axis::Prop::canvas_size>(Size{160, 64});
axis->set<&Abs_Axis::Prop::pixel_length>(120.0);
scene->set<&Render_Scene_2D::Prop::viewport>(Size{160, 64});
scene->activate_view();
@@ -122,11 +125,9 @@ TEST(axis_event, scene_routes_pointer_interaction_to_the_nearest_axis_segment) {
auto vertical = build_axis<Axis_Object>();
auto scene = build_axis<Scene_Object>();
horizontal->set<&Abs_Axis::Prop::position>(Point_F{20.0, 180.0});
horizontal->set<&Abs_Axis::Prop::canvas_size>(Size{200, 200});
horizontal->set<&Abs_Axis::Prop::pixel_length>(160.0);
horizontal->set<&Numeric_Axis::Prop::coordinate_range>(Axis_Range{0.0, 10.0});
vertical->set<&Abs_Axis::Prop::position>(Point_F{20.0, 180.0});
vertical->set<&Abs_Axis::Prop::canvas_size>(Size{200, 200});
vertical->set<&Abs_Axis::Prop::pixel_length>(-160.0);
vertical->set<&Abs_Axis::Prop::orientation>(Axis_Orientation::vertical);
vertical->set<&Numeric_Axis::Prop::coordinate_range>(Axis_Range{0.0, 10.0});
@@ -29,7 +29,6 @@ void configure_axis(Axis* axis, Axis_Orientation orientation, Point_F position,
axis->template set<&Abs_Axis::Prop::orientation>(orientation);
axis->template set<&Abs_Axis::Prop::position>(position);
axis->template set<&Abs_Axis::Prop::pixel_length>(length);
axis->template set<&Abs_Axis::Prop::canvas_size>(canvas);
}
}
-4
View File
@@ -85,11 +85,9 @@ TEST(render_scene_2d, composites_axes_and_spectrum_into_final_frame) {
auto spectrum = build_object<Spectrum_Object>(scene.get(), frequency.get(), power.get());
const Size canvas{160, 120};
frequency->set<&Abs_Axis::Prop::position>(Point_F{20.0, 100.0});
frequency->set<&Abs_Axis::Prop::canvas_size>(canvas);
frequency->set<&Abs_Axis::Prop::pixel_length>(120.0);
frequency->set<&Numeric_Axis::Prop::coordinate_range>(Axis_Range{0.0, 100.0});
power->set<&Abs_Axis::Prop::position>(Point_F{20.0, 100.0});
power->set<&Abs_Axis::Prop::canvas_size>(canvas);
power->set<&Abs_Axis::Prop::pixel_length>(-80.0);
power->set<&Abs_Axis::Prop::orientation>(Axis_Orientation::vertical);
power->set<&Numeric_Axis::Prop::coordinate_range>(Axis_Range{-100.0, 0.0});
@@ -149,8 +147,6 @@ TEST(render_scene_2d, composites_axes_and_spectrum_into_final_frame) {
EXPECT_TRUE(contains_color(scene->frame_view()));
const Size resized_canvas{200, 140};
scene->set<&Render_Scene_2D::Prop::viewport>(resized_canvas);
frequency->set<&Abs_Axis::Prop::canvas_size>(resized_canvas);
power->set<&Abs_Axis::Prop::canvas_size>(resized_canvas);
EXPECT_TRUE(frequency->dirty<Prepare_Data_Tag>());
EXPECT_TRUE(power->dirty<Prepare_Data_Tag>());
scene->render();