Merge pull request #5 from cybernesto/printshopgraphics

Added preview of Print Shop Graphics
This commit is contained in:
Denis Molony 2018-04-26 06:43:37 +10:00 committed by GitHub
commit 57b391478c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,43 @@
package com.bytezone.diskbrowser.applefile;
import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
public class PrintShopGraphic extends AbstractFile
{
public PrintShopGraphic (String name, byte[] buffer)
{
super (name, buffer);
image = new BufferedImage (88, 52, BufferedImage.TYPE_BYTE_GRAY);
Graphics2D g2d = image.createGraphics ();
g2d.setComposite (AlphaComposite.getInstance (AlphaComposite.SRC_OVER, (float) 1.0));
DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0;
for (int ptr = 0; ptr < 572; ptr++)
{
for (int px = 7; px >= 0; px--)
{
int val = (buffer[ptr] >> px) & 0x01;
dataBuffer.setElem (element++, val == 0 ? 255 : 0);
}
}
g2d.dispose ();
}
@Override
public String getText ()
{
StringBuilder text = new StringBuilder ();
text.append (String.format ("File Name : %s%n", name));
text.append (String.format ("File size : %,d%n", buffer.length));
return text.toString ();
}
}

View File

@ -228,6 +228,8 @@ abstract class AbstractCatalogEntry implements AppleFileSource
else else
appleFile = new AssemblerProgram (name, exactBuffer, loadAddress); appleFile = new AssemblerProgram (name, exactBuffer, loadAddress);
} }
else if ((loadAddress == 0x5800 || loadAddress == 0x7800) && reportedLength == 0x240)
appleFile = new PrintShopGraphic(name, exactBuffer);
else else
{ {
appleFile = new AssemblerProgram (name, exactBuffer, loadAddress); appleFile = new AssemblerProgram (name, exactBuffer, loadAddress);