mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-23 16:09:47 +00:00
(gfx_animation) Get rid of some static variables, move struct
definitions to header
This commit is contained in:
parent
559ab90374
commit
31e50f1221
@ -29,54 +29,17 @@
|
||||
#include "gfx_animation.h"
|
||||
#include "../performance_counters.h"
|
||||
|
||||
typedef float (*easing_cb) (float, float, float, float);
|
||||
|
||||
struct tween
|
||||
{
|
||||
float duration;
|
||||
float running_since;
|
||||
float initial_value;
|
||||
float target_value;
|
||||
float *subject;
|
||||
uintptr_t tag;
|
||||
easing_cb easing;
|
||||
tween_cb cb;
|
||||
void *userdata;
|
||||
bool deleted;
|
||||
};
|
||||
|
||||
struct gfx_animation
|
||||
{
|
||||
bool pending_deletes;
|
||||
bool in_update;
|
||||
bool animation_is_active;
|
||||
bool ticker_is_active;
|
||||
|
||||
uint64_t ticker_idx; /* updated every TICKER_SPEED us */
|
||||
uint64_t ticker_slow_idx; /* updated every TICKER_SLOW_SPEED us */
|
||||
uint64_t ticker_pixel_idx; /* updated every frame */
|
||||
uint64_t ticker_pixel_line_idx; /* updated every frame */
|
||||
retro_time_t cur_time;
|
||||
retro_time_t old_time;
|
||||
|
||||
float delta_time;
|
||||
|
||||
struct tween* list;
|
||||
struct tween* pending;
|
||||
};
|
||||
|
||||
typedef struct gfx_animation gfx_animation_t;
|
||||
|
||||
#define TICKER_SPEED 333333
|
||||
#define TICKER_SLOW_SPEED 1666666
|
||||
|
||||
/* Pixel ticker nominally increases by one after each
|
||||
* ticker_pixel_period ms (actual increase depends upon
|
||||
* ticker speed setting and display resolution) */
|
||||
static const float ticker_pixel_period = (1.0f / 60.0f) * 1000.0f;
|
||||
* TICKER_PIXEL_PERIOD ms (actual increase depends upon
|
||||
* ticker speed setting and display resolution)
|
||||
*
|
||||
* Formula is: (1.0f / 60.0f) * 1000.0f
|
||||
* */
|
||||
#define TICKER_PIXEL_PERIOD (16.666666666666668f)
|
||||
|
||||
static const char ticker_spacer_default[] = TICKER_SPACER_DEFAULT;
|
||||
|
||||
/* By default, this should be a NOOP */
|
||||
static void gfx_animation_update_time_default(
|
||||
float *ticker_pixel_increment,
|
||||
@ -849,10 +812,10 @@ static size_t get_line_smooth_scroll_ticks(size_t line_len)
|
||||
float cpm = 1000.0f;
|
||||
/* Base time for which a line should be shown, in ms */
|
||||
float line_duration = (line_len * 60.0f * 1000.0f) / cpm;
|
||||
/* Ticker updates (nominally) once every ticker_pixel_period ms
|
||||
/* Ticker updates (nominally) once every TICKER_PIXEL_PERIOD ms
|
||||
* > Return base number of ticks for which text should scroll
|
||||
* from one line to the next */
|
||||
return (size_t)(line_duration / ticker_pixel_period);
|
||||
return (size_t)(line_duration / TICKER_PIXEL_PERIOD);
|
||||
}
|
||||
|
||||
static void set_line_smooth_fade_parameters(
|
||||
@ -1266,8 +1229,8 @@ static void gfx_animation_update_time(
|
||||
* every frame (regardless of time delta), so require
|
||||
* special handling */
|
||||
|
||||
/* > Get base increment size (+1 every ticker_pixel_period ms) */
|
||||
ticker_pixel_increment = p_anim->delta_time / ticker_pixel_period;
|
||||
/* > Get base increment size (+1 every TICKER_PIXEL_PERIOD ms) */
|
||||
ticker_pixel_increment = p_anim->delta_time / TICKER_PIXEL_PERIOD;
|
||||
|
||||
/* > Apply ticker speed adjustment */
|
||||
ticker_pixel_increment *= speed_factor;
|
||||
@ -1434,7 +1397,7 @@ bool gfx_animation_ticker(gfx_animation_ctx_ticker_t *ticker)
|
||||
size_t str_len = utf8len(ticker->str);
|
||||
|
||||
if (!ticker->spacer)
|
||||
ticker->spacer = ticker_spacer_default;
|
||||
ticker->spacer = TICKER_SPACER_DEFAULT;
|
||||
|
||||
if ((size_t)str_len <= ticker->len)
|
||||
{
|
||||
@ -1562,8 +1525,8 @@ bool gfx_animation_ticker_smooth_fw(gfx_animation_ctx_ticker_smooth_t *ticker)
|
||||
|
||||
if (ticker->dst_str_width)
|
||||
*ticker->dst_str_width = (num_chars * glyph_width) + suffix_width;
|
||||
*ticker->x_offset = 0;
|
||||
success = true;
|
||||
*ticker->x_offset = 0;
|
||||
success = true;
|
||||
goto end;
|
||||
}
|
||||
|
||||
@ -1572,14 +1535,14 @@ bool gfx_animation_ticker_smooth_fw(gfx_animation_ctx_ticker_smooth_t *ticker)
|
||||
|
||||
/* Use default spacer, if none is provided */
|
||||
if (!ticker->spacer)
|
||||
ticker->spacer = ticker_spacer_default;
|
||||
ticker->spacer = TICKER_SPACER_DEFAULT;
|
||||
|
||||
/* Get length + width of spacer */
|
||||
spacer_len = utf8len(ticker->spacer);
|
||||
spacer_len = utf8len(ticker->spacer);
|
||||
if (spacer_len < 1)
|
||||
goto end;
|
||||
|
||||
spacer_width = spacer_len * glyph_width;
|
||||
spacer_width = spacer_len * glyph_width;
|
||||
|
||||
/* Determine animation type */
|
||||
switch (ticker->type_enum)
|
||||
@ -1781,7 +1744,7 @@ bool gfx_animation_ticker_smooth(gfx_animation_ctx_ticker_smooth_t *ticker)
|
||||
|
||||
/* Use default spacer, if none is provided */
|
||||
if (!ticker->spacer)
|
||||
ticker->spacer = ticker_spacer_default;
|
||||
ticker->spacer = TICKER_SPACER_DEFAULT;
|
||||
|
||||
/* Find the display width of each character in
|
||||
* the spacer */
|
||||
|
@ -188,6 +188,44 @@ typedef struct gfx_delayed_animation
|
||||
gfx_animation_ctx_entry_t entry;
|
||||
} gfx_delayed_animation_t;
|
||||
|
||||
typedef float (*easing_cb) (float, float, float, float);
|
||||
|
||||
struct tween
|
||||
{
|
||||
float duration;
|
||||
float running_since;
|
||||
float initial_value;
|
||||
float target_value;
|
||||
float *subject;
|
||||
uintptr_t tag;
|
||||
easing_cb easing;
|
||||
tween_cb cb;
|
||||
void *userdata;
|
||||
bool deleted;
|
||||
};
|
||||
|
||||
struct gfx_animation
|
||||
{
|
||||
bool pending_deletes;
|
||||
bool in_update;
|
||||
bool animation_is_active;
|
||||
bool ticker_is_active;
|
||||
|
||||
uint64_t ticker_idx; /* updated every TICKER_SPEED us */
|
||||
uint64_t ticker_slow_idx; /* updated every TICKER_SLOW_SPEED us */
|
||||
uint64_t ticker_pixel_idx; /* updated every frame */
|
||||
uint64_t ticker_pixel_line_idx; /* updated every frame */
|
||||
retro_time_t cur_time;
|
||||
retro_time_t old_time;
|
||||
|
||||
float delta_time;
|
||||
|
||||
struct tween* list;
|
||||
struct tween* pending;
|
||||
};
|
||||
|
||||
typedef struct gfx_animation gfx_animation_t;
|
||||
|
||||
void gfx_timer_start(gfx_timer_t *timer, gfx_timer_ctx_entry_t *timer_entry);
|
||||
|
||||
void gfx_timer_kill(gfx_timer_t *timer);
|
||||
|
Loading…
Reference in New Issue
Block a user