Пример #1
0
/*============================================================================*
 *                                 Global                                     *
 *============================================================================*/
Egueb_Dom_Node * eon_theme_mars_radio_new(void)
{
	Eon_Theme_Mars_Radio *thiz;
	Egueb_Dom_Node *n;
	Egueb_Dom_String *s;
	Enesim_Renderer_Compound_Layer *l;

	thiz = calloc(1, sizeof(Eon_Theme_Mars_Radio));
	/* the radio button */
	thiz->button = enesim_renderer_circle_new();
	enesim_renderer_circle_radius_set(thiz->button, 3);
	enesim_renderer_shape_draw_mode_set(thiz->button, ENESIM_RENDERER_SHAPE_DRAW_MODE_FILL);

	thiz->border = enesim_renderer_circle_new();
	enesim_renderer_circle_radius_set(thiz->border, 7);
	enesim_renderer_shape_stroke_weight_set(thiz->border, 2);
	enesim_renderer_shape_draw_mode_set(thiz->border, ENESIM_RENDERER_SHAPE_DRAW_MODE_STROKE_FILL);
	enesim_renderer_shape_fill_renderer_set(thiz->border, enesim_renderer_ref(thiz->button));

	/* the button and the content */
	thiz->radio = enesim_renderer_compound_new();
	l = enesim_renderer_compound_layer_new();
	enesim_renderer_compound_layer_renderer_set(l, enesim_renderer_ref(thiz->border));
	enesim_renderer_compound_layer_rop_set(l, ENESIM_ROP_BLEND);
	enesim_renderer_compound_layer_add(thiz->radio, l);

	/* the widget area */
	thiz->area = enesim_renderer_rectangle_new();
	enesim_renderer_shape_draw_mode_set(thiz->area, ENESIM_RENDERER_SHAPE_DRAW_MODE_FILL);
	enesim_renderer_shape_fill_renderer_set(thiz->area, enesim_renderer_ref(thiz->radio));

	/* the blur effect for disabled buttons */
	thiz->blur = enesim_renderer_blur_new();
	enesim_renderer_blur_radius_x_set(thiz->blur, 3);
	enesim_renderer_blur_radius_y_set(thiz->blur, 3);

	thiz->proxy = enesim_renderer_proxy_new();
	enesim_renderer_proxy_proxied_set(thiz->proxy, enesim_renderer_ref(thiz->area));

	n = eon_theme_element_button_new(&_descriptor, thiz);
	/* the attributes */
	s = egueb_dom_string_new_with_static_chars("border-color");
	thiz->border_color = egueb_css_attr_color_new(s, NULL, EINA_TRUE,
			EINA_TRUE, EINA_FALSE);
	s = egueb_dom_string_new_with_static_chars("button-color");
	thiz->button_color = egueb_css_attr_color_new(s, NULL, EINA_TRUE,
			EINA_TRUE, EINA_FALSE);
	egueb_dom_element_attribute_node_set(n, egueb_dom_node_ref(thiz->border_color), NULL);
	egueb_dom_element_attribute_node_set(n, egueb_dom_node_ref(thiz->button_color), NULL);
	thiz->n = n;

	return n;
}
Пример #2
0
static Eina_Bool _eon_theme_mars_radio_process(void *data)
{
	Eon_Theme_Mars_Radio *thiz;
	Eina_Rectangle geom;
	Eina_Bool enabled;
	Enesim_Argb argb;
	Enesim_Color button_color;
	Enesim_Color border_color;
	int cx, cy;

	thiz = data;
	/* get the final attributes */
	egueb_dom_attr_final_get(thiz->button_color, &argb);
	button_color = enesim_color_argb_from(argb);
	egueb_dom_attr_final_get(thiz->border_color, &argb);
	border_color = enesim_color_argb_from(argb);
	/* get the inherited members */
	enabled = eon_theme_widget_enabled_get(thiz->n);
	eon_theme_renderable_geometry_get(thiz->n, &geom);
	/* rad + padding */
	cx = geom.x + 12;
	cy = geom.y + (geom.h / 2);
	/* set the area */
	enesim_renderer_rectangle_position_set(thiz->area, geom.x, geom.y);
	enesim_renderer_rectangle_size_set(thiz->area, geom.w, geom.h);
	/* set the border */
	enesim_renderer_shape_stroke_color_set(thiz->border, border_color);
	enesim_renderer_circle_center_set(thiz->border, cx, cy);
	/* set the button */
	enesim_renderer_shape_fill_color_set(thiz->button, button_color);
	enesim_renderer_circle_center_set(thiz->button, cx, cy);
	/* apply the blur value */
	if (!enabled)
	{
		enesim_renderer_blur_source_renderer_set(thiz->blur,
				enesim_renderer_ref(thiz->area));
		enesim_renderer_proxy_proxied_set(thiz->proxy,
				enesim_renderer_ref(thiz->blur));
	}
	else
	{
		enesim_renderer_blur_source_renderer_set(thiz->blur, NULL);
		enesim_renderer_proxy_proxied_set(thiz->proxy,
				enesim_renderer_ref(thiz->area));
	}
	enesim_renderer_origin_set(thiz->blur, geom.x + 1, geom.y);

	return EINA_TRUE;
}
Пример #3
0
static int _eon_element_entry_size_hints_get(Eon_Renderable *r,
		Eon_Renderable_Size *size)
{
	Eon_Element_Entry *thiz;
	Eon_Box padding;
	Egueb_Dom_Node *n;
	Egueb_Dom_Node *theme_element;
	Enesim_Renderer *ren;
	int ret = 0;

	n = (EON_ELEMENT(r))->n;

	thiz = EON_ELEMENT_ENTRY(r);
	theme_element = eon_feature_themable_load(thiz->theme_feature);
	if (!theme_element)
	{
		WARN("No theme element found");
		return 0;
	}
	eon_theme_element_entry_text_renderer_set(theme_element,
			enesim_renderer_ref(thiz->r));
	ret = eon_theme_element_entry_size_hints_get(theme_element,
			size, -1);
	/* set the proxied renderer */
	ren = eon_theme_renderable_renderer_get(theme_element);
	enesim_renderer_proxy_proxied_set(thiz->proxy, ren);
	egueb_dom_node_unref(theme_element);

	return ret;
}
Пример #4
0
/*----------------------------------------------------------------------------*
 *                           Renderable interface                             *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_element_button_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Button *thiz;

	thiz = EON_ELEMENT_BUTTON(r);
	return enesim_renderer_ref(thiz->proxy);
}
Пример #5
0
static Enesim_Renderer * _eon_element_expander_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Expander *thiz;

	thiz = EON_ELEMENT_EXPANDER(r);
	return enesim_renderer_ref(thiz->proxy);
}
Пример #6
0
/*----------------------------------------------------------------------------*
 *                           Renderable interface                             *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_element_scale_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Scale *thiz;

	thiz = EON_ELEMENT_SCALE(r);
	return enesim_renderer_ref(thiz->proxy);
}
Пример #7
0
/*----------------------------------------------------------------------------*
 *                               Eon interface                              *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_drawer_basic_eon_background_renderer_get(
		Eon_Drawer_Widget *w, void *data)
{
	Eon_Drawer_Basic_Eon *thiz = data;

	return enesim_renderer_ref(thiz->background);	
}
Пример #8
0
Enesim_Renderer * egueb_svg_renderable_renderer_get(Egueb_Dom_Node *n)
{
	Egueb_Svg_Renderable *thiz;

	thiz = EGUEB_SVG_RENDERABLE(n);
	return enesim_renderer_ref(thiz->proxy);
}
Пример #9
0
/*----------------------------------------------------------------------------*
 *                           Renderable interface                             *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_element_entry_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Entry *thiz;

	thiz = EON_ELEMENT_ENTRY(r);
	return enesim_renderer_ref(thiz->proxy);
}
Пример #10
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;
}
Пример #11
0
/*----------------------------------------------------------------------------*
 *                           Renderable interface                             *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_element_splitter_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Splitter *thiz;

	thiz = EON_ELEMENT_SPLITTER(r);
	return enesim_renderer_ref(thiz->r);
}
Пример #12
0
/*----------------------------------------------------------------------------*
 *                           Renderable interface                             *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _eon_element_stack_renderer_get(Eon_Renderable *r)
{
	Eon_Element_Stack *thiz;

	thiz = EON_ELEMENT_STACK(r);
	return enesim_renderer_ref(thiz->r);
}
Пример #13
0
/*============================================================================*
 *                                   API                                      *
 *============================================================================*/
