コード例 #1
0
ファイル: eon_element_entry.c プロジェクト: turran/eon
static void _eon_element_entry_instance_deinit(void *o)
{
	Eon_Element_Entry *thiz;

	thiz = EON_ELEMENT_ENTRY(o);
	/* attributes */
	egueb_dom_node_unref(thiz->default_value);
	/* private */
	enesim_renderer_unref(thiz->proxy);
	enesim_renderer_unref(thiz->r);
	egueb_dom_feature_unref(thiz->theme_feature);
}
コード例 #2
0
static void _egueb_svg_reference_gradient_linear_instance_deinit(void *o)
{
	Egueb_Svg_Reference_Gradient_Linear *thiz;

	thiz = EGUEB_SVG_REFERENCE_GRADIENT_LINEAR(o);
	enesim_renderer_unref(thiz->r);
}
コード例 #3
0
static Eina_Bool _blur_state_setup(Enesim_Renderer_Blur *thiz,
		Enesim_Renderer *r, Enesim_Surface *s, Enesim_Rop rop,
		Enesim_Log **l)
{
	if (!thiz->src && !thiz->src_r)
	{
		ENESIM_RENDERER_LOG(r, l, "No surface or renderer set");
		return EINA_FALSE;
	}

	/* Set the renderer */
	if (thiz->src_r)
	{
		Enesim_Renderer *old_r;

		if (!enesim_renderer_setup(thiz->src_r, s, rop, l))
			return EINA_FALSE;
		enesim_draw_cache_renderer_get(thiz->cache, &old_r);
		if (old_r != thiz->src_r)
			enesim_draw_cache_renderer_set(thiz->cache, enesim_renderer_ref(thiz->src_r));
		if (old_r)
			enesim_renderer_unref(old_r);
	}
	else if (thiz->src)
	{
		/* lock the surface for read only */
		enesim_surface_lock(thiz->src, EINA_FALSE);
	}
	return EINA_TRUE;
}
コード例 #4
0
ファイル: eon_drawer_basic_eon.c プロジェクト: turran/eon
static void _eon_drawer_basic_eon_free(Eon_Drawer_Widget *w, void *data)
{
	Eon_Drawer_Basic_Eon *thiz = data;

	enesim_renderer_unref(thiz->background);
	free(thiz);
}
コード例 #5
0
ファイル: eon_element_splitter.c プロジェクト: turran/eon
static void _eon_element_splitter_instance_deinit(void *o)
{
	Eon_Element_Splitter *thiz;

	thiz = EON_ELEMENT_SPLITTER(o);
	egueb_dom_node_unref(thiz->orientation);
	enesim_renderer_unref(thiz->r);
}
コード例 #6
0
ファイル: eon_element_stack.c プロジェクト: turran/eon
static void _eon_element_stack_instance_deinit(void *o)
{
	Eon_Element_Stack *thiz;

	thiz = EON_ELEMENT_STACK(o);
	egueb_dom_node_unref(thiz->orientation);
	egueb_dom_node_unref(thiz->homogeneous);
	enesim_renderer_unref(thiz->r);
}
コード例 #7
0
ファイル: theme_basic_scrollbar.c プロジェクト: turran/eon
static void _basic_scrollbar_free(Eon_Theme_Widget *t)
{
	Eon_Basic_Scrollbar *thiz;

	thiz = _scrollbar_get(t);
	if (thiz->shape)
		enesim_renderer_unref(thiz->shape);
	
	free(thiz);
}
コード例 #8
0
ファイル: theme_basic_scrollbar.c プロジェクト: turran/eon
/*============================================================================*
 *                                   API                                      *
 *============================================================================*/
