//
/* ----------------------------------------------------------------------------------------------
color.java タグ(色の指定) ver. 1.00 (JDK 1.02)
ueyama@infonet.co.jp 2006.03.13
update: 2008.07.28
---------------------------------------------------------------------------------------------- */
import java.applet.Applet;
import java.awt.*;
public class color extends Applet
{
int R=127, G=127, B=127; // RGB 初期値 (0x7f)
Image Img;
public void init()
{
String bg=getParameter("bgcolor"); // 背景色の設定
int bgc=Integer.valueOf(bg,16).intValue();
setBackground(new Color(bgc));
MediaTracker mt=new MediaTracker(this);
Img=getImage(getCodeBase(), getParameter("figure")); // 画像ファイルの読み込み
mt.addImage(Img, 0);
try
{
mt.waitForID(0);
}
catch(InterruptedException e){};
}
public boolean inside(int x, int a, int b)
{
return (x<=Math.max(a,b) && x>=Math.min(a,b)) ? true:false;
}
public void dsp_g(int x, int y, int m, int n, int c) // 図の表示
{
Graphics gx=getGraphics();
int w=0, h=0, ox=0, oy=0;
switch(c)
{
case 0: w=284; h= 15; ox= 0; oy= 0; break; // カラーバー
case 1: w= 9; h= 10; ox=284; oy= 0; break; // ▲
case 2: w= 11; h= 11; ox= 0; oy= 60; break; // 16進数
}
gx.clipRect(x,y,w,h);
gx.drawImage(Img, x-(ox+m*w), y-(oy+n*h), this);
gx.dispose();
}
public void dsp_hex(int x, int n) // 16進数の表示
{
int i, m, c;
c=(R+G+B)/384; // c: 表示色
String hex=Integer.toString(n,16);
if(hex.length()==1) hex="0"+hex;
for(i=1; i>=0; i--)
{
m=Integer.parseInt(hex.substring(i,i+1),16);
dsp_g(x+11*i, 12, m, c, 2);
}
}
public void dsp_col() // 色の諸情報の表示
{
Graphics gr=getGraphics();
gr.setColor(new Color(R*65536+G*256+B)); // 色の設定
gr.fillRect(90, 0, 104, 35); // RGB 色で長方形を塗りつぶす
if((R+G+B)/720==1) // 明るい色には枠をつける
{
gr.setColor(new Color(0xcccccc));
gr.drawRect(90, 0, 103, 34);
}
dsp_hex(110, R); // 16進数(カラーコード)を表示
dsp_hex(132, G);
dsp_hex(154, B);
dsp_g(10+R, 85, 0, 0, 1); // ▲ (R) の表示
dsp_g(10+G,115, 0, 1, 1); // ▲ (G)
dsp_g(10+B,145, 0, 2, 1); // ▲ (B)
}
public void paint(Graphics g)
{
int i,j;
g.clearRect(0, 0, size().width, size().height);
dsp_g( 0, 70, 0, 0, 0); // カラーバー R
dsp_g( 0,100, 0, 1, 0); // カラーバー G
dsp_g( 0,130, 0, 2, 0); // カラーバー B
dsp_g( 0,160, 0, 3, 0); // カラーバー W
dsp_col();
}
public boolean mouseDown(Event e, int x, int y) // マウスがクリックされたときの処理
{
int i=0,j=0;
if(y>70)
{
dsp_g(10+R, 85, 0, 4, 1); // ▲を消去
dsp_g(10+G,115, 0, 4, 1);
dsp_g(10+B,145, 0, 4, 1);
if(inside(x, 13,268) && inside(y, 70, 95)) R=x-13; // R の値を変更
if(inside(x, 13,268) && inside(y,100,125)) G=x-13; // G 〃
if(inside(x, 13,268) && inside(y,130,155)) B=x-13; // B 〃
if(inside(x, 13,268) && inside(y,160,175)) R=G=B=x-13; // 3色 〃
if(x< 13 && inside(y, 70, 95)) R=0; // R を 0 にする
if(x< 13 && inside(y,100,125)) G=0; // G 〃
if(x< 13 && inside(y,130,155)) B=0; // B 〃
if(x< 13 && inside(y,160,175)) R=G=B=0; // 3色 〃
if(x>270 && inside(y, 70, 95)) R=255; // R を 255 にする
if(x>270 && inside(y,100,125)) G=255; // G 〃
if(x>270 && inside(y,130,155)) B=255; // B 〃
if(x>270 && inside(y,160,175)) R=G=B=255; // 3色 〃
dsp_col();
}
return true;
}
public boolean mouseDrag(Event e, int x, int y) // マウスがドラッグされたときの処理
{
if(inside(x, 13, 268))
{
dsp_g(10+R, 85, 0, 4, 1); // ▲を消去
dsp_g(10+G,115, 0, 4, 1);
dsp_g(10+B,145, 0, 4, 1);
if(inside(y, 70, 95)) R=x-13; // R の値を変更
if(inside(y,100,125)) G=x-13; // G 〃
if(inside(y,130,155)) B=x-13; // B 〃
if(inside(y,160,175)) R=G=B=x-13; // 3色 〃
dsp_col();
}
return true;
}
}
//戻る