void custom_tod::update_tod_display(window& window) { ::image::set_color_adjustment(tod_red_field_->get_value(), tod_green_field_->get_value(), tod_blue_field_->get_value()); // Prevent a floating slice of window appearing alone over the // theme UI sidebar after redrawing tiles and before we have a // chance to redraw the rest of this window. window.undraw(); // NOTE: We only really want to re-render the gamemap tiles here. // Redrawing everything is a significantly more expensive task. // At this time, tiles are the only elements on which ToD tint is // meant to have a visible effect. This is very strongly tied to // the image caching mechanism. // // If this ceases to be the case in the future, you'll need to call // redraw_everything() instead. // invalidate all tiles so they are redrawn with the new ToD tint next display_.invalidate_all(); // redraw tiles display_.draw(false); window.invalidate_layout(); }
void custom_tod::update_tod_display(window& window) { display* disp = display::get_singleton(); assert(disp && "Display pointer is null!"); // Prevent a floating slice of window appearing alone over the // theme UI sidebar after redrawing tiles and before we have a // chance to redraw the rest of this window. window.undraw(); // NOTE: We only really want to re-render the gamemap tiles here. // Redrawing everything is a significantly more expensive task. // At this time, tiles are the only elements on which ToD tint is // meant to have a visible effect. This is very strongly tied to // the image caching mechanism. // // If this ceases to be the case in the future, you'll need to call // redraw_everything() instead. disp->update_tod(&get_selected_tod()); // invalidate all tiles so they are redrawn with the new ToD tint next disp->invalidate_all(); // redraw tiles disp->draw(false); // NOTE: revert to invalidate_layout if necessary to display the ToD mask image. window.set_is_dirty(true); }