/** * input_overlay_poll_clear: * @ol : overlay handle * * Call when there is nothing to poll. Allows overlay to * clear certain state. **/ static void input_overlay_poll_clear(float opacity) { size_t i; input_overlay_t *ol = overlay_ptr; if (!ol) return; ol->blocked = false; input_overlay_set_alpha_mod(opacity); for (i = 0; i < ol->active->size; i++) { struct overlay_desc *desc = &ol->active->descs[i]; if (!desc) continue; desc->range_x_mod = desc->range_x; desc->range_y_mod = desc->range_y; desc->updated = false; desc->delta_x = 0.0f; desc->delta_y = 0.0f; input_overlay_update_desc_geom(ol, desc); } }
void input_overlay_post_poll(input_overlay_t *ol) { size_t i; input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity); for (i = 0; i < ol->active->size; i++) { struct overlay_desc *desc = &ol->active->descs[i]; if (desc->updated) { // If pressed this frame, change the hitbox. desc->range_x_mod = desc->range_x * desc->range_mod; desc->range_y_mod = desc->range_y * desc->range_mod; if (desc->image.pixels) ol->iface->set_alpha(ol->iface_data, desc->image_index, desc->alpha_mod * g_settings.input.overlay_opacity); } else { desc->range_x_mod = desc->range_x; desc->range_y_mod = desc->range_y; } input_overlay_update_desc_geom(ol, desc); desc->updated = false; } }
/** * input_overlay_post_poll: * * Called after all the input_overlay_poll() calls to * update the range modifiers for pressed/unpressed regions * and alpha mods. **/ static void input_overlay_post_poll(input_overlay_t *ol, float opacity) { size_t i; input_overlay_set_alpha_mod(opacity); for (i = 0; i < ol->active->size; i++) { struct overlay_desc *desc = &ol->active->descs[i]; desc->range_x_mod = desc->range_x; desc->range_y_mod = desc->range_y; if (desc->updated) { /* If pressed this frame, change the hitbox. */ desc->range_x_mod *= desc->range_mod; desc->range_y_mod *= desc->range_mod; if (desc->image.pixels) { if (ol->iface->set_alpha) ol->iface->set_alpha(ol->iface_data, desc->image_index, desc->alpha_mod * opacity); } } input_overlay_update_desc_geom(ol, desc); desc->updated = false; } }
void input_overlay_poll_clear(input_overlay_t *ol) { size_t i; ol->blocked = false; input_overlay_set_alpha_mod(ol, g_settings.input.overlay_opacity); for (i = 0; i < ol->active->size; i++) { struct overlay_desc *desc = &ol->active->descs[i]; desc->range_x_mod = desc->range_x; desc->range_y_mod = desc->range_y; desc->updated = false; desc->delta_x = 0.0f; desc->delta_y = 0.0f; input_overlay_update_desc_geom(ol, desc); } }