NAME
Prima::Image::Animate - animate gif and webp files
DESCRIPTION
The module provides high-level access to GIF and WebP animation sequences.
SYNOPSIS
use Prima qw(Application Image::Animate);
my $x = Prima::Image::Animate->load($ARGV[0]);
die $@ unless $x;
my ( $X, $Y) = ( 0, 100);
my $want_background = 1; # 0 for eventual transparency
my $background = $::application-> get_image( $X, $Y, $x-> size);
$::application-> begin_paint;
while ( my $info = $x-> next) {
my $frame = $background-> dup;
$frame-> begin_paint;
$x-> draw_background( $frame, 0, 0) if $want_background;
$x-> draw( $frame, 0, 0);
$::application-> put_image( $X, $Y, $frame);
$::application-> sync;
select(undef, undef, undef, $info-> {delay});
}
$::application-> put_image( $X, $Y, $g);
new $CLASS, %OPTIONS
Creates an empty animation container. If $OPTIONS{images}
is given, it is expected to be an array of images, best if loaded from gif files with loadExtras
and iconUnmask
parameters set ( see Prima::image-load for details).
load $SOURCE, %OPTIONS
Loads GIF or WebP animation sequence from file or stream $SOURCE
. Options are the same as understood by Prima::Image::load
, and are passed down to it.
add $IMAGE
Appends an image frame to the container.
bgColor
Return the background color specified by the sequence as the preferred background color to use when there is no specific background to superimpose the animation to.
current
Return index of the current frame
draw $CANVAS, $X, $Y
Draws the current composite frame on $CANVAS
at the given coordinates.
draw_background $CANVAS, $X, $Y
Fills the background on $CANVAS
at the given coordinates if file provides that. Returns whether the canvas was tainted or not.
height
Returns height of the composite frame.
icon
Creates and returns an icon object off the current composite frame.
image
Creates and returns an image object off the current composite frame. The transparent pixels on the image are replaced with the preferred background color.
is_stopped
Returns true if the animation sequence was stopped, false otherwise. If the sequence was stopped, the only way to restart it is to call reset
.
length
Returns total animation length (without repeats) in seconds.
loopCount [ INTEGER ]
Sets and returns number of loops left, undef for indefinite.
next
Advances one animation frame. The step triggers changes to the internally kept AND and XOR masks that create effect of transparency, if needed. The method return a hash, where the following field are initialized:
- left, bottom, right, top
-
Coordinates of the changed area since the last frame was updated.
- delay
-
Time ins seconds how long the frame is expected to be displayed.
reset
Resets the animation sequence. This call is necessary either when image sequence was altered, or when sequence display restart is needed.
size
Returns width and height of the composite frame.
total
Return number fo frames
width
Returns width of the composite frame.
SEE ALSO
Prima::image-load, http://www.the-labs.com/GIFMerge/
AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>.