diff options
author | Wonki Kim <wonki_.kim@samsung.com> | 2017-01-18 13:05:04 +0900 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2017-04-11 02:38:50 -0700 |
commit | efb723e0ebb30795ca27143a5121ed3762a2199b (patch) | |
tree | df6b2334abcbda940d039b7fea161c90a68fd86d | |
parent | 350ef0a3a796e185643a82d6c896ab5aa661d272 (diff) | |
download | efl-theme-tizen-mobile-efb723e0ebb30795ca27143a5121ed3762a2199b.tar.gz efl-theme-tizen-mobile-efb723e0ebb30795ca27143a5121ed3762a2199b.tar.bz2 efl-theme-tizen-mobile-efb723e0ebb30795ca27143a5121ed3762a2199b.zip |
scroller: Add fixed property into overscroll effect
Once overscroll effect part don't have fixed property,
size of scroller will be affected by min size of overscroll effect part.
Change-Id: I309799b91e68a95ba58fe0e92868e72a416e5cbd
Signed-off-by: Wonki Kim <wonki_.kim@samsung.com>
-rw-r--r-- | mobile/widgets/scroller.edc | 415 |
1 files changed, 415 insertions, 0 deletions
diff --git a/mobile/widgets/scroller.edc b/mobile/widgets/scroller.edc index 27f68bfe..73991f95 100644 --- a/mobile/widgets/scroller.edc +++ b/mobile/widgets/scroller.edc @@ -1439,6 +1439,421 @@ group { "elm/scroller/base/effect"; alias: "elm/gengrid/base/default"; alias: "elm/scroller/base/popup/no_inset_shadow"; inherit: "elm/scroller/base/default"; + + // Macro +#define SCROLL_EDGE_MOUSE_DOWN_PROGRAM(_dir) \ + program { "edge_"#_dir"_mouse_down"; \ + signal: "elm,state,mouse,down"; \ + source: "elm"; \ + script { \ + set_int(effect_##_dir##_down, 1); \ + } \ + } + +#define SCROLL_EDGE_MOUSE_UP_PROGRAM(_dir) \ + program { "edge_"#_dir"_mouse_up"; \ + signal: "elm,state,mouse,up"; \ + source: "elm"; \ + script { \ + set_int(effect_##_dir##_down, 0); \ + if (get_int(effect_##_dir##_start)) \ + { \ + set_int(effect_##_dir##_reset, 0); \ + if (!get_int(effect_##_dir##_anim)) \ + { \ + if (!get_int(effect_##_dir##_end)) \ + { \ + set_int(effect_##_dir##_end, 1); \ + run_program(PROGRAM:"edge_"#_dir"_end"); \ + } \ + } \ + } \ + } \ + } + +#define SCROLL_EDGE_SCROLL_PROGRAM(_dir) \ + program { "edge_"#_dir"_scroll"; \ + signal: "elm,action,scroll"; \ + source: "elm"; \ + script { \ + if (get_int(effect_##_dir##_start)) \ + { \ + set_state(PART:"shadow_"#_dir"1", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"1", "default", 0.0); \ + set_state(PART:"shadow_"#_dir"2", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"2", "default", 0.0); \ + set_state(PART:"shadow_"#_dir"3", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"3", "default", 0.0); \ + set_state(PART:"shadow_"#_dir"4", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"4", "default", 0.0); \ + set_state(PART:"shadow_"#_dir"5", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"5", "default", 0.0); \ + set_int(effect_##_dir##_reset, 0); \ + run_program(PROGRAM:"edge_"#_dir"_init"); \ + } \ + } \ + } + +#define SCROLL_EDGE_END_PROGRAM(_dir) \ + program { "edge_"#_dir"_end"; \ + action: STATE_SET "default"; \ + target: "shadow_"#_dir"1"; \ + target: "shadow_"#_dir"2"; \ + target: "shadow_"#_dir"3"; \ + target: "shadow_"#_dir"4"; \ + target: "shadow_"#_dir"5"; \ + transition: SINUSOIDAL 0.3; \ + after: "edge_"#_dir"_init"; \ + } + +#define SCROLL_EDGE_INIT_PROGRAM(_dir) \ + program { "edge_"#_dir"_init"; \ + script { \ + set_int(effect_##_dir##_move, 0); \ + if (!get_int(effect_##_dir##_reset)) \ + set_int(effect_##_dir##_start, 0); \ + set_int(effect_##_dir##_max, 0); \ + set_int(_dir##_prev_diff, 0); \ + set_int(effect_##_dir##_end, 0); \ + set_state(PART:"spacer_"#_dir"1", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"2", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"3", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"4", "default", 0.0); \ + set_state(PART:"spacer_"#_dir"5", "default", 0.0); \ + } \ + } +#define SCROLL_EDGE_PROGRAM(_dir) \ + program { "edge_"#_dir; \ + signal: "elm,edge,"#_dir; \ + source: "elm"; \ + script { \ + if (!get_int(effect_##_dir##_start)) \ + { \ + set_int(effect_##_dir##_start, 1); \ + set_int(effect_##_dir##_anim, 1); \ + run_program(PROGRAM:"edge_"#_dir"_start"); \ + } \ + } \ + } + +#define SCROLL_EDGE_START_PROGRAM(_dir) \ + program { "edge_"#_dir"_start"; \ + action: STATE_SET "start"; \ + target: "shadow_"#_dir"1"; \ + target: "shadow_"#_dir"2"; \ + target: "shadow_"#_dir"3"; \ + target: "shadow_"#_dir"4"; \ + target: "shadow_"#_dir"5"; \ + transition: SINUSOIDAL 0.2; \ + after: "edge_"#_dir"_after"; \ + } + +#define SCROLL_EDGE_AFTER_PROGRAM(_dir) \ + program { "edge_"#_dir"_after"; \ + script { \ + new xx, yy; \ + get_mouse(xx, yy); \ + set_int(_dir##_down_x, xx); \ + set_int(_dir##_down_y, yy); \ + set_int(effect_##_dir##_anim, 0); \ + if (get_int(effect_##_dir##_down)) \ + { \ + set_int(effect_##_dir##_move, 1); \ + } \ + else \ + { \ + set_int(effect_##_dir##_reset, 0); \ + if (!get_int(effect_##_dir##_end)) \ + { \ + set_int(effect_##_dir##_end, 1); \ + run_program(PROGRAM:"edge_"#_dir"_end"); \ + } \ + } \ + } \ + } + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_DIFF_VERNOR(_dir) \ + set_int(_dir##_diff, (get_int(_dir##_move_y) - get_int(_dir##_down_y))); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_DIFF_VERREV(_dir) \ + set_int(_dir##_diff, (get_int(_dir##_down_y) - get_int(_dir##_move_y))); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_DIFF_HORNOR(_dir) \ + set_int(_dir##_diff, (get_int(_dir##_move_x) - get_int(_dir##_down_x))); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_DIFF_HORREV(_dir) \ + set_int(_dir##_diff, (get_int(_dir##_down_x) - get_int(_dir##_move_x))); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_STATE_VER(_dir) \ + custom_state(PART:"spacer_"#_dir"1", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"1", STATE_MIN, 0, round(fx1)); \ + set_state_val(PART:"spacer_"#_dir"1", STATE_MAX, -1, round(fx1)); \ + set_state(PART:"spacer_"#_dir"1", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"2", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"2", STATE_MIN, 0, round(fx2)); \ + set_state_val(PART:"spacer_"#_dir"2", STATE_MAX, -1, round(fx2)); \ + set_state(PART:"spacer_"#_dir"2", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"3", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"3", STATE_MIN, 0, round(fx3)); \ + set_state_val(PART:"spacer_"#_dir"3", STATE_MAX, -1, round(fx3)); \ + set_state(PART:"spacer_"#_dir"3", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"4", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"4", STATE_MIN, 0, round(fx4)); \ + set_state_val(PART:"spacer_"#_dir"4", STATE_MAX, -1, round(fx4)); \ + set_state(PART:"spacer_"#_dir"4", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"5", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"5", STATE_MIN, 0, round(fx5)); \ + set_state_val(PART:"spacer_"#_dir"5", STATE_MAX, -1, round(fx5)); \ + set_state(PART:"spacer_"#_dir"5", "custom", 0.0); \ + set_int(_dir##_prev_diff, get_int(_dir##_diff)); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM_STATE_HOR(_dir) \ + custom_state(PART:"spacer_"#_dir"1", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"1", STATE_MIN, round(fx1), 0); \ + set_state_val(PART:"spacer_"#_dir"1", STATE_MAX, round(fx1), -1); \ + set_state(PART:"spacer_"#_dir"1", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"2", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"2", STATE_MIN, round(fx2), 0); \ + set_state_val(PART:"spacer_"#_dir"2", STATE_MAX, round(fx2), -1); \ + set_state(PART:"spacer_"#_dir"2", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"3", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"3", STATE_MIN, round(fx3), 0); \ + set_state_val(PART:"spacer_"#_dir"3", STATE_MAX, round(fx3), -1); \ + set_state(PART:"spacer_"#_dir"3", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"4", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"4", STATE_MIN, round(fx4), 0); \ + set_state_val(PART:"spacer_"#_dir"4", STATE_MAX, round(fx4), -1); \ + set_state(PART:"spacer_"#_dir"4", "custom", 0.0); \ + custom_state(PART:"spacer_"#_dir"5", "default", 0.0); \ + set_state_val(PART:"spacer_"#_dir"5", STATE_MIN, round(fx5), 0); \ + set_state_val(PART:"spacer_"#_dir"5", STATE_MAX, round(fx5), -1); \ + set_state(PART:"spacer_"#_dir"5", "custom", 0.0); \ + set_int(_dir##_prev_diff, get_int(_dir##_diff)); + +#define SCROLL_EDGE_MOUSE_MOVE_PROGRAM(_dir, _hor, _rev) \ + program { "edge_"#_dir"_mouse_move"; \ + signal: "elm,state,mouse,move"; \ + source: "elm"; \ + script { \ + if (get_int(effect_##_dir##_move)) \ + { \ + new xx, yy; \ + new Float:fx1, Float:fx2, Float:fx3, Float:fx4, Float:fx5; \ + get_mouse(xx, yy); \ + set_int(_dir##_move_x, xx); \ + set_int(_dir##_move_y, yy); \ + SCROLL_EDGE_MOUSE_MOVE_PROGRAM_DIFF_##_hor##_rev(_dir) \ + if (get_int(_dir##_diff) < get_int(_dir##_prev_diff)) \ + { \ + set_int(_dir##_prev_diff, 0); \ + set_int(effect_##_dir##_move, 0); \ + set_int(effect_##_dir##_reset, 1); \ + if (!get_int(effect_##_dir##_end)) \ + { \ + set_int(effect_##_dir##_end, 1); \ + run_program(PROGRAM:"edge_"#_dir"_end"); \ + } \ + } \ + else \ + { \ + if (!get_int(effect_##_dir##_end)) \ + { \ + if (get_int(_dir##_diff) <= 90 && !get_int(effect_##_dir##_max)) \ + { \ + fx1 = fx2 = fx3 = fx4 = fx5 = sin(get_int(_dir##_diff), DEGREES); \ + fx1 = fx1 * SCROLLER_EFFECT_SHADOW_FIRST_LAYER_MOVE_CORRECTION_VALUE + SCROLLER_EFFECT_SHADOW_FIRST_LAYER_MIN_SIZE; \ + fx2 = fx2 * SCROLLER_EFFECT_SHADOW_SECOND_LAYER_MOVE_CORRECTION_VALUE + SCROLLER_EFFECT_SHADOW_SECOND_LAYER_MIN_SIZE; \ + fx3 = fx3 * SCROLLER_EFFECT_SHADOW_THIRD_LAYER_MOVE_CORRECTION_VALUE + SCROLLER_EFFECT_SHADOW_THIRD_LAYER_MIN_SIZE; \ + fx4 = fx4 * SCROLLER_EFFECT_SHADOW_FOURTH_LAYER_MOVE_CORRECTION_VALUE + SCROLLER_EFFECT_SHADOW_FOURTH_LAYER_MIN_SIZE; \ + fx5 = fx5 * SCROLLER_EFFECT_SHADOW_FIFTH_LAYER_MOVE_CORRECTION_VALUE + SCROLLER_EFFECT_SHADOW_FIFTH_LAYER_MIN_SIZE; \ + } \ + else \ + { \ + set_int(effect_##_dir##_max, 1); \ + fx1 = SCROLLER_EFFECT_SHADOW_FIRST_LAYER_MAX_SIZE; \ + fx2 = SCROLLER_EFFECT_SHADOW_SECOND_LAYER_MAX_SIZE; \ + fx3 = SCROLLER_EFFECT_SHADOW_THIRD_LAYER_MAX_SIZE; \ + fx4 = SCROLLER_EFFECT_SHADOW_FOURTH_LAYER_MAX_SIZE; \ + fx5 = SCROLLER_EFFECT_SHADOW_FIFTH_LAYER_MAX_SIZE; \ + } \ + SCROLL_EDGE_MOUSE_MOVE_PROGRAM_STATE_##_hor(_dir) \ + } \ + } \ + } \ + } \ + } + +#define SHADOW_PART_SPACER_top(_dir, _num, _NUM) \ + spacer { "spacer_top"#_num; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 0.0; \ + rel2.to: "bg"; \ + align: 0.5 0.0; \ + min: 0 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE; \ + max: -1 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE; \ + fixed: 0 1; \ + } \ + } + +#define SHADOW_PART_SPACER_bottom(_dir, _num, _NUM) \ + spacer { "spacer_bottom"#_num; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 1.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "bg"; \ + align: 0.5 1.0; \ + min: 0 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE; \ + max: -1 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE; \ + fixed: 0 1; \ + } \ + } + +#define SHADOW_PART_SPACER_left(_dir, _num, _NUM) \ + spacer { "spacer_left"#_num; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 0.0 1.0; \ + rel2.to: "bg"; \ + align: 0.0 0.5; \ + min: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE 0; \ + max: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE -1; \ + fixed: 1 0; \ + } \ + } +#define SHADOW_PART_SPACER_right(_dir, _num, _NUM) \ + spacer { "spacer_right"#_num; \ + scale; \ + desc { "default"; \ + rel1.relative: 1.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "bg"; \ + align: 1.0 0.5; \ + min: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE 0; \ + max: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MIN_SIZE -1; \ + fixed: 1 0; \ + } \ + } +#define SHADOW_PART_RECT_top(_dir, _num, _NUM) \ + rect { "shadow_top"#_num; \ + clip: "clipper"; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 0.0; \ + rel2.to: "bg"; \ + align: 0.5 1.0; \ + min: 0 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE; \ + max: -1 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE; \ + color_class: "scroller/default/end_effect"; \ + fixed: 0 1; \ + } \ + desc { "start"; \ + inherit: "default"; \ + rel1.relative: 0.0 1.0; \ + rel1.to: "spacer_top"#_num; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "spacer_top"#_num; \ + align: 0.5 1.0; \ + } \ + } +#define SHADOW_PART_RECT_bottom(_dir, _num, _NUM) \ + rect { "shadow_bottom"#_num; \ + clip: "clipper"; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 1.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "bg"; \ + align: 0.5 0.0; \ + min: 0 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE; \ + max: -1 SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE; \ + color_class: "scroller/default/end_effect"; \ + fixed: 0 1; \ + } \ + desc { "start"; \ + inherit: "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "spacer_bottom"#_num; \ + rel2.relative: 1.0 0.0; \ + rel2.to: "spacer_bottom"#_num; \ + align: 0.5 0.0; \ + } \ + } + +#define SHADOW_PART_RECT_left(_dir, _num, _NUM) \ + rect { "shadow_left"#_num; \ + clip: "clipper"; \ + scale; \ + desc { "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 0.0 1.0; \ + rel2.to: "bg"; \ + rel2.offset: -1 -1; \ + align: 1.0 0.5; \ + min: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE 0; \ + max: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE -1; \ + color_class: "scroller/default/end_effect"; \ + fixed: 1 0; \ + } \ + desc { "start"; \ + inherit: "default"; \ + rel1.relative: 1.0 0.0; \ + rel1.to: "spacer_left"#_num; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "spacer_left"#_num; \ + align: 1.0 0.5; \ + } \ + } + +#define SHADOW_PART_RECT_right(_dir, _num, _NUM) \ + rect { "shadow_right"#_num; \ + clip: "clipper"; \ + scale; \ + desc { "default"; \ + rel1.relative: 1.0 0.0; \ + rel1.to: "bg"; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "bg"; \ + rel2.offset: -1 -1; \ + align: 0.0 0.5; \ + min: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE 0; \ + max: SCROLLER_EFFECT_SHADOW_##_NUM##_LAYER_MAX_SIZE -1; \ + color_class: "scroller/default/end_effect"; \ + fixed: 1 0; \ + } \ + desc { "start"; \ + inherit: "default"; \ + rel1.relative: 0.0 0.0; \ + rel1.to: "spacer_right"#_num; \ + rel2.relative: 0.0 1.0; \ + rel2.to: "spacer_right"#_num; \ + align: 0.0 0.5; \ + } \ + } + +#define SHADOW_PART_LAYER(_dir, _num, _NUM) \ + SHADOW_PART_SPACER_##_dir(_dir, _num, _NUM) \ + SHADOW_PART_RECT_##_dir(_dir, _num, _NUM) + +#define SHADOW_PART(_dir) \ + SHADOW_PART_LAYER(_dir, 1, FIRST) \ + SHADOW_PART_LAYER(_dir, 2, SECOND) \ + SHADOW_PART_LAYER(_dir, 3, THIRD) \ + SHADOW_PART_LAYER(_dir, 4, FOURTH) \ + SHADOW_PART_LAYER(_dir, 5, FIFTH) + // Macro END + parts { rect { "shadow_top1"; clip: "clipper"; |