EAPI Egueb_Dom_Media_Provider * egueb_video_ope_provider_new(
		Enesim_Renderer *image)
{
#if HAVE_OPE
	Egueb_Video_Ope_Provider *thiz;
	Egueb_Dom_Media_Provider *ret;

	/* initialize OPE */
	if (!_init++)
		ope_initialize();


	thiz = calloc(1, sizeof(Egueb_Video_Ope_Provider));
	thiz->image = enesim_renderer_ref(image);
	thiz->player = ope_player_new();
	ope_player_event_listener_add (thiz->player,
			OPE_PLAYER_EVENT_REQUEST_RENDER_MODE,
			_egueb_video_ope_provider_request_render_mode_cb, thiz);
	ope_player_event_listener_add (thiz->player, OPE_PLAYER_EVENT_RENDER,
			_egueb_video_ope_provider_render_cb, thiz);

	ope_player_event_listener_add (thiz->player, OPE_PLAYER_EVENT_STREAM_INFO_UPDATED,
			_egueb_video_ope_provider_stream_info_updated_cb, thiz);

	ret = egueb_dom_media_provider_new(&_egueb_video_ope_provider,
			image, thiz);
	thiz->vp = ret;

	return ret;
#else
	return NULL;
#endif
}
/*----------------------------------------------------------------------------*
 *                           Paint server interface                           *
 *----------------------------------------------------------------------------*/
