Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update HACKING and README to reflect recent (and not so recent) chang…
…es. Arbitrarily change the formatting too.
- Loading branch information
Showing
2 changed files
with
149 additions
and
117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|