void initialize_toolkit_image(struct toolkit_image *self, struct renderer *renderer, struct renderer_base *base, float x, float y, float w, float h, struct renderer_texture *texture) { self->tile = create_renderer_tile_or_die(renderer, base, x, y, w, h, texture); self->texture = 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; }