get e17 to use the ecore pos map call to do accel/decel for shading,

and while we're at it allow more modes... like bouncing. pretty cool
to have bouncing shaded windows :)



SVN revision: 60476
This commit is contained in:
Carsten Haitzler 2011-06-18 14:38:54 +00:00
parent ebb04e18be
commit e0eeb1def3
4 changed files with 93 additions and 29 deletions

View File

@ -8066,38 +8066,69 @@ _e_border_shade_animator(void *data)
val = dt / dur;
if (val < 0.0) val = 0.0;
else if (val > 1.0)
val = 1.0;
else if (val > 1.0) val = 1.0;
if (e_config->border_shade_transition == E_TRANSITION_SINUSOIDAL)
{
if (bd->shaded)
bd->shade.val = (1 - cos(val * M_PI)) / 2.0;
else
bd->shade.val = 0.5 + (cos(val * M_PI) / 2.0);
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_SINUSOIDAL, 0.0, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_DECELERATE)
{
if (bd->shaded)
bd->shade.val = sin(val * M_PI / 2.0);
else
bd->shade.val = 1 - sin(val * M_PI / 2.0);
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_DECELERATE, 0.0, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_ACCELERATE)
{
if (bd->shaded)
bd->shade.val = 1 - cos(val * M_PI / 2.0);
else
bd->shade.val = cos(val * M_PI / 2.0);
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else /* LINEAR if none of the others */
else if (e_config->border_shade_transition == E_TRANSITION_LINEAR)
{
if (bd->shaded)
bd->shade.val = val;
else
bd->shade.val = 1 - val;
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_LINEAR, 0.0, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_ACCELERATE_LOTS)
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_ACCELERATE_FACTOR, 1.7, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_DECELERATE_LOTS)
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_DECELERATE_FACTOR, 1.7, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_SINUSOIDAL_LOTS)
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_SINUSOIDAL_FACTOR, 1.7, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_BOUNCE)
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_BOUNCE, 1.2, 3.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else if (e_config->border_shade_transition == E_TRANSITION_BOUNCE_LOTS)
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_BOUNCE, 1.2, 5.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
else
{
bd->shade.val =
ecore_animator_pos_map(val, ECORE_POS_MAP_LINEAR, 0.0, 0.0);
if (!bd->shaded) bd->shade.val = 1.0 - bd->shade.val;
}
/* due to M_PI's innacuracy, cos(M_PI/2) != 0.0, so we need this */
if (bd->shade.val < 0.001) bd->shade.val = 0.0;
else if (bd->shade.val > .999)
@ -8133,8 +8164,7 @@ _e_border_shade_animator(void *data)
bd->changed = 1;
/* we're done */
if ((bd->shaded && (bd->shade.val == 1)) ||
((!bd->shaded) && (bd->shade.val == 0)))
if (val == 1)
{
E_Event_Border_Resize *ev;

View File

@ -17,10 +17,15 @@ typedef enum _E_Direction
typedef enum _E_Transition
{
E_TRANSITION_LINEAR,
E_TRANSITION_SINUSOIDAL,
E_TRANSITION_ACCELERATE,
E_TRANSITION_DECELERATE
E_TRANSITION_LINEAR = 0,
E_TRANSITION_SINUSOIDAL = 1,
E_TRANSITION_ACCELERATE = 2,
E_TRANSITION_DECELERATE = 3,
E_TRANSITION_ACCELERATE_LOTS = 4,
E_TRANSITION_DECELERATE_LOTS = 5,
E_TRANSITION_SINUSOIDAL_LOTS = 6,
E_TRANSITION_BOUNCE = 7,
E_TRANSITION_BOUNCE_LOTS = 8
} E_Transition;
typedef enum _E_Stacking

View File

@ -1181,7 +1181,7 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->menus_fast_mouse_move_threshhold, 1.0, 2000.0);
E_CONFIG_LIMIT(e_config->menus_click_drag_timeout, 0.0, 10.0);
E_CONFIG_LIMIT(e_config->border_shade_animate, 0, 1);
E_CONFIG_LIMIT(e_config->border_shade_transition, 0, 3);
E_CONFIG_LIMIT(e_config->border_shade_transition, 0, 8);
E_CONFIG_LIMIT(e_config->border_shade_speed, 1.0, 20000.0);
E_CONFIG_LIMIT(e_config->framerate, 1.0, 200.0);
E_CONFIG_LIMIT(e_config->priority, 0, 19);

View File

@ -192,23 +192,52 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
rg = e_widget_radio_group_new(&(cfdata->border_shade_transition));
ow = e_widget_radio_add(evas, _("Linear"), E_TRANSITION_LINEAR, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Accelerate, then decelerate"),
E_TRANSITION_SINUSOIDAL, rg);
ow = e_widget_radio_add(evas, _("Accelerate, then decelerate"), E_TRANSITION_SINUSOIDAL, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Accelerate"), E_TRANSITION_ACCELERATE, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Decelerate"), E_TRANSITION_DECELERATE, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Pronounced Accelerate"), E_TRANSITION_ACCELERATE_LOTS, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Pronounced Decelerate"), E_TRANSITION_DECELERATE_LOTS, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Pronounced Acceleratem then decelerate"), E_TRANSITION_SINUSOIDAL_LOTS, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Bounce"), E_TRANSITION_BOUNCE, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
ow = e_widget_radio_add(evas, _("Bounce more"), E_TRANSITION_BOUNCE_LOTS, rg);
e_widget_disabled_set(ow, !cfdata->border_shade_animate);
cfdata->shading_list = eina_list_append(cfdata->shading_list, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("Shading"), ol,
0, 0, 1, 0, 0.5, 0.0);