#!/usr/bin/perl use strict; use SWF::Builder; use Pod::Usage; my ($sa, $ca, $rx, $ry, $rot) = @ARGV; pod2usage(2) if ($rx == 0 or $ry == 0); my $r = ($rx > $ry) ? $rx : $ry; if ($r < 100) { $rx = $rx / $r * 100; $ry = $ry / $r * 100; $r = 100; } my $m = SWF::Builder->new(FrameRate => 15, FrameSize => [0, 0, $r * 4, $r * 4], BackgroundColor => 'ffffff'); my $font = $m->new_font("$ENV{SYSTEMROOT}/fonts/arial.ttf"); # You may need to change it. $m->new_shape->fillstyle('none')->linestyle(4, '0000ff')->ellipse($rx, $ry, $rot)->place->moveto($r*2, $r*2); $m->new_shape->fillstyle('none')->linestyle(4, '88888888')->circle($rx)->moveto(0,0)->circle($ry)->place->moveto($r*2, $r*2); $m->new_shape->fillstyle('none')->linestyle(1, '88888888')->starshape($r, 12, 0)->place->moveto($r*2, $r*2); $m->new_dynamic_text->font($font)->size(15)->color('000000')->text("($sa, $ca, $rx, $ry, $rot)")->place->moveto(10,10); my $ea1 = $m->new_mc; $ea1->new_shape->fillstyle('none')->linestyle(4, 'ff000088')->arcto($sa, $ca, $rx, $ry, $rot)->place; my $ea1i = $ea1->place; $ea1i->moveto($r, $r); setdd($ea1i); sub setdd { my $mc = shift; $mc->on('MouseMove')->compile(<'lcwin'); if (md) { _x = _root._xmouse-mx; _y = _root._ymouse-my; trace('('+_x+', '+_y+')'); } END $mc->on('Press')->compile(<'lcwin'); mx = _xmouse; my = _ymouse; md = 1; END $mc->on('Release')->compile('md = 0;', Trace=>'lcwin'); } $m->save('arctest.swf'); =head1 NAME arctest.plx - SWF::Builder sample script for elliptic arc. =head1 SYNOPSIS perl arctest.plx startangle centralangle x-radius y-radius rotationangle =head1 DESCRIPTION This writes arctest.swf, which contains a red arc you specified and a blue full ellipse. You can drag the arc to confirm if the arc is really a part of the full ellipse. =cut