EAPI Eon_Theme_Widget * eon_theme_basic_scrollbar_new(void)
{
	Eon_Theme_Widget *t;
	Eon_Basic_Scrollbar *thiz;
	Enesim_Renderer *r;

	thiz = calloc(1, sizeof(Eon_Basic_Scrollbar));
	if (!thiz) return NULL;

	r = enesim_renderer_background_new();
	if (!r) goto background_err;
	enesim_renderer_rop_set(r, ENESIM_BLEND);
	enesim_renderer_background_color_set(r, 0xffff0000);
	thiz->background = r;

	r = enesim_renderer_compound_new();
	if (!r) goto compound_err;
	thiz->compound = r;
	enesim_renderer_compound_layer_add(r, thiz->background);

	r = enesim_renderer_rectangle_new();
	if (!r) goto shape_err;
	thiz->shape = r;
	enesim_renderer_shape_fill_renderer_set(r, thiz->compound);
	enesim_renderer_shape_stroke_weight_set(r, 1.0);
	enesim_renderer_shape_stroke_color_set(r, 0xff000000);
	enesim_renderer_shape_draw_mode_set(r, ENESIM_SHAPE_DRAW_MODE_STROKE_FILL);
	enesim_renderer_rop_set(r, ENESIM_BLEND);

	t = eon_theme_scrollbar_new(&_descriptor, thiz);
	if (!t) goto base_err;

	return t;
base_err:
	enesim_renderer_unref(thiz->shape);
shape_err:
	enesim_renderer_unref(thiz->compound);
compound_err:
	enesim_renderer_unref(thiz->background);
background_err:
	free(thiz);
	return NULL;
}
コード例 #9
0
ファイル: eon_element_button.c プロジェクト: turran/eon
static void _eon_element_button_instance_deinit(void *o)
{
	Eon_Element_Button *thiz;

	thiz = EON_ELEMENT_BUTTON(o);
	/* attributes */
	enesim_renderer_unref(thiz->proxy);
	/* private */
	egueb_dom_feature_unref(thiz->theme_feature);
}
コード例 #10
0
ファイル: eon_element_expander.c プロジェクト: turran/eon
static void _eon_element_expander_instance_deinit(void *o)
{
	Eon_Element_Expander *thiz;

	thiz = EON_ELEMENT_EXPANDER(o);
	/* attributes */
	egueb_dom_node_unref(thiz->expanded);
	/* private */
	enesim_renderer_unref(thiz->proxy);
	egueb_dom_feature_unref(thiz->theme_feature);
}
コード例 #11
0
EAPI void egueb_dom_media_provider_unref(Egueb_Dom_Media_Provider *thiz)
{
	if (!thiz) return;
	thiz->ref--;
	if (!thiz->ref)
	{
		if (thiz->desc->destroy)
			thiz->desc->destroy(thiz->data);
		enesim_renderer_unref(thiz->image);
		free(thiz);
	} 
}
コード例 #12
0
ファイル: eon_element_scale.c プロジェクト: turran/eon
static void _eon_element_scale_instance_deinit(void *o)
{
	Eon_Element_Scale *thiz;

	thiz = EON_ELEMENT_SCALE(o);
	/* attributes */
	egueb_dom_node_unref(thiz->orientation);
	egueb_dom_node_unref(thiz->value);
	egueb_dom_node_unref(thiz->min);
	egueb_dom_node_unref(thiz->max);
	/* private */
	enesim_renderer_unref(thiz->proxy);
	egueb_dom_feature_unref(thiz->theme_feature);
}
コード例 #13
0
/*----------------------------------------------------------------------------*
 *                             Reference interface                            *
 *----------------------------------------------------------------------------*/
static Eina_Bool _egueb_svg_reference_gradient_process(Egueb_Svg_Reference *r)
{
	Egueb_Svg_Reference_Gradient *thiz;
	Egueb_Svg_Reference_Gradient_Class *klass;
	Egueb_Svg_Spread_Method spread_method;
	Enesim_Renderer *ren = NULL;
	Enesim_Repeat_Mode mode = ENESIM_REPEAT_MODE_PAD;
	Egueb_Dom_Node *stop_node = NULL;
	Eina_Bool ret = EINA_TRUE;

	DBG("Processing a gradient reference");
	thiz = EGUEB_SVG_REFERENCE_GRADIENT(r);
	klass = EGUEB_SVG_REFERENCE_GRADIENT_CLASS_GET(r);
	/* first the implementation */
	if (klass->process)
		ret = klass->process(thiz);
	if (!ret) return ret;

	egueb_svg_reference_paint_server_renderer_get(r, &ren);
	if (!ren) return EINA_FALSE;

	/* the spread method */
	egueb_svg_gradient_deep_spread_method_get(r->referenceable, &spread_method);
	_spread_method_to_repeat_mode(spread_method, &mode);
	enesim_renderer_gradient_repeat_mode_set(ren, mode);

	/* now the common stops */
	egueb_svg_gradient_deep_stop_get(r->referenceable, &stop_node);
	enesim_renderer_gradient_stop_clear(ren);
	while (stop_node)
	{
		Egueb_Dom_Node *tmp;

		if (egueb_svg_element_is_stop(stop_node))
		{
			Enesim_Renderer_Gradient_Stop *stop;
			stop = egueb_svg_element_stop_gradient_stop_get(stop_node);
			enesim_renderer_gradient_stop_add(ren, stop);
			DBG("Adding stop at %g color %08x", stop->pos, stop->argb);
		}
		tmp = egueb_dom_node_sibling_next_get(stop_node);
		egueb_dom_node_unref(stop_node);
		stop_node = tmp;
		
	}
	enesim_renderer_unref(ren);

	return ret;
}
コード例 #14
0
/*----------------------------------------------------------------------------*
 *                       The Video provider interface                         *
 *----------------------------------------------------------------------------*/
