dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/FontFile.java

67 lines
2.1 KiB
Java
Raw Permalink Normal View History

2016-12-17 08:34:47 +00:00
package com.bytezone.diskbrowser.applefile;
2016-12-22 22:41:28 +00:00
import java.awt.image.DataBuffer;
2016-12-17 08:34:47 +00:00
2019-11-02 06:56:06 +00:00
// -----------------------------------------------------------------------------------//
2019-11-01 23:29:36 +00:00
public class FontFile extends CharacterList
2019-11-02 06:56:06 +00:00
// -----------------------------------------------------------------------------------//
2016-12-17 08:34:47 +00:00
{
2019-11-01 23:29:36 +00:00
private static final int charsX = 16;
2016-12-17 08:34:47 +00:00
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2019-11-01 06:39:23 +00:00
public FontFile (String name, byte[] buffer, int address)
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2016-12-17 08:34:47 +00:00
{
2019-11-09 13:23:30 +00:00
super (name, buffer);
2016-12-22 22:41:28 +00:00
2019-11-01 23:29:36 +00:00
loadAddress = address;
2019-11-09 13:23:30 +00:00
int ptr = 0;
while (ptr < buffer.length)
{
characters.add (new FontFileCharacter (buffer, ptr));
ptr += sizeY;
}
buildImage (borderX, borderY, gapX, gapY, sizeX, sizeY, charsX);
2016-12-17 08:34:47 +00:00
}
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2019-11-01 23:29:36 +00:00
public static boolean isFont (byte[] buffer)
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2019-11-01 03:30:19 +00:00
{
2019-11-01 23:29:36 +00:00
if (buffer.length % 8 != 0)
return false;
2021-03-28 06:44:36 +00:00
2019-11-01 23:29:36 +00:00
for (int i = 0; i < 8; i++)
if (buffer[i] != 0 && buffer[i] != 0x7F)
return false;
2021-03-28 06:44:36 +00:00
2019-11-01 23:29:36 +00:00
return true;
2019-11-01 03:30:19 +00:00
}
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2019-11-01 23:29:36 +00:00
class FontFileCharacter extends Character
2019-11-02 06:56:06 +00:00
// ---------------------------------------------------------------------------------//
2016-12-17 08:34:47 +00:00
{
2019-11-02 06:56:06 +00:00
// -------------------------------------------------------------------------------//
2019-11-01 23:29:36 +00:00
public FontFileCharacter (byte[] buffer, int ptr)
2019-11-02 06:56:06 +00:00
// -------------------------------------------------------------------------------//
2016-12-17 08:34:47 +00:00
{
2019-11-09 13:23:30 +00:00
super (sizeX, sizeY);
2016-12-22 22:41:28 +00:00
DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0;
2019-11-01 23:29:36 +00:00
for (int i = 0; i < sizeY; i++)
2016-12-17 08:34:47 +00:00
{
2019-11-01 23:29:36 +00:00
int value = buffer[ptr++] & 0xFF;
for (int j = 0; j < sizeX; j++)
{
dataBuffer.setElem (element++, (value & 0x01) == 0 ? 0 : 0xFF);
value >>>= 1;
}
2016-12-17 08:34:47 +00:00
}
}
}
}