KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > java2d > demos > Arcs_Curves > Ellipses


1 /*
2  * @(#)Ellipses.java 1.24 06/08/29
3  *
4  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * -Redistribution of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  *
12  * -Redistribution in binary form must reproduce the above copyright notice,
13  * this list of conditions and the following disclaimer in the documentation
14  * and/or other materials provided with the distribution.
15  *
16  * Neither the name of Sun Microsystems, Inc. or the names of contributors may
17  * be used to endorse or promote products derived from this software without
18  * specific prior written permission.
19  *
20  * This software is provided "AS IS," without a warranty of any kind. ALL
21  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
22  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
23  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
24  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
25  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
26  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
27  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
28  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
29  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
30  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
31  *
32  * You acknowledge that this software is not designed, licensed or intended
33  * for use in the design, construction, operation or maintenance of any
34  * nuclear facility.
35  */

36
37 /*
38  * @(#)Ellipses.java 1.24 06/08/29
39  */

40
41 package java2d.demos.Arcs_Curves;
42
43 import java.awt.*;
44 import java.awt.geom.Ellipse2D JavaDoc;
45 import java2d.AnimatingSurface;
46
47 import static java.awt.Color JavaDoc.*;
48
49
50 /**
51  * Ellipse2D 25 animated expanding ellipses.
52  */

53 public class Ellipses extends AnimatingSurface {
54
55     private static Color JavaDoc colors[] = {
56             BLUE, CYAN, GREEN, MAGENTA, ORANGE, PINK, RED,
57             YELLOW, LIGHT_GRAY, WHITE };
58     private Ellipse2D.Float JavaDoc[] ellipses;
59     private double esize[];
60     private float estroke[];
61     private double maxSize;
62
63
64     public Ellipses() {
65         setBackground(BLACK);
66         ellipses = new Ellipse2D.Float JavaDoc[25];
67         esize = new double[ellipses.length];
68         estroke = new float[ellipses.length];
69         for (int i = 0; i < ellipses.length; i++) {
70             ellipses[i] = new Ellipse2D.Float JavaDoc();
71             getRandomXY(i, 20 * Math.random(), 200, 200);
72         }
73     }
74
75
76     public void getRandomXY(int i, double size, int w, int h) {
77         esize[i] = size;
78         estroke[i] = 1.0f;
79         double x = Math.random() * (w-(maxSize/2));
80         double y = Math.random() * (h-(maxSize/2));
81         ellipses[i].setFrame(x, y, size, size);
82     }
83
84
85     public void reset(int w, int h) {
86         maxSize = w/10;
87         for (int i = 0; i < ellipses.length; i++ ) {
88             getRandomXY(i, maxSize * Math.random(), w, h);
89         }
90     }
91
92
93     public void step(int w, int h) {
94         for (int i = 0; i < ellipses.length; i++) {
95             estroke[i] += 0.025f;
96             esize[i]++;
97             if (esize[i] > maxSize) {
98                 getRandomXY(i, 1, w, h);
99             } else {
100                 ellipses[i].setFrame(ellipses[i].getX(), ellipses[i].getY(),
101                                      esize[i], esize[i]);
102             }
103         }
104     }
105
106
107     public void render(int w, int h, Graphics2D g2) {
108         for (int i = 0; i < ellipses.length; i++) {
109             g2.setColor(colors[i%colors.length]);
110             g2.setStroke(new BasicStroke(estroke[i]));
111             g2.draw(ellipses[i]);
112         }
113     }
114
115
116     public static void main(String JavaDoc argv[]) {
117         createDemoFrame(new Ellipses());
118     }
119 }
120
Popular Tags