static void _egueb_video_ope_provider_descriptor_destroy(void *data)
{
	Egueb_Video_Ope_Provider *thiz = data;

	if (thiz->stream)
	{
		ope_stream_unref(thiz->stream);
		thiz->stream = NULL;
	}
	ope_player_free(thiz->player);

	if (thiz->image)
	{
		enesim_renderer_unref(thiz->image);
		thiz->image = NULL;
	}
	free(thiz);
}
コード例 #15
0
ファイル: eon_theme_mars_radio.c プロジェクト: turran/eon
static void _eon_theme_mars_radio_dtor(void *data)
{
	Eon_Theme_Mars_Radio *thiz = data;

	/* attributes */
	egueb_dom_node_unref(thiz->border_color);
	egueb_dom_node_unref(thiz->button_color);
	/* private */
	enesim_renderer_unref(thiz->area);
	enesim_renderer_unref(thiz->border);
	enesim_renderer_unref(thiz->button);
	enesim_renderer_unref(thiz->radio);
	enesim_renderer_unref(thiz->blur);
	enesim_renderer_unref(thiz->proxy);
	free(thiz);
}
コード例 #16
0
ファイル: egueb_svg_renderable.c プロジェクト: turran/egueb
static void _egueb_svg_renderable_instance_deinit(void *o)
{
	Egueb_Svg_Renderable *thiz;

	thiz = EGUEB_SVG_RENDERABLE(o);
	/* the properties */
	egueb_dom_node_unref(thiz->transform);
	/* now remove the references */
	if (thiz->clip_path)
	{
		egueb_svg_reference_free(thiz->clip_path);
		thiz->clip_path = NULL;
	}
	/* the painter */
	if (thiz->painter)
	{
		egueb_svg_painter_unref(thiz->painter);
		thiz->painter = NULL;
	}
	/* the rendering */
	enesim_renderer_unref(thiz->proxy);
}
コード例 #17
0
ファイル: theme_basic_progressbar.c プロジェクト: turran/eon
static void _free(Enesim_Renderer *r)
{
	Progressbar *thiz;

	thiz = _progressbar_get(r);

	thiz = enesim_renderer_data_get(r);

	if (thiz->widget.rectangle)
		enesim_renderer_unref(thiz->widget.rectangle);
	if (thiz->widget.content)
		enesim_renderer_unref(thiz->widget.content);
	if (thiz->content.background)
		enesim_renderer_unref(thiz->content.background);
	if (thiz->content.bar)
		enesim_renderer_unref(thiz->content.bar);
	if (thiz->bar.content)
		enesim_renderer_unref(thiz->bar.content);
	if (thiz->bar_content.shade)
		enesim_renderer_unref(thiz->bar_content.shade);
	if (thiz->bar_content.pattern)
		enesim_renderer_unref(thiz->bar_content.pattern);
}
コード例 #18
0
ファイル: theme_basic_progressbar.c プロジェクト: turran/eon
Enesim_Renderer * eon_theme_basic_progressbar_new(void)
{
	Progressbar *thiz;
	Enesim_Renderer *r;

	thiz = calloc(1, sizeof(Progressbar));
	if (!thiz) return NULL;

	/* first the bar content */
	r = enesim_renderer_stripes_new();
	if (!r) goto bar_content_pattern_err;
	thiz->bar_content.pattern = r;
	enesim_renderer_stripes_even_color_set(r, 0xffa1ff38);
	enesim_renderer_stripes_odd_color_set(r, 0xffb3ff00);
	enesim_renderer_stripes_even_thickness_set(r, 3);
	enesim_renderer_stripes_odd_thickness_set(r, 5);

	r = enesim_renderer_stripes_new();
	if (!r) goto bar_content_shade_err;
	thiz->bar_content.shade = r;
	enesim_renderer_stripes_even_color_set(r, 0);
	enesim_renderer_stripes_odd_color_set(r, 0x33000000);
	enesim_renderer_stripes_even_thickness_set(r, 1);
	enesim_renderer_stripes_odd_thickness_set(r, 1);

	/* now the bar itself */
	r = enesim_renderer_compound_new();
	if (!r) goto bar_content_err;
	thiz->bar.content = r;
	enesim_renderer_compound_layer_add(r, thiz->bar_content.pattern);
	enesim_renderer_rop_set(thiz->bar_content.pattern, ENESIM_FILL);
	enesim_renderer_compound_layer_add(r, thiz->bar_content.shade);
	enesim_renderer_rop_set(thiz->bar_content.shade, ENESIM_BLEND);

	/* now the content */
	r = enesim_renderer_rectangle_new();
	if (!r) goto content_bar_err;
	thiz->content.bar = r;
	enesim_renderer_rectangle_corners_set(r, EINA_TRUE, EINA_TRUE, EINA_TRUE, EINA_TRUE);
	enesim_renderer_rectangle_corner_radius_set(r, 5);
	enesim_renderer_shape_stroke_weight_set(r, 2);
	enesim_renderer_shape_stroke_color_set(r, 0xffa1ff38);
	enesim_renderer_shape_fill_renderer_set(r, thiz->bar.content);
	enesim_renderer_shape_draw_mode_set(r, ENESIM_SHAPE_DRAW_MODE_STROKE_FILL);

	r = enesim_renderer_background_new();
	if (!r) goto content_background_err;
	thiz->content.background = r;
	enesim_renderer_background_color_set(r, 0xffcccccc);

	/* now the widget */
	r = enesim_renderer_compound_new();
	if (!r) goto widget_content_err;
	thiz->widget.content = r;
	enesim_renderer_compound_layer_add(r, thiz->content.background);
	enesim_renderer_rop_set(thiz->content.background, ENESIM_FILL);
	enesim_renderer_compound_layer_add(r, thiz->content.bar);
	enesim_renderer_rop_set(thiz->content.bar, ENESIM_BLEND);

	r = enesim_renderer_rectangle_new();
	if (!r) goto widget_rectangle_err;
	thiz->widget.rectangle = r;
	enesim_renderer_rectangle_corners_set(r, EINA_TRUE, EINA_TRUE, EINA_TRUE, EINA_TRUE);
	enesim_renderer_rectangle_corner_radius_set(r, 5);
	enesim_renderer_shape_stroke_weight_set(r, 2);
	enesim_renderer_shape_stroke_color_set(r, 0xff555555);
	enesim_renderer_shape_fill_renderer_set(r, thiz->widget.content);
	enesim_renderer_shape_draw_mode_set(r, ENESIM_SHAPE_DRAW_MODE_STROKE_FILL);

	r = eon_theme_progressbar_new(&_descriptor, thiz);
	if (!r) goto renderer_err;

	return r;

renderer_err:
	enesim_renderer_unref(thiz->widget.rectangle);
widget_rectangle_err:
	enesim_renderer_unref(thiz->widget.content);
widget_content_err:
	enesim_renderer_unref(thiz->content.background);
content_background_err:
	enesim_renderer_unref(thiz->content.bar);
content_bar_err:
	enesim_renderer_unref(thiz->bar.content);
bar_content_err:
	enesim_renderer_unref(thiz->bar_content.shade);
bar_content_shade_err:
	enesim_renderer_unref(thiz->bar_content.pattern);
bar_content_pattern_err:
	free(thiz);
	return NULL;
}