From: hojoon-ryou Date: Tue, 27 May 2025 10:51:22 +0000 (+0900) Subject: e_blur: add _e_blur_rectangle_corner_radius_image functions X-Git-Tag: accepted/tizen/unified/20250610.081850~61 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7abff9aeda3bf820c96779c8e56d75b0aed1de3;p=platform%2Fupstream%2Fenlightenment.git e_blur: add _e_blur_rectangle_corner_radius_image functions fix code to using new functions also rename corner_radius_view_image into corner_radius_image Change-Id: I05df827aa9ad6aa5d551c8dbca62ab9113a62d4b --- diff --git a/src/bin/server/e_blur.c b/src/bin/server/e_blur.c index bd0c2846a8..a9b452b719 100644 --- a/src/bin/server/e_blur.c +++ b/src/bin/server/e_blur.c @@ -79,7 +79,7 @@ struct _E_Blur_Rectangle E_View_Image *view_image; E_View_Rect *dim_rect; - E_View_Image *corner_radius_view_image; + E_View_Image *corner_radius_image; }; struct _E_Blur_Behind @@ -127,6 +127,8 @@ static void _e_blur_rectangle_view_image_new(E_Blur_Rectangle *blur_rectangle, E 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_rectangle_corner_radius_image_new(E_Blur_Rectangle *blur_rectangle, E_Client *ec, const char *name); +static void _e_blur_rectangle_corner_radius_image_free(E_Blur_Rectangle *blur_rectangle); static void _e_blur_hooks_clean(void) @@ -237,8 +239,8 @@ _e_blur_rectangle_show(E_Blur_Rectangle *blur_rectangle) 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)); + if (blur_rectangle->corner_radius_image) + e_view_show(e_view_image_view_get(blur_rectangle->corner_radius_image)); } static void @@ -249,8 +251,8 @@ _e_blur_rectangle_hide(E_Blur_Rectangle *blur_rectangle) 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)); + if (blur_rectangle->corner_radius_image) + e_view_hide(e_view_image_view_get(blur_rectangle->corner_radius_image)); } static void @@ -262,9 +264,7 @@ _e_blur_rectangle_free(E_Blur_Rectangle *blur_rectangle) _e_blur_rectangle_view_image_free(blur_rectangle); _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_blur_rectangle_corner_radius_image_free(blur_rectangle); if (blur_rectangle->listener.destroy.notify) wl_list_remove(&blur_rectangle->listener.destroy.link); @@ -338,8 +338,8 @@ _e_blur_rectangle_geometry_set(E_Blur_Rectangle *blur_rectangle, E_Client *ec) final_w, final_h); } - if (blur_rectangle->corner_radius_view_image) - e_view_image_geometry_set(blur_rectangle->corner_radius_view_image, + if (blur_rectangle->corner_radius_image) + e_view_image_geometry_set(blur_rectangle->corner_radius_image, final_x, final_y, final_w, final_h); } @@ -348,12 +348,12 @@ _e_blur_rectangle_filter_set(E_Blur_Rectangle *blur_rectangle) { char program[256]; - if (blur_rectangle->corner_radius_view_image) + if (blur_rectangle->corner_radius_image) { snprintf(program, sizeof(program), "rounded_corner { rx = %d, ry = %d}", blur_rectangle->rx, blur_rectangle->ry); - e_view_image_gfx_filter_program_set(blur_rectangle->corner_radius_view_image, program, "rounded_corner"); + e_view_image_gfx_filter_program_set(blur_rectangle->corner_radius_image, program, "rounded_corner"); } snprintf(program, sizeof(program), "blur (%d) padding_set (0)", @@ -499,9 +499,9 @@ _e_blur_cb_restack(struct wl_listener *listener, void *data) e_view_place_below(dim_view, img_view); } - if (blur_rectangle->corner_radius_view_image) + if (blur_rectangle->corner_radius_image) { - E_View *corner_img_view = e_view_image_view_get(blur_rectangle->corner_radius_view_image); + E_View *corner_img_view = e_view_image_view_get(blur_rectangle->corner_radius_image); e_view_reparent(corner_img_view, layer_tree); e_view_place_above(corner_img_view, img_view); } @@ -667,18 +667,59 @@ _e_blur_rectangle_dim_rect_free(E_Blur_Rectangle *blur_rectangle) blur_rectangle->dim_rect = NULL; } +static void +_e_blur_rectangle_corner_radius_image_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_Image *corner_radius_image = NULL; + E_View *corner_radius_view = NULL; + unsigned int *pixels; + + 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); + + corner_radius_image = e_view_image_filled_create(blur_view_client_tree); + EINA_SAFETY_ON_NULL_RETURN(corner_radius_image); + corner_radius_view = e_view_image_view_get(corner_radius_image); + + e_view_image_size_set(corner_radius_image, 1, 1); + pixels = e_view_image_data_get(corner_radius_image, true); + if (!pixels) + { + e_view_destroy(corner_radius_view); + return; + } + *pixels = 0xffffffff; + e_view_image_data_set(corner_radius_image, pixels); + e_view_image_data_update_add(corner_radius_image, 0, 0, 1, 1); + e_view_name_set(corner_radius_view, name); + e_view_pass_events_set(corner_radius_view, true); + + blur_rectangle->corner_radius_image = corner_radius_image; +} + +static void +_e_blur_rectangle_corner_radius_image_free(E_Blur_Rectangle *blur_rectangle) +{ + if (blur_rectangle && blur_rectangle->corner_radius_image) + e_view_destroy(e_view_image_view_get(blur_rectangle->corner_radius_image)); + + blur_rectangle->corner_radius_image = NULL; +} + static void _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) { E_Blur *blur; E_Blur_Rectangle *blur_rectangle; struct ds_tizen_blur_rectangle *tizen_blur_rectangle = data; - E_View_Image *corner_radius_view_image = NULL; 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; E_Blur_Hook_Data hook_data; - unsigned int *pixels; blur = wl_container_of(listener, blur, listener.new_rectangle); EINA_SAFETY_ON_NULL_RETURN(blur); @@ -715,22 +756,12 @@ _e_blur_cb_new_rectangle(struct wl_listener *listener, void *data) if ((blur_rectangle->rx != 0) && (blur_rectangle->ry != 0)) { - corner_radius_view_image = e_view_image_filled_create(blur_view_client_tree); - EINA_SAFETY_ON_NULL_GOTO(corner_radius_view_image, fail); - - corner_img_view = e_view_image_view_get(corner_radius_view_image); - e_view_name_set(corner_img_view, "blur_corner_radius_view_image"); - e_view_pass_events_set(corner_img_view, true); - e_view_image_size_set(corner_radius_view_image, 1, 1); - pixels = e_view_image_data_get(corner_radius_view_image, true); - EINA_SAFETY_ON_NULL_GOTO(pixels, fail); - *pixels = 0xffffffff; - e_view_image_data_set(corner_radius_view_image, pixels); - e_view_image_data_update_add(corner_radius_view_image, 0, 0, 1, 1); + _e_blur_rectangle_corner_radius_image_new(blur_rectangle, blur->ec, "blur_corner_radius_image"); + EINA_SAFETY_ON_NULL_GOTO(blur_rectangle->corner_radius_image, fail); + corner_img_view = e_view_image_view_get(blur_rectangle->corner_radius_image); + e_view_clip_set(img_view, corner_img_view); e_view_clip_set(dim_view, corner_img_view); - - blur_rectangle->corner_radius_view_image = corner_radius_view_image; } blur_rectangle->blur = blur; @@ -948,7 +979,7 @@ _e_blur_behind_bottom_view_get(E_View *view) E_View *below_view, *bottom_view = view; below_view = e_view_below_get(bottom_view); - while ((!e_util_strcmp(e_view_name_get(below_view), "blur_corner_radius_view_image")) || + while ((!e_util_strcmp(e_view_name_get(below_view), "blur_corner_radius_image")) || (!e_util_strcmp(e_view_name_get(below_view), "blur_obj"))) { bottom_view = below_view;