01: /*
02: * ProGuard -- shrinking, optimization, obfuscation, and preverification
03: * of Java bytecode.
04: *
05: * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
06: *
07: * This program is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU General Public License as published by the Free
09: * Software Foundation; either version 2 of the License, or (at your option)
10: * any later version.
11: *
12: * This program is distributed in the hope that it will be useful, but WITHOUT
13: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15: * more details.
16: *
17: * You should have received a copy of the GNU General Public License along
18: * with this program; if not, write to the Free Software Foundation, Inc.,
19: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */
21: package proguard.gui.splash;
22:
23: import java.awt.*;
24:
25: /**
26: * This VariableColor varies linearly with respect to its Timing.
27: *
28: * @author Eric Lafortune
29: */
30: public class LinearColor implements VariableColor {
31: private final Color fromValue;
32: private final Color toValue;
33: private final Timing timing;
34:
35: private double cachedTiming = -1.0;
36: private Color cachedColor;
37:
38: /**
39: * Creates a new LinearColor.
40: * @param fromValue the value that corresponds to a timing of 0.
41: * @param toValue the value that corresponds to a timing of 1.
42: * @param timing the applied timing.
43: */
44: public LinearColor(Color fromValue, Color toValue, Timing timing) {
45: this .fromValue = fromValue;
46: this .toValue = toValue;
47: this .timing = timing;
48: }
49:
50: // Implementation for VariableColor.
51:
52: public Color getColor(long time) {
53: double t = timing.getTiming(time);
54: if (t != cachedTiming) {
55: cachedTiming = t;
56: cachedColor = t == 0.0 ? fromValue : t == 1.0 ? toValue
57: : new Color((int) (fromValue.getRed() + t
58: * (toValue.getRed() - fromValue.getRed())),
59: (int) (fromValue.getGreen() + t
60: * (toValue.getGreen() - fromValue
61: .getGreen())),
62: (int) (fromValue.getBlue() + t
63: * (toValue.getBlue() - fromValue
64: .getBlue())));
65: }
66:
67: return cachedColor;
68: }
69: }
|