四个方向 分块渲染

This commit is contained in:
2026-08-12 09:01:25 +08:00
parent b34c0d31b1
commit 9331b4cbf6
24 changed files with 788 additions and 108 deletions
+13 -14
View File
@@ -1054,25 +1054,24 @@ private:
const int bottom = 46;
const int width = std::max(1, viewport.width - left - right);
const int height = std::max(1, viewport.height - top - bottom);
if (const auto horizontal = horizontal_axis()) {
update_axis_state(horizontal, [=](Axis_Base_Properties& axis) {
const auto layout_axis = [=](const std::shared_ptr<Abs_Axis>& target) {
if (!target)
return;
update_axis_state(target, [=](Axis_Base_Properties& axis) {
axis.x = left;
axis.y = top + height;
axis.pixel_length = static_cast<std::size_t>(width);
axis.y = axis.orientation == Orientation::Horizontal ? top + height : top;
axis.pixel_length = static_cast<std::size_t>(
axis.orientation == Orientation::Horizontal ? width : height);
});
}
if (const auto vertical = vertical_axis()) {
update_axis_state(vertical, [=](Axis_Base_Properties& axis) {
axis.x = left;
axis.y = top;
axis.pixel_length = static_cast<std::size_t>(height);
});
}
};
layout_axis(horizontal_axis());
layout_axis(vertical_axis());
if (case_id_ == "axis_lab" && time_axis_) {
time_axis_->update([&](auto& axis) {
axis.x = left;
axis.y = 26;
axis.pixel_length = static_cast<std::size_t>(width);
axis.y = axis.orientation == Orientation::Horizontal ? 26 : top;
axis.pixel_length = static_cast<std::size_t>(
axis.orientation == Orientation::Horizontal ? width : height);
});
}
}