1 /*
2 * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
109 assertNull(t0.getShape());
110 assertEquals(DEFAULT_INTERPOLATOR, t0.getInterpolator());
111 assertNull(t0.getOnFinished());
112
113 // duration, shape, and values
114 t0 = new StrokeTransition(TWO_SECS, shape, Color.BLACK, Color.WHITE);
115 assertEquals(TWO_SECS, t0.getDuration());
116 assertColorEquals(Color.BLACK, t0.getFromValue());
117 assertColorEquals(Color.WHITE, t0.getToValue());
118 assertEquals(shape, t0.getShape());
119 assertEquals(DEFAULT_INTERPOLATOR, t0.getInterpolator());
120 assertNull(t0.getOnFinished());
121 }
122
123 @Test
124 public void testInterpolate() {
125 final Color fromValue = Color.color(0.2, 0.3, 0.7, 0.1);
126 final Color toValue = Color.color(0.8, 0.4, 0.2, 0.9);
127 final StrokeTransition t0 = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
128
129 assertTrue(AnimationShim.impl_startable(t0,true));
130 AnimationShim.impl_start(t0,true);
131 TransitionShim.interpolate(t0,0.0);
132 assertColorEquals(Color.color(0.2, 0.3, 0.7, 0.1), shape.getStroke());
133 TransitionShim.interpolate(t0,0.4);
134 assertColorEquals(Color.color(0.44, 0.34, 0.5, 0.42), shape.getStroke());
135 TransitionShim.interpolate(t0,1.0);
136 assertColorEquals(Color.color(0.8, 0.4, 0.2, 0.9), shape.getStroke());
137 AnimationShim.impl_finished(t0);
138 }
139
140 @Test
141 public void testRedValueCombinations() {
142 final StrokeTransition t0 = new StrokeTransition(ONE_SEC, shape, null, Color.WHITE);
143 final double originalRed = 0.6;
144 final double fromRed = 0.4;
145 final Color originalValue = Color.color(originalRed, 1.0, 1.0);
146 final Color fromValue = Color.color(fromRed, 1.0, 1.0);
147
148 // no from value set
149 shape.setStroke(originalValue);
150 t0.setFromValue(null);
151 assertTrue(AnimationShim.impl_startable(t0,true));
152 AnimationShim.impl_start(t0,true);
153 TransitionShim.interpolate(t0,0.0);
154 assertColorEquals(originalValue, shape.getStroke());
155 AnimationShim.impl_finished(t0);
156
157 // from-value set
158 shape.setStroke(originalValue);
159 t0.setFromValue(fromValue);
160 assertTrue(AnimationShim.impl_startable(t0,true));
161 AnimationShim.impl_start(t0,true);
162 TransitionShim.interpolate(t0,0.0);
163 assertColorEquals(fromValue, shape.getStroke());
164 AnimationShim.impl_finished(t0);
165 }
166
167 @Test
168 public void testGetTargetNode() {
169 final Color fromValue = Color.color(0.0, 0.4, 0.8, 1.0);
170 final Color toValue = Color.color(1.0, 0.8, 0.6, 0.4);
171 final StrokeTransition ft = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
172 ft.setInterpolator(Interpolator.LINEAR);
173 final Shape shape2 = new Rectangle();
174 final ParallelTransition pt = new ParallelTransition();
175 pt.getChildren().add(ft);
176 pt.setNode(shape2);
177 shape.setStroke(Color.WHITE);
178 shape2.setStroke(Color.WHITE);
179
180 // node set, parent set
181 assertTrue(AnimationShim.impl_startable(ft,true));
182 AnimationShim.impl_start(ft,true);
183 TransitionShim.interpolate(ft,0.5);
184 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.7), shape.getStroke());
185 assertColorEquals(Color.WHITE, shape2.getStroke());
186 AnimationShim.impl_finished(ft);
187
188 // node null, parent set
189 ft.setShape(null);
190 assertTrue(AnimationShim.impl_startable(ft,true));
191 AnimationShim.impl_start(ft,true);
192 TransitionShim.interpolate(ft,0.4);
193 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.7), shape.getStroke());
194 assertColorEquals(Color.color(0.4, 0.56, 0.72, 0.76), shape2.getStroke());
195 AnimationShim.impl_finished(ft);
196
197 // node null, parent not shape set
198 pt.setNode(new Group());
199 assertFalse(AnimationShim.impl_startable(ft,true));
200
201 // node null, parent null
202 pt.setNode(null);
203 assertFalse(AnimationShim.impl_startable(ft,true));
204 }
205
206 @Test
207 public void testCachedValues() {
208 final Color fromValue = Color.color(0.0, 0.4, 0.8, 0.2);
209 final Color toValue = Color.color(1.0, 0.8, 0.6, 0.4);
210 final StrokeTransition ft = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
211 ft.setInterpolator(Interpolator.LINEAR);
212
213 // start
214 assertTrue(AnimationShim.impl_startable(ft,true));
215 AnimationShim.impl_start(ft,true);
216 ft.setFromValue(Color.WHITE);
217 TransitionShim.interpolate(ft,0.5);
218 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.3), shape.getStroke());
219 AnimationShim.impl_finished(ft);
220 ft.setFromValue(fromValue);
221
222 // end
223 assertTrue(AnimationShim.impl_startable(ft,true));
224 AnimationShim.impl_start(ft,true);
225 ft.setToValue(Color.BLACK);
226 TransitionShim.interpolate(ft,0.2);
227 assertColorEquals(Color.color(0.2, 0.48, 0.76, 0.24), shape.getStroke());
228 AnimationShim.impl_finished(ft);
229 ft.setToValue(toValue);
230
231 // shape
232 assertTrue(AnimationShim.impl_startable(ft,true));
233 AnimationShim.impl_start(ft,true);
234 ft.setShape(null);
235 TransitionShim.interpolate(ft,0.7);
236 assertColorEquals(Color.color(0.7, 0.68, 0.66, 0.34), shape.getStroke());
237 AnimationShim.impl_finished(ft);
238 ft.setShape(shape);
239
240 // interpolator
241 assertTrue(AnimationShim.impl_startable(ft,true));
242 AnimationShim.impl_start(ft,true);
243 ft.setInterpolator(null);
244 TransitionShim.interpolate(ft,0.1);
245 assertColorEquals(Color.color(0.1, 0.44, 0.78, 0.22), shape.getStroke());
246 AnimationShim.impl_finished(ft);
247 ft.setInterpolator(Interpolator.LINEAR);
248 }
249
250 @Test
251 public void testStartable() {
252 final StrokeTransition t0 = new StrokeTransition(Duration.ONE, shape, Color.WHITE, Color.BLACK);
253 final Paint paint2 = new LinearGradient(0, 0, 1, 1, false, null,
254 new Stop[] { new Stop(0, Color.RED) });
255 assertTrue(AnimationShim.impl_startable(t0,true));
256
257 // duration is 0
258 t0.setDuration(Duration.ZERO);
259 assertFalse(AnimationShim.impl_startable(t0,true));
260 t0.setDuration(Duration.ONE);
261 assertTrue(AnimationShim.impl_startable(t0,true));
262
263 // shape is null
264 t0.setShape(null);
265 assertFalse(AnimationShim.impl_startable(t0,true));
266 t0.setShape(shape);
267 assertTrue(AnimationShim.impl_startable(t0,true));
268
269 // interpolator is null
270 t0.setInterpolator(null);
271 assertFalse(AnimationShim.impl_startable(t0,true));
272 t0.setInterpolator(Interpolator.LINEAR);
273 assertTrue(AnimationShim.impl_startable(t0,true));
274
275 // fromValue
276 t0.setFromValue(null);
277 shape.setStroke(paint2);
278 assertFalse(AnimationShim.impl_startable(t0,true));
279 shape.setStroke(Color.BLACK);
280 assertTrue(AnimationShim.impl_startable(t0,true));
281 t0.setFromValue(Color.WHITE);
282 shape.setStroke(paint2);
283 assertTrue(AnimationShim.impl_startable(t0,true));
284
285 // toValue
286 t0.setToValue(null);
287 assertFalse(AnimationShim.impl_startable(t0,true));
288 t0.setToValue(Color.BLACK);
289 assertTrue(AnimationShim.impl_startable(t0,true));
290 }
291
292 @Test
293 public void testEvaluateStartValue() {
294 final StrokeTransition t0 = new StrokeTransition(Duration.INDEFINITE, shape, null, Color.WHITE);
295
296 // first run
297 shape.setStroke(Color.GREY);
298 assertTrue(AnimationShim.impl_startable(t0,true));
299 AnimationShim.impl_start(t0,true);
300 shape.setStroke(Color.TRANSPARENT);
301 TransitionShim.interpolate(t0,0.0);
302 assertColorEquals(Color.GREY, shape.getStroke());
303 AnimationShim.impl_finished(t0);
304
305 // second run
306 shape.setStroke(Color.BLACK);
307 assertTrue(AnimationShim.impl_startable(t0,true));
308 AnimationShim.impl_start(t0,true);
309 shape.setStroke(Color.WHITE);
310 TransitionShim.interpolate(t0,0.0);
311 assertColorEquals(Color.BLACK, shape.getStroke());
312 AnimationShim.impl_finished(t0);
313 }
314
315 }
|
1 /*
2 * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
109 assertNull(t0.getShape());
110 assertEquals(DEFAULT_INTERPOLATOR, t0.getInterpolator());
111 assertNull(t0.getOnFinished());
112
113 // duration, shape, and values
114 t0 = new StrokeTransition(TWO_SECS, shape, Color.BLACK, Color.WHITE);
115 assertEquals(TWO_SECS, t0.getDuration());
116 assertColorEquals(Color.BLACK, t0.getFromValue());
117 assertColorEquals(Color.WHITE, t0.getToValue());
118 assertEquals(shape, t0.getShape());
119 assertEquals(DEFAULT_INTERPOLATOR, t0.getInterpolator());
120 assertNull(t0.getOnFinished());
121 }
122
123 @Test
124 public void testInterpolate() {
125 final Color fromValue = Color.color(0.2, 0.3, 0.7, 0.1);
126 final Color toValue = Color.color(0.8, 0.4, 0.2, 0.9);
127 final StrokeTransition t0 = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
128
129 assertTrue(AnimationShim.startable(t0,true));
130 AnimationShim.doStart(t0,true);
131 TransitionShim.interpolate(t0,0.0);
132 assertColorEquals(Color.color(0.2, 0.3, 0.7, 0.1), shape.getStroke());
133 TransitionShim.interpolate(t0,0.4);
134 assertColorEquals(Color.color(0.44, 0.34, 0.5, 0.42), shape.getStroke());
135 TransitionShim.interpolate(t0,1.0);
136 assertColorEquals(Color.color(0.8, 0.4, 0.2, 0.9), shape.getStroke());
137 AnimationShim.finished(t0);
138 }
139
140 @Test
141 public void testRedValueCombinations() {
142 final StrokeTransition t0 = new StrokeTransition(ONE_SEC, shape, null, Color.WHITE);
143 final double originalRed = 0.6;
144 final double fromRed = 0.4;
145 final Color originalValue = Color.color(originalRed, 1.0, 1.0);
146 final Color fromValue = Color.color(fromRed, 1.0, 1.0);
147
148 // no from value set
149 shape.setStroke(originalValue);
150 t0.setFromValue(null);
151 assertTrue(AnimationShim.startable(t0,true));
152 AnimationShim.doStart(t0,true);
153 TransitionShim.interpolate(t0,0.0);
154 assertColorEquals(originalValue, shape.getStroke());
155 AnimationShim.finished(t0);
156
157 // from-value set
158 shape.setStroke(originalValue);
159 t0.setFromValue(fromValue);
160 assertTrue(AnimationShim.startable(t0,true));
161 AnimationShim.doStart(t0,true);
162 TransitionShim.interpolate(t0,0.0);
163 assertColorEquals(fromValue, shape.getStroke());
164 AnimationShim.finished(t0);
165 }
166
167 @Test
168 public void testGetTargetNode() {
169 final Color fromValue = Color.color(0.0, 0.4, 0.8, 1.0);
170 final Color toValue = Color.color(1.0, 0.8, 0.6, 0.4);
171 final StrokeTransition ft = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
172 ft.setInterpolator(Interpolator.LINEAR);
173 final Shape shape2 = new Rectangle();
174 final ParallelTransition pt = new ParallelTransition();
175 pt.getChildren().add(ft);
176 pt.setNode(shape2);
177 shape.setStroke(Color.WHITE);
178 shape2.setStroke(Color.WHITE);
179
180 // node set, parent set
181 assertTrue(AnimationShim.startable(ft,true));
182 AnimationShim.doStart(ft,true);
183 TransitionShim.interpolate(ft,0.5);
184 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.7), shape.getStroke());
185 assertColorEquals(Color.WHITE, shape2.getStroke());
186 AnimationShim.finished(ft);
187
188 // node null, parent set
189 ft.setShape(null);
190 assertTrue(AnimationShim.startable(ft,true));
191 AnimationShim.doStart(ft,true);
192 TransitionShim.interpolate(ft,0.4);
193 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.7), shape.getStroke());
194 assertColorEquals(Color.color(0.4, 0.56, 0.72, 0.76), shape2.getStroke());
195 AnimationShim.finished(ft);
196
197 // node null, parent not shape set
198 pt.setNode(new Group());
199 assertFalse(AnimationShim.startable(ft,true));
200
201 // node null, parent null
202 pt.setNode(null);
203 assertFalse(AnimationShim.startable(ft,true));
204 }
205
206 @Test
207 public void testCachedValues() {
208 final Color fromValue = Color.color(0.0, 0.4, 0.8, 0.2);
209 final Color toValue = Color.color(1.0, 0.8, 0.6, 0.4);
210 final StrokeTransition ft = new StrokeTransition(ONE_SEC, shape, fromValue, toValue);
211 ft.setInterpolator(Interpolator.LINEAR);
212
213 // start
214 assertTrue(AnimationShim.startable(ft,true));
215 AnimationShim.doStart(ft,true);
216 ft.setFromValue(Color.WHITE);
217 TransitionShim.interpolate(ft,0.5);
218 assertColorEquals(Color.color(0.5, 0.6, 0.7, 0.3), shape.getStroke());
219 AnimationShim.finished(ft);
220 ft.setFromValue(fromValue);
221
222 // end
223 assertTrue(AnimationShim.startable(ft,true));
224 AnimationShim.doStart(ft,true);
225 ft.setToValue(Color.BLACK);
226 TransitionShim.interpolate(ft,0.2);
227 assertColorEquals(Color.color(0.2, 0.48, 0.76, 0.24), shape.getStroke());
228 AnimationShim.finished(ft);
229 ft.setToValue(toValue);
230
231 // shape
232 assertTrue(AnimationShim.startable(ft,true));
233 AnimationShim.doStart(ft,true);
234 ft.setShape(null);
235 TransitionShim.interpolate(ft,0.7);
236 assertColorEquals(Color.color(0.7, 0.68, 0.66, 0.34), shape.getStroke());
237 AnimationShim.finished(ft);
238 ft.setShape(shape);
239
240 // interpolator
241 assertTrue(AnimationShim.startable(ft,true));
242 AnimationShim.doStart(ft,true);
243 ft.setInterpolator(null);
244 TransitionShim.interpolate(ft,0.1);
245 assertColorEquals(Color.color(0.1, 0.44, 0.78, 0.22), shape.getStroke());
246 AnimationShim.finished(ft);
247 ft.setInterpolator(Interpolator.LINEAR);
248 }
249
250 @Test
251 public void testStartable() {
252 final StrokeTransition t0 = new StrokeTransition(Duration.ONE, shape, Color.WHITE, Color.BLACK);
253 final Paint paint2 = new LinearGradient(0, 0, 1, 1, false, null,
254 new Stop[] { new Stop(0, Color.RED) });
255 assertTrue(AnimationShim.startable(t0,true));
256
257 // duration is 0
258 t0.setDuration(Duration.ZERO);
259 assertFalse(AnimationShim.startable(t0,true));
260 t0.setDuration(Duration.ONE);
261 assertTrue(AnimationShim.startable(t0,true));
262
263 // shape is null
264 t0.setShape(null);
265 assertFalse(AnimationShim.startable(t0,true));
266 t0.setShape(shape);
267 assertTrue(AnimationShim.startable(t0,true));
268
269 // interpolator is null
270 t0.setInterpolator(null);
271 assertFalse(AnimationShim.startable(t0,true));
272 t0.setInterpolator(Interpolator.LINEAR);
273 assertTrue(AnimationShim.startable(t0,true));
274
275 // fromValue
276 t0.setFromValue(null);
277 shape.setStroke(paint2);
278 assertFalse(AnimationShim.startable(t0,true));
279 shape.setStroke(Color.BLACK);
280 assertTrue(AnimationShim.startable(t0,true));
281 t0.setFromValue(Color.WHITE);
282 shape.setStroke(paint2);
283 assertTrue(AnimationShim.startable(t0,true));
284
285 // toValue
286 t0.setToValue(null);
287 assertFalse(AnimationShim.startable(t0,true));
288 t0.setToValue(Color.BLACK);
289 assertTrue(AnimationShim.startable(t0,true));
290 }
291
292 @Test
293 public void testEvaluateStartValue() {
294 final StrokeTransition t0 = new StrokeTransition(Duration.INDEFINITE, shape, null, Color.WHITE);
295
296 // first run
297 shape.setStroke(Color.GREY);
298 assertTrue(AnimationShim.startable(t0,true));
299 AnimationShim.doStart(t0,true);
300 shape.setStroke(Color.TRANSPARENT);
301 TransitionShim.interpolate(t0,0.0);
302 assertColorEquals(Color.GREY, shape.getStroke());
303 AnimationShim.finished(t0);
304
305 // second run
306 shape.setStroke(Color.BLACK);
307 assertTrue(AnimationShim.startable(t0,true));
308 AnimationShim.doStart(t0,true);
309 shape.setStroke(Color.WHITE);
310 TransitionShim.interpolate(t0,0.0);
311 assertColorEquals(Color.BLACK, shape.getStroke());
312 AnimationShim.finished(t0);
313 }
314
315 }
|