コード例 #1
0
void enable_toolkit_label_shadow(struct toolkit_label *self)
{
	if (self->image[1].texture)
		return;
	make_shadow_rgba(&self->rgba);
	self->image[1].texture = create_renderer_texture_or_die(self->renderer,
								&self->rgba);
	if (self->image[0].tile->texture)
		show_toolkit_image(&self->image[1]);
}
コード例 #2
0
int set_toolkit_label(struct toolkit_label *self, const struct b6_utf8 *utf8)
{
	int x, y;
	if (!self->font)
		return 0;
	x = self->rgba.w - get_fixed_font_text_width(self->font, utf8);
	y = self->rgba.h - get_fixed_font_height(self->font);
	if (x < 0 || y < 0)
		return -1;
	render_fixed_font(self->font, utf8, &self->rgba, x / 2, y / 2);
	update_renderer_texture(self->image[0].texture, &self->rgba);
	if (self->image[1].texture) {
		make_shadow_rgba(&self->rgba);
		update_renderer_texture(self->image[1].texture, &self->rgba);
	}
	return 0;
}
コード例 #3
0
ファイル: menu_renderer.c プロジェクト: atroel/open-greedy
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;
}