//
/* ---------------------------------------------------------------------------------------------- font.java フォント ver. 2.00 (JDK 1.02) ueyama@infonet.co.jp 1998.09.04 update: 2007.09.14 ---------------------------------------------------------------------------------------------- */ import java.applet.Applet; import java.awt.*; import java.awt.image.*; public class font extends Applet { int Px[]=new int[384*384]; // アウトラインフォント データ int Bx[]={0,68,136,204,272,340,40,111,165,260,340}; // チェックボタン表示 X座標 int By[]={405,424}; // チェックボタン表示 Y座標 int Bw[]={60,60,60,60,60,84,60,40,82,56,44}; // チェックボタン表示幅 int Ck[]={5,0}; // ラジオボタンチェック位置 boolean Dt[][]=new boolean[96][96]; // ドットフォント 表示用データ boolean Bgr=false; // true: ドットフォント背景表示 boolean Chg=false; // true: ドットサイズ変更 int Dp[]={16, 12, 8, 6, 4, 0}; // ドットサイズデータ int Ds; // 表示用ドットサイズ int Dbg, Bgc; // ドットフォント背景色, 背景色 int Ox=19; // X 軸表示オフセット Image Img; Graphics gr; public void init() { String bg=getParameter("bgcolor"); Bgc=Integer.valueOf(bg,16).intValue(); setBackground(new Color(Bgc)); // 背景色 bg=getParameter("font_bgc"); Dbg=Integer.valueOf(bg,16).intValue(); // ドットフォント背景色 MediaTracker mt=new MediaTracker(this); Img=getImage(getCodeBase(), getParameter("figure")); // 画像ファイル mt.addImage(Img, 0); try { mt.waitForAll(); } catch(InterruptedException e){}; get_fontdata(); gr=getGraphics(); } public void update(Graphics g) { paint(g); } public boolean inside(int n, int a, int b) { return (n<=Math.max(a,b) && n>=Math.min(a,b)) ? true:false; } public void dsp_g(int x, int y, int m, int n, int c) // 画像の表示 { int w=0,h=0, ox=0,oy=0; switch(c) { case 0: w=384; h=384; ox= 0; oy= 0; break; // フォント case 1: w= 12; h= 13; ox=1536; oy= 0; break; // ラジオボタン case 2: w= 13; h= 13; ox=1560; oy= 0; break; // チェックボックス case 3: w= 69; h= 13; ox=1536; oy= 13; break; // 文字 } Graphics gx=gr.create(); gx.clipRect(x,y,w,h); if(c<3) gx.clearRect(x,y,w,h); gx.drawImage(Img, x-(ox+w*m), y-(oy+h*n), this); gx.dispose(); } public void get_fontdata() // フォントのピクセルデータ取得 { PixelGrabber pg=new PixelGrabber(Img,Ck[1]*384,0,384,384,Px,0,384); try { pg.grabPixels(); // フォントデータの読込 } catch(InterruptedException ie) {return;} if((pg.status() & ImageObserver.ABORT) != 0) return; } public void dsp_dotfont() // ドットフォントの表示 { int i,j,k,l,c; gr.setColor(Color.black); for(i=0; i<384; i+=Ds) // ドットの表示 { for(c=0,j=0; j<384; j+=Ds) { if(Chg) { for(k=0;k戻る0) dsp_dotfont(); // ドットフォントの表示 } public boolean mouseDown(Event e, int mx, int my) { int i,x,y; if(inside(mx,Ox,Ox+383) && my<384 && Ds>0) // ドットフォント表示のマウス編集 { x=(mx-Ox)/Ds; y=my/Ds; Dt[x][y]=!Dt[x][y]; // データの反転 if(Dt[x][y]) gr.setColor(Color.black); else gr.setColor(new Color((Bgr)?Dbg:Bgc)); gr.fillRect(x*Ds+Ox,y*Ds+1,Ds-1,Ds-1); // ドットの表示 } else { for(i=0; i<11; i++) if(inside(mx,Bx[i],Bx[i]+Bw[i]) && inside(my,By[i/6]-2,By[i/6]+17)) break; if(i<11) // チェックボタンをクリック { if(i<6) {Ck[0]=i; Ds=Dp[i]; Chg=true;} // ピクセル数 or アウトラインフォント else if(i<10) {Ck[1]=i-6; get_fontdata(); Chg=true;} // フォントの変更 if(i==10 && Ck[0]<5) Bgr=!Bgr; // 背景の変更 if(!(i==10 && Ck[0]==5)) repaint(); } } return true; } } //