/*============================================================================* * 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; }
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; }
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; }
/*----------------------------------------------------------------------------* * 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); }
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); }
/*----------------------------------------------------------------------------* * 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); }
/*----------------------------------------------------------------------------* * 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); }
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); }
/*----------------------------------------------------------------------------* * 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); }
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; }
/*----------------------------------------------------------------------------* * 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); }
/*----------------------------------------------------------------------------* * 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); }
/*============================================================================* * 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); }
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); } }
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; }
static Enesim_Renderer * _eon_theme_mars_radio_renderer_get(void *data) { Eon_Theme_Mars_Radio *thiz = data; return enesim_renderer_ref(thiz->proxy); }
EAPI Enesim_Renderer * egueb_dom_media_provider_renderer_get(Egueb_Dom_Media_Provider *thiz) { if (!thiz) return NULL; return enesim_renderer_ref(thiz->image); }