策略抽离
This commit is contained in:
@@ -22,7 +22,7 @@ struct Raster_Image_Input_Data : Latest_Input_Data {
|
||||
struct Raster_Image_Render_State : Render_State, Raster_Image_Prop {};
|
||||
struct Raster_Image_Private : Typed_Render_Data<Raster_Image, Raster_Image_Render_State, Raster_Image_Input_Data> {
|
||||
Image image;
|
||||
void prepare_data(const Plot_Render_Snapshot&) override {
|
||||
void prepare_data(const Render_Frame_Snapshot&) override {
|
||||
sync_state_pipeline();
|
||||
Raster_Image_Input_Data* input = render_input_data();
|
||||
input->read_all([this](const Image& value) {
|
||||
@@ -30,7 +30,7 @@ struct Raster_Image_Private : Typed_Render_Data<Raster_Image, Raster_Image_Rende
|
||||
});
|
||||
clear_render_input();
|
||||
}
|
||||
void draw(Canvas& canvas, const Plot_Render_Snapshot&) override {
|
||||
void draw(Canvas& canvas, const Render_Frame_Snapshot&) override {
|
||||
Raster_Image_Render_State* s = render_state();
|
||||
auto domain_axis = s->domain_axis.lock();
|
||||
auto value_axis = s->value_axis.lock();
|
||||
@@ -69,17 +69,13 @@ void Raster_Image::update_image_frame(const Image& image, Range domain_range, Ra
|
||||
if (!ok())
|
||||
return;
|
||||
Raster_Image_Private* pd = d();
|
||||
auto record = pd->state_control.try_acquire_role(State_Edit);
|
||||
if (record.result != Triple_Buffer_Result::Success)
|
||||
Render_Edit_Lease<Raster_Image_Private, Raster_Image_Render_State> edit(pd);
|
||||
if (!edit)
|
||||
return;
|
||||
auto lease = record.lease;
|
||||
Raster_Image_Render_State* state = reinterpret_cast<Raster_Image_Render_State*>(pd->state_by_index(lease.index));
|
||||
state->domain_range = domain_range;
|
||||
state->value_range = value_range;
|
||||
state->source_rect = source_rect;
|
||||
state->interpolation_mode = interpolation_mode;
|
||||
++state->version;
|
||||
pd->unmark_state(lease);
|
||||
edit->domain_range = domain_range;
|
||||
edit->value_range = value_range;
|
||||
edit->source_rect = source_rect;
|
||||
edit->interpolation_mode = interpolation_mode;
|
||||
Render_Input_Lease<Raster_Image_Private, Raster_Image_Input_Data> input(pd);
|
||||
input->push(image);
|
||||
}
|
||||
@@ -118,7 +114,7 @@ std::shared_ptr<Raster_Image> Raster_Image::Builder::build() {
|
||||
auto ret = renderive::make_shared<Raster_Image>();
|
||||
ret->init(parent);
|
||||
Raster_Image_Private* pd = ret->d();
|
||||
Raster_Image_Render_State* sc = reinterpret_cast<Raster_Image_Render_State*>(pd->state(State_Edit));
|
||||
Raster_Image_Render_State* sc = reinterpret_cast<Raster_Image_Render_State*>(pd->edit_state());
|
||||
PROP_R(std::weak_ptr<Abs_Axis>, domain_axis)
|
||||
PROP_R(std::weak_ptr<Abs_Axis>, value_axis)
|
||||
PROP_R(Range, domain_range)
|
||||
|
||||
Reference in New Issue
Block a user