package com.dacer.androidcharts; /** * Created by Dacer on 11/14/13. */ public class ClockPieHelper { private float start; private float end; private float targetStart; private float targetEnd; int velocity = 5; ClockPieHelper(float startDegree, float endDegree, ClockPieHelper targetPie) { start = startDegree; end = endDegree; targetStart = targetPie.getStart(); targetEnd = targetPie.getEnd(); } public ClockPieHelper(int startHour, int startMin, int endHour, int endMin) { start = 270 + startHour * 15 + startMin * 15 / 60; end = 270 + endHour * 15 + endMin * 15 / 60; while (end < start) { end += 360; } } public ClockPieHelper(int startHour, int startMin, int startSec, int endHour, int endMin, int endSec) { start = 270 + startHour * 15 + startMin * 15 / 60 + startSec * 15 / 3600; end = 270 + endHour * 15 + endMin * 15 / 60 + endSec * 15 / 3600; while (end < start) { end += 360; } } ClockPieHelper setTarget(float targetStart, float targetEnd) { this.targetStart = targetStart; this.targetEnd = targetEnd; return this; } ClockPieHelper setTarget(ClockPieHelper targetPie) { targetStart = targetPie.getStart(); targetEnd = targetPie.getEnd(); return this; } boolean isAtRest() { return (start == targetStart) && (end == targetEnd); } void update() { start = updateSelf(start, targetStart, velocity); end = updateSelf(end, targetEnd, velocity); } public float getSweep() { return end - start; } public float getStart() { return start; } public float getEnd() { return end; } private float updateSelf(float origin, float target, int velocity) { if (origin < target) { origin += velocity; } else if (origin > target) { origin -= velocity; } if (Math.abs(target - origin) < velocity) { origin = target; } return origin; } }