2019-11-01 23:29:36 +00:00
|
|
|
package com.bytezone.diskbrowser.applefile;
|
|
|
|
|
|
|
|
import java.awt.AlphaComposite;
|
|
|
|
import java.awt.Graphics2D;
|
|
|
|
import java.awt.image.BufferedImage;
|
2019-11-02 03:06:57 +00:00
|
|
|
import java.awt.image.DataBuffer;
|
2019-11-01 23:29:36 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2019-11-07 03:06:09 +00:00
|
|
|
import com.bytezone.diskbrowser.utilities.Utility;
|
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// -----------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
abstract class CharacterList extends AbstractFile
|
2019-11-02 06:56:06 +00:00
|
|
|
// -----------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
|
|
|
static final int borderX = 3;
|
|
|
|
static final int borderY = 3;
|
|
|
|
static final int gapX = 3;
|
|
|
|
static final int gapY = 3;
|
|
|
|
|
|
|
|
static final int sizeX = 7;
|
|
|
|
static final int sizeY = 8;
|
|
|
|
|
|
|
|
List<Character> characters = new ArrayList<> ();
|
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-09 13:23:30 +00:00
|
|
|
public CharacterList (String name, byte[] buffer)
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
2019-11-09 13:23:30 +00:00
|
|
|
super (name, buffer);
|
2019-11-01 23:29:36 +00:00
|
|
|
}
|
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-09 13:23:30 +00:00
|
|
|
void buildImage (int borderX, int borderY, int gapX, int gapY, int sizeX, int sizeY,
|
|
|
|
int charsX)
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
2019-11-09 13:23:30 +00:00
|
|
|
int charsY = (characters.size () - 1) / charsX + 1;
|
|
|
|
image = new BufferedImage ( //
|
|
|
|
Utility.dimension (charsX, borderX, sizeX, gapX), //
|
|
|
|
Utility.dimension (charsY, borderY, sizeY, gapY), //
|
2019-11-01 23:29:36 +00:00
|
|
|
BufferedImage.TYPE_BYTE_GRAY);
|
|
|
|
|
|
|
|
Graphics2D g2d = image.createGraphics ();
|
|
|
|
g2d.setComposite (AlphaComposite.getInstance (AlphaComposite.SRC_OVER, (float) 1.0));
|
|
|
|
|
2019-11-09 13:23:30 +00:00
|
|
|
int count = 0;
|
2019-11-01 23:29:36 +00:00
|
|
|
int x = borderX;
|
|
|
|
int y = borderY;
|
|
|
|
|
2019-11-09 13:23:30 +00:00
|
|
|
for (Character character : characters)
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
2019-11-09 13:23:30 +00:00
|
|
|
g2d.drawImage (character.image, x, y, null);
|
2019-11-01 23:29:36 +00:00
|
|
|
if (++count % charsX == 0)
|
|
|
|
{
|
|
|
|
x = borderX;
|
|
|
|
y += sizeY + gapY;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
x += sizeX + gapX;
|
|
|
|
}
|
|
|
|
|
|
|
|
g2d.dispose ();
|
|
|
|
}
|
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-02 03:06:57 +00:00
|
|
|
@Override
|
|
|
|
public String getText ()
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-02 03:06:57 +00:00
|
|
|
{
|
|
|
|
StringBuilder text = new StringBuilder ("Name : " + name + "\n\n");
|
|
|
|
|
|
|
|
for (Character character : characters)
|
|
|
|
{
|
|
|
|
text.append (character);
|
|
|
|
text.append ("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
return text.toString ();
|
|
|
|
}
|
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
class Character
|
2019-11-02 06:56:06 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
2019-11-09 13:23:30 +00:00
|
|
|
BufferedImage image;
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------//
|
|
|
|
public Character (int sizeX, int sizeY)
|
|
|
|
// -------------------------------------------------------------------------------//
|
|
|
|
{
|
|
|
|
image = new BufferedImage (sizeX, sizeY, BufferedImage.TYPE_BYTE_GRAY);
|
|
|
|
}
|
2019-11-01 23:29:36 +00:00
|
|
|
|
2019-11-02 06:56:06 +00:00
|
|
|
// -------------------------------------------------------------------------------//
|
2019-11-02 03:06:57 +00:00
|
|
|
@Override
|
|
|
|
public String toString ()
|
2019-11-02 06:56:06 +00:00
|
|
|
// -------------------------------------------------------------------------------//
|
2019-11-01 23:29:36 +00:00
|
|
|
{
|
2019-11-02 03:06:57 +00:00
|
|
|
StringBuilder text = new StringBuilder ();
|
|
|
|
DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
|
|
|
|
int element = 0;
|
|
|
|
|
|
|
|
for (int i = 0; i < sizeY; i++)
|
|
|
|
{
|
|
|
|
for (int j = 0; j < sizeX; j++)
|
|
|
|
text.append (dataBuffer.getElem (element++) == 0 ? "." : "X");
|
|
|
|
text.append ("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
return text.toString ();
|
2019-11-01 23:29:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|