KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jgoodies > animation > animations > FanAnimation


1 /*
2  * Copyright (c) 2001-2004 JGoodies Karsten Lentzsch. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * o Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  *
10  * o Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * o Neither the name of JGoodies Karsten Lentzsch nor the names of
15  * its contributors may be used to endorse or promote products derived
16  * from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30
31 package com.jgoodies.animation.animations;
32
33 import com.jgoodies.animation.AbstractAnimation;
34 import com.jgoodies.animation.AnimationFunction;
35 import com.jgoodies.animation.AnimationFunctions;
36 import com.jgoodies.animation.components.FanComponent;
37
38
39 /**
40  * An animation that rotates a fan that consists of a set
41  * of translucent sectors.
42  *
43  * @author Karsten Lentzsch
44  * @version $Revision: 1.4 $
45  *
46  * @see com.jgoodies.animation.components.FanComponent
47  * @see com.jgoodies.animation.renderer.FanRenderer
48  */

49 public final class FanAnimation extends AbstractAnimation {
50     
51     public static final double DEFAULT_CLOCKWISE_ROTATION = 0.01; // rotations per second
52
public static final double DEFAULT_ANTICLOCKWISE_ROTATION = -0.02;
53     
54     
55     private final FanComponent fan;
56     private final AnimationFunctions.FloatFunction rotationFunction;
57     
58     
59     /**
60      * Constructs an animation that rotates a fan using the given fan component,
61      * duration and rotation animation function.
62      *
63      * @param fan the fan component animation target
64      * @param duration the animation duration
65      * @param rotationFunction the rotation animation function
66      */

67     public FanAnimation(FanComponent fan, long duration, AnimationFunction rotationFunction) {
68         super(duration);
69         this.fan = fan;
70         this.rotationFunction =
71             AnimationFunctions.asFloat(rotationFunction != null
72             ? rotationFunction
73             : defaultRotationFunction(duration));
74     }
75
76
77     /**
78      * Creates and answers the default fan animation.
79      *
80      * @param fan the fan component animation target
81      * @param duration the animation duration
82      * @return a default fan animation
83      */

84     public static FanAnimation defaultFan(FanComponent fan, long duration) {
85         return new FanAnimation(fan, duration, null);
86     }
87
88
89     /**
90      * Creates and answers an animation function for the default rotation.
91      *
92      * @param duration the animation duration
93      * @return an animation function for the default rotation
94      */

95     public static AnimationFunction defaultRotationFunction(long duration) {
96         return AnimationFunctions.fromTo(duration, 0f, (float) (Math.PI * 2.0f));
97     }
98
99
100     /**
101      * Applies the effect: sets the time-based rotation.
102      *
103      * @param time the render time
104      */

105     protected void applyEffect(long time) {
106         fan.setRotation(rotationFunction.valueAt(time));
107     }
108     
109 }
Popular Tags