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); }
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); }
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; }
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); }
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); }
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); }
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); }
/*============================================================================* * 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; }
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); }
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); }
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); } }
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); }
/*----------------------------------------------------------------------------* * 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; }
/*----------------------------------------------------------------------------* * 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); }
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); }
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); }
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); }
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; }