#!/usr/bin/perl use strict; use SWF::Builder; use Getopt::Long; use Pod::Usage; #use Encode; my $fp = $ENV{SYSTEMROOT}.'/fonts/'; # for Windows. my ($mes, $font, $size, $color, $back, $framesize, $filename, $help) = ('SWF::Builder', 'ariali.ttf', 20, 'ffffff', '000000', '234x60', 'flowmes.swf', 0); GetOptions('font=s' => \$font, 'size=i' => \$size, 'color=s' => \$color, 'back=s' => \$back, 'framesize=s' => \$framesize, 'file=s', \$filename, 'help', \$help); pod2usage(-verbose=>2) if $help; pod2usage(1) unless @ARGV; my @framesize = map {$_-1} split /[x,]/, $framesize; my $mes = shift; #$mes = Encode::decode('ShiftJIS', $mes); my $y = ($framesize[1] - $size)>>1; $font = $fp.$font unless -e $font; my $m = SWF::Builder->new(FrameRate => 60, FrameSize => [0,0,@framesize], BackgroundColor => $back); my $font = $m->new_font($font); my $text = $m->new_static_text ->font($font) ->size($size) ->color($color) ->text($mes); ; my @tbox = $text->get_bbox; $tbox[2]+=10; my $maskbox = $m->new_shape ->linestyle('none') ->fillstyle('ffffff') ->box(@tbox); my $maskbox2 = $m->new_shape ->linestyle('none') ->fillstyle('ffffff') ->box(0,0,@framesize); my $maskbox3 = $m->new_shape ->linestyle('none') ->fillstyle('ffffff') ->box(0,0,11,$framesize[1]); my $mi = $maskbox->place_as_mask; my $mi2 = $maskbox2->place_as_mask; my $mi3 = $maskbox3->place_as_mask; my $ti = $text->place(clip_with=>$mi); $ti->moveto(10,$y); my $ti2 = $text->place(clip_with=>$mi2); $ti2->scale(500,1)->moveto(10,$y); my $ti3 = $text->place(clip_with=>$mi3); $ti3->scale(3,1)->moveto(10,$y); for (0..$tbox[2]) { $mi->moveto(10-$tbox[2]+$_,$y); $mi3->moveto(10+$_,0); $ti3->moveto(10-2*($_+1),$y); $mi2->moveto(10+11+$_,0); $ti2->moveto(10+11-499*($_+5),$y); } $m->save($filename); __END__ =head1 NAME flowmes.plx - Creates flow-in-message movie. =head1 SYNOPSIS flowmes.plx [options] message Options and defaults --font=aliali.ttf Set font. --size=20 Set letter size. --color=ffffff Set letter color. --back=000000 Set background color. --framesize=234x60 Set frame size. Width x height. --file=flowmes.swf Set output file name. --help Show help. =head1 DESCRIPTION This is a sample program of SWF::Builder. It creates a flow-in-message(?) movie. =head1 TODO Does anyone know what this effect is called? =head1 COPYRIGHT Copyright 2003 Yasuhiro Sasama (ySas), This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.