download ImageTape.java
Language: Java
Copyright: (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
LOC: 114
Project Info
JavaML
Server: SourceForge
Type: cvs
...ml\javaml\java‑ml\examples\
   .cvsignore
   Abacus.java
   AlphaBullet.java
   Animator.java
   AnInterface.java
   AnonymousClass.java
   AnotherApplet.java
   Assignments.java
   AudioItem.java
   Banner.java
   BigInit.java
   Blah.java
   BounceItem.java
   Bubbles.java
   cannon.java
   Chart.java
   ComplexApplet.java
   ComplexApplet2.java
   Continued.java
   crossword.java
   DiningPhilosophers.java
   escherpaint.java
   fillTriangle.java
   FirstApplet.java
   generic_paint.java
   Hangman.java
   ImageLoop.java
   ImageLoopItem.java
   ImageTape.java
   ImageTest.java
   JackhammerDuke.java
   LED.java
   LEDMessage.java
   Letters.java
   OuterClass.java
   Pythagoras.java
   RotateFilter.java
   Script.java
   SimpAnim.html
   SimpAnim.java
   SimpleAnimator.java
   stars.java
   SystemInfo.java
   TumbleItem.java
   voltage.java
   WordMatch.java

/*
 * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 *
 * Changed by: Chris Bucchere, 23-July-1997
 * 
 */

import java.awt.*;

public class ImageTape extends java.applet.Applet implements Runnable {
    Image imgs[];
    int nimgs;
    int imgwidth;
    int x, newx;
    int dist = 5;
    int timeout = 200;
    Thread scroller;
    String dir;

    public void init() {
	String at = getParameter("img");
	dir = (at != null) ? at : "doc:/demo/images/duke";
	at = getParameter("speed");
	timeout = 1000 / ((at == null) ? 4 : Integer.valueOf(at).intValue());
	at = getParameter("dir");
	dist = (at == null) ? 5 : Integer.valueOf(at).intValue();
	at = getParameter("nimgs");
	nimgs = (at == null) ? 16 : Integer.valueOf(at).intValue();
	newx = x = getSize().width;

	imgs = new Image[nimgs];
	for (int i = 0 ; i < nimgs ; i++) {
	    imgs[i] = getImage(getDocumentBase(), dir + "/T" + (i+1) + ".gif");
	}
    }

    public void start() {
	if (scroller == null) {
	    scroller = new Thread(this);
	    scroller.start();
	}
    }
    public void stop() {
	if (scroller != null) {
	    scroller.stop();
	    scroller = null;
	}
    }

    public void run() {
	while (true) {
	try {Thread.currentThread().sleep(timeout);} catch (InterruptedException e){}
	    scroll(dist);
	}
    }

    synchronized void scroll(int dist) {
	newx += dist;
	repaint();
    }

    public void update(Graphics g) {
	g.setColor(Color.lightGray);

	if (newx != x) {
	    //g.clipRect(1, 1, getSize().width-2, getSize().height-2);
	    int dist = newx - x;
	    if (dist > 0) {
		g.copyArea(1, 1, (getSize().width-2) - dist, getSize().height-2, dist, 0);
		for (x = newx ; x > getSize().width ; x -= Math.max(getSize().width - 2, imgwidth));
		paint(g, 1, dist + 1);
	    } else {
		g.copyArea(1 - dist, 1, (getSize().width-2) + dist, getSize().height-2, dist, 0);
		for (x = newx ; x < 0 ; x += Math.max(getSize().width - 2, imgwidth));
		paint(g, (getSize().width-1) + dist, getSize().width-1);
	    }
	} else {
	    paint(g);
	}
    }

    public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) {
	if ((flags & WIDTH) != 0) {
	    imgwidth += img.getWidth(this);
	}
	return super.imageUpdate(img, flags, x, y, w, h);
    }

    public void paint(Graphics g, int fromx, int tox) {
	int x = this.x;
	newx = x;

	g.setColor(Color.lightGray);
	g.fillRect(fromx, 1, tox - fromx, getSize().height-2);
	g.clipRect(fromx, 1, tox - fromx, getSize().height-2);
	g.setColor(Color.black);

	for (int i = 0 ; i < nimgs ; i++) {
	    if (imgs[i] == null) {
		continue;
	    }

	    int w = imgs[i].getWidth(this);
	    int h = imgs[i].getHeight(this);
	    if ((w > 0) && (h > 0)) {
		if ((x + w > fromx) && (x < tox)) {
		    g.drawImage(imgs[i], x, getSize().height - (h+1), this);
		}
		if ((x + w) > getSize().width) {
		    x -= Math.max(getSize().width - 2, imgwidth);
		    if ((x + w > fromx) && (x < tox)) {
			g.drawImage(imgs[i], x, getSize().height - (h + 1), this);
		    }
		}
		x += w;
	    }
	}
    }
    public void paint(Graphics g) {
	g.draw3DRect(0, 0, getSize().width, getSize().height, true);
	paint(g, 1, getSize().width-1);
    }

    public String getAppletInfo() {
	return "Title: ImageTape\nAuthor: Arthur van Hoff";
    }

    /**
     * Parameter info.
     */
    public String[][] getParameterInfo() {
	String[][] info = {
	  {"img", "string", "path to a dir where the images are located"},
	  {"speed", "int", "speed at which images scroll; default is 4"},
	  {"nimgs", "int", "number of images to scroll"},
	  {"dir", "int", "scrolling offset: + to scroll right and - to scroll left; default is 5"}
	};
	return info;
    }
}

About Koders | Resources | Downloads | Support | Black Duck | Submit Project | Terms of Service | DMCA | Privacy Policy | Site Map| Contact Us