/**********************************************************************************
* *
* Shining Letters Applet *
* ( ShinLetter.java ) *
* Author : Seiichi Inoue *
**********************************************************************************/
/********************** << Imported package class definition >> *******************/
import java.applet.Applet; /* Applet packages */
import java.awt.*; /* All of the Abstract Windowing Toolkit packages */
import java.lang.*; /* Lang packages */
/************************** <<Oneself of class definition>> ***********************/
// Class name : ShinLetter
// Access control : public( Access possibility even from which class )
// Extends class : Applet
// Implements class: Runnable( Use of Thread is enabled )
public class ShinLetter extends Applet implements Runnable {
/************************* << Class attribute of definition >> ********************/
Thread kicker = null; /* Thread(Initial value:suspension) */
Dimension d; /* Display range */
Image offs; /* Off screen */
Graphics grf; /* Drawing range */
String msg; /* Display letter housing */
int no; /* Number of letter */
int width; /* Shining letter display position */
String cen; /* Shining letter( One character ) */
String bef; /* Letter to shining letter */
int speed; /* Display speed */
String param; /* Parameter reading */
int backred,backgreen,backblue; /* Background color parameter */
Color backcolor; /* Background color */
int mojired,mojigreen,mojiblue; /* Letter color parameter */
Color mojicolor; /* Letter color */
int shinred,shingreen,shinblue; /* Shining letter color parameter */
Color shincolor; /* Shining letter color */
Font font; /* Letter font */
String fontname; /* Letter font parameter */
int fontsize; /* Letter size parameter */
int strHeight; /* Letter height */
int y_Point; /* Display position ( Height ) */
/***************** << Class of method (implementation procedure) >> ***************/
//
/******** Initialization (init) method *********/
public void init() {
d = size(); /* Set display screen size */
offs = createImage(d.width,d.height); /* Off scr area preparation */
grf = offs.getGraphics(); /* Graphics object extraction */
param = getParameter("message"); /* Letter parameter reading */
msg = (param != null)? /* Input determination */
param: "TEXT ERORR"; /* No desig -> TEXT ERORR */
msg = " " + msg + " "; /* Blank addition(For disp effect)*/
no = msg.length(); /* Number of the letter */
param = getParameter("speed"); /* Display speed parameter reading*/
speed = (param != null)? /* Input determination */
Integer.parseInt(param): 50;
param = getParameter("font"); /* Font kind parameter reading */
fontname = (param != null)? /* Input determination */
param: "Dialog";
param = getParameter("fontsize"); /* Font size parameter reading */
fontsize = (param != null)? /* Input determination */
Integer.parseInt(param): 35;
param = getParameter("fonttype"); /* Font type parameter reading */
if ( "BOLD".equals (param) ) /* BOLD ? */
font = new Font(fontname,Font.BOLD,fontsize); /* Set BOLD */
else {
if ( "ITALIC".equals (param) ) /* ITALIC ? */
font = new Font(fontname,Font.ITALIC,fontsize); /* Set ITALIC */
else
font = new Font(fontname,Font.PLAIN,fontsize); /* Set PLAIN */
}
strHeight = (getFontMetrics(font)).getLeading(); /* Vertical position cal*/
strHeight -= (getFontMetrics(font)).getDescent();
strHeight += (getFontMetrics(font)).getAscent();
y_Point = (d.height + strHeight /* Set vertical position*/
- (getFontMetrics(font)).getDescent())/2;
param = getParameter("backred"); /* Background red reading */
backred = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
param = getParameter("backgreen"); /* Background green reading */
backgreen = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
param = getParameter("backblue"); /* Background blue reading */
backblue = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
backcolor = new Color /* Background color assembly */
(backred,backgreen,backblue);
param = getParameter("mojired"); /* Letter red reading */
mojired = (param != null)? /* Input determination */
Integer.parseInt(param): 0;
param = getParameter("mojigreen"); /* Letter green reading */
mojigreen = (param != null)? /* Input determination */
Integer.parseInt(param): 0;
param = getParameter("mojiblue"); /* Letter blue reading */
mojiblue = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
mojicolor = new Color /* Letter color assembly */
(mojired,mojigreen,mojiblue);
param = getParameter("shinred"); /* Shining letter red reading */
shinred = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
param = getParameter("shingreen"); /* Shining letter green reading */
shingreen = (param != null)? /* Input determination */
Integer.parseInt(param): 255;
param = getParameter("shinblue"); /* Shining letter blue reading */
shinblue = (param != null)? /* Input determination */
Integer.parseInt(param): 0;
shincolor = new Color /* Shining letter color assembly */
(shinred,shingreen,shinblue);
} /* End of initial method */
/************ Start (start) method *************/
public void start() {
if ( kicker == null ) { /* Kicker is null? ( Suspension? )*/
kicker = new Thread(this); /* YES: kicker setting */
kicker.start(); /* Setting of start */
}
} /* End of start method */
/*********** Repeatedly (run) method ***********/
public void run() {
int i; /* Counter variable declaration */
while (true) { /* Repeatedly */
try { /* Interruption confirmation */
for(i=0; i<no-1; i++) { /* Repeats to the number of letter*/
bef = msg.substring(0, i); /* Pickup letter from top */
cen = msg.substring(i, i+1);/* Pickup letter counter shows */
kicker.sleep(speed); /* Waiting ( mSEC ) */
repaint(); /* Drawing triggering */
}
kicker.sleep(speed); /* Waiting of next cycle ( mSEC ) */
} catch(InterruptedException e) {} /* Interruption processing */
}
} /* End of run method */
/*********** Renewal (update) method ***********/
public void update(Graphics g) { /* Lost of screen flickering */
paint(g); /* Drawing */
} /* End of update method */
/*********** Drawing (paint) method ************/
public void paint(Graphics g) {
grf.setColor(backcolor); /* Set display back color */
grf.fillRect(0,0,d.width,d.height); /* Display range is applied */
FontMetrics fm = getFontMetrics(font); /* Get font information */
grf.setFont(font); /* Set font */
width = fm.stringWidth(bef); /* Get position of shining letter */
grf.setColor(mojicolor); /* Set letter color */
grf.drawString(msg,0,y_Point); /* Set letter */
grf.setColor(shincolor); /* Set shining letter color */
grf.drawString(cen,width,y_Point); /* Set shining letter */
g.drawImage(offs,0,0,this); /* Drawing setting */
} /* End of paint method */
/************ Stop (stop) method ***************/
public void stop() {
if( kicker != null ) { /* Kicker is not null?( action? ) */
kicker.stop(); /* Set kicker to suspension */
kicker = null; /* Set kicker suspension condition*/
}
} /* End of stop method */
} /* End of class setting */
/**********************************************************************************
* End of Shining Letters Applet *
**********************************************************************************/