⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemfont.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 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 com.golden.gamedev.util.ImageUtil;
import java.awt.*;
import java.awt.image.BufferedImage;

public class SystemFont
    implements GameFont
{

    private final Font a;
    private final FontMetrics b;
    private int c;
    private int d;
    private Color e;

    public SystemFont(Font font, Color color)
    {
        a = font;
        e = color;
        Graphics2D graphics2d = ImageUtil.createImage(1, 1).createGraphics();
        b = graphics2d.getFontMetrics(font);
        c = b.getMaxAscent() + b.getMaxDescent() + b.getLeading();
        d = c - b.getDescent();
        graphics2d.dispose();
    }

    public SystemFont(Font font)
    {
        this(font, null);
    }

    public int drawString(Graphics2D graphics2d, String s, int i, int j)
    {
        if(graphics2d.getFont() != a)
            graphics2d.setFont(a);
        if(e != null)
            graphics2d.setColor(e);
        graphics2d.drawString(s, i, j + d);
        return i + getWidth(s);
    }

    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 + k1 * getWidth(' ')) / 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 c1 = s.charAt(k1++);
            k2 += getWidth(c1);
            if(c1 - 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 Font getFont()
    {
        return a;
    }

    public FontMetrics getFontMetrics()
    {
        return b;
    }

    public Color getColor()
    {
        return e;
    }

    public void setColor(Color color)
    {
        e = color;
    }

    public int getWidth(String s)
    {
        return b.stringWidth(s);
    }

    public int getWidth(char c1)
    {
        return b.charWidth(c1);
    }

    public int getHeight()
    {
        return c;
    }

    public String toString()
    {
        return super.toString() + " " + "[basefont=" + a + ", color=" + e + "]";
    }

    public boolean isAvailable(char c1)
    {
        return true;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -