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