static Enesim_Renderer * _egueb_svg_reference_gradient_linear_renderer_get(
		Egueb_Svg_Reference_Paint_Server *p)
{
	Egueb_Svg_Reference_Gradient_Linear *thiz;

	thiz = EGUEB_SVG_REFERENCE_GRADIENT_LINEAR(p);
	return enesim_renderer_ref(thiz->r);
}
Пример #15
0
static void _eon_theme_mars_radio_content_set(void *data, Enesim_Renderer *r)
{
	Eon_Theme_Mars_Radio *thiz = data;
	Enesim_Renderer_Compound_Layer *l;

	enesim_renderer_compound_layer_clear(thiz->radio);
	/* the radio button */
	l = enesim_renderer_compound_layer_new();
	enesim_renderer_compound_layer_renderer_set(l, enesim_renderer_ref(thiz->border));
	enesim_renderer_compound_layer_rop_set(l, ENESIM_ROP_BLEND);
	enesim_renderer_compound_layer_add(thiz->radio, l);
	/* the content */
	if (r)
	{
		l = enesim_renderer_compound_layer_new();
		enesim_renderer_compound_layer_renderer_set(l, r);
		enesim_renderer_compound_layer_rop_set(l, ENESIM_ROP_BLEND);
		enesim_renderer_compound_layer_add(thiz->radio, l);
	}
}
Пример #16
0
static Eina_Bool _eon_element_entry_process(Eon_Renderable *r)
{
	Eon_Element_Entry *thiz;
	Eon_Widget *w;
	Egueb_Dom_Node *n;
	Egueb_Dom_Node *theme_element;
	Eina_Rectangle geometry;
	int enabled;

	n = (EON_ELEMENT(r))->n;
	thiz = EON_ELEMENT_ENTRY(r);

	/* get the theme */
	theme_element = eon_feature_themable_load(thiz->theme_feature);
	if (!theme_element)
	{
		goto done;
	}

	/* Set the text renderer */
	eon_theme_element_entry_text_renderer_set(theme_element,
			enesim_renderer_ref(thiz->r));
	/* Set the geometry on the child */
	eon_theme_renderable_geometry_set(theme_element, &r->geometry);
	/* Set the enabled */
	w = EON_WIDGET(r);
	egueb_dom_attr_final_get(w->enabled, &enabled);
	eon_theme_widget_enabled_set(theme_element, enabled);

	/* Finally process our theme */
	egueb_dom_element_process(theme_element);
	egueb_dom_node_unref(theme_element);

done:
	return EINA_TRUE;
}
Пример #17
0
static Enesim_Renderer * _eon_theme_mars_radio_renderer_get(void *data)
{
	Eon_Theme_Mars_Radio *thiz = data;
	return enesim_renderer_ref(thiz->proxy);
}
Пример #18
0
EAPI Enesim_Renderer * egueb_dom_media_provider_renderer_get(Egueb_Dom_Media_Provider *thiz)
{
	if (!thiz) return NULL;
	return enesim_renderer_ref(thiz->image);
}