static void _eext_circle_surface_render(void *data);
static Evas_Object *
-_eext_circle_surface_image_widget_add(Evas_Object *parent)
+_eext_circle_surface_main_obj_add(Evas_Object *parent)
{
- Evas_Object *image_widget;
+ Evas_Object *main_obj;
- image_widget = elm_image_add(parent);
+ main_obj = elm_table_add(parent);
- if (!image_widget)
+ if (!main_obj)
{
- ERR("Failed to create elm_image_object");
+ ERR("Failed to create elm_table object.");
return NULL;
}
//for accessibility
- elm_atspi_accessible_role_set(image_widget, ELM_ATSPI_ROLE_REDUNDANT_OBJECT);
+ elm_atspi_accessible_role_set(main_obj, ELM_ATSPI_ROLE_REDUNDANT_OBJECT);
+ evas_object_repeat_events_set(main_obj, EINA_TRUE);
- //FIXME: It's for adjusting evas_image geometry.
- // Image object has weird geometry during the window calc own size.
- // We need to recalc image object after buffer memory copy in render time.
- // But now we don't have any way to call image's internal sizing eval function.
- elm_image_aspect_fixed_set(image_widget, EINA_FALSE);
- evas_object_repeat_events_set(image_widget, EINA_TRUE);
-
- return image_widget;
+ return main_obj;
}
static void
-_eext_circle_surface_cairo_draw_arc(cairo_t *cairo,
+_eext_circle_surface_vector_draw_arc(Efl_VG *vg,
int line_width,
- double center_x, double center_y, double radius,
- double r, double g, double b, double a,
+ double surface_width, double radius,
+ int r, int g, int b, int a,
double angle1, double angle2, Eina_Bool round_cap)
{
- cairo_set_line_width(cairo, line_width);
-
- if (round_cap) cairo_set_line_cap(cairo, CAIRO_LINE_CAP_ROUND);
-
- cairo_set_source_rgba(cairo, r, g, b, a);
-
- cairo_arc(cairo, center_x, center_y, radius,
- angle1 * M_PI / 180, angle2 * M_PI / 180);
- cairo_stroke(cairo);
-}
-
-static void
-_eext_circle_surface_cairo_draw_text(cairo_t *cairo,
- const char *text, const char *font, int font_size,
- cairo_font_slant_t slant, cairo_font_weight_t weight,
- double center_x, double center_y, double radius,
- double r, double g, double b, double a,
- double angle, double rotate_angle)
-{
- int x, y;
-
- x = radius * cos(angle * M_PI / 180);
- y = radius * sin(angle * M_PI / 180);
- x += center_x;
- y += center_y;
-
- cairo_set_source_rgba(cairo, r, g, b, a);
- cairo_set_font_size(cairo, font_size);
- cairo_select_font_face(cairo, font, slant, weight);
- cairo_move_to(cairo, x, y);
- cairo_rotate(cairo, rotate_angle * M_PI / 180);
- cairo_show_text(cairo, text);
- cairo_stroke(cairo);
-}
-
-static void
-_eext_circle_surface_clear(Eext_Circle_Surface *surface)
-{
- Evas_Object *image_object;
- unsigned char *buffer;
-
- if (!surface || !surface->image_widget) return;
-
- image_object = elm_image_object_get(surface->image_widget);
+ evas_vg_shape_reset(vg);
- buffer = (unsigned char *)evas_object_image_data_get(image_object, 1);
- memset(buffer, 0, surface->w * surface->h * 4);
- cairo_set_source_rgba(surface->cairo, 0, 0, 0, 0);
- cairo_rectangle(surface->cairo, 0.0, 0.0, surface->w, surface->h);
- cairo_fill(surface->cairo);
-}
-
-static void
-_eext_circle_bg_surface_memcpy(Eext_Circle_Surface *surface, Eext_Circle_Object *obj)
-{
- Evas_Object *image_object, *bg_image, *bg_image_object;
- unsigned char *buffer, *bg_buffer;
+ evas_vg_shape_stroke_width_set(vg, line_width);
- if (!surface || !surface->image_widget) return;
+ r = (r * a) / 255;
+ g = (g * a) / 255;
+ b = (b * a) / 255;
+ evas_vg_shape_stroke_color_set(vg, r, g, b, a);
- image_object = elm_image_object_get(surface->image_widget);
- buffer = (unsigned char *)evas_object_image_data_get(image_object, 1);
+ int x, y, w, h;
+ w = radius * 2;
+ h = w;
+ x = (surface_width - w) / 2;
+ y = x;
- bg_image = eina_list_nth(obj->bg_image_objs, obj->bg_image_index);
- bg_image_object = elm_image_object_get(bg_image);
- evas_object_image_size_set(bg_image_object, surface->w, surface->h);
- evas_object_image_fill_set(bg_image_object, 0, 0, surface->w, surface->h);
- bg_buffer = (unsigned char *)evas_object_image_data_get(bg_image_object, 0);
+ evas_vg_shape_append_arc(vg, x, y, w, h, (angle1 * -1) + 90, (angle2 - angle1) * -1);
- memcpy(buffer, bg_buffer, surface->w * surface->h * 4);
+ if (round_cap)
+ evas_vg_shape_stroke_cap_set(vg, EFL_GFX_CAP_ROUND);
+ else
+ evas_vg_shape_stroke_cap_set(vg, EFL_GFX_CAP_BUTT);
}
static void
Eext_Circle_Surface *surface = (Eext_Circle_Surface *)data;
Eext_Circle_Object *render_obj;
Eina_List *l, *ll;
- Eina_Bool skip_surface_clear = EINA_FALSE;
+ const char *last_bg_file_path = NULL;
if (!surface)
{
EINA_LIST_FOREACH(surface->render_objs, l, render_obj)
{
- if (!render_obj->visible)
- continue;
+ Eext_Circle_Object_Item *item;
- if (render_obj->bg_image_objs)
+ if ((!render_obj->visible) ||
+ (render_obj->visible_on_activate && !(render_obj->is_active)))
{
- _eext_circle_bg_surface_memcpy(surface, render_obj);
- skip_surface_clear = EINA_TRUE;
- break;
+ efl_parent_set(render_obj->vg_container, NULL);
+ continue;
+ }
+ else
+ {
+ efl_parent_set(render_obj->vg_container, surface->vg_root);
}
- }
-
- if (!skip_surface_clear)
- _eext_circle_surface_clear(surface);
-
- EINA_LIST_FOREACH(surface->render_objs, l, render_obj)
- {
- Eext_Circle_Object_Item *item;
- if (!render_obj->visible)
- continue;
- if (render_obj->visible_on_activate && !(render_obj->is_active))
- continue;
+ /* Find the last object's bg file path.
+ * Currently, only one bg image can be drawn. */
+ if (_eext_circle_object_bg_file_path_get(render_obj))
+ {
+ if ((!last_bg_file_path) ||
+ (last_bg_file_path != _eext_circle_object_bg_file_path_get(render_obj)))
+ {
+ last_bg_file_path = _eext_circle_object_bg_file_path_get(render_obj);
+ }
+ }
EINA_LIST_FOREACH(render_obj->items, ll, item)
{
double angle1, angle2;
Eina_Bool is_mirrored = EINA_FALSE;
- cairo_save(surface->cairo);
-
if (render_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_CONFIG)
is_mirrored = elm_config_mirrored_get();
else if (render_obj->mirrored_state == EEXT_CIRCLE_MIRRORED_ON)
if (is_mirrored)
{
- angle1 = (item->draw.angle_offset + item->draw.angle + 90.0) * -1;
- angle2 = (item->draw.angle_offset + item->min_angle + 90.0) * -1;
+ angle1 = (item->draw.angle_offset + item->min_angle) * -1;
+ angle2 = (item->draw.angle_offset + item->draw.angle) * -1;
}
else
{
- angle1 = item->draw.angle_offset + item->min_angle - 90.0;
- angle2 = item->draw.angle_offset + item->draw.angle - 90.0;
+ angle1 = item->draw.angle_offset + item->draw.angle;
+ angle2 = item->draw.angle_offset + item->min_angle;
}
- _eext_circle_surface_cairo_draw_arc(surface->cairo, item->line_width,
- surface->center_x, surface->center_y, item->radius,
- (double)item->draw.color.r / 255,
- (double)item->draw.color.g / 255,
- (double)item->draw.color.b / 255,
- (double)item->draw.color.a / 255,
+ _eext_circle_surface_vector_draw_arc(item->vg, item->line_width,
+ surface->w, item->radius,
+ item->draw.color.r,
+ item->draw.color.g,
+ item->draw.color.b,
+ item->draw.color.a,
angle1,
angle2,
item->round_cap);
- cairo_restore(surface->cairo);
}
}
- else if (item->font_size)
- {
- // Draw Text
- cairo_save(surface->cairo);
- _eext_circle_surface_cairo_draw_text(surface->cairo,
- item->text, item->selected_font, item->font_size,
- CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL,
- surface->center_x, surface->center_y, item->radius,
- (double)item->draw.color.r / 255,
- (double)item->draw.color.g / 255,
- (double)item->draw.color.b / 255,
- (double)item->draw.color.a / 255,
- item->draw.angle_offset + item->draw.angle - 90.0,
- item->draw.angle_offset + item->draw.angle);
- cairo_restore(surface->cairo);
- }
}
}
- evas_object_image_data_update_add(elm_image_object_get(surface->image_widget),
- 0, 0, surface->w, surface->h);
+ if (surface->bg_file_path != last_bg_file_path)
+ {
+ if (surface->bg_file_path)
+ {
+ eina_stringshare_del(surface->bg_file_path);
+ surface->bg_file_path = NULL;
+ }
+
+ if (last_bg_file_path)
+ {
+ surface->bg_file_path = eina_stringshare_add(last_bg_file_path);
+ elm_image_file_set(surface->bg_obj, surface->bg_file_path, NULL);
+ evas_object_color_set(surface->bg_obj, 255, 255, 255, 255);
+ }
+ else
+ {
+ evas_object_color_set(surface->bg_obj, 0, 0, 0, 0);
+ }
+ }
}
static void
}
static void
-_eext_circle_surface_cairo_finish(Eext_Circle_Surface *surface)
+_eext_circle_surface_vector_finish(Eext_Circle_Surface *surface)
{
- if (surface->cairo) cairo_destroy(surface->cairo);
- if (surface->cairo_surface) cairo_surface_destroy(surface->cairo_surface);
+ if (surface->vg_obj) evas_object_del(surface->vg_obj);
- surface->cairo = NULL;
- surface->cairo_surface = NULL;
+ surface->vg_obj = NULL;
+ surface->vg_root = NULL;
}
static void
-_eext_circle_surface_cairo_init(Eext_Circle_Surface *surface)
+_eext_circle_surface_vector_init(Eext_Circle_Surface *surface)
{
- Evas_Object *image_object;
- cairo_surface_t *cairo_surface;
- cairo_t *cairo;
- unsigned char *buffer;
- int stride;
+ Efl_VG *root;
- if (surface->cairo_surface || surface->cairo)
- _eext_circle_surface_cairo_finish(surface);
+ /* Do nothing if vector is ready. */
+ if (surface->vg_obj && surface->vg_root)
+ return;
- if (surface->image_widget == NULL)
+ if (surface->main_obj == NULL)
{
ERR("Fail to get buffer from image object!");
return;
}
- image_object = elm_image_object_get(surface->image_widget);
-
- buffer = (unsigned char *)evas_object_image_data_get(image_object, 1);
- stride = evas_object_image_stride_get(image_object);
- cairo_surface = cairo_image_surface_create_for_data(buffer, CAIRO_FORMAT_ARGB32,
- surface->w, surface->h, stride);
- cairo = cairo_create(cairo_surface);
- cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST);
+ surface->vg_obj = evas_object_vg_add(evas_object_evas_get(surface->main_obj));
+ root = evas_vg_container_add(NULL);
+ evas_object_vg_root_node_set(surface->vg_obj, root);
+ surface->vg_root = root;
+ evas_object_repeat_events_set(surface->vg_obj, EINA_TRUE);
+ evas_object_smart_member_add(surface->vg_obj, surface->main_obj);
+ evas_object_show(surface->vg_obj);
- surface->cairo_surface = cairo_surface;
- surface->cairo = cairo;
+ evas_object_size_hint_weight_set(surface->vg_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(surface->vg_obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(surface->main_obj, surface->vg_obj, 0, 0, 1, 1);
}
static void
_eext_circle_surface_update(Eext_Circle_Surface *surface)
{
- Evas_Object *image_object;
-
if (!surface) return;
- if (!evas_object_visible_get(surface->image_widget)) return;
+ if (!evas_object_visible_get(surface->main_obj)) return;
- image_object = elm_image_object_get(surface->image_widget);
- evas_object_geometry_get(surface->image_widget, NULL, NULL, &surface->w, &surface->h);
+ evas_object_geometry_get(surface->main_obj, NULL, NULL, &surface->w, &surface->h);
surface->center_x = surface->w / 2;
surface->center_y = surface->h / 2;
- evas_object_image_size_set(image_object, surface->w, surface->h);
- evas_object_image_fill_set(image_object, 0, 0, surface->w, surface->h);
-
if ((surface->w != 0) && (surface->h != 0))
{
INF("Surface will be initialized!");
- _eext_circle_surface_cairo_init(surface);
+ _eext_circle_surface_vector_init(surface);
_eext_circle_surface_changed(surface);
}
else
{
- if (surface->cairo_surface || surface->cairo)
- {
- _eext_circle_surface_cairo_finish(surface);
- _eext_circle_surface_render_finish(surface);
- }
+ _eext_circle_surface_render_finish(surface);
}
}
{
Eext_Circle_Surface *surface = (Eext_Circle_Surface *)data;
- _eext_circle_surface_cairo_finish(surface);
+ _eext_circle_surface_vector_finish(surface);
_eext_circle_surface_render_finish(surface);
}
{
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
- evas_object_show(circle_obj->image_widget);
+ evas_object_show(circle_obj->main_obj);
circle_obj->is_active = EINA_TRUE;
// Previous view's circle object should not be disappeared while naviframe effect.
if (deact_obj && (deact_obj->surface->parent != circle_obj->surface->parent))
{
- evas_object_show(deact_obj->image_widget);
+ evas_object_show(deact_obj->main_obj);
}
}
else if (circle_obj->surface->type == EEXT_CIRCLE_SURFACE_TYPE_NAVIFRAME)
{
if (circle_obj->surface->deactivated_obj)
- evas_object_show(circle_obj->surface->deactivated_obj->image_widget);
+ evas_object_show(circle_obj->surface->deactivated_obj->main_obj);
}
}
}
{
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
- evas_object_hide(circle_obj->image_widget);
+ evas_object_hide(circle_obj->main_obj);
circle_obj->is_active = EINA_FALSE;
// Previous view's circle object should not be disappeared while naviframe effect.
return;
if (deactivated_obj)
- evas_object_event_callback_del_full(deactivated_obj->image_widget, EVAS_CALLBACK_DEL, _deactivated_obj_del_cb, deactivated_obj);
+ evas_object_event_callback_del_full(deactivated_obj->main_obj, EVAS_CALLBACK_DEL, _deactivated_obj_del_cb, deactivated_obj);
circle_obj->surface->parent_surface->deactivated_obj = circle_obj;
- evas_object_event_callback_add(circle_obj->image_widget, EVAS_CALLBACK_DEL, _deactivated_obj_del_cb, circle_obj);
+ evas_object_event_callback_add(circle_obj->main_obj, EVAS_CALLBACK_DEL, _deactivated_obj_del_cb, circle_obj);
}
}
{
surface = _eext_circle_surface_add(layout, EEXT_CIRCLE_SURFACE_TYPE_DEFAULT);
- if (!surface->image_widget)
+ if (!surface->main_obj)
{
ERR("Surface doesn't have image widget for drawing. It returns NULL.");
return NULL;
}
- INF("Put the surface[%p]'s widget[%p] to layout widget[%p]", surface, surface->image_widget, layout);
- elm_object_part_content_set(layout, "elm.swallow.circle", surface->image_widget);
+ INF("Put the surface[%p]'s widget[%p] to layout widget[%p]", surface, surface->main_obj, layout);
+ elm_object_part_content_set(layout, "elm.swallow.circle", surface->main_obj);
return surface;
}
EINA_LIST_FOREACH_SAFE(surface->render_objs, l, l_next, circle_obj)
{
Evas_Object *parent;
- parent = elm_object_parent_widget_get(circle_obj->image_widget);
+ parent = elm_object_parent_widget_get(circle_obj->main_obj);
while (parent)
{
evas_object_event_callback_del(surface->parent, EVAS_CALLBACK_DEL, _eext_circle_surface_parent_del_cb);
}
- _eext_circle_surface_cairo_finish(surface);
+ _eext_circle_surface_vector_finish(surface);
_eext_circle_surface_render_finish(surface);
- if (surface->image_widget)
+ if (surface->main_obj)
{
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb);
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb);
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_HIDE, _eext_circle_surface_hide_cb);
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_SHOW, _eext_circle_surface_show_cb);
- surface->image_widget = NULL;
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb);
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb);
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_HIDE, _eext_circle_surface_hide_cb);
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_SHOW, _eext_circle_surface_show_cb);
+ surface->main_obj = NULL;
surface->w = surface->h = 0;
}
{
Eext_Circle_Surface *private_surface;
INF("Private Surface will be initialized for widget[%p], circle_obj[%p]!",
- obj->image_widget, obj);
+ obj->main_obj, obj);
surface->render_objs = eina_list_remove_list(surface->render_objs, l);
private_surface =
- _eext_circle_surface_init(obj->image_widget, NULL, EEXT_CIRCLE_SURFACE_TYPE_PRIVATE);
+ _eext_circle_surface_init(obj->main_obj, NULL, EEXT_CIRCLE_SURFACE_TYPE_PRIVATE);
_eext_circle_surface_object_append(private_surface, obj);
- evas_object_smart_callback_del(obj->image_widget, "rotary,activated",
+ evas_object_smart_callback_del(obj->main_obj, "rotary,activated",
_eext_circle_surface_object_rotary_activated_cb);
if (obj->widget_object)
{
}
}
+ if (surface->bg_file_path)
+ {
+ eina_stringshare_del(surface->bg_file_path);
+ surface->bg_file_path = NULL;
+ }
+
free(surface);
}
+static void
+_eext_circle_surface_common_init(Eext_Circle_Surface *surface)
+{
+ if (!surface || !surface->main_obj) return;
+
+ evas_object_event_callback_add(surface->main_obj, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb, surface);
+ evas_object_event_callback_add(surface->main_obj, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb, surface);
+ evas_object_event_callback_add(surface->main_obj, EVAS_CALLBACK_HIDE, _eext_circle_surface_hide_cb, surface);
+ evas_object_event_callback_add(surface->main_obj, EVAS_CALLBACK_SHOW, _eext_circle_surface_show_cb, surface);
+
+ surface->bg_obj = elm_image_add(surface->main_obj);
+ evas_object_size_hint_weight_set(surface->bg_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(surface->bg_obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(surface->main_obj, surface->bg_obj, 0, 0, 1, 1);
+ evas_object_color_set(surface->bg_obj, 0, 0, 0, 0);
+ evas_object_show(surface->bg_obj);
+}
+
//////////////////////////
// Internal API //////////
//////////////////////////
Eext_Circle_Surface *
-_eext_circle_surface_init(Evas_Object *image_widget, Evas_Object *parent, Eext_Circle_Surface_Type type)
+_eext_circle_surface_init(Evas_Object *main_obj, Evas_Object *parent, Eext_Circle_Surface_Type type)
{
Eext_Circle_Surface *surface;
surface->type = type;
surface->parent = parent;
+ surface->main_obj = main_obj;
+
+ _eext_circle_surface_common_init(surface);
if (type == EEXT_CIRCLE_SURFACE_TYPE_NAVIFRAME)
{
evas_object_smart_callback_add(surface->parent, "item,pushed,internal", _naviframe_item_push_cb, surface);
evas_object_event_callback_add(surface->parent, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb, surface);
}
- else if (type == EEXT_CIRCLE_SURFACE_TYPE_PRIVATE)
+ else if (type != EEXT_CIRCLE_SURFACE_TYPE_PRIVATE)
{
- surface->image_widget = image_widget;
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_HIDE, _eext_circle_surface_hide_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_SHOW, _eext_circle_surface_show_cb, surface);
- evas_object_image_alpha_set(elm_image_object_get(surface->image_widget), EINA_TRUE);
- }
- else
- {
- surface->image_widget = image_widget;
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_HIDE, _eext_circle_surface_hide_cb, surface);
- evas_object_event_callback_add(surface->image_widget, EVAS_CALLBACK_SHOW, _eext_circle_surface_show_cb, surface);
evas_object_event_callback_add(surface->parent, EVAS_CALLBACK_DEL, _eext_circle_surface_parent_del_cb, surface);
- evas_object_image_alpha_set(elm_image_object_get(surface->image_widget), EINA_TRUE);
}
return surface;
void
_eext_circle_surface_object_remove(Eext_Circle_Surface *surface, Eext_Circle_Object *obj)
{
+ Eina_List *l;
+ Eext_Circle_Object_Item *item;
+
if (!surface) return;
if (!obj) return;
+ EINA_LIST_FOREACH(obj->items, l, item)
+ {
+ if (item->vg)
+ evas_vg_shape_reset(item->vg);
+ }
+
+ efl_parent_set(obj->vg_container, NULL);
surface->render_objs = eina_list_remove(surface->render_objs, obj);
obj->surface = NULL;
_eext_circle_surface_changed(surface);
if (surface->type != EEXT_CIRCLE_SURFACE_TYPE_PRIVATE)
{
- evas_object_smart_callback_del(obj->image_widget, "rotary,activated",
+ evas_object_smart_callback_del(obj->main_obj, "rotary,activated",
_eext_circle_surface_object_rotary_activated_cb);
- evas_object_smart_callback_del(obj->image_widget, "rotary,deactivated",
+ evas_object_smart_callback_del(obj->main_obj, "rotary,deactivated",
_eext_circle_surface_object_rotary_deactivated_cb);
if (obj->widget_object)
EINA_LIST_FOREACH_SAFE(surface->sub_surfaces, l, l_next, cur_surface)
{
Evas_Object *parent;
- parent = elm_object_parent_widget_get(obj->image_widget);
+ parent = elm_object_parent_widget_get(obj->main_obj);
while (parent)
{
}
}
+ efl_parent_set(obj->vg_container, surface->vg_root);
surface->render_objs = eina_list_append(surface->render_objs, obj);
_eext_circle_surface_changed(surface);
obj->surface = surface;
if (obj->surface->type != EEXT_CIRCLE_SURFACE_TYPE_PRIVATE)
{
- evas_object_smart_callback_add(obj->image_widget, "rotary,activated",
+ evas_object_smart_callback_add(obj->main_obj, "rotary,activated",
_eext_circle_surface_object_rotary_activated_cb, obj);
- evas_object_smart_callback_add(obj->image_widget, "rotary,deactivated",
+ evas_object_smart_callback_add(obj->main_obj, "rotary,deactivated",
_eext_circle_surface_object_rotary_deactivated_cb, obj);
if (obj->widget_object)
if (!surface) return;
if (!obj) return;
- if (!evas_object_visible_get(obj->image_widget) &&
+ if (!evas_object_visible_get(obj->main_obj) &&
(obj->widget_object && evas_object_visible_get(obj->widget_object)))
- evas_object_show(obj->image_widget);
+ evas_object_show(obj->main_obj);
EINA_LIST_FOREACH(surface->render_objs, l, render_obj)
{
if (render_obj != obj)
- evas_object_hide(render_obj->image_widget);
+ evas_object_hide(render_obj->main_obj);
}
}
{
if (!surface) return;
- if (!surface->render_job && surface->image_widget &&
- evas_object_visible_get(surface->image_widget) &&
+ if (!surface->render_job && surface->main_obj &&
+ evas_object_visible_get(surface->main_obj) &&
(surface->w != 0) && (surface->h != 0))
surface->render_job = ecore_job_add(_eext_circle_surface_render, surface);
}
_eext_circle_surface_add(Evas_Object *parent, Eext_Circle_Surface_Type type)
{
Eext_Circle_Surface *surface;
- Evas_Object *image_widget = NULL;
+ Evas_Object *main_obj = NULL;
if (!parent) return NULL;
if (type != EEXT_CIRCLE_SURFACE_TYPE_NAVIFRAME)
- image_widget = _eext_circle_surface_image_widget_add(parent);
+ main_obj = _eext_circle_surface_main_obj_add(parent);
- surface = _eext_circle_surface_init(image_widget, parent, type);
+ surface = _eext_circle_surface_init(main_obj, parent, type);
return surface;
}
surface = _eext_circle_surface_add(conform, EEXT_CIRCLE_SURFACE_TYPE_DEFAULT);
- if (!surface->image_widget)
+ if (!surface->main_obj)
{
ERR("Surface doesn't have image widget for drawing. It returns NULL.");
return NULL;
}
- INF("Put the surface[%p]'s widget[%p] to elm_conformant widget[%p]", surface, surface->image_widget, conform);
- elm_object_part_content_set(conform, "elm.swallow.circle", surface->image_widget);
+ INF("Put the surface[%p]'s widget[%p] to elm_conformant widget[%p]", surface, surface->main_obj, conform);
+ elm_object_part_content_set(conform, "elm.swallow.circle", surface->main_obj);
return surface;
}
surface = _eext_circle_surface_add(layout, EEXT_CIRCLE_SURFACE_TYPE_DEFAULT);
- if (!surface->image_widget)
+ if (!surface->main_obj)
{
ERR("Surface doesn't have image widget for drawing. It returns NULL.");
return NULL;
}
- INF("Put the surface[%p]'s widget[%p] to layout widget[%p]", surface, surface->image_widget, layout);
- elm_object_part_content_set(layout, "elm.swallow.circle", surface->image_widget);
+ INF("Put the surface[%p]'s widget[%p] to layout widget[%p]", surface, surface->main_obj, layout);
+ elm_object_part_content_set(layout, "elm.swallow.circle", surface->main_obj);
return surface;
}
return;
}
- if (surface->image_widget)
+ if (surface->main_obj)
{
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb);
- evas_object_event_callback_del(surface->image_widget, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb);
- evas_object_del(surface->image_widget);
- surface->image_widget = NULL;
+ _eext_circle_surface_vector_finish(surface);
+ _eext_circle_surface_render_finish(surface);
+
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_RESIZE, _eext_circle_surface_resize_cb);
+ evas_object_event_callback_del(surface->main_obj, EVAS_CALLBACK_DEL, _eext_circle_surface_del_cb);
+ evas_object_del(surface->main_obj);
+ surface->main_obj = NULL;
}
INF("Surface[%p] is going to free in eext_circle_surface_del API.", surface);