Skip to content

Commit

Permalink
Update HACKING and README to reflect recent (and not so recent) chang…
Browse files Browse the repository at this point in the history
…es. Arbitrarily change the formatting too.
  • Loading branch information
djcsdy committed Oct 26, 2009
1 parent 0d9516b commit 52566b2
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 117 deletions.
28 changes: 18 additions & 10 deletions HACKING
@@ -1,12 +1,20 @@
this file contains information that might be helpful when browsing swfmills sources for whatever reason.

- the classes to represent SWF elements are generated with XSLT from the file src/xsl/source.xml with
cd src/
xsltproc codegen/mk.xsl codegen/source.xml
the resulting code is not well indented, and really the xslt step should be integrated into the makefile.
This file contains information that might be helpful when browsing swfmill's
sources for whatever reason.

- the generated base classes are derived from SWFTag, SWFAction, SWFStyle, SWFFilter or (for <type/>s in source.xml) no base class at all (for thngs like "Rectangle"). Fonts are certainly special, both the contents of the DefineFont2 tag (not a "clean", generated class but the SWFGlyphList kludge) as well as freetype handling and conversion to the proper shape definitions.

- the basic I/O code is in SWFFile (for header, compression) and SWFReader/Writer (for anything else, including SWF-style nBit numbers etc.)

- the XSL stylesheet that makes up the "simple" processing mode (which is itself everything but simple) is built in src/xslt/. there's more README there.
* The classes to represent SWF elements are generated as part of the build
process, by processing codegen/source.xml through the codegen/mk.xsl XSLT
stylesheet. The resulting code is not well indented.

* The generated base classes are derived from SWFTag, SWFAction, SWFStyle,
SWFFilter or (for <type/>s in source.xml) no base class at all (for things
like "Rectangle"). Fonts are certainly special, both the contents of the
DefineFont2 tag (not a "clean", generated class but the SWFGlyphList kludge)
as well as freetype handling and conversion to the proper shape definitions.

* The basic I/O code is in SWFFile (for header, compression) and
SWFReader/Writer (for anything else, including SWF-style nBit numbers etc.)

* The XSL stylesheet that makes up the "simple" processing mode (which is
itself everything but simple) is built in src/xslt/. there's more README
there.
238 changes: 131 additions & 107 deletions README
@@ -1,146 +1,170 @@

WHAT IS SWFMILL?

swfmill is a tool to process Shockwave Flash(TM) (SWF) files.
It can convert SWF from and to an XML-dialect called "swfml",
which is closely modeled after the SWF file format.
swfmill is a tool to process Shockwave Flash(TM) (SWF) files. It can convert
SWF from and to an XML-dialect called "swfml", which is closely modeled after
the SWF file format.

It also provides a libxslt-based XSL transformator that
supports an extension ("swft") which helps with generating
IDs for SWF objects and can import an SWF as XML using an
XPath command (swft:document()).
It also provides a libxslt-based XSL transformator that supports an extension
("swft") which helps with generating IDs for SWF objects and can import an SWF
as XML using an XPath command (swft:document()).

As a simple application of such functionality, swfmill can
pack together a bunch of media files (jpeg and png images,
other SWF movies, TrueType fonts) into an SWF as "library
objects" for your attachMovie() pleasure.
As a simple application of such functionality, swfmill can pack together a
bunch of media files (jpeg and png images, other SWF movies, TrueType fonts)
into an SWF as "library objects" for your attachMovie() pleasure.


WARNING

swfmill is alpha-quality software. It might well not work
as it should. Please report your experiences if that seems
to be the case, send in (if possible small) SWFs or patches.
swfmill is alpha-quality software. It might well not work as it should.
Please report your experiences if that seems to be the case, send in (if
possible small) SWFs or patches.

You can report bugs or contribute patches via Launchpad at
http://bugs.launchpad.net/swfmill/+filebug


DEPENDENCIES

swfmill requires, and the windows binary release contains
code from:
libxml2 - (C) 1998-2003 Daniel Veillard.
libxslt/exslt
- (C) 2001-2002 Daniel Veillard.
zlib - (C) 1995-2004 Jean-loup Gailly and Mark Adler.
freetype - (C) 1996-2000, 2002, 2004 David Turner,
Robert Wilhelm, and Werner Lemberg.
libpng - (C) 2004 Glenn Randers-Pehrson.

my references to the SWF format were:
Alexis' SWF Reference
http://sswf.sourceforge.net/SWFalexref.html
SSWF sources
http://sswf.sourceforge.net/
MTASC sources
http://mtasc.org/


libxml2 — © 1998–2003 Daniel Veillard.
libxslt/exslt — © 1998-2003 Daniel Veillard.
zlib — © 1995-2004 Jean-loup Gailly and Mark Adler.
freetype — © 1996-2000, 2002, 2004 David Turner,
Robert Wilhelm, and Werner Lemberg.
libpng — © 2004 Glenn Randers-Pehrson.

My references to the SWF format were:

Alexis' SWF Reference
http://sswf.sourceforge.net/SWFalexref.html

SSWF sources
http://sswf.sourceforge.net/

MTASC sources
http://mtasc.org/

SWF File Format Specification
http://www.adobe.com/devnet/swf/


COMPILING AND INSTALLING

on linux, use the "GNU-standard"
./configure && make && make install

on windoze, if you have use for a tool like this,
you know better than me where to put swfmill.exe.



