void initialize_fixed_font(struct fixed_font *self, const struct rgba *rgba, unsigned short int *x, unsigned short int *y, unsigned short int w, unsigned short int h) { int i; for (i = 0; i < b6_card_of(self->rgba); i += 1) { initialize_rgba(&self->rgba[i], w, h); copy_rgba(rgba, x[i], y[i], w, h, &self->rgba[i], 0, 0); } }
void initialize_toolkit_label(struct toolkit_label *self, struct renderer *renderer, const struct fixed_font *font, unsigned short int u, unsigned short int v, struct renderer_base *base, float x, float y, float w, float h) { self->renderer = renderer; self->font = font; initialize_rgba(&self->rgba, u, v); clear_rgba(&self->rgba, 0x00000000); initialize_toolkit_image(&self->image[1], renderer, base, x + 3, y + 3, w, h, NULL); initialize_toolkit_image(&self->image[0], renderer, base, x, y, w, h, create_renderer_texture_or_die(renderer, &self->rgba)); }
struct renderer_texture *make_texture(struct renderer *renderer, const char *skin_id, const char *data_id) { struct renderer_texture *texture = NULL; struct data_entry *entry; struct image_data *data; struct rgba rgba; if (get_image_data(skin_id, data_id, NULL, &entry, &data)) goto bail_out; if (!initialize_rgba(&rgba, data->w, data->h)) { copy_rgba(data->rgba, *data->x, *data->y, data->w, data->h, &rgba, 0, 0); texture = create_renderer_texture(renderer, &rgba); finalize_rgba(&rgba); } else log_w(_s("out of memory")); put_image_data(entry, data); bail_out: return texture; }
static int initialize_menu_renderer_image( struct menu_renderer_image *self, struct renderer *renderer, const struct b6_clock *clock, float x, float y, float w, float h, float pos, float speed, const char *skin_id, const char *data_id, const struct renderer_observer_ops *ops) { struct renderer_base *root = get_renderer_base(renderer); struct renderer_texture *texture[2]; struct data_entry *entry; struct image_data *data; struct rgba rgba; self->base = NULL; if (get_image_data(skin_id, data_id, NULL, &entry, &data)) return -1; initialize_rgba(&rgba, data->w, data->h); copy_rgba(data->rgba, *data->x, *data->y, data->w, data->h, &rgba, 0, 0); texture[0] = create_renderer_texture_or_die(renderer, &rgba); make_shadow_rgba(&rgba); texture[1] = create_renderer_texture_or_die(renderer, &rgba); finalize_rgba(&rgba); self->base = create_renderer_base_or_die(renderer, root, "base", x, y); self->tile[1] = create_renderer_tile_or_die( renderer, create_renderer_base_or_die(renderer, self->base, "shadow", 3, 3), 0, 0, w, h, texture[1]); self->tile[0] = create_renderer_tile_or_die( renderer, create_renderer_base_or_die(renderer, self->base, "image", 0, 0), 0, 0, w, h, texture[0]); put_image_data(entry, data); if (ops->on_render == menu_renderer_image_on_render_v) setup_linear(&self->linear, clock, self->base->y, pos, speed); else setup_linear(&self->linear, clock, self->base->x, pos, speed); add_renderer_observer(renderer, setup_renderer_observer( &self->renderer_observer, data_id, ops)); return 0; }