static void _e_blur_rectangle_view_image_new(E_Blur_Rectangle *blur_rectangle, E_Client *ec, const char *name);
static void _e_blur_rectangle_view_image_free(E_Blur_Rectangle *blur_rectangle);
+static void _e_blur_rectangle_dim_rect_new(E_Blur_Rectangle *blur_rectangle, E_Client *ec, const char *name);
+static void _e_blur_rectangle_dim_rect_free(E_Blur_Rectangle *blur_rectangle);
static void
_e_blur_hooks_clean(void)
_e_blur_enabled_set(blur, EINA_FALSE);
}
+static void
+_e_blur_rectangle_show(E_Blur_Rectangle *blur_rectangle)
+{
+ e_view_show(e_view_image_view_get(blur_rectangle->view_image));
+
+ if (blur_rectangle->dim_rect)
+ e_view_show(e_view_rect_view_get(blur_rectangle->dim_rect));
+
+ if (blur_rectangle->corner_radius_view_image)
+ e_view_show(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
+}
+
+static void
+_e_blur_rectangle_hide(E_Blur_Rectangle *blur_rectangle)
+{
+ e_view_hide(e_view_image_view_get(blur_rectangle->view_image));
+
+ if (blur_rectangle->dim_rect)
+ e_view_hide(e_view_rect_view_get(blur_rectangle->dim_rect));
+
+ if (blur_rectangle->corner_radius_view_image)
+ e_view_hide(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
+}
+
static void
_e_blur_rectangle_free(E_Blur_Rectangle *blur_rectangle)
{
if (blur_rectangle->blur) _e_blur_rectangle_remove(blur_rectangle->blur, blur_rectangle);
_e_blur_rectangle_view_image_free(blur_rectangle);
- e_view_destroy(e_view_rect_view_get(blur_rectangle->dim_rect));
+ _e_blur_rectangle_dim_rect_free(blur_rectangle);
if (blur_rectangle->corner_radius_view_image)
e_view_destroy(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
e_view_image_geometry_set(blur_rectangle->view_image,
final_x, final_y, final_w, final_h);
- e_view_position_set(e_view_rect_view_get(blur_rectangle->dim_rect),
- final_x, final_y);
- e_view_rect_size_set(blur_rectangle->dim_rect,
- final_w, final_h);
+
+ if (blur_rectangle->dim_rect)
+ {
+ e_view_position_set(e_view_rect_view_get(blur_rectangle->dim_rect),
+ final_x, final_y);
+ e_view_rect_size_set(blur_rectangle->dim_rect,
+ final_w, final_h);
+ }
if (blur_rectangle->corner_radius_view_image)
e_view_image_geometry_set(blur_rectangle->corner_radius_view_image,
if (!vc) continue;
if (!e_view_client_visible_get(vc)) continue;
- e_view_show(e_view_image_view_get(blur_rectangle->view_image));
- e_view_show(e_view_rect_view_get(blur_rectangle->dim_rect));
- if (blur_rectangle->corner_radius_view_image)
- e_view_show(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
+ _e_blur_rectangle_show(blur_rectangle);
}
_e_blur_enabled_set(blur, EINA_TRUE);
else
{
EINA_LIST_FOREACH(blur->blur_rectangles, l, blur_rectangle)
- {
- e_view_hide(e_view_image_view_get(blur_rectangle->view_image));
- e_view_hide(e_view_rect_view_get(blur_rectangle->dim_rect));
- if (blur_rectangle->corner_radius_view_image)
- e_view_hide(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
- }
+ _e_blur_rectangle_hide(blur_rectangle);
_e_blur_enabled_set(blur, EINA_FALSE);
}
if (!_e_blur_enabled_get(blur)) return;
EINA_LIST_FOREACH(blur->blur_rectangles, l, blur_rectangle)
- {
- e_view_show(e_view_image_view_get(blur_rectangle->view_image));
- e_view_show(e_view_rect_view_get(blur_rectangle->dim_rect));
- if (blur_rectangle->corner_radius_view_image)
- e_view_show(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
- }
+ _e_blur_rectangle_show(blur_rectangle);
}
static void
blur = wl_container_of(listener, blur, listener.hide);
EINA_LIST_FOREACH(blur->blur_rectangles, l, blur_rectangle)
- {
- e_view_hide(e_view_image_view_get(blur_rectangle->view_image));
- e_view_hide(e_view_rect_view_get(blur_rectangle->dim_rect));
- if (blur_rectangle->corner_radius_view_image)
- e_view_hide(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
- }
+ _e_blur_rectangle_hide(blur_rectangle);
}
static void
E_View *img_view = e_view_image_view_get(blur_rectangle->view_image);
e_view_reparent(img_view, layer_tree);
e_view_place_below(img_view, event_src_view);
- E_View *dim_view = e_view_rect_view_get(blur_rectangle->dim_rect);
- e_view_reparent(dim_view, view_tree);
- e_view_place_below(dim_view, img_view);
+
+ if (blur_rectangle->dim_rect)
+ {
+ E_View *dim_view = e_view_rect_view_get(blur_rectangle->dim_rect);
+ e_view_reparent(dim_view, layer_tree);
+ e_view_place_below(dim_view, img_view);
+ }
+
if (blur_rectangle->corner_radius_view_image)
{
E_View *corner_img_view = e_view_image_view_get(blur_rectangle->corner_radius_view_image);
{
if (blur_rectangle && blur_rectangle->view_image)
e_view_destroy(e_view_image_view_get(blur_rectangle->view_image));
+
+ blur_rectangle->view_image = NULL;
+}
+
+static void
+_e_blur_rectangle_dim_rect_new(E_Blur_Rectangle *blur_rectangle, E_Client *ec, const char *name)
+{
+ E_View_Client *blur_view_client;
+ E_View_Tree *blur_view_client_tree;
+ E_View_Rect *dim_rect = NULL;
+ E_View *dim_view = NULL;
+ int dim_color[4] = {15, 15, 15, 153};
+
+ blur_view_client = e_client_view_get(ec);
+ EINA_SAFETY_ON_NULL_RETURN(blur_view_client);
+ blur_view_client_tree = e_view_parent_get(e_view_client_view_get(blur_view_client));
+ EINA_SAFETY_ON_NULL_RETURN(blur_view_client_tree);
+
+ dim_rect = e_view_rect_create(blur_view_client_tree, 1, 1, dim_color);
+ EINA_SAFETY_ON_NULL_RETURN(dim_rect);
+
+ dim_view = e_view_rect_view_get(dim_rect);
+ e_view_name_set(dim_view, name);
+ e_view_pass_events_set(dim_view, true);
+
+ blur_rectangle->dim_rect = dim_rect;
+}
+
+static void
+_e_blur_rectangle_dim_rect_free(E_Blur_Rectangle *blur_rectangle)
+{
+ if (blur_rectangle && blur_rectangle->dim_rect)
+ e_view_destroy(e_view_rect_view_get(blur_rectangle->dim_rect));
+
+ blur_rectangle->dim_rect = NULL;
}
static void
E_Blur_Rectangle *blur_rectangle;
struct ds_tizen_blur_rectangle *tizen_blur_rectangle = data;
E_View_Image *corner_radius_view_image = NULL;
- E_View_Rect *dim_rect = NULL;
- int dim_color[4] = {15, 15, 15, 153};
E_View *dim_view = NULL, *img_view = NULL, *corner_img_view = NULL;
E_View_Client *blur_view_client;
E_View_Tree *blur_view_client_tree;
blur_view_client_tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), e_view_layer_index_get(e_view_client_view_get(blur_view_client)));
EINA_SAFETY_ON_NULL_RETURN(blur_view_client_tree);
- dim_rect = e_view_rect_create(blur_view_client_tree, 1, 1, dim_color);
- EINA_SAFETY_ON_NULL_RETURN(dim_rect);
-
- dim_view = e_view_rect_view_get(dim_rect);
-
blur_rectangle = E_NEW(E_Blur_Rectangle, 1);
EINA_SAFETY_ON_NULL_GOTO(blur_rectangle, fail);
EINA_SAFETY_ON_NULL_GOTO(blur_rectangle->view_image, fail);
img_view = e_view_image_view_get(blur_rectangle->view_image);
+ _e_blur_rectangle_dim_rect_new(blur_rectangle, blur->ec, "blur_dim_obj");
+ EINA_SAFETY_ON_NULL_GOTO(blur_rectangle->dim_rect, fail);
+ dim_view = e_view_rect_view_get(blur_rectangle->dim_rect);
+
if ((blur_rectangle->rx != 0) && (blur_rectangle->ry != 0))
{
corner_radius_view_image = e_view_image_filled_create(blur_view_client_tree);
blur_rectangle->corner_radius_view_image = corner_radius_view_image;
}
+
blur_rectangle->blur = blur;
- blur_rectangle->dim_rect = dim_rect;
_e_blur_rectangle_add(blur, blur_rectangle);
_e_blur_rectangle_filter_set(blur_rectangle);
_e_blur_rectangle_geometry_set(blur_rectangle, blur->ec);
- e_view_pass_events_set(dim_view, true);
// place E_Views into right layers
e_view_place_below(img_view, e_view_client_view_get(blur_view_client));
// show new E_Views
if (e_view_client_visible_get(blur_view_client) && _e_blur_enabled_get(blur))
- {
- e_view_show(img_view);
- e_view_show(dim_view);
- if (corner_img_view)
- e_view_show(corner_img_view);
- }
-
+ _e_blur_rectangle_show(blur_rectangle);
ELOGF("E_BLUR", "E_Blur_Rectangle:%p Create (%dx%d+%d+%d) rx:%d ry:%d", blur->ec, blur_rectangle,
blur_rectangle->w, blur_rectangle->h, blur_rectangle->x, blur_rectangle->y,
fail:
if (dim_view) e_view_destroy(dim_view);
- if (blur_rectangle && blur_rectangle->view_image) _e_blur_rectangle_view_image_free(blur_rectangle);
+ if (img_view) _e_blur_rectangle_view_image_free(blur_rectangle);
if (corner_img_view) e_view_destroy(corner_img_view);
if (blur_rectangle) free(blur_rectangle);
}
{
_e_blur_behind_filter_set(blur_behind);
if (!e_view_client_visible_get(e_client_view_get(blur_behind->ec))) return;
- e_view_show(e_view_image_view_get(blur_behind->blur_rectangle->view_image));
- e_view_show(e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect));
+ _e_blur_rectangle_show(blur_behind->blur_rectangle);
_e_blur_behind_enabled_set(blur_behind, EINA_TRUE);
}
else
{
- e_view_hide(e_view_image_view_get(blur_behind->blur_rectangle->view_image));
- e_view_hide(e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect));
+ _e_blur_rectangle_hide(blur_behind->blur_rectangle);
_e_blur_behind_enabled_set(blur_behind, EINA_FALSE);
}
blur_behind = wl_container_of(listener, blur_behind, listener.show);
if (!blur_behind->radius) return;
- e_view_show(e_view_image_view_get(blur_behind->blur_rectangle->view_image));
- e_view_show(e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect));
+ _e_blur_rectangle_show(blur_behind->blur_rectangle);
_e_blur_behind_enabled_set(blur_behind, EINA_TRUE);
}
blur_behind = wl_container_of(listener, blur_behind, listener.hide);
- e_view_hide(e_view_image_view_get(blur_behind->blur_rectangle->view_image));
- e_view_hide(e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect));
+ _e_blur_rectangle_hide(blur_behind->blur_rectangle);
_e_blur_behind_enabled_set(blur_behind, EINA_FALSE);
}
E_View *event_src_view = ((E_View_Event_Callback_Data *)data)->view;
E_Blur_Behind *blur_behind;
E_View_Tree *layer_tree;
- E_View *img_view, *dim_view;
+ E_View *img_view, *dim_view = NULL;
blur_behind = wl_container_of(listener, blur_behind, listener.restack);
if (!layer_tree) return;
img_view = e_view_image_view_get(blur_behind->blur_rectangle->view_image);
- dim_view = e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect);
e_view_reparent(img_view, layer_tree);
- e_view_reparent(dim_view, layer_tree);
e_view_place_below(img_view, _e_blur_behind_bottom_view_get(event_src_view));
- e_view_place_below(dim_view, img_view);
+
+ if (blur_behind->blur_rectangle->dim_rect)
+ {
+ dim_view = e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect);
+ e_view_reparent(dim_view, layer_tree);
+ e_view_place_below(dim_view, img_view);
+ }
}
static void
E_Client *ec;
E_View_Client *view_client;
E_View_Tree *view_client_tree;
- E_View_Rect *dim_rect;
- int dim_color[4] = {15, 15, 15, 153};
E_View *image_view, *dim_view;
E_Blur_Hook_Data hook_data;
int comp_w = 0, comp_h = 0;
view_client_tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), e_view_layer_index_get(e_view_client_view_get(view_client)));
EINA_SAFETY_ON_NULL_RETURN(view_client_tree);
- dim_rect = e_view_rect_create(view_client_tree, 1, 1, dim_color);
- EINA_SAFETY_ON_NULL_RETURN(dim_rect);
-
- dim_view = e_view_rect_view_get(dim_rect);
-
blur_behind = E_NEW(E_Blur_Behind, 1);
EINA_SAFETY_ON_NULL_RETURN(blur_behind);
blur_behind->blur_rectangle = E_NEW(E_Blur_Rectangle, 1);
_e_blur_rectangle_view_image_new(blur_behind->blur_rectangle, ec, "blur_behind_obj");
EINA_SAFETY_ON_NULL_GOTO(blur_behind->blur_rectangle->view_image, fail);
image_view = e_view_image_view_get(blur_behind->blur_rectangle->view_image);
- e_view_pass_events_set(dim_view, true);
+
+ _e_blur_rectangle_dim_rect_new(blur_behind->blur_rectangle, ec, "blur_behind_dim_obj");
+ EINA_SAFETY_ON_NULL_GOTO(blur_behind->blur_rectangle->dim_rect, fail);
+ dim_view = e_view_rect_view_get(blur_behind->blur_rectangle->dim_rect);
+
e_comp_size_get(&comp_w, &comp_h);
// resize & place E_View_Objects
e_view_image_geometry_set(blur_behind->blur_rectangle->view_image, 0, 0, comp_w, comp_h);
e_view_position_set(dim_view, 0, 0);
- e_view_rect_size_set(dim_rect, comp_w, comp_h);
+ e_view_rect_size_set(blur_behind->blur_rectangle->dim_rect, comp_w, comp_h);
e_view_place_below(image_view, _e_blur_behind_bottom_view_get(e_view_client_view_get(view_client)));
e_view_place_below(dim_view, image_view);
- blur_behind->blur_rectangle->dim_rect = dim_rect;
blur_manager->blurs_behind = eina_list_append(blur_manager->blurs_behind, blur_behind);
ELOGF("E_BLUR", "E_Blur_Behind:%p Create", ec, blur_behind);