use SWF::Element;
use SWF::File;

$filename = $0;
$filename = $1 if $filename =~ /(\w+).pl$/;

$new = SWF::File->new("$filename.swf", Version => 4);

$Xmax = 2040; # 4800;
$Ymax = 2040; # 6400;

$expect_output
 = "1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz"
 . " 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 F"
 . "izzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43"
 . " 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 F"
 . "izz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz"
 . " 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fiz"
 . "z Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 "
 . "98 Fizz Buzz";

# $expect_output = "Hello world! ";

# fizzbuzz.swf  SWF header

$new->FrameSize(0, 0, $Xmax, $Ymax);
$new->FrameRate(12.0);
# $new->FrameCount(1);

# fizzbuzz.swf  SWF tags

SWF::Element::Tag::SetBackgroundColor->new(
    BackgroundColor => SWF::Element::RGB->new(
        Red => 0x33,
        Green => 0x33,
        Blue => 0x33,
    ),
)->pack($new);

SWF::Element::Tag::DoAction->new(
    Actions => SWF::Element::Array::ACTIONRECORDARRAY->new([
        SWF::Element::ACTIONRECORD::ActionPush->new(
            Tag => 'ActionPush',
            DataList => SWF::Element::Array::ACTIONDATAARRAY->new([
                SWF::Element::ACTIONDATA::String->new("x"),
                SWF::Element::ACTIONDATA::String->new($expect_output),
            ]),
        ),
        SWF::Element::ACTIONRECORD->new(
            Tag => 'ActionSetVariable',
        ),
        SWF::Element::ACTIONRECORD->new(
            Tag => 'ActionEnd',
            LocalLabel => "EXIT",
        ),

    ]),
)->pack($new);

SWF::Element::Tag::DefineEditText->new(
    CharacterID => 1,
    Bounds => SWF::Element::RECT->new(
        Xmin => 20, 
        Ymin => 20,
        Xmax => $Xmax - 40, 
        Ymax => $Ymax - 40,
    ),
    Multiline => 1,
    ReadOnly => 0,
    WordWrap => 1,
    Border => 1,
    VariableName => "x",
    HasFont => 0,
    HasTextColor => 0,
    HasMaxLength => 0,
    HasLayout => 0,
    HasText => 0,
)->pack($new);

SWF::Element::Tag::PlaceObject->new(
    Depth => 1,
    CharacterID => 1,
    Matrix => SWF::Element::MATRIX->new(
        TranslateX => 0,
        TranslateY => 0,
    ),
)->pack($new);

SWF::Element::Tag::ShowFrame->new(
)->pack($new);


SWF::Element::Tag::End->new(
)->pack($new);

# $new->compress;
$new->close;

