Rotate
// --------------------------------------------------------------------------
// Source File Name: Rotate2.java
// Copyright OPUStech 2000 - All rights Reserved
// --------------------------------------------------------------------------
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
public class Rotate2 extends Applet implements Runnable {
// --------------------------------------------------------------------------
public void init() {
// --------------------------------------------------------------------------
Dimension d = size();
Wide = d.width;
High = d.height;
buffer = createImage(Wide, High);
Image_Name = getParameter("Image");
color = getParameter("BackGround");
if(color != null)
BackGround_Color = Integer.parseInt(color,16);
else
BackGround_Color = Integer.parseInt("000000",16);
step = getParameter("Steps");
if(step != null)
Step = Integer.parseInt(step);
else
Step = 255;
if(Step > 255)
Step = 255;
Step = 255 / Step;
pause = getParameter("Speed");
if(pause != null)
Pause = Integer.parseInt(pause);
else
Pause = 10;
}
// --------------------------------------------------------------------------
public void start() {
// --------------------------------------------------------------------------
if(Rotate == null)
{
Rotate = new Thread(this);
Rotate.start();
}
}
// --------------------------------------------------------------------------
public void run() {
// --------------------------------------------------------------------------
boolean flip = false;
setBackground(new Color(BackGround_Color));
if(!Image_Loaded)
{
repaint();
grafics = getGraphics();
MediaTracker tracker = new MediaTracker(this);
Image_1 = getImage(getDocumentBase(), Image_Name);
tracker.addImage(Image_1, 0);
try
{
tracker.waitForAll();
Image_Loaded = !tracker.isErrorAny();
}
catch(InterruptedException e) { }
if(!Image_Loaded)
{
stop();
grafics.drawString("Error loading images!", 10, 40);
return;
}
}
Image_Width = Image_1.getWidth(this);
Image_Height = Image_1.getHeight(this);
Image_2 = Image_1;
Image_3 = Image_1;
int area = Image_Width * Image_Height;
pixels1 = new int[area];
pixels2 = new int[area];
try
{
PixelGrabber pg = new PixelGrabber(Image_1, 0, 0, Image_Width, Image_Height, pixels1, 0, Image_Width);
pg.grabPixels();
}
catch(InterruptedException e) { }
for(int j = 0; j < area; j += Image_Width)
{
for(int i = 0; i < Image_Width; i++)
pixels2[i + j] = pixels1[(j + Image_Width) - i - 1];
}
Image_3 = createImage(new MemoryImageSource(Image_Width, Image_Height, pixels2, 0, Image_Width));
Image_Width = size().width;
Image_Height = size().height;
do
try
{
showStatus("");
for(counter = 0; counter < Image_Width; counter += Step )
{
displayImage(grafics);
Thread.sleep(Pause);
}
flip = !flip;
if(flip)
Image_1 = Image_2;
else
Image_1 = Image_3;
for(counter = Image_Width; counter > 0; counter -= Step)
{
displayImage(grafics);
Thread.sleep(Pause);
}
}
catch(InterruptedException e)
{
stop();
}
while(true);
}
// --------------------------------------------------------------------------
public void paint(Graphics g) {
// --------------------------------------------------------------------------
Rectangle r = g.getClipRect();
if(Image_Loaded)
{
g.clearRect(r.x, r.y, r.width + Step, r.height + Step);
displayImage(g);
}
else
{
g.clearRect(r.x, r.y, r.width, r.height);
}
g.drawString("Loading image ...", 10, 20);
}
// --------------------------------------------------------------------------
private void displayImage(Graphics g) {
// --------------------------------------------------------------------------
Graphics Logo = null;
if(!Image_Loaded)
{
return;
}
else
{
Logo = g;
g = buffer.getGraphics();
g.clearRect((size().width - Image_Width) / 2, (size().height - Image_Height) / 2, Image_Width, Image_Height);
g.drawImage(Image_1, ((size().width - Image_Width) + counter) / 2, (size().height - Image_Height) / 2, Image_Width - counter, Image_Height, null);
Logo.drawImage(buffer, 0, 0, null);
return;
}
}
// --------------------------------------------------------------------------
public void stop() {
// --------------------------------------------------------------------------
if(Rotate != null)
{
Rotate.stop();
Rotate = null;
}
}
// --------------------------------------------------------------------------
// Program Variables
// --------------------------------------------------------------------------
private Thread Rotate;
private boolean Image_Loaded;
private Graphics grafics;
private Image Image_1;
private Image Image_2;
private Image Image_3;
private Image buffer;
private int BackGround_Color;
private int Image_Width;
private int Image_Height;
private int Wide;
private int High;
private int counter;
private int Step;
private int Pause;
private int pixels1[];
private int pixels2[];
private String Image_Name;
private String color;
private String step;
private String pause;
}
Back to Rotate applet
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|