2011年2月13日日曜日

SWF DefineShape parser

SWF DefineShape parser in PHP.

** essence




  • http://openpear.org/package/IO_SWF/src/trunk/IO/SWF/Shape.php






  • $this->_shapeBounds = IO_SWF_Type::parseRECT($reader);
    $this->_parseFILLSTYLEARRAY($reader);
    $this->_parseLINESTYLEARRAY($reader);
    $reader->byteAlign();
    $numFillBits = $reader->getUIBits(4);
    $numLineBits = $reader->getUIBits(4);
    while ($done === false) {
        $typeFlag = $reader->getUIBit();
        if ($typeFlag == 0) {
            $endOfShape = $reader->getUIBits(5);
            if ($endOfShape == 0) {
                $done = true;
            } else {
                // StyleChangeRecord
                ...
            }
        } else {
            $straightFlag = $reader->getUIBit();
            if ($straightFlag) {
                 // StraightEdgeRecord
                 ...
                $stateNewStyles = $reader->getUIBit();
                if ($stateNewStyles) {
                    $this->_parseFILLSTYLEARRAY($reader);
                    $this->_parseLINESTYLEARRAY($reader);
                    $reader->byteAlign();
    $numFillBits = $reader->getUIBits(4);
                    $numLineBits = $reader->getUIBits(4);
                }
            } else {
                 // CurvedEdgeRecord
                 ...
            }
        }
    }
    
    ** ready

    pear channel-discover openpear.org
    pear install openpear/IO_Bit
    pear install openpear/IO_SWF
    

    ** go

    ShapeId: 1
    ShapeBounds:
            (-7.75, -7.75) - (7.75, 7.75)
    FillStyles:
            solid fill: #0066ff
    LineStyles:
    ShapeRecords:
            ChangeStyle: MoveTo: (-7.75, -7.75)  FillStyle: 0|1  LineStyle: 0
            StraightEdge: MoveTo: (7.75, -7.75)
            StraightEdge: MoveTo: (7.75, 7.75)
            StraightEdge: MoveTo: (-7.75, 7.75)
            StraightEdge: MoveTo: (-7.75, -7.75)
    

    ** TODO

    i want convert to SVG for shape display.




    0 件のコメント:

    コメントを投稿