仍然闪烁
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user