On Linux, use the "GNU-standard"

./configure && make && make install

On Windows, if you have use for a tool like this, you know better than me
where to put swfmill.exe.


USAGE

see swfmill -h for general usage options.

convert an SWF (foo.swf) to XML:
swfmill swf2xml foo.swf bar.xml


swfmill swf2xml foo.swf bar.xml

convert such XML to SWF:
swfmill xml2swf bar.xml meep.swf

swfmill xml2swf bar.xml meep.swf



SIMPLE SWFML DIALECT

for library generation, and probably other fun swf
construction, swfmill supports a simplified XML
dialect. to create a library swf that includes some
assets, construct an XML file that looks like this:

<?xml version="1.0" encoding="iso-8859-1"?>
<movie width="320" height="240" framerate="12">
<background color="#ffffff"/>

<frame>
<library>
<clip id="jpg" import="library/testjpg.jpg"/>
<clip id="png" import="library/testpng.png"/>
<clip id="swf" import="library/shape.swf"/>
</library>

<font id="vera" import="library/vera.ttf"
glyphs="abcdefghijklmnopqrstuvwxyz"/>
</frame>
</movie>

For library generation, and probably other fun SWF construction, swfmill
supports a simplified XML dialect. to create a library swf that includes
some assets, construct an XML file that looks like this:

<?xml version="1.0" encoding="iso-8859-1"?>
<movie width="320" height="240" framerate="12">
<background color="#ffffff"/>

<frame>
<library>
<clip id="jpg" import="library/testjpg.jpg"/>
<clip id="png" import="library/testpng.png"/>
<clip id="swf" import="library/shape.swf"/>
</library>

<font id="vera" import="library/vera.ttf"
glyphs="abcdefghijklmnopqrstuvwxyz"/>
</frame>
</movie>

and run swfmill:
swfmill simple <the-xml-above.xml> output.swf

output.swf should now contain the specified assets (the jpg,
pngs, other swf and font) specified.

swfmill simple <the-xml-above.xml> output.swf

output.swf should now contain the specified assets (the JPG, PNGs, other
SWF and font) specified.

Some notes:
* the file paths in the simple xml are relative to
where you start swfmill.
* any <clip import=".."/> that is placed within a
<library/> tag will be exported for attachMovie
with linkage id == their id attribute. for the above
example, you can attach library/testjpg.jpg with:
_root.attachMovie("jpg","foo",1);
* the font is available by its id also, and will contain
only the characters specified in its glyph attribute.
make sure you specify the correct encoding in the
<?xml?> processing instruction for special characters.

* The file paths in the simple XML are relative to where you start swfmill.

* Any <clip import=".."/> that is placed within a <library/> tag will be
exported for attachMovie with the ID attribute as the linkage ID. For the
above example, you can attach library/testjpg.jpg with

_root.attachMovie("jpg", "foo", 1);

* The font is also available by its ID, and will contain only the characters
specified in its glyph attribute. Make sure you specify the correct
encoding in the XML declaration for characters outside the ASCII range.


SHARED LIBRARIES

swfmill supports both generation and use of shared libaries.
To generate a shared libary, simply put your assets in a
<library/> tag just as for attachMovie (see above).

To use a shared library, the library swf has to be available
both locally and under its "public" URL. Assuming you have
put your library on http://foo.com/library.swf, and the swf
is also in the library/ subdirectory of where you run
swfmill, put this in your definition XML:
<import file="library/library.swf"
url="http://foo.com/library.swf"/>
That should import all symbols that are exported in
library.swf, so they should be available under their name
with attachMovie(). Note: this only works with proper
assets, not with fonts. If you know how to use a font
swfmill supports both generation and use of shared libaries. To generate a
shared libary, simply put your assets in a <library/> tag just as for
attachMovie (see above).

To use a shared library, the library swf has to be available both locally
and under its "public" URL. Assuming you have put your library on
http://foo.com/library.swf, and the SWF is also in the library/ subdirectory
of where you run swfmill, put this in your definition XML:
<import file="library/library.swf"
url="http://foo.com/library.swf"/>
That should import all symbols that are exported in library.swf, so they
should be available under their name with attachMovie(). Note: this only
works with proper assets, not with fonts. If you know how to use a font
from a shared library, please tell me.


COPYRIGHT
swfmill is (C) 2005, daniel fischer.
swfmill is licensed to you under the GPL.
see COPYING for details.


GETTING (INVOLVED)

updates and stuff will be available at:
http://iterative.org/swfmill/

to praise or complain, send mail to:
dan@subsignal.org

there is a mailing list for swfmill on osflash.org:
http://osflash.org/mailman/listinfo/swfmill_osflash.org

Copyright © 2005–2007 Daniel Turing.
Copyright © 2005–2009 swfmill contributors (see AUTHORS).

swfmill is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License version 2, as published by the Free
Software Foundation. See COPYING for details.


GETTING INVOLVED

Updates and stuff will be available at the swfmill homepage:

http://www.swfmill.org/

There is a mailing list for swfmill hosted by osflash.org:

http://osflash.org/mailman/listinfo/swfmill_osflash.org

The latest development source code can be retrieved via Launchpad and the
Bazaar version control system:

bzr branch lp:swfmill

Report bugs or submit patches via Launchpad:

http://bugs.launchpad.net/swfmill/+filebug

0 comments on commit 52566b2

Please sign in to comment.