/** * CircularFilterApplet.java * Copyright (c) 1998 Yoon Kyung Koo. All rights reserved. * * First release date 1998/06/07 * * @version 1.0 1998/06/07 * @author Yoon Kyung Koo */ import java.awt.*; import java.awt.image.*; /** * CircularFilterApplet class * This applet shows an image filter example */ public class CircularFilterApplet extends java.applet.Applet implements Runnable { private Image image=null; private int nodes=0; private int amplitude=0; private int frameNo=0; private int currentFrame=0; private int animInterval=0; private Image filtered[]=null; private boolean isLoaded=false; private boolean isFiltered=false; private MediaTracker tracker=null; private Thread animThread=null; public void init() { image = getImage(getCodeBase(), getParameter("image")); String nodes = getParameter("node"); if (nodes==null) this.nodes=5; else this.nodes=Integer.valueOf(nodes).intValue(); String amplitude = getParameter("amplitude"); if (amplitude==null) this.amplitude=15; else this.amplitude=Integer.valueOf(amplitude).intValue(); String frameNo = getParameter("frame"); if (frameNo==null) this.frameNo=5; else this.frameNo=Integer.valueOf(frameNo).intValue(); String animInterval = getParameter("delay"); if (animInterval==null) this.animInterval=100; else this.animInterval=Integer.valueOf(animInterval).intValue(); tracker=new MediaTracker(this); tracker.addImage(image, 0); } public void start() { if (animThread==null) { animThread=new Thread(this); animThread.start(); } } public void run() { Thread me=Thread.currentThread(); try { tracker.waitForID(0); int width=image.getWidth(this); int height=image.getHeight(this); Point center=new Point(width/2, height/2); double radius=Math.sqrt(width*width/4.0+height*height/4.0); isLoaded=true; repaint(); ImageProducer prod=image.getSource(); Image images[]=new Image[frameNo]; filtered=images; for (int i=0; i> 16) & 0xff; int g = (rgb >> 8) & 0xff; int b = (rgb >> 0) & 0xff; if (percent < 0) { // darken r = (0xff - ((0xff - r) * (100 + percent) / 100)); g = (0xff - ((0xff - g) * (100 + percent) / 100)); b = (0xff - ((0xff - b) * (100 + percent) / 100)); } else { // brighten r = r * (100 - percent) / 100; g = g * (100 - percent) / 100; b = b * (100 - percent) / 100; } return (rgb & 0xff000000) | (r << 16) | (g << 8) | (b << 0); } }