仍然闪烁

This commit is contained in:
2026-08-02 18:58:35 +08:00
parent ffaca5b05f
commit 9a39f88427
54 changed files with 2257 additions and 2424 deletions
+10 -7
View File
@@ -28,21 +28,24 @@ struct Fill_Area_Input_Data : Latest_Input_Data {
struct Fill_Area_Render_State : Render_State, Fill_Area_Prop {};
struct Fill_Area_Private : Typed_Render_Data<Fill_Area, Fill_Area_Render_State, Fill_Area_Input_Data> {
std::pmr::vector<PointF> data_points{memory_resource(Memory_Domain::Curve)};
void prepare_data(const Render_Frame_Snapshot&) override {
sync_state_pipeline();
Fill_Area_Input_Data* input = render_input_data();
void prepare_data(const Render_Frame_Snapshot&, const Renderable_Frame_View& frame_view) override {
Fill_Area_Input_Data* input = render_input_data(frame_view);
if (!input)
return;
input->read_all([this](std::pmr::vector<PointF>& points) {
data_points.swap(points);
});
clear_render_input();
frame_view.consume_input();
}
void draw(Canvas& canvas, const Render_Frame_Snapshot&) override {
Fill_Area_Render_State* s = render_state();
void draw(Canvas& canvas, const Render_Frame_Snapshot& snapshot, const Renderable_Frame_View& frame_view) override {
Fill_Area_Render_State* s = render_state(frame_view);
if (!s)
return;
auto domain_axis = s->domain_axis.lock();
auto value_axis = s->value_axis.lock();
if (!domain_axis || !value_axis || data_points.empty())
return;
Axis_Mapping_2D mapping = Axis_Render_Access::mapping(domain_axis.get(), value_axis.get());
Axis_Mapping_2D mapping = Axis_Render_Access::mapping(domain_axis.get(), value_axis.get(), snapshot);
std::pmr::vector<PointF> polygon(frame_memory_resource());
if (s->mode == Fill_Area_Mode::To_Baseline) {
polygon.resize(data_points.size() + 2);