📄 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 + -