From: hojoon-ryou Date: Tue, 27 May 2025 10:49:01 +0000 (+0900) Subject: e_blur: add _e_blur_rectangle_dim_rect functions X-Git-Tag: accepted/tizen/unified/20250610.081850~62 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da4e5af7f75f4e7adb047228825f7094eacab982;p=platform%2Fupstream%2Fenlightenment.git e_blur: add _e_blur_rectangle_dim_rect functions fix codes to using new functions also add e_blur_rectangle_show/hide functions Change-Id: I41940526af822b6614eabae085b97d44393c0c3e --- diff --git a/src/bin/server/e_blur.c b/src/bin/server/e_blur.c index c9a3935e4d..bd0c2846a8 100644 --- a/src/bin/server/e_blur.c +++ b/src/bin/server/e_blur.c @@ -125,6 +125,8 @@ static void _e_blur_behind_ec_set(E_Blur_Behind *blur, E_Client *ec); 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) @@ -227,6 +229,30 @@ _e_blur_rectangle_remove(E_Blur *blur, E_Blur_Rectangle *blur_rectangle) _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) { @@ -235,7 +261,7 @@ _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)); @@ -303,10 +329,14 @@ _e_blur_rectangle_geometry_set(E_Blur_Rectangle *blur_rectangle, E_Client *ec) 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, @@ -374,10 +404,7 @@ _e_blur_cb_ds_tizen_blur_commit(struct wl_listener *listener, void *data) 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); @@ -385,12 +412,7 @@ _e_blur_cb_ds_tizen_blur_commit(struct wl_listener *listener, void *data) 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); } @@ -407,12 +429,7 @@ _e_blur_cb_show(struct wl_listener *listener, void *data) 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 @@ -425,12 +442,7 @@ _e_blur_cb_hide(struct wl_listener *listener, void *data) 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 @@ -479,9 +491,14 @@ _e_blur_cb_restack(struct wl_listener *listener, void *data) 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); @@ -613,6 +630,41 @@ _e_blur_rectangle_view_image_free(E_Blur_Rectangle *blur_rectangle) { 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 @@ -622,8 +674,6 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) 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; @@ -638,11 +688,6 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) 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); @@ -664,6 +709,10 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) 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); @@ -683,13 +732,12 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) 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)); @@ -699,13 +747,7 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) // 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, @@ -718,7 +760,7 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) 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); } @@ -888,15 +930,13 @@ _e_blur_behind_cb_ds_tizen_blur_behind_commit(struct wl_listener *listener, void { _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); } @@ -926,8 +966,7 @@ _e_blur_behind_cb_show(struct wl_listener *listener, void *data) 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); } @@ -939,8 +978,7 @@ _e_blur_behind_cb_hide(struct wl_listener *listener, void *data) 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); } @@ -951,7 +989,7 @@ _e_blur_behind_cb_restack(struct wl_listener *listener, void *data) 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); @@ -959,12 +997,16 @@ _e_blur_behind_cb_restack(struct wl_listener *listener, void *data) 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 @@ -1029,8 +1071,6 @@ _e_blur_manager_cb_new_blur_behind(struct wl_listener *listener, void *data) 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; @@ -1055,11 +1095,6 @@ _e_blur_manager_cb_new_blur_behind(struct wl_listener *listener, void *data) 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); @@ -1078,17 +1113,20 @@ _e_blur_manager_cb_new_blur_behind(struct wl_listener *listener, void *data) _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);