#include "e_comp_wl_intern.h"
#include "e_client_intern.h"
#include "e_view_image_intern.h"
+#include "e_view_rect.h"
#include "e_comp_cfdata_intern.h"
#include <pixman.h>
#include <libds-tizen/blur.h>
int rx, ry;
E_View_Image *view_image;
+ E_View_Rect *dim_rect;
E_View_Image *corner_radius_view_image;
};
uint32_t radius;
E_View_Image *view_image;
+ E_View_Rect *dim_rect;
Eina_Bool enabled;
};
_e_blur_rectangle_remove(blur_rectangle->blur, blur_rectangle);
e_view_destroy(e_view_image_view_get(blur_rectangle->view_image));
+ e_view_destroy(e_view_rect_view_get(blur_rectangle->dim_rect));
if (blur_rectangle->corner_radius_view_image)
e_view_destroy(e_view_image_view_get(blur_rectangle->corner_radius_view_image));
{
int ec_x, ec_y, ec_w, ec_h;
int vc_x, vc_y, vc_w, vc_h;
+ int final_x, final_y, final_w, final_h;
double scale_w, scale_h;
E_View_Client *view_client;
scale_w = (double)ec_w / (double)vc_w;
scale_h = (double)ec_h / (double)vc_h;
- e_view_image_geometry_set(blur_rectangle->view_image,
- ec_x + blur_rectangle->x,
- ec_y + blur_rectangle->y,
- (int)((double)blur_rectangle->w * scale_w),
- (int)((double)blur_rectangle->h * scale_h));
-
- if (blur_rectangle->corner_radius_view_image)
- e_view_image_geometry_set(blur_rectangle->corner_radius_view_image,
- ec_x + blur_rectangle->x,
- ec_y + blur_rectangle->y,
- (int)((double)blur_rectangle->w * scale_w),
- (int)((double)blur_rectangle->h * scale_h));
+ final_x = ec_x + blur_rectangle->x;
+ final_y = ec_y + blur_rectangle->y;
+ final_w = (int)((double)blur_rectangle->w * scale_w);
+ final_h = (int)((double)blur_rectangle->h * scale_h);
}
else
{
- e_view_image_geometry_set(blur_rectangle->view_image,
- vc_x + blur_rectangle->x,
- vc_y + blur_rectangle->y,
- blur_rectangle->w,
- blur_rectangle->h);
+ final_x = vc_x + blur_rectangle->x;
+ final_y = vc_y + blur_rectangle->y;
+ final_w = blur_rectangle->w;
+ final_h = blur_rectangle->h;
+ }
- if (blur_rectangle->corner_radius_view_image)
- e_view_image_geometry_set(blur_rectangle->corner_radius_view_image,
- vc_x + blur_rectangle->x,
- vc_y + blur_rectangle->y,
- blur_rectangle->w,
- blur_rectangle->h);
+ 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->corner_radius_view_image)
+ {
+ e_view_image_geometry_set(blur_rectangle->corner_radius_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 (!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));
}
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));
}
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));
}
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 *blur_rectangle;
struct ds_tizen_blur_rectangle *tizen_blur_rectangle = data;
E_View_Image *view_image = NULL, *corner_radius_view_image = NULL;
- E_View *img_view = NULL, *corner_img_view = NULL;
+ E_View_Rect *dim_rect = NULL;
+ int dim_color[4] = {0x1A, 0x1A, 0x1A, 0.6 * 0xFF};
+ 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;
view_image = e_view_image_filled_create(blur_view_client_tree);
EINA_SAFETY_ON_NULL_RETURN(view_image);
+ dim_rect = e_view_rect_create(blur_view_client_tree, 1, 1, dim_color);
+ EINA_SAFETY_ON_NULL_RETURN(dim_rect);
+
img_view = e_view_image_view_get(view_image);
+ 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);
e_view_image_snapshot_set(view_image, true);
e_view_name_set(img_view, "blur_obj");
+ e_view_position_set(dim_view, blur_rectangle->x, blur_rectangle->y);
+ e_view_rect_size_set(dim_rect, blur_rectangle->w, blur_rectangle->h);
if ((blur_rectangle->rx != 0) && (blur_rectangle->ry != 0))
{
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_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;
blur_rectangle->view_image = view_image;
+ 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(img_view, true);
+ e_view_pass_events_set(dim_view, true);
e_view_place_below(img_view, e_view_client_view_get(blur_view_client));
if (corner_img_view)
e_view_place_above(corner_img_view, img_view);
-
+ e_view_place_below(dim_view, img_view);
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_view_show(corner_img_view);
}
return;
fail:
+ if (dim_view) e_view_destroy(dim_view);
if (img_view) e_view_destroy(img_view);
if (corner_img_view) e_view_destroy(corner_img_view);
if (blur_rectangle) free(blur_rectangle);
_e_blur_behind_ec_set(blur_behind, NULL);
e_view_destroy(e_view_image_view_get(blur_behind->view_image));
+ e_view_destroy(e_view_rect_view_get(blur_behind->dim_rect));
_e_blur_behind_enabled_set(blur_behind, EINA_FALSE);
free(blur_behind);
_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->view_image));
+ e_view_show(e_view_rect_view_get(blur_behind->dim_rect));
_e_blur_behind_enabled_set(blur_behind, EINA_TRUE);
}
else
{
e_view_hide(e_view_image_view_get(blur_behind->view_image));
+ e_view_hide(e_view_rect_view_get(blur_behind->dim_rect));
_e_blur_behind_enabled_set(blur_behind, EINA_FALSE);
}
if (!blur_behind->radius) return;
e_view_show(e_view_image_view_get(blur_behind->view_image));
+ e_view_show(e_view_rect_view_get(blur_behind->dim_rect));
_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->view_image));
+ e_view_hide(e_view_rect_view_get(blur_behind->dim_rect));
_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;
+ E_View *img_view, *dim_view;
blur_behind = wl_container_of(listener, blur_behind, listener.restack);
if (!layer_tree) return;
img_view = e_view_image_view_get(blur_behind->view_image);
+ dim_view = e_view_rect_view_get(blur_behind->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);
}
static void
E_View_Client *view_client;
E_View_Tree *view_client_tree;
E_View_Image *view_image;
- E_View *image_view;
+ E_View_Rect *dim_rect;
+ int dim_color[4] = {0x1A, 0x1A, 0x1A, 0.6 * 0xFF};
+ E_View *image_view, *dim_view;
E_Blur_Hook_Data hook_data;
int comp_w = 0, comp_h = 0;
view_image = e_view_image_filled_create(view_client_tree);
EINA_SAFETY_ON_NULL_RETURN(view_image);
+
+ dim_rect = e_view_rect_create(view_client_tree, 1, 1, dim_color);
+ EINA_SAFETY_ON_NULL_RETURN(dim_rect);
+
image_view = e_view_image_view_get(view_image);
+ dim_view = e_view_rect_view_get(dim_rect);
blur_behind = E_NEW(E_Blur_Behind, 1);
EINA_SAFETY_ON_NULL_RETURN(blur_behind);
e_view_image_snapshot_set(view_image, true);
e_view_name_set(image_view, "blur_behind_obj");
e_view_pass_events_set(image_view, true);
+ e_view_pass_events_set(dim_view, true);
e_comp_size_get(&comp_w, &comp_h);
e_view_image_geometry_set(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_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->view_image = view_image;
+ blur_behind->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);