| Image-XBin documentation | Contained in the Image-XBin distribution. |
Image::XBin::Palette - Manipulate XBin palette data
use Image::XBin::Palette; # Read the data... my $pal = Image::XBin::Palette->new( $data ); # Get my $rgb = $pal->get( $index ); # Set $pal->set( $index, $rgb ); # Get data suitable for saving... my $out = $pal->as_string; # Clear the data $pal->clear;
Xbin images can contain palette (16 indexes) data. This module will allow you to create, and manipulate that data.
Creates a new Image::XBin::Palette object. Unpacks 16 rgb triples.
Explicitly reads in data.
Returns the palette as a pack()'ed string - suitable for saving in an XBin.
Get the rgb triple at index $index
Write an rgb triple at index $index
Clears any in-memory data.
Copyright 2003-2009 by Brian Cassidy
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Image-XBin documentation | Contained in the Image-XBin distribution. |
package Image::XBin::Palette;
use strict; use warnings; our $VERSION = '0.06';
sub new { my $class = shift; my $data = shift; my $self = {}; bless $self, $class; $self->clear; $self->read( $data ) if $data; return $self; }
sub read { my $self = shift; my $data = shift; $self->{ data } = $data if ref( $data ) eq 'ARRAY'; my @palette = unpack( 'C*', $data ); my $palette = []; for my $i ( 0..15 ) { push @$palette, []; for my $j ( 0..2 ) { push @{ $palette->[ $#{ $palette } ] }, $palette[ $i * 3 + $j ]; } } $self->{ data } = $palette; }
sub as_string { my $self = shift; my $output; for my $color ( @{ $self->{ data } } ) { $output .= pack( 'C', $_ ) for @{ $color }; } return $output; }
sub get { my $self = shift; my $index = shift; return $self->{ data }->[ $index ]; }
sub set { my $self = shift; my ( $index, $rgb ) = @_; $self->{ data }->[ $index ] = $rgb; }
sub clear { my $self = shift; $self->{ data } = []; }
1;