E_Zone *zone;
E_Desk *ec_desk;
int ec_x, ec_y, ec_w, ec_h;
+ int zx, zy, zw, zh;
if (!effect) return NULL;
- if (effect->zone->display_state == E_ZONE_DISPLAY_STATE_OFF)
+ if (e_zone_display_state_get(effect->zone) == E_ZONE_DISPLAY_STATE_OFF)
return NULL;
x = y = w = h = 0;
-
- t = eina_tiler_new(effect->zone->w + edge, effect->zone->h + edge);
+ zx = zy = zw = zh = 0;
+ e_zone_useful_geometry_get(effect->zone, &zx, &zy, &zw, &zh);
+ t = eina_tiler_new(zw + edge, zh + edge);
eina_tiler_tile_size_set(t, 1, 1);
- EINA_RECTANGLE_SET(&r, effect->zone->x, effect->zone->y, effect->zone->w, effect->zone->h);
+ EINA_RECTANGLE_SET(&r, zx, zy, zw, zh);
eina_tiler_rect_add(t, &r);
- o = evas_object_top_get(e_comp->evas);
+ o = evas_object_top_get(e_comp_evas_get());
for (; o; o = evas_object_below_get(o))
{
+ E_View* view;
if (!evas_object_visible_get(o)) continue;
- if (o == effect->zone->over) continue;
+ view = evas_object_data_get(o, "e_view");
+ if (view && (view == e_zone_over_get(effect->zone))) continue;
if (o == effect->bg) continue;
if (evas_object_layer_get(o) > E_LAYER_EFFECT) continue;
if (!e_util_strcmp(evas_object_name_get(o), "layer_obj")) continue;
ec = evas_object_data_get(o, "E_Client");
if (ec)
{
+ int curr_zone_angle;
ec_desk = e_comp_desk_find_by_ec(ec);
if (!ec_desk) continue;
if (ec_desk != desk) continue;
zone = e_comp_zone_find_by_ec(ec);
if (!zone) continue;
e_client_geometry_get(ec, &ec_x, &ec_y, &ec_w, &ec_h);
- if (!E_INTERSECTS(ec_x, ec_y, ec_w, ec_h, zone->x, zone->y, zone->w, zone->h))
+ e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh);
+ if (!E_INTERSECTS(ec_x, ec_y, ec_w, ec_h, zx, zy, zw, zh))
continue;
if ((e_client_visibility_obscured_get(ec) != E_VISIBILITY_UNOBSCURED) &&
(e_client_iconic_get(ec)))
continue;
+ curr_zone_angle = e_zone_rotation_curr_angle_get(effect->zone);
if ((!e_client_animatable_get(ec)) ||
(e_client_video_client_has(ec)) ||
- (!_rotation_effect_available(ec, effect->zone->rot.curr)) ||
- (e_client_e_state_rot_angle_current_get(ec) == effect->zone->rot.curr))
+ (!_rotation_effect_available(ec, curr_zone_angle)) ||
+ (e_client_e_state_rot_angle_current_get(ec) == curr_zone_angle))
{
if (l) eina_list_free(l);
eina_tiler_free(t);
buffer = e_pixmap_resource_get(e_client_pixmap_get(ec));
if (!buffer) goto fail;
- img = evas_object_image_filled_add(e_comp->evas);
+ img = evas_object_image_filled_add(e_comp_evas_get());
e_util_size_debug_set(img, 1);
evas_object_image_colorspace_set(img, EVAS_COLORSPACE_ARGB8888);
evas_object_image_smooth_scale_set(img, e_comp_config_get()->smooth_windows);
evas_object_geometry_get(o, &x, &y, &w, &h);
- img = evas_object_image_filled_add(e_comp->evas);
+ img = evas_object_image_filled_add(e_comp_evas_get());
e_util_size_debug_set(img, 1);
evas_object_image_colorspace_set(img, EVAS_COLORSPACE_ARGB8888);
Evas_Object *target;
Eina_List *l;
int x, y, w, h;
+ int zx, zy, zw, zh;
ctx_begin = E_NEW(Rotation_Effect_Begin_Context, 1);
if (!ctx_begin) return NULL;
- ctx_begin->layout = e_layout_add(e_comp->evas);
+ ctx_begin->layout = e_layout_add(e_comp_evas_get());
e_util_size_debug_set(ctx_begin->layout, 1);
evas_object_name_set(ctx_begin->layout, "rotation-begin-effect-layout");
- e_layout_virtual_size_set(ctx_begin->layout, effect->zone->w, effect->zone->h);
- evas_object_move(ctx_begin->layout, effect->zone->x, effect->zone->y);
- evas_object_resize(ctx_begin->layout, effect->zone->w, effect->zone->h);
+ e_zone_useful_geometry_get(effect->zone, &zx, &zy, &zw, &zh);
+ e_layout_virtual_size_set(ctx_begin->layout, zw, zh);
+ evas_object_move(ctx_begin->layout, zx, zy);
+ evas_object_resize(ctx_begin->layout, zw, zh);
evas_object_layer_set(ctx_begin->layout, E_LAYER_EFFECT);
EINA_LIST_REVERSE_FOREACH(targets, l, target)
EFFINF("Rotation Begin Created", NULL);
- int diff = effect->zone->rot.prev - effect->zone->rot.curr;
+ int diff = e_zone_rotation_prev_angle_get(effect->zone) - e_zone_rotation_curr_angle_get(effect->zone);
if (diff == 270) diff = - 90;
else if (diff == -270) diff = 90;
ctx_begin->src = 0.0;
Eina_List *l;
Evas_Object *target;
int x, y, w, h;
+ int zx, zy, zw, zh;
ctx_end = E_NEW(Rotation_Effect_End_Context, 1);
if (!ctx_end) return NULL;
- ctx_end->layout = e_layout_add(e_comp->evas);
+ ctx_end->layout = e_layout_add(e_comp_evas_get());
e_util_size_debug_set(ctx_end->layout, 1);
evas_object_name_set(ctx_end->layout, "rotation-end-effect-layout");
- e_layout_virtual_size_set(ctx_end->layout, effect->zone->w, effect->zone->h);
- evas_object_move(ctx_end->layout, effect->zone->x, effect->zone->y);
- evas_object_resize(ctx_end->layout, effect->zone->w, effect->zone->h);
+ e_zone_useful_geometry_get(effect->zone, &zx, &zy, &zw, &zh);
+ e_layout_virtual_size_set(ctx_end->layout, zw, zh);
+ evas_object_move(ctx_end->layout, zx, zy);
+ evas_object_resize(ctx_end->layout, zw, zh);
evas_object_layer_set(ctx_end->layout, E_LAYER_EFFECT);
EINA_LIST_REVERSE_FOREACH(targets, l, target)
static void
_rotation_effect_start(Rotation_Effect *effect)
{
+ int zw, zh;
+
if ((!effect->ctx_begin) || (!effect->ctx_end)) return;
if (effect->running) return;
evas_object_show(effect->ctx_end->layout);
evas_object_move(effect->bg, 0, 0);
- evas_object_resize(effect->bg, effect->zone->w, effect->zone->h);
+ e_zone_useful_geometry_get(effect->zone, NULL, NULL, &zw, &zh);
+ evas_object_resize(effect->bg, zw, zh);
evas_object_lower(effect->bg);
evas_object_show(effect->bg);
E_Event_Zone_Rotation_Change_Begin *ev = event;
E_Zone *zone;
E_Desk *desk;
+ int rot_prev, rot_curr;
effect = (Rotation_Effect *)data;
if (!effect) return ECORE_CALLBACK_PASS_ON;
zone = ev->zone;
if (!zone) return ECORE_CALLBACK_PASS_ON;
+ rot_prev = e_zone_rotation_prev_angle_get(zone);
+ rot_curr = e_zone_rotation_curr_angle_get(zone);
+
EFFINF("Zone rotation begin zone(prev:%d cur:%d)",
NULL,
- zone->rot.prev, zone->rot.curr);
+ rot_prev, rot_curr);
- if (zone->rot.prev == zone->rot.curr) return ECORE_CALLBACK_PASS_ON;
+ if (rot_prev == rot_curr) return ECORE_CALLBACK_PASS_ON;
- _rotation_zone->curr_angle = zone->rot.curr;
- _rotation_zone->prev_angle = zone->rot.prev;
+ _rotation_zone->curr_angle = rot_curr;
+ _rotation_zone->prev_angle = rot_prev;
desk = e_desk_current_get(zone);
_rotation_effect_animator_begin_prepare(effect, desk);
E_Event_Zone_Rotation_Change_End *ev = event;
E_Zone *zone;
E_Desk *desk;
+ int rot_curr, rot_prev;
effect = (Rotation_Effect *)data;
if (!effect) return ECORE_CALLBACK_PASS_ON;
zone = ev->zone;
if (!zone) return ECORE_CALLBACK_PASS_ON;
+ rot_prev = e_zone_rotation_prev_angle_get(zone);
+ rot_curr = e_zone_rotation_curr_angle_get(zone);
+
EFFINF("Zone rotation end angle(prev:%d cur:%d)", NULL,
- zone->rot.prev, zone->rot.curr);
+ rot_prev, rot_curr);
if (effect->running) return ECORE_CALLBACK_PASS_ON;
if (effect->waiting_list)
rotation_effect->zone = zone;
- rotation_effect->bg = evas_object_rectangle_add(e_comp->evas);
+ rotation_effect->bg = evas_object_rectangle_add(e_comp_evas_get());
e_util_size_debug_set(rotation_effect->bg, 1);
evas_object_color_set(rotation_effect->bg, 0, 0, 0, 255);
evas_object_layer_set(rotation_effect->bg, E_LAYER_EFFECT);
_rotation_zone_create(E_Zone *zone)
{
Rotation_Zone *rotation_zone = NULL;
+ int zw, zh;
if (!zone) return NULL;
- if ((zone->w == 0) || (zone->h == 0)) return NULL;
+ e_zone_useful_geometry_get(zone, NULL, NULL, &zw, &zh);
+ if ((zw == 0) || (zh == 0)) return NULL;
rotation_zone = E_NEW(Rotation_Zone, 1);
if (!rotation_zone) return NULL;
}
rotation_zone->zone = zone;
- rotation_zone->curr_angle = zone->rot.curr;
- rotation_zone->prev_angle = zone->rot.prev;
+ rotation_zone->curr_angle = e_zone_rotation_curr_angle_get(zone);
+ rotation_zone->prev_angle = e_zone_rotation_prev_angle_get(zone);
E_LIST_HANDLER_APPEND(rotation_zone->event_hdlrs,
E_EVENT_ZONE_ROTATION_CHANGE_BEGIN,