Image::TextMode::Format::XBin - read and write XBin files


Image-TextMode documentation Contained in the Image-TextMode distribution.

Index


Code Index:

NAME

Top

Image::TextMode::Format::XBin - read and write XBin files

DESCRIPTION

Top

XBin stands for "eXtended BIN" -- an extention to the normal raw-image BIN files.

XBin features:

* allows for binary images up to 65536 columns wide, and 65536 lines high
* can have an alternate set of palette colors either in blink or in non-blink mode
* can have different textmode fonts from 1 to 32 scanlines high, consisting of either 256 or 512 different characters
* can be compressed

XBin file stucture:

    +------------+
    | Header     |
    +------------+
    | Palette    |
    +------------+
    | Font       |
    +------------+
    | Image Data |
    +------------+

Note, the only required element is a header. See the XBin specs for for information. http://www.acid.org/info/xbin/xbin.htm

ACCESSORS

Top

* header - A header hashref containing an id, width, height, font size and any extra flags

METHODS

Top

new( %args )

Creates a XBin instance.

has_palette( )

Retrieves palette status from the flag byte in the header.

has_font( )

Retrieves font status from the flag byte in the header.

is_compressed( )

Retrieves compressed status from the flag byte in the header.

has_fivetwelve_chars( )

Retrieves 512 character font status from the flag byte in the header.

extensions( )

Returns 'xb', 'xbin'.

AUTHOR

Top

Brian Cassidy <bricas@cpan.org>

COPYRIGHT AND LICENSE

Top


Image-TextMode documentation Contained in the Image-TextMode distribution.

package Image::TextMode::Format::XBin;

use Moose;

# Flag byte constants
my $FLAG_PALETTE          = 1;
my $FLAG_FONT             = 2;
my $FLAG_COMPRESSED       = 4;
my $FLAG_NON_BLINK        = 8;
my $FLAG_FIVETWELVE_CHARS = 16;

extends 'Image::TextMode::Format', 'Image::TextMode::Canvas';

has 'header' => (
    is      => 'rw',
    isa     => 'HashRef',
    default => sub {
        {   id      => 'XBIN',
            eofchar => chr( 26 ),
            map { $_ => 0 } qw( width height fontsize flags )
        };
    }
);

sub has_palette {
    shift->header->{ flags } & $FLAG_PALETTE;
}

sub has_font {
    shift->header->{ flags } & $FLAG_FONT;
}

sub is_compressed {
    shift->header->{ flags } & $FLAG_COMPRESSED;
}

sub is_non_blink {
    shift->header->{ flags } & $FLAG_NON_BLINK;
}

sub has_fivetwelve_chars {
    shift->header->{ flags } & $FLAG_FIVETWELVE_CHARS;
}

sub extensions { return 'xb', 'xbin' }

no Moose;

__PACKAGE__->meta->make_immutable;

1;