1b505074e8273887fbcd1e933738a42e770085fb8Jim Miller/*
2b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * Copyright (C) 2011 The Android Open Source Project
3b505074e8273887fbcd1e933738a42e770085fb8Jim Miller *
4b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * Licensed under the Apache License, Version 2.0 (the "License");
5b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * you may not use this file except in compliance with the License.
6b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * You may obtain a copy of the License at
7b505074e8273887fbcd1e933738a42e770085fb8Jim Miller *
8b505074e8273887fbcd1e933738a42e770085fb8Jim Miller *      http://www.apache.org/licenses/LICENSE-2.0
9b505074e8273887fbcd1e933738a42e770085fb8Jim Miller *
10b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * Unless required by applicable law or agreed to in writing, software
11b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * distributed under the License is distributed on an "AS IS" BASIS,
12b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * See the License for the specific language governing permissions and
14b505074e8273887fbcd1e933738a42e770085fb8Jim Miller * limitations under the License.
15b505074e8273887fbcd1e933738a42e770085fb8Jim Miller */
16b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
17b505074e8273887fbcd1e933738a42e770085fb8Jim Millerpackage com.android.internal.widget.multiwaveview;
18b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
19b505074e8273887fbcd1e933738a42e770085fb8Jim Millerimport android.animation.TimeInterpolator;
20b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
21b505074e8273887fbcd1e933738a42e770085fb8Jim Millerclass Ease {
22b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    private static final float DOMAIN = 1.0f;
23b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    private static final float DURATION = 1.0f;
24b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    private static final float START = 0.0f;
25b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
26b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Linear {
27b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeNone = new TimeInterpolator() {
28b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
29b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return input;
30b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
31b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
32b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
33b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
34b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Cubic {
35b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeIn = new TimeInterpolator() {
36b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
37b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*(input/=DURATION)*input*input + START;
38b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
39b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
40b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeOut = new TimeInterpolator() {
41b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
42b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*((input=input/DURATION-1)*input*input + 1) + START;
43b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
44b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
45b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeInOut = new TimeInterpolator() {
46b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
47b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return ((input/=DURATION/2) < 1.0f) ?
48b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                        (DOMAIN/2*input*input*input + START)
49b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                            : (DOMAIN/2*((input-=2)*input*input + 2) + START);
50b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
51b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
52b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
53b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
54b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Quad {
55b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeIn = new TimeInterpolator() {
56b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation (float input) {
57b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*(input/=DURATION)*input + START;
58b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
59b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
60b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeOut = new TimeInterpolator() {
61b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
62b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return -DOMAIN *(input/=DURATION)*(input-2) + START;
63b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
64b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
65b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeInOut = new TimeInterpolator() {
66b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
67b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return ((input/=DURATION/2) < 1) ?
68b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                        (DOMAIN/2*input*input + START)
69b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                            : (-DOMAIN/2 * ((--input)*(input-2) - 1) + START);
70b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
71b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
72b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
73b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
74b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Quart {
75b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeIn = new TimeInterpolator() {
76b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
77b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*(input/=DURATION)*input*input*input + START;
78b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
79b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
80b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeOut = new TimeInterpolator() {
81b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
82b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return -DOMAIN * ((input=input/DURATION-1)*input*input*input - 1) + START;
83b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
84b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
85b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeInOut = new TimeInterpolator() {
86b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
87b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return ((input/=DURATION/2) < 1) ?
88b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                        (DOMAIN/2*input*input*input*input + START)
89b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                            : (-DOMAIN/2 * ((input-=2)*input*input*input - 2) + START);
90b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
91b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
92b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
93b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
94b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Quint {
95b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeIn = new TimeInterpolator() {
96b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
97b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*(input/=DURATION)*input*input*input*input + START;
98b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
99b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
100b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeOut = new TimeInterpolator() {
101b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
102b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN*((input=input/DURATION-1)*input*input*input*input + 1) + START;
103b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
104b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
105b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeInOut = new TimeInterpolator() {
106b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
107b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return ((input/=DURATION/2) < 1) ?
108b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                        (DOMAIN/2*input*input*input*input*input + START)
109b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                            : (DOMAIN/2*((input-=2)*input*input*input*input + 2) + START);
110b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
111b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
112b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
113b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
114b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    static class Sine {
115b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeIn = new TimeInterpolator() {
116b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
117b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return -DOMAIN * (float) Math.cos(input/DURATION * (Math.PI/2)) + DOMAIN + START;
118b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
119b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
120b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeOut = new TimeInterpolator() {
121b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
122b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return DOMAIN * (float) Math.sin(input/DURATION * (Math.PI/2)) + START;
123b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
124b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
125b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        public static final TimeInterpolator easeInOut = new TimeInterpolator() {
126b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            public float getInterpolation(float input) {
127b505074e8273887fbcd1e933738a42e770085fb8Jim Miller                return -DOMAIN/2 * ((float)Math.cos(Math.PI*input/DURATION) - 1.0f) + START;
128b505074e8273887fbcd1e933738a42e770085fb8Jim Miller            }
129b505074e8273887fbcd1e933738a42e770085fb8Jim Miller        };
130b505074e8273887fbcd1e933738a42e770085fb8Jim Miller    }
131b505074e8273887fbcd1e933738a42e770085fb8Jim Miller
132b505074e8273887fbcd1e933738a42e770085fb8Jim Miller}
133