src/demo/share/jfc/J2Ddemo/java2d/demos/Images/DukeAnim.java
changeset 50146 0bb0e464ee76
child 52252 de9486d74a74
equal deleted inserted replaced
50145:752645a158ff 50146:0bb0e464ee76
       
     1 /*
       
     2  *
       
     3  * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
       
     4  *
       
     5  * Redistribution and use in source and binary forms, with or without
       
     6  * modification, are permitted provided that the following conditions
       
     7  * are met:
       
     8  *
       
     9  *   - Redistributions of source code must retain the above copyright
       
    10  *     notice, this list of conditions and the following disclaimer.
       
    11  *
       
    12  *   - Redistributions in binary form must reproduce the above copyright
       
    13  *     notice, this list of conditions and the following disclaimer in the
       
    14  *     documentation and/or other materials provided with the distribution.
       
    15  *
       
    16  *   - Neither the name of Oracle nor the names of its
       
    17  *     contributors may be used to endorse or promote products derived
       
    18  *     from this software without specific prior written permission.
       
    19  *
       
    20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
       
    21  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
       
    22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
       
    24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
       
    28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
       
    29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
       
    30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    31  */
       
    32 package java2d.demos.Images;
       
    33 
       
    34 
       
    35 import java.awt.*;
       
    36 import javax.swing.JButton;
       
    37 import java.awt.image.ImageObserver;
       
    38 import java2d.AnimatingSurface;
       
    39 import java2d.DemoPanel;
       
    40 
       
    41 
       
    42 /**
       
    43  * Animated gif with a transparent background.
       
    44  */
       
    45 @SuppressWarnings("serial")
       
    46 public class DukeAnim extends AnimatingSurface implements ImageObserver {
       
    47 
       
    48     private static Image agif, clouds;
       
    49     private static int aw, ah, cw;
       
    50     private int x;
       
    51     private JButton b;
       
    52 
       
    53     @SuppressWarnings("LeakingThisInConstructor")
       
    54     public DukeAnim() {
       
    55         setBackground(Color.white);
       
    56         clouds = getImage("clouds.jpg");
       
    57         agif = getImage("duke.running.gif");
       
    58         aw = agif.getWidth(this) / 2;
       
    59         ah = agif.getHeight(this) / 2;
       
    60         cw = clouds.getWidth(this);
       
    61         dontThread = true;
       
    62     }
       
    63 
       
    64     @Override
       
    65     public void reset(int w, int h) {
       
    66         b = ((DemoPanel) getParent()).tools.startStopB;
       
    67     }
       
    68 
       
    69     @Override
       
    70     public void step(int w, int h) {
       
    71     }
       
    72 
       
    73     @Override
       
    74     public void render(int w, int h, Graphics2D g2) {
       
    75         if ((x -= 3) <= -cw) {
       
    76             x = w;
       
    77         }
       
    78         g2.drawImage(clouds, x, 10, cw, h - 20, this);
       
    79         g2.drawImage(agif, w / 2 - aw, h / 2 - ah, this);
       
    80     }
       
    81 
       
    82     @Override
       
    83     public boolean imageUpdate(Image img, int infoflags,
       
    84             int x, int y, int width, int height) {
       
    85         if (b.isSelected() && (infoflags & ALLBITS) != 0) {
       
    86             repaint();
       
    87         }
       
    88         if (b.isSelected() && (infoflags & FRAMEBITS) != 0) {
       
    89             repaint();
       
    90         }
       
    91         return isShowing();
       
    92     }
       
    93 
       
    94     public static void main(String s[]) {
       
    95         createDemoFrame(new DukeAnim());
       
    96     }
       
    97 }