AbstractFont.java 4.15 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.day.image.font;

import com.day.image.Layer;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.text.CharacterIterator;

public abstract class AbstractFont {
    public static final int PLAIN = 0;
    public static final int BOLD = 1;
    public static final int ITALIC = 2;
    public static final int UNDERLINE = 4;
    public static final int STRIKEOUT = 8;
    public static final int TTFONTERSCALE = 256;
    public static final int TTFONTERLINESPACING = 512;
    public static final int ALIGN_VBASE = 15;
    public static final int ALIGN_TOP = 0;
    public static final int ALIGN_BASE = 1;
    public static final int ALIGN_BOTTOM = 2;
    public static final int ALIGN_HBASE = 240;
    public static final int ALIGN_LEFT = 0;
    public static final int ALIGN_CENTER = 16;
    public static final int ALIGN_RIGHT = 32;
    public static final int ALIGN_FULL = 64;
    public static final int ROTBASE = 3840;
    public static final int ROTODD = 768;
    public static final int ROT90 = 256;
    public static final int ROT270 = 512;
    public static final int ROT180 = 1024;
    public static final int DRAWBASE = 61440;
    public static final int DRAW_UNDERLINE = 4096;
    public static final int DRAW_STRIKEOUT = 8192;
    public static final int DRAW_OUTLINE = 16384;
    public static final int TTBASE = 983040;
    public static final int TTANTIALIASED = 65536;
    public static final int TTHINTED = 131072;
    public static final int TTOVERSAMPLING = 262144;
    @Deprecated
    public static final int TTUNHINTED = 524288;

    public static String createFontFileName(String faceName, int size, int style) {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < faceName.length(); ++i) {
            char c = faceName.charAt(i);
            if (Character.isLetterOrDigit(c)) {
                buf.append(Character.toLowerCase(c));
                continue;
            }
            buf.append('_');
        }
        buf.append(size);
        buf.append(AbstractFont.styleToString(style));
        return buf.toString();
    }

    public static String styleToDescription(int style) {
        if (style == 0) {
            return "Plain";
        }
        StringBuilder buf = new StringBuilder();
        if ((style & 1) != 0) {
            buf.append("Bold ");
        }
        if ((style & 2) != 0) {
            buf.append("Italic ");
        }
        if ((style & 4) != 0) {
            buf.append("Underline ");
        }
        if ((style & 8) != 0) {
            buf.append("Strikeout ");
        }
        return buf.toString().trim();
    }

    public static String styleToString(int style) {
        char[] st = new char[4];
        int i = 0;
        if ((style & 1) != 0) {
            st[i++] = 98;
        }
        if ((style & 2) != 0) {
            st[i++] = 105;
        }
        if ((style & 4) != 0) {
            st[i++] = 117;
        }
        if ((style & 8) != 0) {
            st[i++] = 115;
        }
        return String.valueOf(st, 0, i);
    }

    public static int stringToStyle(String style) {
        int type = 0;
        if (style.indexOf(98) >= 0) {
            type |= true;
        }
        if (style.indexOf(105) >= 0) {
            type |= 2;
        }
        if (style.indexOf(117) >= 0) {
            type |= 4;
        }
        if (style.indexOf(115) >= 0) {
            type |= 8;
        }
        return type;
    }

    public abstract Rectangle2D getTextExtent(int var1, int var2, int var3, int var4, String var5, int var6, double var7, int var9);

    public abstract int drawText(Layer var1, int var2, int var3, int var4, int var5, String var6, Paint var7, Stroke var8, int var9, double var10, int var12);

    public abstract double getHeight();

    public abstract double getAscent();

    public abstract double getDescent();

    public abstract boolean canDisplay(char var1);

    public abstract int canDisplayUpTo(CharacterIterator var1, int var2, int var3);

    public abstract int canDisplayUpTo(String var1);

    public abstract int canDisplayUpTo(char[] var1, int var2, int var3);

    public abstract String toString();

    public abstract Font getAwtFont();
}