?? icons.java
字號:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
import java.io.DataInputStream;
import java.io.InputStream;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class Icons
implements Runnable
{//此類主要對圖標進行操作;
public static final int C_SystemHeadBmp_Num = 85;//好像是系統圖標總數為85;
private final int C_BMP_Size = 112;//系統圖標尺寸為112字節;
private int bmpLoaded;//存放成功加載的圖標數;
private Thread thread;//線程對像;
private int palette[] = {
0, 0x800000, 32768, 0x808000, 128, 0x800080, 32896, 0x808080, 0xc0c0c0, 0xff0000,
65280, 0xffff00, 255, 0xff00ff, 65535, 0xffffff
};//定義一個16色的設色板;
private Image iconImg[];//存放成功加載的圖標,一共85個;
Image imgHead[];//存放在線、離線、離開三個圖標;
Image imgSys[];//存放系統消息、離開、隱身三個圖標;
public Icons()
{//構造函數,對一些變量進行實始化;
bmpLoaded = 0;
thread = null;
imgHead = new Image[4];
imgSys = new Image[4];
iconImg = new Image[85];
}
public void init()
{//初始化進程;
loadScreenBmp();
loadSysBmp();
thread = new Thread(this);
thread.setPriority(1);
thread.start();
}
public void run()
{//運行接口函數;裝入/bmp.bin文件,該文件中存放了85個圖標,每個圖標占用112字節;
byte abyte0[] = new byte[112];
try
{
InputStream inputstream = getClass().getResourceAsStream("/bmp.bin");
DataInputStream datainputstream = new DataInputStream(inputstream);
for(int i = 0; i < 85; i++)
{
datainputstream.read(abyte0, 0, 112);
Image image = Image.createImage(14, 14);
Graphics g = image.getGraphics();
drawIcon(abyte0, g, 0, 0, palette);
iconImg[i] = image;
bmpLoaded++;//成功加載的圖標數;
}
}
catch(Exception exception) { }
}
private void drawIcon(byte abyte0[], Graphics g, int i, int j, int ai[])
{//在i,j處繪制一個ICON到Graphics對像中去,該ICON為14*14的16色的圖像,即每點
//的顏色值為4位,一字節可存放兩個點的顏色值;因此共需98字節的內存來存放一個ICON;
//該ICON是從底行由左往右開始繪起;
//參數說明:byte abyte0[]:圖像數據
// Graphics g, 輸出對像
// int i, int j, 座標
// int ai[], 設色板;
int i1 = 0;
for(int k = j + 13; k >= j; k--)
{
for(int l = i; l < i + 14;)
{
int j1 = (abyte0[i1] & 0xf0) >> 4;
if(j1 < 15)
{
g.setColor(ai[j1]);
g.drawLine(l, k, l, k);
}
l++;
j1 = abyte0[i1] & 0xf;
if(j1 < 15)
{
g.setColor(ai[j1]);
g.drawLine(l, k, l, k);
}
l++;
i1++;
}
i1++;
}
}
private void loadScreenBmp()
{//裝入在線、離線、離開圖像(1-1.png、1-2.png、1-3.png)到imgHead數組中去;
Object obj = null;
for(int i = 0; i < 3; i++)
{
String s = "/1-" + (i + 1) + ".png";
imgHead[i] = PkgTools.createImage(s);
}
}
private void loadSysBmp()
{//裝入系統消息、離開、隱身圖像(2sys.png、3sys.png、4sys.png)到imgSys數組中去;
Object obj = null;
for(int i = 1; i < 4; i++)
{
String s = "/" + (i + 1) + "sys.png";
imgSys[i] = PkgTools.createImage(s);
}
imgSys[0] = imgHead[0];
}
public Image getSysImage(int i)
{//取得系統圖標
return imgSys[i];
}
public Image getHeadImage(int i, int j)
{//根據狀態取得圖標句柄;
int k = i / 3;
switch(j)
{
case 20: // '\024'
case 40: // '('
return imgHead[1];
case 30: // '\036'
return imgHead[2];
default:
return imgHead[1];
case 10: // '\n'
break;
}
if(k < bmpLoaded)
return iconImg[k];
if(j == 10)
return imgHead[0];
else
return imgHead[1];
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -