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
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2019-11-01 23:29:36 +00:00
|
|
|
public class FontFile extends CharacterList
|
2016-12-17 08:34:47 +00:00
|
|
|
{
|
2019-11-01 23:29:36 +00:00
|
|
|
private static final int charsX = 16;
|
|
|
|
private static final int charsY = 6;
|
2019-11-01 03:30:19 +00:00
|
|
|
|
2016-12-17 08:34:47 +00:00
|
|
|
List<Character> characters = new ArrayList<Character> ();
|
|
|
|
|
2019-11-01 06:39:23 +00:00
|
|
|
public FontFile (String name, byte[] buffer, int address)
|
2016-12-17 08:34:47 +00:00
|
|
|
{
|
2019-11-01 23:29:36 +00:00
|
|
|
super (name, buffer, charsX, charsY);
|
2016-12-22 22:41:28 +00:00
|
|
|
|
2019-11-01 23:29:36 +00:00
|
|
|
loadAddress = address;
|
2016-12-17 08:34:47 +00:00
|
|
|
}
|
|
|
|
|
2019-11-01 23:29:36 +00:00
|
|
|
public static boolean isFont (byte[] buffer)
|
2019-11-01 03:30:19 +00:00
|
|
|
{
|
2019-11-01 23:29:36 +00:00
|
|
|
if (buffer.length % 8 != 0)
|
|
|
|
return false;
|
|
|
|
for (int i = 0; i < 8; i++)
|
|
|
|
if (buffer[i] != 0 && buffer[i] != 0x7F)
|
|
|
|
return false;
|
|
|
|
return true;
|
2019-11-01 03:30:19 +00:00
|
|
|
}
|
|
|
|
|
2019-11-01 23:29:36 +00:00
|
|
|
@Override
|
|
|
|
Character createCharacter (byte[] buffer, int ptr)
|
2017-03-19 09:52:36 +00:00
|
|
|
{
|
2019-11-01 23:29:36 +00:00
|
|
|
return new FontFileCharacter (buffer, ptr);
|
2017-03-19 09:52:36 +00:00
|
|
|
}
|
|
|
|
|
2019-11-01 23:29:36 +00:00
|
|
|
class FontFileCharacter extends Character
|
2016-12-17 08:34:47 +00:00
|
|
|
{
|
2019-11-01 23:29:36 +00:00
|
|
|
public FontFileCharacter (byte[] buffer, int ptr)
|
2016-12-17 08:34:47 +00:00
|
|
|
{
|
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
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|