/**
* 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);
}
}