diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-11-04 08:56:33 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-11-04 08:56:33 +0100 |
commit | f8726defb71d6b1777a38887524adc99638f0d09 (patch) | |
tree | 7b897bfbe25813667659946de6ac122f344960ad /src/renderers/centerRenderer.vala | |
parent | 7556967bf57453d412a8f18633599f38806f8620 (diff) |
Imported Upstream version 0.6.8upstream/0.6.8
Diffstat (limited to 'src/renderers/centerRenderer.vala')
-rw-r--r-- | src/renderers/centerRenderer.vala | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/src/renderers/centerRenderer.vala b/src/renderers/centerRenderer.vala index e94714f..c146216 100644 --- a/src/renderers/centerRenderer.vala +++ b/src/renderers/centerRenderer.vala @@ -107,42 +107,50 @@ public class CenterRenderer : GLib.Object { ctx.save(); // calculate all values needed for animation/drawing - double active_speed = (layer.active_rotation_mode == CenterLayer.RotationMode.TO_MOUSE) ? - 0.0 : layer.active_rotation_speed; - double inactive_speed = (layer.inactive_rotation_mode == CenterLayer.RotationMode.TO_MOUSE) ? - 0.0 : layer.inactive_rotation_speed; double max_scale = layer.active_scale*this.activity.val + layer.inactive_scale*(1.0-this.activity.val); double max_alpha = layer.active_alpha*this.activity.val + layer.inactive_alpha*(1.0-this.activity.val); double colorize = ((layer.active_colorize == true) ? this.activity.val : 0.0) + ((layer.inactive_colorize == true) ? 1.0 - this.activity.val : 0.0); - double max_rotation_speed = active_speed*this.activity.val - + inactive_speed*(1.0-this.activity.val); + double max_rotation_speed = layer.active_rotation_speed*this.activity.val + + layer.inactive_rotation_speed*(1.0-this.activity.val); CenterLayer.RotationMode rotation_mode = ((this.activity.val > 0.5) ? layer.active_rotation_mode : layer.inactive_rotation_mode); - if (rotation_mode == CenterLayer.RotationMode.TO_MOUSE) { - double diff = angle-layer.rotation; - max_rotation_speed = layer.active_rotation_speed*this.activity.val - + layer.inactive_rotation_speed*(1.0-this.activity.val); - double smoothy = fabs(diff) < 0.9 ? fabs(diff) + 0.1 : 1.0; - double step = max_rotation_speed*frame_time*smoothy; + double direction = 0; - if (fabs(diff) <= step || fabs(diff) >= 2.0*PI - step) - layer.rotation = angle; - else { - if ((diff > 0 && diff < PI) || diff < -PI) layer.rotation += step; - else layer.rotation -= step; - } + if (rotation_mode == CenterLayer.RotationMode.TO_MOUSE) { + direction = angle; } else if (rotation_mode == CenterLayer.RotationMode.TO_ACTIVE) { - max_rotation_speed *= this.activity.val; - double slice_angle = parent.total_slice_count > 0 ? 2*PI/parent.total_slice_count : 0; - double direction = (int)((angle+0.5*slice_angle) / (slice_angle))*slice_angle; + direction = (int)((angle+0.5*slice_angle) / (slice_angle))*slice_angle; + + } else if (rotation_mode == CenterLayer.RotationMode.TO_SECOND) { + var now = new DateTime.now_local(); + direction = 2*PI*(now.get_second()+60-15)/60; + + } else if (rotation_mode == CenterLayer.RotationMode.TO_MINUTE) { + var now = new DateTime.now_local(); + direction = 2*PI*(now.get_minute()+60-15)/60; + + } else if (rotation_mode == CenterLayer.RotationMode.TO_HOUR_24) { + var now = new DateTime.now_local(); + direction = 2*PI*(now.get_hour()+24-6)/24 + 2*PI*(now.get_minute())/(60*24); + + } else if (rotation_mode == CenterLayer.RotationMode.TO_HOUR_12) { + var now = new DateTime.now_local(); + direction = 2*PI*(now.get_hour()+12-3)/12 + 2*PI*(now.get_minute())/(60*12); + } + + if (rotation_mode == CenterLayer.RotationMode.AUTO) { + layer.rotation += max_rotation_speed*frame_time; + } else { + direction = Math.fmod(direction, 2*PI); double diff = direction-layer.rotation; - double step = max_rotation_speed*frame_time; + double smoothy = fabs(diff) < 0.9 ? fabs(diff) + 0.1 : 1.0; + double step = max_rotation_speed*frame_time*smoothy; if (fabs(diff) <= step || fabs(diff) >= 2.0*PI - step) layer.rotation = direction; @@ -150,8 +158,7 @@ public class CenterRenderer : GLib.Object { if ((diff > 0 && diff < PI) || diff < -PI) layer.rotation += step; else layer.rotation -= step; } - - } else layer.rotation += max_rotation_speed*frame_time; + } layer.rotation = fmod(layer.rotation+2*PI, 2*PI); |