📄 bitmapfont.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
package com.golden.gamedev.object.font;
import com.golden.gamedev.object.GameFont;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
public class BitmapFont
implements GameFont
{
private BufferedImage a[];
private int w;
private int h;
protected int charIndex[];
public BitmapFont(BufferedImage abufferedimage[], String s)
{
charIndex = new int[256];
a = abufferedimage;
w = abufferedimage[0].getWidth();
h = abufferedimage[0].getHeight();
for(int i = 0; i < charIndex.length; i++)
charIndex[i] = -1;
int j = s.length();
for(int k = 0; k < j; k++)
charIndex[s.charAt(k)] = k;
}
public BitmapFont(BufferedImage abufferedimage[])
{
this(abufferedimage, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
}
public int drawString(Graphics2D graphics2d, String s, int i, int j)
{
int k = s.length();
boolean flag = false;
for(int i1 = 0; i1 < k; i1++)
{
char c = s.charAt(i1);
int l;
if((l = charIndex[c]) != -1)
try
{
graphics2d.drawImage(a[l], i, j, null);
i += getWidth(c);
}
catch(Exception exception)
{
throw new RuntimeException(this + "\nunable to draw letter '" + s.charAt(i1) + "'[" + (i1 + 1) + "] in " + "\"" + s + "\"! charIndex = " + l + "\n" + "caused by : " + exception);
}
else
throw new RuntimeException(this + "\nunable to draw letter [" + s.charAt(i1) + "] (" + (i1 + 1) + ") in " + "[" + s + "] text! ");
}
return i;
}
public int drawString(Graphics2D graphics2d, String s, int i, int j, int k, int l)
{
if(i == 1)
return drawString(graphics2d, s, j, k);
if(i == 3)
return drawString(graphics2d, s, (j + l / 2) - getWidth(s) / 2, k);
if(i == 2)
return drawString(graphics2d, s, (j + l) - getWidth(s), k);
if(i == 4)
{
int i1;
if((i1 = l - getWidth(s)) <= 0)
return drawString(graphics2d, s, j, k);
int j1 = s.length();
int k1 = 0;
for(int l1 = 0; l1 < j1;)
if(s.charAt(l1++) == ' ')
k1++;
if(k1 > 0)
k1 = (i1 + w * k1) / k1;
int j2;
for(int i2 = 0; i2 < j1; i2 = j2 + 1)
{
if((j2 = s.indexOf(32, i2)) == -1)
j2 = j1;
String s1 = s.substring(i2, j2);
drawString(graphics2d, s1, j, k);
j += getWidth(s1) + k1;
}
return j;
} else
{
return 0;
}
}
public int drawText(Graphics2D graphics2d, String s, int i, int j, int k, int l, int i1,
int j1)
{
boolean flag = true;
int j2 = s.length();
int k2 = j1;
int k1;
int l1;
int i2;
for(k1 = l1 = i2 = 0; k1 < j2;)
{
char c = s.charAt(k1++);
k2 += getWidth(c);
if(c - 32 == 0)
i2 = k1 - 1;
if(k2 >= l)
{
if(flag)
{
drawString(graphics2d, s.substring(l1, i2), i, i != 2 ? j + j1 : j, k, l - j1);
flag = false;
} else
{
drawString(graphics2d, s.substring(l1, i2), i, j, k, l);
}
k += getHeight() + i1;
k2 = 0;
l1 = k1 = i2 + 1;
}
}
if(flag)
drawString(graphics2d, s.substring(l1, k1), i, i != 2 ? j + j1 : j, k, l - j1);
else
if(k2 != 0)
drawString(graphics2d, s.substring(l1, k1), i != 2 ? 1 : 2, j, k, l);
return k + getHeight();
}
public BufferedImage[] getImageFont()
{
return a;
}
public void setImageFont(BufferedImage abufferedimage[], String s)
{
a = abufferedimage;
w = abufferedimage[0].getWidth();
h = abufferedimage[0].getHeight();
for(int i = 0; i < charIndex.length; i++)
charIndex[i] = -1;
int j = s.length();
for(int k = 0; k < j; k++)
charIndex[s.charAt(k)] = k;
}
public int getWidth(char c)
{
return w;
}
public int getWidth(String s)
{
return s.length() * w;
}
public int getHeight()
{
return h;
}
public String toString()
{
return super.toString() + " " + "[totalChar=" + a.length + ", width=" + w + ", height=" + h + "]";
}
public boolean isAvailable(char c)
{
if(charIndex[c] != -1)
return true;
return false;
JVM INSTR pop ;
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -