e_blur: add _e_blur_rectangle_corner_radius_image functions 38/325138/1
authorhojoon-ryou <hojoon.ryou@samsung.com>
Tue, 27 May 2025 10:51:22 +0000 (19:51 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 4 Jun 2025 03:47:47 +0000 (12:47 +0900)
fix code to using new functions
also rename corner_radius_view_image into corner_radius_image

Change-Id: I05df827aa9ad6aa5d551c8dbca62ab9113a62d4b

src/bin/server/e_blur.c

index bd0c2846a899bd1ee234f2a2da4a666e0e22b0ee..a9b452b7192c5a3d7f808949e7ae8e4d14fb3784 100644 (file)
@@ -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;