[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog doc/C/Makefile.am packaging/doc...
From: |
Rob Savoye |
Subject: |
[Gnash-commit] gnash ChangeLog doc/C/Makefile.am packaging/doc... |
Date: |
Sat, 16 Feb 2008 17:51:06 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Rob Savoye <rsavoye> 08/02/16 17:51:06
Modified files:
. : ChangeLog
doc/C : Makefile.am
Added files:
packaging/doc : actionscript.html.in actionscript.info.in
dumpshm.1.in gnash.1.in gnash.html.in
gnash.info.in gprocessor.1.in soldumper.1.in
Log message:
* doc/C/dumpshm-man.xml, gprocessor-man.xml, soldumper-man.xml,
gnash-man.xml: Rename all man page source to *.man-xml so we can
use a SUFFIX rule for transformations.
* doc/C/Makefile.am: Build manpages using a SUFFIX rule. Cleanup
how manpages get installed so it works when building packages.
* packaging/doc: New directory to hold prebuilt docs for
packaging
on braindead systems without a working Docbook2X.
actionscript.html.in
* packaging/doc/actionscript.info.in, dumpshm.1.in, gnash.1.in,
gnash.html.in, gnash.info.in, gprocessor.1.in, soldumper.1.in:
Prebuilt docs, only used for building binary packages on systems
without Docbook2X support.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5668&r2=1.5669
http://cvs.savannah.gnu.org/viewcvs/gnash/doc/C/Makefile.am?cvsroot=gnash&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/actionscript.html.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/actionscript.info.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/dumpshm.1.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/gnash.1.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/gnash.html.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/gnash.info.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/gprocessor.1.in?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/packaging/doc/soldumper.1.in?cvsroot=gnash&rev=1.1
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5668
retrieving revision 1.5669
diff -u -b -r1.5668 -r1.5669
--- ChangeLog 16 Feb 2008 09:20:21 -0000 1.5668
+++ ChangeLog 16 Feb 2008 17:51:04 -0000 1.5669
@@ -1,3 +1,18 @@
+2008-02-16 Rob Savoye <address@hidden>
+
+ * doc/C/dumpshm-man.xml, gprocessor-man.xml, soldumper-man.xml,
+ gnash-man.xml: Rename all man page source to *.man-xml so we can
+ use a SUFFIX rule for transformations.
+ * doc/C/Makefile.am: Build manpages using a SUFFIX rule. Cleanup
+ how manpages get installed so it works when building packages.
+ * packaging/doc: New directory to hold prebuilt docs for packaging
+ on braindead systems without a working Docbook2X.
+ actionscript.html.in
+ * packaging/doc/actionscript.info.in, dumpshm.1.in, gnash.1.in,
+ gnash.html.in, gnash.info.in, gprocessor.1.in, soldumper.1.in:
+ Prebuilt docs, only used for building binary packages on systems
+ without Docbook2X support.
+
2008-02-16 Sandro Santilli <address@hidden>
* server/vm/ASHandlers.cpp (ActionInitArray): use as_value::to_int
@@ -18,6 +33,16 @@
2008-02-15 Rob Savoye <address@hidden>
+ * doc/C/Makefile.am: If the docbook tools don't exist.use a stored
+ copy of the final output file. While this is a bit tacky, it helps
+ when building binary packages on systems where the DocBook tools
+ don't work correctly. Potentially old docs are better than none.
+ * doc/C/{dumpshm.1,gnash.info, soldumper.1, actionscript.html,
+ gnash.1, gnash.texi, actionscript.texi, gnash.html.in
+ gprocessor.1: Copies of prebuilt documentation. This gives one
+ working documentaion regalrdless of whether they have the Docbook
+ tools installs. Useful for building binary packages.
+
* macros/glib.m4: Add extra glib for include path, and drop the
extra glib for the glibconfig.h include path. This let's Gnash
build on NetBSD 4.0.
Index: doc/C/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/doc/C/Makefile.am,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- doc/C/Makefile.am 13 Feb 2008 02:30:07 -0000 1.41
+++ doc/C/Makefile.am 16 Feb 2008 17:51:05 -0000 1.42
@@ -109,17 +109,20 @@
xml_files = $(docname).xml actionscript.xml
#noinst_SCRIPT = gen-doc.sh
-dist_man_MANS = gnash.1
+dist_man_MANS = gnash.1 gprocessor.1 dumpshm.1 soldumper.1
-html: gnash.html actionscript.html
-pdf: gnash.pdf actionscript.pdf
+# dist_html_DATA = gnash.html actionscript.html
+# dist_info_DATA = gnash.info actionscript.info
+
+html: images gnash.html actionscript.html
+pdf: images gnash.pdf actionscript.pdf
man: gnash.1 gprocessor.1 dumpshm.1 soldumper.1
texi: gnash.texi actionscript.texi
-info: gnash.info actionscript.info
-gnash.pdf gnash.html gnash.texi: $(xml_files) $(entities)
+info: images gnash.info actionscript.info
+gnash.pdf gnash.html gnash.texi: images $(xml_files) $(entities)
actionscript.pdf actionscript.html actionscript.texi: actionscript.xml
actionscript/main.xml actionscript/as_value.xml actionscript/new_as_class.xml
-SUFFIXES = .xml .html .texi .pdf .info .1 .fo
+SUFFIXES = .xml .html .texi .pdf .info .1 .fo .man-xml
EXTRA_DIST = \
$(xml_files) \
@@ -160,8 +163,9 @@
.xml.html:
if ENABLE_HTML
$(XSLTPROC) --output $@ --nonet $(docbook_styles)/html/docbook.xsl $<
+ $(RM) $*.txml
else
- touch $@
+ $(LN_S) -f $$? $@
endif
# basefile=$(notdir $(basename $<));
@@ -172,55 +176,39 @@
if test x"$(DB2X_VERSION)" = x"0.8.5" -o x"$(DB2X_VERSION)" = x"0.8.7";
then \
$(DB2X_TEXIXML) --encoding=us-ascii//TRANSLIT $${basefile}.txml; \
sed -e "s/setfilename $${basefile}_.*\.info/setfilename
$${basefile}.info/" $${basefile}_*.texi > $${basefile}.texi ; \
- $(RM) $${basefile}_manual_v*.texi; \
else \
$(DB2X_TEXIXML) --encoding=us-ascii//TRANSLIT --to-stdout
$${basefile}.txml > $${basefile}.texi ; \
- $(RM) $${basefile}_manual_v*.texi; \
fi
-else
- touch $@
endif
.texi.info:
+if ENABLE_TEXI
-$(MAKEINFO) --force $<
-
-gnash.1: gnash-man.xml
-if ENABLE_MAN
- $(DB2X_XSLTPROC) -s man $(srcdir)/gnash-man.xml -o gnash.mxml
- $(DB2X_MANXML) gnash.mxml
- $(RM) gnash.mxml
-else
- touch gnash.1
-endif
-
-gprocessor.1: gprocessor-man.xml
-if ENABLE_MAN
- $(DB2X_XSLTPROC) -s man $(srcdir)/gprocessor-man.xml -o gprocessor.mxml
- $(DB2X_MANXML) gprocessor.mxml
- $(RM) gprocessor.mxml
+ $(RM) *.texi
else
- touch gprocessor.1
+ $(LN_S) -f $$? $@
endif
-dumpshm.1: dumpshm-man.xml
+.man-xml.1:
if ENABLE_MAN
- $(DB2X_XSLTPROC) -s man $(srcdir)/dumpshm-man.xml -o dumpshm.mxml
- $(DB2X_MANXML) dumpshm.mxml
- $(RM) dumpshm.mxml
+ echo "\"$?\", \"$*\", \"$<\""
+ $(DB2X_XSLTPROC) -s man $? -o $*.mxml
+ $(DB2X_MANXML) $*.mxml
+ $(RM) $*.mxml
else
- touch dumpshm.1
+ @if test -d $(top_srcdir)/packaging; then \
+ $(LN_S) -f $(top_srcdir)/packaging/doc/address@hidden $@; \
+ else \
+ touch $@; \
+ fi
endif
-soldumper.1: soldumper-man.xml
-if ENABLE_MAN
- $(DB2X_XSLTPROC) -s man $(srcdir)/soldumper-man.xml -o soldumper.mxml
- $(DB2X_MANXML) soldumper.mxml
- $(RM) soldumper.mxml
-else
- touch soldumper.1
-endif
+alldocs: images html pdf man info
-alldocs: html pdf man info
+images:
+ @if test ! -d images; then \
+ $(LN_S) -f $(srcdir)/images images; \
+ fi
lint:
@xmllint $(srcdir)/gnash.xml
@@ -232,10 +220,9 @@
gnash.tex \
gnash.fo \
gnash.log \
- gnash.texi \
- gnash_manual_*.texi \
- gnash.txml \
- gnash.mxml \
+ *.texi \
+ *.txml \
+ *.mxml \
omf_timestamp
MAINTAINERCLEANFILES = \
@@ -245,10 +232,20 @@
dumpshm.1 \
soldumper.1 \
gnash.info \
- gnash.html
+ gnash.html \
+ actionscript.html \
+ actionscript.info
+
+# Man pages are installed as data
+install-data-hook:
+ @if test -d $(top_srcdir)/packaging/doc; then \
+ for i in "$(MANS)"; do \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(man1dir)/; \
+ done; \
+ fi
install-info-hook: gnash.info
- test -d "$(DESTDIR)$(infodir)" || $(mkinstalldirs)
"$(DESTDIR)$(infodir)"
+ @test -d "$(DESTDIR)$(infodir)" || $(mkinstalldirs)
"$(DESTDIR)$(infodir)"
$(INSTALL_DATA) $< $(DESTDIR)$(infodir)/gnash.info
-if (install-info --version) >/dev/null 2>&1; then \
version=`install-info --version | grep -c 'GNU texinfo'`; \
@@ -262,6 +259,4 @@
uninstall-info-hook:
$(RM) $(DESTDIR)$(infodir)/gnash.info
-#app-dist-hook:
-
-#dist-hook: app-dist-hook
+.PHONY: images
Index: packaging/doc/actionscript.html.in
===================================================================
RCS file: packaging/doc/actionscript.html.in
diff -N packaging/doc/actionscript.html.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/actionscript.html.in 16 Feb 2008 17:51:05 -0000 1.1
@@ -0,0 +1,618 @@
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1"><title>ActionScript Manual V0.2</title><meta
name="generator" content="DocBook XSL Stylesheets V1.73.2"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF"><div class="article" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="index"></a>ActionScript
Manual V0.2</h2></div><div><div class="authorgroup"><div class="author"><h3
class="author"><span class="firstname">Rob</span> <span
class="surname">Savoye</span></h3><div class="affiliation"><div
class="address"><p><br>
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code><br>
+ </p></div></div></div><div class="author"><h3 class="author"><span
class="firstname">Ann</span> <span
class="surname">Barcomb</span></h3></div></div></div><div><p
class="releaseinfo">This manual describes how Gnash ActionScript classes
+ are written.
+ </p></div><div><p class="copyright">Copyright © 2007, 2008 Free Software
Foundation</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the <a class="link" href="#fdl" title="A. GNU Free
Documentation License"><em class="citetitle">GNU
+ Free Documentation License</em></a>, Version 1.1 or any later
+ version published by the Free Software Foundation with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this
+ <a class="link" href="#fdl" title="A. GNU Free Documentation
License">link</a> or in the file COPYING-DOCS
+ distributed with this manual.
+ </p></div></div><div><div class="revhistory"><table border="1" width="100%"
summary="Revision history"><tr><th align="left" valign="top"
colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision
ActionScript Manual V0.2</td><td align="left">Feb 2008</td></tr><tr><td
align="left" colspan="2">
+ <p class="author">Rob Savoye
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>
+ </p>
+ <p class="author">Ann Barcomb
+ </p>
+ <p class="publisher">Free Software Foundation</p>
+ </td></tr></table></div></div></div><hr></div><div
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a
href="#introduction">Introduction</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#overview">Object Creation
Overview</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#newclass">Adding New ActionScript Class</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#prototype">Prototype</a></span></dt><dt><span
class="sect2"><a href="#declaration">Declaration</a></span></dt><dt><span
class="sect2"><a href="#instantiation">Instantiation</a></span></dt><dt><span
class="sect2"><a href="#methods">Methods</a></span></dt><dt><span
class="sect2"><a href="#properties">Dynamic
Properties</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#as_value">The <span class="emphasis"><em>as_value</em></span> Object
Type</a></span></dt><dd><dl><dt><span class="sect2"><a href="#data_types">Data
Types</a></span></dt><dt><span class="sect2"><a href="#is_methods">Determining
the Type</a></span></dt><dt><span class="sect2"><a href="#to_methods">Fetching
the Value</a></span></dt><dt><span class="sect2"><a href="#set_methods">Setting
the Value and Type</a></span></dt><dt><span class="sect2"><a
href="#further_as_value_reading">Further
Reading</a></span></dt></dl></dd><dt><span class="appendix"><a href="#fdl">A.
GNU Free Documentation License</a></span></dt><dd><dl><dt><span
class="sect1"><a href="#fdl-preamble">0. PREAMBLE</a></span></dt><dt><span
class="sect1"><a href="#fdl-section1">1. APPLICABILITY AND
DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="#fdl-section2">2.
VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a
href="#fdl-section3">3. COPYING IN QUANTITY</a></span></dt><dt><span
class="sect1"><a href="#fdl-section4">4. MODIFICATIONS</a></span></dt><dt><span
class="sect1"><a href="#fdl-section5">5. COMBINING
DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="#fdl-section6">6.
COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a
href="#fdl-section7">7. AGGREGATION WITH INDEPENDENT
WORKS</a></span></dt><dt><span class="sect1"><a href="#fdl-section8">8.
TRANSLATION</a></span></dt><dt><span class="sect1"><a href="#fdl-section9">9.
TERMINATION</a></span></dt><dt><span class="sect1"><a href="#fdl-section10">10.
FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a
href="#fdl-using">Addendum</a></span></dt></dl></dd></dl></div><a
class="indexterm" name="id2596580"></a><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="introduction"></a>Introduction</h2></div></div></div><p>
+ In this document, the term 'ActionScript class' refers to the
+ C++ class which is instantiated by Gnash when some ActionScript
+ code instantiates a corresponding class. The C++ class
+ stores instance data and implements the methods which are
+ called on the object in the ActionScript code.
+ </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="overview"></a>Object Creation
Overview</h3></div></div></div><p>
+ When Gnash starts, the <span
class="emphasis"><em>class_init()</em></span> method
+ for each ActionScript class (listed in Global.cpp) is called.
+ This method constructs a prototype, which is implemented as an
+ <span class="emphasis"><em>as_object</em></span>. In addition,
the method
+ registers the constructor to be used for future object creation,
+ and attaches methods and properties to the prototype.
+ </p><p>
+ When a new object is needed, instance data is added to
+ the methods and properties inherited from the prototype.
+ </p></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="newclass"></a>Adding New ActionScript Class</h2></div></div></div><p>
+ Adding a new ActionScript class is relatively simple, but the
+ process is complicated by the fact that the interface has evolved
+ over time and the current code base represents several different
+ formats. This document describes the current interface. The
+ Boolean class should be considered the authoritative example of
+ a modern ActionScript class.
+ </p><p>
+ ActionScript classes contain a header file and a C++
+ implementation. The name is usually the name of the
+ class as it is called in the ActionScript specifications;
+ for instance <span class="emphasis"><em>Boolean.cpp</em></span> for
the Boolean class.
+ </p><p>
+ In the CVS source tree, there is a utility file named
+ <span class="emphasis"><em>gen-asclass.sh</em></span> which can be
used to
+ create the header file and a C++ source file stub for
+ an ActionScript class.
+ </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="prototype"></a>Prototype</h3></div></div></div><p>
+ In ActionScript, a prototype is a base object which contains
+ all the methods that an instantiated object will contain.
+ In short, it contains every part of the class except for
+ the portions dealing with the storage of instance data.
+ </p><p>
+ In Gnash, the prototype of an ActionScript object is
+ implemented as an <span class="emphasis"><em>as_object</em></span>.
+ At startup, the methods and properties of the ActionScript class
+ are attached to the <span
class="emphasis"><em>as_object</em></span>. The
+ following example demonstrates how methods can be attached:
+ </p><pre class="programlisting">
+ static void
+ attachBooleanInterface(as_object& o)
+ {
+ o.init_member("toString", new
builtin_function(boolean_tostring));
+ o.init_member("valueOf", new
builtin_function(boolean_valueof));
+ }
+ </pre><p>
+ This code was generated using <span
class="emphasis"><em>gen-asclass.sh</em></span>.
+ Typically, you will need to customize the attach method to include
+ any new methods you add to the class.
+ </p><p>
+ Static properties can also be added to the ActionScript prototype
+ (<a class="link" href="#properties" title="Dynamic
Properties">dynamic properties</a>
+ are addressed later). They are attached in a similar way:
+ </p><pre class="programlisting">
+ o.init_member("myProperty", as_value("HelloWorld"));
+ </pre><p>
+ </p><p>
+ Properties which have been added in this manner can be
+ directly accessed in ActionScript code without a function
+ call, as this piece of ActionScript code compiled by Ming's
+ <span class="emphasis"><em>makeswf</em></span> compiler demonstrates:
+ </p><pre class="programlisting">
+ // Get the value of the myProperty property
+ if (node.myProperty == "HelloWorld") {
+ trace("MATCHED");
+ }
+ </pre><p>
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="declaration"></a>Declaration</h3></div></div></div><p>
+ A new class should derive from <span
class="emphasis"><em>as_object</em></span>,
+ which is the base class of every ActionScript object in Gnash.
+ The class declaration will also be generated when you use
+ <span class="emphasis"><em>gen-asclass.sh</em></span>.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="instantiation"></a>Instantiation</h3></div></div></div><p>
+ The class should contain an init method; this is included
+ in the stub when <span
class="emphasis"><em>gen-asclass.sh</em></span> is
+ used.
+ </p><p>
+ The init method should be called in the constructor in
+ <span class="emphasis"><em>Global.cpp</em></span>, where all other
ActionScript
+ classes are similarly referenced.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="methods"></a>Methods</h3></div></div></div><p>
+ Every method you implement and
+ <a class="link" href="#prototype" title="Prototype">attach</a> will
receive an
+ <span class="emphasis"><em>fn_call</em></span> data structure as an
argument when it is called.
+ </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4
class="title"><a name="arguments"></a>Accessing
Arguments</h4></div></div></div><p>
+ The arguments stored in <span
class="emphasis"><em>fn_call</em></span>
+ should be accessed using <span
class="emphasis"><em>arg()</em></span>. For
+ instance, the first element can be popped with
+ <span class="emphasis"><em>fn.arg(0)</em></span>.
+ </p><p>
+ The element popped off the stack is an
+ <a class="link" href="#as_value" title="The as_value Object
Type"><span class="emphasis"><em>as_value</em></span>
+ object</a>.
+ </p></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a name="return"></a>Returning a
Value to ActionScript</h4></div></div></div><p>
+ The return value should be an
+ <a class="link" href="#as_value" title="The as_value Object
Type"><span class="emphasis"><em>as_value</em></span>
+ object</a>. For example:
+ </p><pre class="programlisting">
+ return as_value('Goodbye, cruel world.');
+ </pre><p>
+ </p></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a
name="additional_fn_call"></a>Additional <span
class="emphasis"><em>fn_call</em></span> Members</h4></div></div></div><p>
+ There are two other useful members of the <span
class="emphasis"><em>fn_call</em></span>
+ structure, namely <span class="emphasis"><em>this_ptr</em></span>
and
+ <span class="emphasis"><em>nargs</em></span>. The former points
to the
+ class which is invoking this method, while the latter
+ is a count of the number of
+ <a class="link" href="#arguments" title="Accessing
Arguments">arguments in the stack</a>.
+ </p><p>
+ You may also see instances of the <span
class="emphasis"><em>env</em></span>
+ pointer being used. This is being deprecated. Instances
+ which could be replaced with
+ <a class="link" href="#arguments" title="Accessing
Arguments"><span class="emphasis"><em>arg()</em></span></a>
+ are already deprecated; other uses will be deprecated
+ in the near future.
+ </p><p>
+ Beyond the <span class="emphasis"><em><a class="link"
href="#arguments" title="Accessing Arguments">arg()</a></em></span> method,
there
+ is one method of note. <span
class="emphasis"><em>dump_args()</em></span>
+ can be used in debugging to output the entire argument
+ stack.
+ </p></div></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a name="properties"></a>Dynamic
Properties</h3></div></div></div><p>
+ This section describes accessors to dynamic properties.
+ Read-only properties are described
+ in the <a class="link" href="#prototype"
title="Prototype">prototype</a> section.
+ </p><p>
+ Dynamic properties are not created by the <span
class="emphasis"><em>gen-asclass.sh</em></span>
+ script. Accessors should be written as
+ a single get/set method. Previously this was done by
+ overriding <span class="emphasis"><em>get_member()</em></span> and
+ <span class="emphasis"><em>set_member()</em></span>, but this
practice
+ is deprecated.
+ </p><p>
+ The accessor is written so that it sets the property
+ if it is called with an argument, and puts the property in
+ the <a class="link" href="#methods" title="Methods"><span
class="emphasis"><em>fn_call</em></span></a>
+ <a class="link" href="#return" title="Returning a Value to
ActionScript">result pointer</a>. For instance:
+ </p><pre class="programlisting">
+ void
+ MyClass::myProperty_getset(const fn_call& fn)
+ {
+
+ boost::intrusive_ptr<MyClass> ptr =
ensureType<MyClass>(fn.this_ptr);
+
+ // setter
+ if ( fn.nargs > 0 )
+ {
+ bool h = fn.arg(0).to_bool();
+ ptr->MyMethod(h);
+ return;
+ }
+
+ // getter
+ bool h = ptr->MyMethod();
+ fn.result->set_bool(h);
+ }
+ </pre><p>
+ </p><p>
+ It has not yet been decided whether properties should be set
+ in the <a class="link" href="#prototype" title="Prototype">exported
interface</a>
+ or attached to instances of the class. A property is attached
+ in the following manner:
+ </p><pre class="programlisting">
+ boost::intrusive_ptr<builtin_function> gettersetter;
+ gettersetter = new
builtin_function(&MyClass::myProperty_getset, NULL);
+ o.init_property("myProperty", *gettersetter, *gettersetter);
+ </pre><p>
+ </p></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="as_value"></a>The <span class="emphasis"><em>as_value</em></span> Object
Type</h2></div></div></div><p>
+ The <span class="emphasis"><em>as_value</em></span> class is used
throughout
+ the interpreter to create generic objects to hold data.
+ </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="data_types"></a>Data Types</h3></div></div></div><p>
+ The following data types are supported:
+ <span class="emphasis"><em>NULLTYPE</em></span>,
+ <span class="emphasis"><em>BOOLEAN</em></span>, <span
class="emphasis"><em>STRING</em></span>,
+ <span class="emphasis"><em>NUMBER</em></span>, <span
class="emphasis"><em>OBJECT</em></span>,
+ <span class="emphasis"><em>AS_FUNCTION</em></span>, and
+ <span class="emphasis"><em>MOVIECLIP</em></span> (sprite).
+ The type <span class="emphasis"><em>C_FUNCTION</em></span> is being
deprecated.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="is_methods"></a>Determining the Type</h3></div></div></div><p>
+ Several methods allow you to determine if a value stored in
+ <span class="emphasis"><em>as_value</em></span> is of a specific
type. These
+ follow the form of <span class="emphasis"><em>is_TYPE</em></span>,
for example
+ <span class="emphasis"><em>is_as_function()</em></span> and
+ <span class="emphasis"><em>is_number()</em></span>. In general, the
type names
+ match the <a class="link" href="#data_types" title="Data Types">data
types</a> listed
+ above, with the exception of the type <span
class="emphasis"><em>MOVIECLIP</em></span>
+ which has a method <span
class="emphasis"><em>is_sprite()</em></span>.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a name="to_methods"></a>Fetching
the Value</h3></div></div></div><p>
+ Another set of methods will return a representation of
+ the value as a particular type. They follow the
+ <span class="emphasis"><em>to_TYPE</em></span> naming convention.
Examples
+ are <span class="emphasis"><em>to_number()</em></span> and
+ <span class="emphasis"><em>to_bool()</em></span>. The type names
are as
+ <a class="link" href="#data_types" title="Data Types">listed</a>
earlier, except for
+ <span class="emphasis"><em>MOVIECLIP</em></span>, which uses
+ <span class="emphasis"><em>to_sprite()</em></span>.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a name="set_methods"></a>Setting
the Value and Type</h3></div></div></div><p>
+ Finally, there is the <span
class="emphasis"><em>set_TYPE</em></span> series
+ of methods. They change the type to the type specified in
+ the method name, and set the value to the one given as an
+ argument. It is also possible to accomplish the same thing
+ with the <span class="emphasis"><em>=</em></span> operator. Again,
type names
+ match those <a class="link" href="#data_types" title="Data
Types">named earlier</a>,
+ except in the case of <span
class="emphasis"><em>MOVIECLASS</em></span>. Its
+ method is called <span class="emphasis"><em>set_sprite()</em></span>.
+ </p></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="further_as_value_reading"></a>Further Reading</h3></div></div></div><p>
+ Please refer to <span class="emphasis"><em>as_value.h</em></span> or
the
+ Doxygen documentation (see 'Processing The Documentation'
+ in the Gnash manual for instructions on generating
+ documents with Doxygen) for more information
+ about which methods are available for the
+ <span class="emphasis"><em>as_value</em></span> object.
+ </p></div></div><div class="appendix" lang="en"><h2 class="title"
style="clear: both"><a name="fdl"></a>A. GNU Free Documentation
License</h2><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="fdl-preamble"></a>0.
PREAMBLE</h2></div></div></div><p>
+ The purpose of this License is to make a manual, textbook, or
+ other written document "free" in the sense of
+ freedom: to assure everyone the effective freedom to copy and
+ redistribute it, with or without modifying it, either
+ commercially or non-commercially. Secondarily, this License
+ preserves for the author and publisher a way to get credit for
+ their work, while not being considered responsible for
+ modifications made by others.
+ </p><p>
+ This License is a kind of "copyleft", which means
+ that derivative works of the document must themselves be free in
+ the same sense. It complements the GNU General Public License,
+ which is a copyleft license designed for free software.
+ </p><p>
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same
+ freedoms that the software does. But this License is not limited
+ to software manuals; it can be used for any textual work,
+ regardless of subject matter or whether it is published as a
+ printed book. We recommend this License principally for works
+ whose purpose is instruction or reference.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section1"></a>1. APPLICABILITY AND
DEFINITIONS</h2></div></div></div><p><a name="fdl-document"></a>
+ This License applies to any manual or other work that contains a
+ notice placed by the copyright holder saying it can be
+ distributed under the terms of this License. The
+ "Document", below, refers to any such manual or
+ work. Any member of the public is a licensee, and is addressed
+ as "you".
+ </p><p><a name="fdl-modified"></a>
+ A "Modified Version" of the Document means any work
+ containing the Document or a portion of it, either copied
+ verbatim, or with modifications and/or translated into another
+ language.
+ </p><p><a name="fdl-secondary"></a>
+ A "Secondary Section" is a named appendix or a
+ front-matter section of the <a class="link"
href="#fdl-document">Document</a> that deals exclusively
+ with the relationship of the publishers or authors of the
+ Document to the Document's overall subject (or to related
+ matters) and contains nothing that could fall directly within
+ that overall subject. (For example, if the Document is in part a
+ textbook of mathematics, a Secondary Section may not explain any
+ mathematics.) The relationship could be a matter of historical
+ connection with the subject or with related matters, or of
+ legal, commercial, philosophical, ethical or political position
+ regarding them.
+ </p><p><a name="fdl-invariant"></a>
+ The "Invariant Sections" are certain <a class="link"
href="#fdl-secondary"> Secondary Sections</a> whose titles
+ are designated, as being those of Invariant Sections, in the
+ notice that says that the <a class="link"
href="#fdl-document">Document</a> is released under this
+ License.
+ </p><p><a name="fdl-cover-texts"></a>
+ The "Cover Texts" are certain short passages of
+ text that are listed, as Front-Cover Texts or Back-Cover Texts,
+ in the notice that says that the <a class="link"
href="#fdl-document">Document</a> is released under this
+ License.
+ </p><p><a name="fdl-transparent"></a>
+ A "Transparent" copy of the <a class="link" href="#fdl-document">
Document</a> means a machine-readable
+ copy, represented in a format whose specification is available
+ to the general public, whose contents can be viewed and edited
+ directly and straightforwardly with generic text editors or (for
+ images composed of pixels) generic paint programs or (for
+ drawings) some widely available drawing editor, and that is
+ suitable for input to text formatters or for automatic
+ translation to a variety of formats suitable for input to text
+ formatters. A copy made in an otherwise Transparent file format
+ whose markup has been designed to thwart or discourage
+ subsequent modification by readers is not Transparent. A copy
+ that is not "Transparent" is called "Opaque".
+ </p><p>
+ Examples of suitable formats for Transparent copies include
+ plain ASCII without markup, Texinfo input format, LaTeX input
+ format, SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML designed for human
+ modification. Opaque formats include PostScript, PDF,
+ proprietary formats that can be read and edited only by
+ proprietary word processors, SGML or XML for which the DTD
+ and/or processing tools are not generally available, and the
+ machine-generated HTML produced by some word processors for
+ output purposes only.
+ </p><p><a name="fdl-title-page"></a>
+ The "Title Page" means, for a printed book, the
+ title page itself, plus such following pages as are needed to
+ hold, legibly, the material this License requires to appear in
+ the title page. For works in formats which do not have any title
+ page as such, "Title Page" means the text near the
+ most prominent appearance of the work's title, preceding the
+ beginning of the body of the text.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section2"></a>2. VERBATIM COPYING</h2></div></div></div><p>
+ You may copy and distribute the <a class="link"
href="#fdl-document">Document</a> in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that
+ you add no other conditions whatsoever to those of this
+ License. You may not use technical measures to obstruct or
+ control the reading or further copying of the copies you make or
+ distribute. However, you may accept compensation in exchange for
+ copies. If you distribute a large enough number of copies you
+ must also follow the conditions in <a class="link" href="#fdl-section3"
title="3. COPYING IN QUANTITY">section 3</a>.
+ </p><p>
+ You may also lend copies, under the same conditions stated
+ above, and you may publicly display copies.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section3"></a>3. COPYING IN QUANTITY</h2></div></div></div><p>
+ If you publish printed copies of the <a class="link"
href="#fdl-document">Document</a> numbering more than 100,
+ and the Document's license notice requires <a class="link"
href="#fdl-cover-texts">Cover Texts</a>, you must enclose
+ the copies in covers that carry, clearly and legibly, all these
+ Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also
+ clearly and legibly identify you as the publisher of these
+ copies. The front cover must present the full title with all
+ words of the title equally prominent and visible. You may add
+ other material on the covers in addition. Copying with changes
+ limited to the covers, as long as they preserve the title of the
+ <a class="link" href="#fdl-document">Document</a> and satisfy these
+ conditions, can be treated as verbatim copying in other
+ respects.
+ </p><p>
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+ </p><p>
+ If you publish or distribute <a class="link"
href="#fdl-transparent">Opaque</a> copies of the <a class="link"
href="#fdl-document">Document</a> numbering more than 100,
+ you must either include a machine-readable <a class="link"
href="#fdl-transparent">Transparent</a> copy along with
+ each Opaque copy, or state in or with each Opaque copy a
+ publicly-accessible computer-network location containing a
+ complete Transparent copy of the Document, free of added
+ material, which the general network-using public has access to
+ download anonymously at no charge using public-standard network
+ protocols. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly
+ or through your agents or retailers) of that edition to the
+ public.
+ </p><p>
+ It is requested, but not required, that you contact the authors
+ of the <a class="link" href="#fdl-document">Document</a> well before
+ redistributing any large number of copies, to give them a chance
+ to provide you with an updated version of the Document.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section4"></a>4. MODIFICATIONS</h2></div></div></div><p>
+ You may copy and distribute a <a class="link"
href="#fdl-modified">Modified Version</a> of the <a class="link"
href="#fdl-document">Document</a> under the conditions of
+ sections <a class="link" href="#fdl-section2" title="2. VERBATIM
COPYING">2</a> and <a class="link" href="#fdl-section3" title="3. COPYING IN
QUANTITY">3</a> above, provided that you release
+ the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version
+ to whoever possesses a copy of it. In addition, you must do
+ these things in the Modified Version:
+ </p><div class="itemizedlist"><ul type="opencircle"><li
style="list-style-type: circle"><p><b>A. </b>
+ Use in the <a class="link" href="#fdl-title-page">Title
+ Page</a> (and on the covers, if any) a title distinct
+ from that of the <a class="link" href="#fdl-document">Document</a>,
and from those of
+ previous versions (which should, if there were any, be
+ listed in the History section of the Document). You may
+ use the same title as a previous version if the original
+ publisher of that version gives permission.
+ </p></li><li style="list-style-type: circle"><p><b>B. </b>
+ List on the <a class="link" href="#fdl-title-page">Title
+ Page</a>, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the
+ <a class="link" href="#fdl-modified">Modified Version</a>,
+ together with at least five of the principal authors of
+ the <a class="link" href="#fdl-document">Document</a> (all of
+ its principal authors, if it has less than five).
+ </p></li><li style="list-style-type: circle"><p><b>C. </b>
+ State on the <a class="link" href="#fdl-title-page">Title
+ Page</a> the name of the publisher of the <a class="link"
href="#fdl-modified">Modified Version</a>, as the
+ publisher.
+ </p></li><li style="list-style-type: circle"><p><b>D. </b>
+ Preserve all the copyright notices of the <a class="link"
href="#fdl-document">Document</a>.
+ </p></li><li style="list-style-type: circle"><p><b>E. </b>
+ Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+ </p></li><li style="list-style-type: circle"><p><b>F. </b>
+ Include, immediately after the copyright notices, a
+ license notice giving the public permission to use the
+ <a class="link" href="#fdl-modified">Modified Version</a> under
+ the terms of this License, in the form shown in the
+ Addendum below.
+ </p></li><li style="list-style-type: circle"><p><b>G. </b>
+ Preserve in that license notice the full lists of <a class="link"
href="#fdl-invariant"> Invariant Sections</a> and
+ required <a class="link" href="#fdl-cover-texts">Cover
+ Texts</a> given in the <a class="link"
href="#fdl-document">Document's</a> license notice.
+ </p></li><li style="list-style-type: circle"><p><b>H. </b>
+ Include an unaltered copy of this License.
+ </p></li><li style="list-style-type: circle"><p><b>I. </b>
+ Preserve the section entitled "History", and
+ its title, and add to it an item stating at least the
+ title, year, new authors, and publisher of the <a class="link"
href="#fdl-modified">Modified Version </a>as given on
+ the <a class="link" href="#fdl-title-page">Title Page</a>. If
+ there is no section entitled "History" in the
+ <a class="link" href="#fdl-document">Document</a>, create one
+ stating the title, year, authors, and publisher of the
+ Document as given on its Title Page, then add an item
+ describing the Modified Version as stated in the previous
+ sentence.
+ </p></li><li style="list-style-type: circle"><p><b>J. </b>
+ Preserve the network location, if any, given in the <a class="link"
href="#fdl-document">Document</a> for public access
+ to a <a class="link" href="#fdl-transparent">Transparent</a>
+ copy of the Document, and likewise the network locations
+ given in the Document for previous versions it was based
+ on. These may be placed in the "History"
+ section. You may omit a network location for a work that
+ was published at least four years before the Document
+ itself, or if the original publisher of the version it
+ refers to gives permission.
+ </p></li><li style="list-style-type: circle"><p><b>K. </b>
+ In any section entitled "Acknowledgements" or
+ "Dedications", preserve the section's title,
+ and preserve in the section all the substance and tone of
+ each of the contributor acknowledgements and/or
+ dedications given therein.
+ </p></li><li style="list-style-type: circle"><p><b>L. </b>
+ Preserve all the <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> of the <a class="link"
href="#fdl-document">Document</a>, unaltered in their
+ text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+ </p></li><li style="list-style-type: circle"><p><b>M. </b>
+ Delete any section entitled
+ "Endorsements". Such a section may not be
+ included in the <a class="link" href="#fdl-modified">Modified
+ Version</a>.
+ </p></li><li style="list-style-type: circle"><p><b>N. </b>
+ Do not retitle any existing section as
+ "Endorsements" or to conflict in title with
+ any <a class="link" href="#fdl-invariant">Invariant
+ Section</a>.
+ </p></li></ul></div><p>
+ If the <a class="link" href="#fdl-modified">Modified Version</a>
+ includes new front-matter sections or appendices that qualify as
+ <a class="link" href="#fdl-secondary">Secondary Sections</a> and
+ contain no material copied from the Document, you may at your
+ option designate some or all of these sections as invariant. To
+ do this, add their titles to the list of <a class="link"
href="#fdl-invariant">Invariant Sections</a> in the
+ Modified Version's license notice. These titles must be
+ distinct from any other section titles.
+ </p><p>
+ You may add a section entitled "Endorsements",
+ provided it contains nothing but endorsements of your <a class="link"
href="#fdl-modified">Modified Version</a> by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+ </p><p>
+ You may add a passage of up to five words as a <a class="link"
href="#fdl-cover-texts">Front-Cover Text</a>, and a passage
+ of up to 25 words as a <a class="link"
href="#fdl-cover-texts">Back-Cover Text</a>, to the end of
+ the list of <a class="link" href="#fdl-cover-texts">Cover Texts</a>
+ in the <a class="link" href="#fdl-modified">Modified Version</a>.
+ Only one passage of Front-Cover Text and one of Back-Cover Text
+ may be added by (or through arrangements made by) any one
+ entity. If the <a class="link" href="#fdl-document">Document</a>
+ already includes a cover text for the same cover, previously
+ added by you or by arrangement made by the same entity you are
+ acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+ </p><p>
+ The author(s) and publisher(s) of the <a class="link"
href="#fdl-document">Document</a> do not by this License
+ give permission to use their names for publicity for or to
+ assert or imply endorsement of any <a class="link"
href="#fdl-modified">Modified Version </a>.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section5"></a>5. COMBINING DOCUMENTS</h2></div></div></div><p>
+ You may combine the <a class="link" href="#fdl-document">Document</a>
+ with other documents released under this License, under the
+ terms defined in <a class="link" href="#fdl-section4" title="4.
MODIFICATIONS">section 4</a>
+ above for modified versions, provided that you include in the
+ combination all of the <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> of all of the original documents, unmodified,
+ and list them all as Invariant Sections of your combined work in
+ its license notice.
+ </p><p>
+ The combined work need only contain one copy of this License,
+ and multiple identical <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> may be replaced with a single copy. If there are
+ multiple Invariant Sections with the same name but different
+ contents, make the title of each such section unique by adding
+ at the end of it, in parentheses, the name of the original
+ author or publisher of that section if known, or else a unique
+ number. Make the same adjustment to the section titles in the
+ list of Invariant Sections in the license notice of the combined
+ work.
+ </p><p>
+ In the combination, you must combine any sections entitled
+ "History" in the various original documents,
+ forming one section entitled "History"; likewise
+ combine any sections entitled "Acknowledgements",
+ and any sections entitled "Dedications". You must
+ delete all sections entitled "Endorsements."
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section6"></a>6. COLLECTIONS OF DOCUMENTS</h2></div></div></div><p>
+ You may make a collection consisting of the <a class="link"
href="#fdl-document">Document</a> and other documents
+ released under this License, and replace the individual copies
+ of this License in the various documents with a single copy that
+ is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+ </p><p>
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you
+ insert a copy of this License into the extracted document, and
+ follow this License in all other respects regarding verbatim
+ copying of that document.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section7"></a>7. AGGREGATION WITH INDEPENDENT
WORKS</h2></div></div></div><p>
+ A compilation of the <a class="link" href="#fdl-document">Document</a>
or its derivatives with
+ other separate and independent documents or works, in or on a
+ volume of a storage or distribution medium, does not as a whole
+ count as a <a class="link" href="#fdl-modified">Modified Version</a>
+ of the Document, provided no compilation copyright is claimed
+ for the compilation. Such a compilation is called an
+ "aggregate", and this License does not apply to the
+ other self-contained works thus compiled with the Document , on
+ account of their being thus compiled, if they are not themselves
+ derivative works of the Document. If the <a class="link"
href="#fdl-cover-texts">Cover Text</a> requirement of <a class="link"
href="#fdl-section3" title="3. COPYING IN QUANTITY">section 3</a> is applicable
to these
+ copies of the Document, then if the Document is less than one
+ quarter of the entire aggregate, the Document's Cover Texts may
+ be placed on covers that surround only the Document within the
+ aggregate. Otherwise they must appear on covers around the whole
+ aggregate.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section8"></a>8. TRANSLATION</h2></div></div></div><p>
+ Translation is considered a kind of modification, so you may
+ distribute translations of the <a class="link"
href="#fdl-document">Document</a> under the terms of <a class="link"
href="#fdl-section4" title="4. MODIFICATIONS">section 4</a>. Replacing <a
class="link" href="#fdl-invariant"> Invariant Sections</a> with
+ translations requires special permission from their copyright
+ holders, but you may include translations of some or all
+ Invariant Sections in addition to the original versions of these
+ Invariant Sections. You may include a translation of this
+ License provided that you also include the original English
+ version of this License. In case of a disagreement between the
+ translation and the original English version of this License,
+ the original English version will prevail.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section9"></a>9. TERMINATION</h2></div></div></div><p>
+ You may not copy, modify, sublicense, or distribute the <a class="link"
href="#fdl-document">Document</a> except as expressly
+ provided for under this License. Any other attempt to copy,
+ modify, sublicense or distribute the Document is void, and will
+ automatically terminate your rights under this License. However,
+ parties who have received copies, or rights, from you under this
+ License will not have their licenses terminated so long as such
+ parties remain in full compliance.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section10"></a>10. FUTURE REVISIONS OF THIS
LICENSE</h2></div></div></div><p>
+ The <a class="ulink" href="http://www.gnu.org/fsf/fsf.html"
target="_top">Free Software
+ Foundation</a> may publish new, revised versions of the GNU
+ Free Documentation License from time to time. Such new versions
+ will be similar in spirit to the present version, but may differ
+ in detail to address new problems or concerns. See <a class="ulink"
href="http://www.gnu.org/copyleft"
target="_top">http://www.gnu.org/copyleft/</a>.
+ </p><p>
+ Each version of the License is given a distinguishing version
+ number. If the <a class="link" href="#fdl-document">Document</a>
+ specifies that a particular numbered version of this License
+ "or any later version" applies to it, you have the
+ option of following the terms and conditions either of that
+ specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by
+ the Free Software Foundation.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-using"></a>Addendum</h2></div></div></div><p>
+ To use this License in a document you have written, include a copy of
+ the License in the document and put the following copyright and
+ license notices just after the title page:
+ </p><div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright YEAR YOUR NAME.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <a class="link"
href="#fdl-invariant">Invariant Sections</a> being LIST
+ THEIR TITLES, with the <a class="link"
href="#fdl-cover-texts">Front-Cover Texts</a> being LIST,
+ and with the <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a> being LIST. A copy of the license is included in
+ the section entitled "GNU Free Documentation
+ License".
+ </p></blockquote></div><p>
+ If you have no <a class="link" href="#fdl-invariant">Invariant
+ Sections</a>, write "with no Invariant Sections"
+ instead of saying which ones are invariant. If you have no
+ <a class="link" href="#fdl-cover-texts">Front-Cover Texts</a>, write
+ "no Front-Cover Texts" instead of
+ "Front-Cover Texts being LIST"; likewise for <a class="link"
href="#fdl-cover-texts">Back-Cover Texts</a>.
+ </p><p>
+ If your document contains nontrivial examples of program code,
+ we recommend releasing these examples in parallel under your
+ choice of free software license, such as the <a class="ulink"
href="http://www.gnu.org/copyleft/gpl.html" target="_top"> GNU General Public
+ License</a>, to permit their use in free software.
+ </p></div></div></div></body></html>
Index: packaging/doc/actionscript.info.in
===================================================================
RCS file: packaging/doc/actionscript.info.in
diff -N packaging/doc/actionscript.info.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/actionscript.info.in 16 Feb 2008 17:51:05 -0000 1.1
@@ -0,0 +1,866 @@
+START-INFO-DIR-ENTRY
+This is actionscript.info, produced by makeinfo version 4.11 from
actionscript.texi.
+
+* ActionScript Manual V0.2: (actionscript_manual_v0.2).
+ [MISSING TEXT]
+END-INFO-DIR-ENTRY
+
+
+File: actionscript.info, Node: Top, Next: Introduction, Up: (dir)
+
+ActionScript Manual V0.2
+************************
+
+* Menu:
+
+* Introduction::
+* Adding New ActionScript Class::
+* The as_value Object Type::
+* GNU Free Documentation License::
+
+--- The Detailed Node Listing ---
+
+Introduction
+
+* Object Creation Overview::
+
+Adding New ActionScript Class
+
+* Prototype::
+* Declaration::
+* Instantiation::
+* Methods::
+* Dynamic Properties::
+
+The as_value Object Type
+
+* Data Types::
+* Determining the Type::
+* Fetching the Value::
+* Setting the Value and Type::
+* Further Reading::
+
+GNU Free Documentation License
+
+* 0. PREAMBLE: 0_ PREAMBLE.
+* 1. APPLICABILITY AND DEFINITIONS: 1_ APPLICABILITY AND DEFINITIONS.
+* 2. VERBATIM COPYING: 2_ VERBATIM COPYING.
+* 3. COPYING IN QUANTITY: 3_ COPYING IN QUANTITY.
+* 4. MODIFICATIONS: 4_ MODIFICATIONS.
+* 5. COMBINING DOCUMENTS: 5_ COMBINING DOCUMENTS.
+* 6. COLLECTIONS OF DOCUMENTS: 6_ COLLECTIONS OF DOCUMENTS.
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7_ AGGREGATION WITH INDEPENDENT WORKS.
+* 8. TRANSLATION: 8_ TRANSLATION.
+* 9. TERMINATION: 9_ TERMINATION.
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10_ FUTURE REVISIONS OF THIS LICENSE.
+* Addendum::
+
+
+File: actionscript.info, Node: Introduction, Next: Adding New ActionScript
Class, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+In this document, the term 'ActionScript class' refers to the C++ class
+which is instantiated by Gnash when some ActionScript code instantiates
+a corresponding class. The C++ class stores instance data and
+implements the methods which are called on the object in the
+ActionScript code.
+
+* Menu:
+
+* Object Creation Overview::
+
+
+File: actionscript.info, Node: Object Creation Overview, Up: Introduction
+
+1.1 Object Creation Overview
+============================
+
+When Gnash starts, the _class_init()_ method for each ActionScript
+class (listed in Global.cpp) is called. This method constructs a
+prototype, which is implemented as an _as_object_. In addition, the
+method registers the constructor to be used for future object creation,
+and attaches methods and properties to the prototype.
+
+ When a new object is needed, instance data is added to the methods
+and properties inherited from the prototype.
+
+
+File: actionscript.info, Node: Adding New ActionScript Class, Next: The
as_value Object Type, Prev: Introduction, Up: Top
+
+2 Adding New ActionScript Class
+*******************************
+
+Adding a new ActionScript class is relatively simple, but the process
+is complicated by the fact that the interface has evolved over time and
+the current code base represents several different formats. This
+document describes the current interface. The Boolean class should be
+considered the authoritative example of a modern ActionScript class.
+
+ ActionScript classes contain a header file and a C++ implementation.
+The name is usually the name of the class as it is called in the
+ActionScript specifications; for instance _Boolean.cpp_ for the Boolean
+class.
+
+ In the CVS source tree, there is a utility file named
+_gen-asclass.sh_ which can be used to create the header file and a C++
+source file stub for an ActionScript class.
+
+* Menu:
+
+* Prototype::
+* Declaration::
+* Instantiation::
+* Methods::
+* Dynamic Properties::
+
+
+File: actionscript.info, Node: Prototype, Next: Declaration, Up: Adding New
ActionScript Class
+
+2.1 Prototype
+=============
+
+In ActionScript, a prototype is a base object which contains all the
+methods that an instantiated object will contain. In short, it
+contains every part of the class except for the portions dealing with
+the storage of instance data.
+
+ In Gnash, the prototype of an ActionScript object is implemented as
+an _as_object_. At startup, the methods and properties of the
+ActionScript class are attached to the _as_object_. The following
+example demonstrates how methods can be attached:
+
+
+ static void
+ attachBooleanInterface(as_object& o)
+ {
+ o.init_member("toString", new
builtin_function(boolean_tostring));
+ o.init_member("valueOf", new
builtin_function(boolean_valueof));
+ }
+
+This code was generated using _gen-asclass.sh_. Typically, you will
+need to customize the attach method to include any new methods you add
+to the class.
+
+ Static properties can also be added to the ActionScript prototype
+(dynamic properties (*note Dynamic Properties::) are addressed later).
+They are attached in a similar way:
+
+
+ o.init_member("myProperty", as_value("HelloWorld"));
+
+ Properties which have been added in this manner can be directly
+accessed in ActionScript code without a function call, as this piece of
+ActionScript code compiled by Ming's _makeswf_ compiler demonstrates:
+
+
+ // Get the value of the myProperty property
+ if (node.myProperty == "HelloWorld") {
+ trace("MATCHED");
+ }
+
+
+File: actionscript.info, Node: Declaration, Next: Instantiation, Prev:
Prototype, Up: Adding New ActionScript Class
+
+2.2 Declaration
+===============
+
+A new class should derive from _as_object_, which is the base class of
+every ActionScript object in Gnash. The class declaration will also be
+generated when you use _gen-asclass.sh_.
+
+
+File: actionscript.info, Node: Instantiation, Next: Methods, Prev:
Declaration, Up: Adding New ActionScript Class
+
+2.3 Instantiation
+=================
+
+The class should contain an init method; this is included in the stub
+when _gen-asclass.sh_ is used.
+
+ The init method should be called in the constructor in _Global.cpp_,
+where all other ActionScript classes are similarly referenced.
+
+
+File: actionscript.info, Node: Methods, Next: Dynamic Properties, Prev:
Instantiation, Up: Adding New ActionScript Class
+
+2.4 Methods
+===========
+
+Every method you implement and attach (*note Prototype::) will receive
+an _fn_call_ data structure as an argument when it is called.
+
+* Menu:
+
+* Accessing Arguments::
+* Returning a Value to ActionScript::
+* Additional fn_call Members::
+
+
+File: actionscript.info, Node: Accessing Arguments, Next: Returning a Value
to ActionScript, Up: Methods
+
+2.4.1 Accessing Arguments
+-------------------------
+
+The arguments stored in _fn_call_ should be accessed using _arg()_. For
+instance, the first element can be popped with _fn.arg(0)_.
+
+ The element popped off the stack is an _as_value_ object (*note The
+as_value Object Type::).
+
+
+File: actionscript.info, Node: Returning a Value to ActionScript, Next:
Additional fn_call Members, Prev: Accessing Arguments, Up: Methods
+
+2.4.2 Returning a Value to ActionScript
+---------------------------------------
+
+The return value should be an _as_value_ object (*note The as_value
+Object Type::). For example:
+
+
+ return as_value('Goodbye, cruel world.');
+
+
+File: actionscript.info, Node: Additional fn_call Members, Prev: Returning a
Value to ActionScript, Up: Methods
+
+2.4.3 Additional fn_call Members
+--------------------------------
+
+There are two other useful members of the _fn_call_ structure, namely
+_this_ptr_ and _nargs_. The former points to the class which is
+invoking this method, while the latter is a count of the number of
+arguments in the stack (*note Accessing Arguments::).
+
+ You may also see instances of the _env_ pointer being used. This
+is being deprecated. Instances which could be replaced with _arg()_
+(*note Accessing Arguments::) are already deprecated; other uses will
+be deprecated in the near future.
+
+ Beyond the _arg() (*note Accessing Arguments::)_ method, there is
+one method of note. _dump_args()_ can be used in debugging to output
+the entire argument stack.
+
+
+File: actionscript.info, Node: Dynamic Properties, Prev: Methods, Up:
Adding New ActionScript Class
+
+2.5 Dynamic Properties
+======================
+
+This section describes accessors to dynamic properties. Read-only
+properties are described in the prototype (*note Prototype::) section.
+
+ Dynamic properties are not created by the _gen-asclass.sh_ script.
+Accessors should be written as a single get/set method. Previously
+this was done by overriding _get_member()_ and _set_member()_, but this
+practice is deprecated.
+
+ The accessor is written so that it sets the property if it is called
+with an argument, and puts the property in the _fn_call_ (*note
+Methods::) result pointer (*note Returning a Value to ActionScript::).
+For instance:
+
+
+ void
+ MyClass::myProperty_getset(const fn_call& fn)
+ {
+
+ boost::intrusive_ptr<MyClass> ptr =
ensureType<MyClass>(fn.this_ptr);
+
+ // setter
+ if ( fn.nargs > 0 )
+ {
+ bool h = fn.arg(0).to_bool();
+ ptr->MyMethod(h);
+ return;
+ }
+
+ // getter
+ bool h = ptr->MyMethod();
+ fn.result->set_bool(h);
+ }
+
+ It has not yet been decided whether properties should be set in the
+exported interface (*note Prototype::) or attached to instances of the
+class. A property is attached in the following manner:
+
+
+ boost::intrusive_ptr<builtin_function> gettersetter;
+ gettersetter = new
builtin_function(&MyClass::myProperty_getset, NULL);
+ o.init_property("myProperty", *gettersetter, *gettersetter);
+
+
+File: actionscript.info, Node: The as_value Object Type, Next: GNU Free
Documentation License, Prev: Adding New ActionScript Class, Up: Top
+
+3 The as_value Object Type
+**************************
+
+The _as_value_ class is used throughout the interpreter to create
+generic objects to hold data.
+
+* Menu:
+
+* Data Types::
+* Determining the Type::
+* Fetching the Value::
+* Setting the Value and Type::
+* Further Reading::
+
+
+File: actionscript.info, Node: Data Types, Next: Determining the Type, Up:
The as_value Object Type
+
+3.1 Data Types
+==============
+
+The following data types are supported: _NULLTYPE_, _BOOLEAN_, _STRING_,
+_NUMBER_, _OBJECT_, _AS_FUNCTION_, and _MOVIECLIP_ (sprite). The type
+_C_FUNCTION_ is being deprecated.
+
+
+File: actionscript.info, Node: Determining the Type, Next: Fetching the
Value, Prev: Data Types, Up: The as_value Object Type
+
+3.2 Determining the Type
+========================
+
+Several methods allow you to determine if a value stored in _as_value_
+is of a specific type. These follow the form of _is_TYPE_, for example
+_is_as_function()_ and _is_number()_. In general, the type names match
+the data types (*note Data Types::) listed above, with the exception of
+the type _MOVIECLIP_ which has a method _is_sprite()_.
+
+
+File: actionscript.info, Node: Fetching the Value, Next: Setting the Value
and Type, Prev: Determining the Type, Up: The as_value Object Type
+
+3.3 Fetching the Value
+======================
+
+Another set of methods will return a representation of the value as a
+particular type. They follow the _to_TYPE_ naming convention. Examples
+are _to_number()_ and _to_bool()_. The type names are as listed (*note
+Data Types::) earlier, except for _MOVIECLIP_, which uses _to_sprite()_.
+
+
+File: actionscript.info, Node: Setting the Value and Type, Next: Further
Reading, Prev: Fetching the Value, Up: The as_value Object Type
+
+3.4 Setting the Value and Type
+==============================
+
+Finally, there is the _set_TYPE_ series of methods. They change the
+type to the type specified in the method name, and set the value to the
+one given as an argument. It is also possible to accomplish the same
+thing with the _=_ operator. Again, type names match those named
+earlier (*note Data Types::), except in the case of _MOVIECLASS_. Its
+method is called _set_sprite()_.
+
+
+File: actionscript.info, Node: Further Reading, Prev: Setting the Value and
Type, Up: The as_value Object Type
+
+3.5 Further Reading
+===================
+
+Please refer to _as_value.h_ or the Doxygen documentation (see
+'Processing The Documentation' in the Gnash manual for instructions on
+generating documents with Doxygen) for more information about which
+methods are available for the _as_value_ object.
+
+
+File: actionscript.info, Node: GNU Free Documentation License, Prev: The
as_value Object Type, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+* Menu:
+
+* 0. PREAMBLE: 0_ PREAMBLE.
+* 1. APPLICABILITY AND DEFINITIONS: 1_ APPLICABILITY AND DEFINITIONS.
+* 2. VERBATIM COPYING: 2_ VERBATIM COPYING.
+* 3. COPYING IN QUANTITY: 3_ COPYING IN QUANTITY.
+* 4. MODIFICATIONS: 4_ MODIFICATIONS.
+* 5. COMBINING DOCUMENTS: 5_ COMBINING DOCUMENTS.
+* 6. COLLECTIONS OF DOCUMENTS: 6_ COLLECTIONS OF DOCUMENTS.
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7_ AGGREGATION WITH INDEPENDENT WORKS.
+* 8. TRANSLATION: 8_ TRANSLATION.
+* 9. TERMINATION: 9_ TERMINATION.
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10_ FUTURE REVISIONS OF THIS LICENSE.
+* Addendum::
+
+
+File: actionscript.info, Node: 0_ PREAMBLE, Next: 1_ APPLICABILITY AND
DEFINITIONS, Up: GNU Free Documentation License
+
+A.1 0. PREAMBLE
+===============
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone the
+effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or non-commercially. Secondarily,
+this License preserves for the author and publisher a way to get credit
+for their work, while not being considered responsible for
+modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft license
+designed for free software.
+
+ We have designed this License in order to use it for manuals for
+free software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals; it
+can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+File: actionscript.info, Node: 1_ APPLICABILITY AND DEFINITIONS, Next: 2_
VERBATIM COPYING, Prev: 0_ PREAMBLE, Up: GNU Free Documentation License
+
+A.2 1. APPLICABILITY AND DEFINITIONS
+====================================
+
+This License applies to any manual or other work that contains a notice
+placed by the copyright holder saying it can be distributed under the
+terms of this License. The "Document", below, refers to any such manual
+or work. Any member of the public is a licensee, and is addressed as
+"you".
+
+ A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+of the Document (*note fdl-document::) that deals exclusively with the
+relationship of the publishers or authors of the Document to the
+Document's overall subject (or to related matters) and contains nothing
+that could fall directly within that overall subject. (For example, if
+the Document is in part a textbook of mathematics, a Secondary Section
+may not explain any mathematics.) The relationship could be a matter
+of historical connection with the subject or with related matters, or of
+legal, commercial, philosophical, ethical or political position
+regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections (*note
+fdl-secondary::) whose titles are designated, as being those of
+Invariant Sections, in the notice that says that the Document (*note
+fdl-document::) is released under this License.
+
+ The "Cover Texts" are certain short passages of text that are
+listed, as Front-Cover Texts or Back-Cover Texts, in the notice that
+says that the Document (*note fdl-document::) is released under this
+License.
+
+ A "Transparent" copy of the Document (*note fdl-document::) means a
+machine-readable copy, represented in a format whose specification is
+available to the general public, whose contents can be viewed and edited
+directly and straightforwardly with generic text editors or (for images
+composed of pixels) generic paint programs or (for drawings) some
+widely available drawing editor, and that is suitable for input to text
+formatters or for automatic translation to a variety of formats
+suitable for input to text formatters. A copy made in an otherwise
+Transparent file format whose markup has been designed to thwart or
+discourage subsequent modification by readers is not Transparent. A
+copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML or
+XML using a publicly available DTD, and standard-conforming simple HTML
+designed for human modification. Opaque formats include PostScript, PDF,
+proprietary formats that can be read and edited only by proprietary
+word processors, SGML or XML for which the DTD and/or processing tools
+are not generally available, and the machine-generated HTML produced by
+some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in formats
+which do not have any title page as such, "Title Page" means the text
+near the most prominent appearance of the work's title, preceding the
+beginning of the body of the text.
+
+
+File: actionscript.info, Node: 2_ VERBATIM COPYING, Next: 3_ COPYING IN
QUANTITY, Prev: 1_ APPLICABILITY AND DEFINITIONS, Up: GNU Free Documentation
License
+
+A.3 2. VERBATIM COPYING
+=======================
+
+You may copy and distribute the Document (*note fdl-document::) in any
+medium, either commercially or noncommercially, provided that this
+License, the copyright notices, and the license notice saying this
+License applies to the Document are reproduced in all copies, and that
+you add no other conditions whatsoever to those of this License. You
+may not use technical measures to obstruct or control the reading or
+further copying of the copies you make or distribute. However, you may
+accept compensation in exchange for copies. If you distribute a large
+enough number of copies you must also follow the conditions in section
+3 (*note 3_ COPYING IN QUANTITY::).
+
+ You may also lend copies, under the same conditions stated above,
+and you may publicly display copies.
+
+
+File: actionscript.info, Node: 3_ COPYING IN QUANTITY, Next: 4_
MODIFICATIONS, Prev: 2_ VERBATIM COPYING, Up: GNU Free Documentation License
+
+A.4 3. COPYING IN QUANTITY
+==========================
+
+If you publish printed copies of the Document (*note fdl-document::)
+numbering more than 100, and the Document's license notice requires
+Cover Texts (*note fdl-cover-texts::), you must enclose the copies in
+covers that carry, clearly and legibly, all these Cover Texts:
+Front-Cover Texts on the front cover, and Back-Cover Texts on the back
+cover. Both covers must also clearly and legibly identify you as the
+publisher of these copies. The front cover must present the full title
+with all words of the title equally prominent and visible. You may add
+other material on the covers in addition. Copying with changes limited
+to the covers, as long as they preserve the title of the Document
+(*note fdl-document::) and satisfy these conditions, can be treated as
+verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+ If you publish or distribute Opaque (*note fdl-transparent::) copies
+of the Document (*note fdl-document::) numbering more than 100, you
+must either include a machine-readable Transparent (*note
+fdl-transparent::) copy along with each Opaque copy, or state in or
+with each Opaque copy a publicly-accessible computer-network location
+containing a complete Transparent copy of the Document, free of added
+material, which the general network-using public has access to download
+anonymously at no charge using public-standard network protocols. If
+you use the latter option, you must take reasonably prudent steps, when
+you begin distribution of Opaque copies in quantity, to ensure that
+this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+the Document (*note fdl-document::) well before redistributing any
+large number of copies, to give them a chance to provide you with an
+updated version of the Document.
+
+
+File: actionscript.info, Node: 4_ MODIFICATIONS, Next: 5_ COMBINING
DOCUMENTS, Prev: 3_ COPYING IN QUANTITY, Up: GNU Free Documentation License
+
+A.5 4. MODIFICATIONS
+====================
+
+You may copy and distribute a Modified Version (*note fdl-modified::)
+of the Document (*note fdl-document::) under the conditions of sections
+2 (*note 2_ VERBATIM COPYING::) and 3 (*note 3_ COPYING IN QUANTITY::)
+above, provided that you release the Modified Version under precisely
+this License, with the Modified Version filling the role of the
+Document, thus licensing distribution and modification of the Modified
+Version to whoever possesses a copy of it. In addition, you must do
+these things in the Modified Version:
+
+ * *A. * Use in the Title Page (*note fdl-title-page::) (and on the
+ covers, if any) a title distinct from that of the Document (*note
+ fdl-document::), and from those of previous versions (which
+ should, if there were any, be listed in the History section of the
+ Document). You may use the same title as a previous version if the
+ original publisher of that version gives permission.
+
+ * *B. * List on the Title Page (*note fdl-title-page::), as authors,
+ one or more persons or entities responsible for authorship of the
+ modifications in the Modified Version (*note fdl-modified::),
+ together with at least five of the principal authors of the
+ Document (*note fdl-document::) (all of its principal authors, if
+ it has less than five).
+
+ * *C. * State on the Title Page (*note fdl-title-page::) the name of
+ the publisher of the Modified Version (*note fdl-modified::), as
+ the publisher.
+
+ * *D. * Preserve all the copyright notices of the Document (*note
+ fdl-document::).
+
+ * *E. * Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ * *F. * Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified Version
+ (*note fdl-modified::) under the terms of this License, in the
+ form shown in the Addendum below.
+
+ * *G. * Preserve in that license notice the full lists of Invariant
+ Sections (*note fdl-invariant::) and required Cover Texts (*note
+ fdl-cover-texts::) given in the Document's (*note fdl-document::)
+ license notice.
+
+ * *H. * Include an unaltered copy of this License.
+
+ * *I. * Preserve the section entitled "History", and its title, and
+ add to it an item stating at least the title, year, new authors,
+ and publisher of the Modified Version (*note fdl-modified::)as
+ given on the Title Page (*note fdl-title-page::). If there is no
+ section entitled "History" in the Document (*note fdl-document::),
+ create one stating the title, year, authors, and publisher of the
+ Document as given on its Title Page, then add an item describing
+ the Modified Version as stated in the previous sentence.
+
+ * *J. * Preserve the network location, if any, given in the Document
+ (*note fdl-document::) for public access to a Transparent (*note
+ fdl-transparent::) copy of the Document, and likewise the network
+ locations given in the Document for previous versions it was based
+ on. These may be placed in the "History" section. You may omit a
+ network location for a work that was published at least four years
+ before the Document itself, or if the original publisher of the
+ version it refers to gives permission.
+
+ * *K. * In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+
+ * *L. * Preserve all the Invariant Sections (*note fdl-invariant::)
+ of the Document (*note fdl-document::), unaltered in their text
+ and in their titles. Section numbers or the equivalent are not
+ considered part of the section titles.
+
+ * *M. * Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version (*note fdl-modified::).
+
+ * *N. * Do not retitle any existing section as "Endorsements" or to
+ conflict in title with any Invariant Section (*note
+ fdl-invariant::).
+
+ If the Modified Version (*note fdl-modified::) includes new
+front-matter sections or appendices that qualify as Secondary Sections
+(*note fdl-secondary::) and contain no material copied from the
+Document, you may at your option designate some or all of these
+sections as invariant. To do this, add their titles to the list of
+Invariant Sections (*note fdl-invariant::) in the Modified Version's
+license notice. These titles must be distinct from any other section
+titles.
+
+ You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version (*note
+fdl-modified::) by various parties-for example, statements of peer
+review or that the text has been approved by an organization as the
+authoritative definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text
+(*note fdl-cover-texts::), and a passage of up to 25 words as a
+Back-Cover Text (*note fdl-cover-texts::), to the end of the list of
+Cover Texts (*note fdl-cover-texts::) in the Modified Version (*note
+fdl-modified::). Only one passage of Front-Cover Text and one of
+Back-Cover Text may be added by (or through arrangements made by) any
+one entity. If the Document (*note fdl-document::) already includes a
+cover text for the same cover, previously added by you or by
+arrangement made by the same entity you are acting on behalf of, you
+may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document (*note
+fdl-document::) do not by this License give permission to use their
+names for publicity for or to assert or imply endorsement of any
+Modified Version (*note fdl-modified::).
+
+
+File: actionscript.info, Node: 5_ COMBINING DOCUMENTS, Next: 6_ COLLECTIONS
OF DOCUMENTS, Prev: 4_ MODIFICATIONS, Up: GNU Free Documentation License
+
+A.6 5. COMBINING DOCUMENTS
+==========================
+
+You may combine the Document (*note fdl-document::) with other
+documents released under this License, under the terms defined in
+section 4 (*note 4_ MODIFICATIONS::) above for modified versions,
+provided that you include in the combination all of the Invariant
+Sections (*note fdl-invariant::) of all of the original documents,
+unmodified, and list them all as Invariant Sections of your combined
+work in its license notice.
+
+ The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections (*note fdl-invariant::) may be
+replaced with a single copy. If there are multiple Invariant Sections
+with the same name but different contents, make the title of each such
+section unique by adding at the end of it, in parentheses, the name of
+the original author or publisher of that section if known, or else a
+unique number. Make the same adjustment to the section titles in the
+list of Invariant Sections in the license notice of the combined work.
+
+ In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+File: actionscript.info, Node: 6_ COLLECTIONS OF DOCUMENTS, Next: 7_
AGGREGATION WITH INDEPENDENT WORKS, Prev: 5_ COMBINING DOCUMENTS, Up: GNU
Free Documentation License
+
+A.7 6. COLLECTIONS OF DOCUMENTS
+===============================
+
+You may make a collection consisting of the Document (*note
+fdl-document::) and other documents released under this License, and
+replace the individual copies of this License in the various documents
+with a single copy that is included in the collection, provided that
+you follow the rules of this License for verbatim copying of each of the
+documents in all other respects.
+
+ You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+File: actionscript.info, Node: 7_ AGGREGATION WITH INDEPENDENT WORKS, Next:
8_ TRANSLATION, Prev: 6_ COLLECTIONS OF DOCUMENTS, Up: GNU Free Documentation
License
+
+A.8 7. AGGREGATION WITH INDEPENDENT WORKS
+=========================================
+
+A compilation of the Document (*note fdl-document::) or its derivatives
+with other separate and independent documents or works, in or on a
+volume of a storage or distribution medium, does not as a whole count
+as a Modified Version (*note fdl-modified::) of the Document, provided
+no compilation copyright is claimed for the compilation. Such a
+compilation is called an "aggregate", and this License does not apply
+to the other self-contained works thus compiled with the Document , on
+account of their being thus compiled, if they are not themselves
+derivative works of the Document. If the Cover Text (*note
+fdl-cover-texts::) requirement of section 3 (*note 3_ COPYING IN
+QUANTITY::) is applicable to these copies of the Document, then if the
+Document is less than one quarter of the entire aggregate, the
+Document's Cover Texts may be placed on covers that surround only the
+Document within the aggregate. Otherwise they must appear on covers
+around the whole aggregate.
+
+
+File: actionscript.info, Node: 8_ TRANSLATION, Next: 9_ TERMINATION, Prev:
7_ AGGREGATION WITH INDEPENDENT WORKS, Up: GNU Free Documentation License
+
+A.9 8. TRANSLATION
+==================
+
+Translation is considered a kind of modification, so you may distribute
+translations of the Document (*note fdl-document::) under the terms of
+section 4 (*note 4_ MODIFICATIONS::). Replacing Invariant Sections
+(*note fdl-invariant::) with translations requires special permission
+from their copyright holders, but you may include translations of some
+or all Invariant Sections in addition to the original versions of these
+Invariant Sections. You may include a translation of this License
+provided that you also include the original English version of this
+License. In case of a disagreement between the translation and the
+original English version of this License, the original English version
+will prevail.
+
+
+File: actionscript.info, Node: 9_ TERMINATION, Next: 10_ FUTURE REVISIONS OF
THIS LICENSE, Prev: 8_ TRANSLATION, Up: GNU Free Documentation License
+
+A.10 9. TERMINATION
+===================
+
+You may not copy, modify, sublicense, or distribute the Document (*note
+fdl-document::) except as expressly provided for under this License.
+Any other attempt to copy, modify, sublicense or distribute the
+Document is void, and will automatically terminate your rights under
+this License. However, parties who have received copies, or rights,
+from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+
+File: actionscript.info, Node: 10_ FUTURE REVISIONS OF THIS LICENSE, Next:
Addendum, Prev: 9_ TERMINATION, Up: GNU Free Documentation License
+
+A.11 10. FUTURE REVISIONS OF THIS LICENSE
+=========================================
+
+The Free Software Foundation (http://www.gnu.org/fsf/fsf.html) may
+publish new, revised versions of the GNU Free Documentation License
+from time to time. Such new versions will be similar in spirit to the
+present version, but may differ in detail to address new problems or
+concerns. See http://www.gnu.org/copyleft/
+(http://www.gnu.org/copyleft).
+
+ Each version of the License is given a distinguishing version
+number. If the Document (*note fdl-document::) specifies that a
+particular numbered version of this License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that specified version or of any later version
+that has been published (not as a draft) by the Free Software
+Foundation. If the Document does not specify a version number of this
+License, you may choose any version ever published (not as a draft) by
+the Free Software Foundation.
+
+
+File: actionscript.info, Node: Addendum, Prev: 10_ FUTURE REVISIONS OF THIS
LICENSE, Up: GNU Free Documentation License
+
+A.12 Addendum
+=============
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright YEAR YOUR NAME.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.1 or any later version published by the Free Software
+ Foundation; with the Invariant Sections (*note fdl-invariant::)
+ being LIST THEIR TITLES, with the Front-Cover Texts (*note
+ fdl-cover-texts::) being LIST, and with the Back-Cover Texts
+ (*note fdl-cover-texts::) being LIST. A copy of the license is
+ included in the section entitled "GNU Free Documentation License".
+
+ If you have no Invariant Sections (*note fdl-invariant::), write
+"with no Invariant Sections" instead of saying which ones are
+invariant. If you have no Front-Cover Texts (*note fdl-cover-texts::),
+write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST";
+likewise for Back-Cover Texts (*note fdl-cover-texts::).
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License
+(http://www.gnu.org/copyleft/gpl.html), to permit their use in free
+software.
+
+
+
+Tag Table:
+Node: Top248
+Node: Introduction1443
+Node: Object Creation Overview1909
+Node: Adding New ActionScript Class2492
+Node: Prototype3518
+Node: Declaration5195
+Node: Instantiation5536
+Node: Methods5932
+Node: Accessing Arguments6322
+Node: Returning a Value to ActionScript6717
+Node: Additional fn_call Members7106
+Node: Dynamic Properties7959
+Node: The as_value Object Type9737
+Node: Data Types10160
+Node: Determining the Type10476
+Node: Fetching the Value11003
+Node: Setting the Value and Type11488
+Node: Further Reading12077
+Node: GNU Free Documentation License12487
+Node: 0_ PREAMBLE13270
+Node: 1_ APPLICABILITY AND DEFINITIONS14579
+Ref: fdl-document14807
+Ref: fdl-modified15098
+Ref: fdl-secondary15285
+Ref: fdl-invariant15930
+Ref: fdl-cover-texts16179
+Ref: fdl-transparent16392
+Ref: fdl-title-page17682
+Node: 2_ VERBATIM COPYING18071
+Node: 3_ COPYING IN QUANTITY19054
+Node: 4_ MODIFICATIONS21414
+Node: 5_ COMBINING DOCUMENTS27477
+Node: 6_ COLLECTIONS OF DOCUMENTS28977
+Node: 7_ AGGREGATION WITH INDEPENDENT WORKS29871
+Node: 8_ TRANSLATION31102
+Node: 9_ TERMINATION32008
+Node: 10_ FUTURE REVISIONS OF THIS LICENSE32666
+Node: Addendum33809
+
+End Tag Table
+
+
+Local Variables:
+coding: US-ASCII
+End:
Index: packaging/doc/dumpshm.1.in
===================================================================
RCS file: packaging/doc/dumpshm.1.in
diff -N packaging/doc/dumpshm.1.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/dumpshm.1.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,35 @@
+.\" -*- coding: us-ascii -*-
+.if \n(.g .ds T< \\FC
+.if \n(.g .ds T> \\F[\n[.fam]]
+.de URL
+\\$2 \(la\\$1\(ra\\$3
+..
+.if \n(.g .mso www.tmac
+.TH dumpshm 1 "13 February 2008"
+.SH NAME
+dumpshm \- Gnash LocalConnection memory Dumper
+.SH Synopsis
+.nf
+
+dumpshm (options)... (file)...
+.fi
+.SH DESCRIPTION
+Dump information about the shared memory segment used by the
+LocalConnection ActionScript class. This memory segment is comprised
+of a header, and a collection of SWF AMF Objects, normally not
+viewable by the user.
+.TP
+-h
+Print usage info.
+.TP
+-i
+Find the key for an existing memory segment.
+.TP
+-r
+Dump memory segment to the terminal.
+.TP
+-c
+Dump memory segment to a disk file, segment.raw.
+.TP
+-v
+Verbose output.
Index: packaging/doc/gnash.1.in
===================================================================
RCS file: packaging/doc/gnash.1.in
diff -N packaging/doc/gnash.1.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/gnash.1.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,135 @@
+.\" -*- coding: us-ascii -*-
+.if \n(.g .ds T< \\FC
+.if \n(.g .ds T> \\F[\n[.fam]]
+.de URL
+\\$2 \(la\\$1\(ra\\$3
+..
+.if \n(.g .mso www.tmac
+.TH gnash 1 "13 February 2008"
+.SH NAME
+gnash \- GNU Flash (SWF) Player
+.SH Synopsis
+.nf
+
+gnash (options)... (file)...
+.fi
+.SH DESCRIPTION
+Run the SWF movie player.
+.TP
+-h
+Print usage info.
+.TP
+-s factor
+Scale the movie up/down by the specified factor.
+.TP
+-c
+Produce a core file instead of letting SDL trap it.
+.TP
+-d num
+Number of milliseconds to delay in main loop.
+.TP
+-a
+Enable ActionScript debugging.
+.TP
+-x
+The XID of the parent window Gnash should use instead of
+creating a new one.
+.TP
+-j
+Set the width of the window. This is only used when embedding
+the player into another window.
+.TP
+-k
+Set the height of the window. This is only used when embedding
+the player into another window.
+.TP
+-v
+Be verbose; i.e. print log messages to stdout.
+.TP
+-va
+Be verbose about movie Actions.
+.TP
+-vp
+Be verbose about parsing the movie.
+.TP
+-ml bias
+Specify the texture LOD bias (float, default is -1).
+.TP
+-p
+Run full speed (no sleep) and log frame rate.
+.TP
+-g
+Start Gnash with a Flash debugger console so one can set
+break points or watchpoints.
+.TP
+-w
+Write the gnash-dbg.log debug log to disk. By default the
+plugin writes its log in your home directory when using a
+launcher from GNOME or KDE.
+.TP
+-1
+Play once; exit when/if movie reaches the last frame.
+.TP
+-r [0|1|2]
+0 disables rendering and sound (good for batch tests).
+
+1 enables rendering and sound (default setting).
+
+2 enables rendering and disables sound.
+.TP
+-t sec
+Timeout and exit after the specified number of seconds.
+.TP
+-u
+Set "real" url of the movie (useful for downloaded movies).
+.TP
+-U
+Set "base" url for this run (used to resolve relative urls,
+defaults to movie url)
+.TP
+-P
+Set parameter (ie. "FlashVars=A=1&b=2")
+.TP
+-F
+Set filedescriptor to use for external communications.
+.TP
+--version
+Print the version number, and the configuration of the
+Gnash player. Please use this info when submitting bug
+reports.
+.SS KEYS
+.TP
+CTRL-Q
+Quit/Exit.
+.TP
+CTRL-W
+Quit/Exit.
+.TP
+ESC
+Quit/Exit.
+.TP
+CTRL-P
+Toggle Pause.
+.TP
+CTRL-R
+Restart the movie.
+.TP
+CTRL-[ or kp-
+Step back one frame.
+.TP
+CTRL-] or kp+
+Step forward one frame.
+.TP
+CTRL-T
+Debug. Test the set_variable() function.
+.TP
+CTRL-G
+Debug. Test the get_variable() function.
+.TP
+CTRL-M
+Debug. Test the call_method() function.
+.TP
+CTRL-B
+Toggle background color.
+.PP
+Flash is Trademarked by Adobe Corporation.
Index: packaging/doc/gnash.html.in
===================================================================
RCS file: packaging/doc/gnash.html.in
diff -N packaging/doc/gnash.html.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/gnash.html.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,2444 @@
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1"><title>Gnash Developer's Guide version 0.4.3</title><meta
name="generator" content="DocBook XSL Stylesheets V1.73.2"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF"><div class="book" lang="en"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a><span
class="application">Gnash</span> Developer's Guide version
0.4.3</h1></div><div><div class="authorgroup"><div class="author"><h3
class="author"><span class="firstname">Rob</span> <span
class="surname">Savoye</span></h3><div class="affiliation"><div
class="address"><p><br>
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code><br>
+ </p></div></div></div></div></div><div><p class="releaseinfo">
+ This manual describes version 0.8.2 of Gnash.
+ </p></div><div><p class="copyright">Copyright © 2005, 2006, 2007, 2008
Free Software Foundation</p></div><div><div class="legalnotice"><a
name="legalnotice"></a><p>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the <a class="link" href="#fdl" title="Appendix A. GNU
Free Documentation License"><em class="citetitle">GNU
+ Free Documentation License</em></a>, Version 1.1 or any later
+ version published by the Free Software Foundation with no Invariant
+ Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this
+ <a class="link" href="#fdl" title="Appendix A. GNU Free Documentation
License">link</a> or in the file COPYING-DOCS
+ distributed with this manual.
+ </p></div></div><div><div class="revhistory"><table border="1" width="100%"
summary="Revision history"><tr><th align="left" valign="top"
colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision
Gnash Manual version 0.3.0</td><td align="left">Oct 2006</td></tr><tr><td
align="left" colspan="2">
+ <p class="author">Rob Savoye
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>
+ Updated for the alpha release.
+ </p>
+
+ <p class="publisher">Free Software Foundation</p>
+ </td></tr><tr><td align="left">Revision Gnash Manual version
0.4.0</td><td align="left">June 2007</td></tr><tr><td align="left" colspan="2">
+ <p class="author">Ann Barcomb
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>
+ Rewritten for software version 0.8.0.
+ </p>
+
+ <p class="publisher">Free Software Foundation</p>
+ </td></tr><tr><td align="left">Revision Gnash Manual version
0.4.1</td><td align="left">Feb 2008</td></tr><tr><td align="left" colspan="2">
+ <p class="author">Rob Savoye
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>
+ Updated for the 0.8.2 release.
+ </p>
+
+ <p class="publisher">Free Software Foundation</p>
+ </td></tr></table></div></div></div><hr></div><div
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a
href="#intro">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a
href="#runs-on">What does <span class="application">Gnash</span> run
on?</a></span></dt><dt><span class="sect1"><a href="#flashsupport">What
Versions of Flash are Supported?</a></span></dt><dt><span class="sect1"><a
href="#audience">Audience</a></span></dt><dt><span class="sect1"><a
href="#guide-conventions">Guide Conventions</a></span></dt><dt><span
class="sect1"><a
href="#Acknowledgments">Acknowledgments</a></span></dt></dl></dd><dt><span
class="chapter"><a href="#specification">2. Technical
Specifications</a></span></dt><dd><dl><dt><span class="sect1"><a
href="#spec-actionscript">ActionScript</a></span></dt><dt><span
class="sect1"><a href="#spec-memory">Memory Management</a></span></dt><dt><span
class="sect1"><a
href="#spec-security">Security</a></span></dt></dl></dd><dt><span
class="chapter"><a href="#build">3. Installing and Configuring <span
class="application">Gnash</span></a></span></dt><dd><dl><dt><span
class="sect1"><a
href="#requirements">Requirements</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#hardware">Hardware
Requirements</a></span></dt><dt><span class="sect2"><a
href="#software">Software Requirements</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#downloading">Downloading <span
class="application">Gnash</span></a></span></dt><dd><dl><dt><span
class="sect2"><a href="#packagemanager">Using a Package
Manager</a></span></dt><dt><span class="sect2"><a href="#gettingsource">Getting
the Source</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#pre-configuration">Pre-Compile
Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a
href="#features">Features</a></span></dt><dt><span class="sect2"><a
href="#custompath">Specifying Custom Paths</a></span></dt><dt><span
class="sect2"><a href="#crosscompilingconfiguration">Cross
Compiling</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#compiling">Building from Source</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#compile">Compiling the Code</a></span></dt><dt><span
class="sect2"><a href="#processdoc">Creating the
Documentation</a></span></dt><dt><span class="sect2"><a
href="#runtests">Running the Tests</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#install">Installation</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#libinstall">Libraries</a></span></dt><dt><span
class="sect2"><a href="#appinstall">Executables</a></span></dt><dt><span
class="sect2"><a
href="#docinstall">Documentation</a></span></dt></dl></dd></dl></dd><dt><span
class="chapter"><a href="#usage">4. Using <span
class="application">Gnash</span></a></span></dt><dd><dl><dt><span
class="sect1"><a href="#options"><span class="application">Gnash</span> Command
Line Options</a></span></dt><dt><span class="sect1"><a href="#keys"><span
class="application">Gnash</span> Interactive Control
Keys</a></span></dt><dt><span class="sect1"><a href="#gnashrc">User
Configuration File</a></span></dt></dl></dd><dt><span class="chapter"><a
href="#bugreport">5. Reporting Bugs</a></span></dt><dd><dl><dt><span
class="sect1"><a href="#bugstep_newcheckout">Compile the latest <span
class="application">Gnash</span> build</a></span></dt><dt><span
class="sect1"><a href="#bugstep_search">Determine if the bug was previously
reported</a></span></dt><dt><span class="sect1"><a
href="#bugstep_guidelines">Review the bug writing
guidelines</a></span></dt><dt><span class="sect1"><a
href="#bugstep_file">Filing a bug report</a></span></dt></dl></dd><dt><span
class="glossary"><a href="#glossary">Glossary</a></span></dt><dt><span
class="chapter"><a href="#authors">6. Authors</a></span></dt><dt><span
class="appendix"><a href="#fdl">A. GNU Free Documentation
License</a></span></dt><dd><dl><dt><span class="sect1"><a
href="#fdl-preamble">0. PREAMBLE</a></span></dt><dt><span class="sect1"><a
href="#fdl-section1">1. APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span
class="sect1"><a href="#fdl-section2">2. VERBATIM
COPYING</a></span></dt><dt><span class="sect1"><a href="#fdl-section3">3.
COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a
href="#fdl-section4">4. MODIFICATIONS</a></span></dt><dt><span class="sect1"><a
href="#fdl-section5">5. COMBINING DOCUMENTS</a></span></dt><dt><span
class="sect1"><a href="#fdl-section6">6. COLLECTIONS OF
DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="#fdl-section7">7.
AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a
href="#fdl-section8">8. TRANSLATION</a></span></dt><dt><span class="sect1"><a
href="#fdl-section9">9. TERMINATION</a></span></dt><dt><span class="sect1"><a
href="#fdl-section10">10. FUTURE REVISIONS OF THIS
LICENSE</a></span></dt><dt><span class="sect1"><a
href="#fdl-using">Addendum</a></span></dt></dl></dd></dl></div><div
class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a
href="#id2790236">ActionScript Classes</a></dt><dt>2.2. <a
href="#id2790524">Opcodes</a></dt><dt>2.3. <a href="#id2790828">Memory
Footprint</a></dt><dt>3.1. <a href="#tb-os-cpu">Build Matrix</a></dt><dt>3.2.
<a href="#id2793204">Code Dependency Table</a></dt><dt>3.3. <a
href="#id2794774">Testing Dependency Table</a></dt><dt>3.4. <a
href="#id2794922">Documentation Dependency Table</a></dt><dt>3.5. <a
href="#tb-config-features">Configuration Options - Features</a></dt><dt>3.6. <a
href="#tb-configure-paths">Custom Path Options</a></dt><dt>4.1. <a
href="#tb-command-line-options">Gnash Command Line Options</a></dt><dt>4.2. <a
href="#tb-control-keys">Gnash Interactive Control Keys</a></dt><dt>4.3. <a
href="#tb-config-variables">User Configuration
Variables</a></dt></dl></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="intro"></a>Chapter 1.
Introduction</h2></div></div></div><div class="toc"><p><b>Table of
Contents</b></p><dl><dt><span class="sect1"><a href="#runs-on">What does <span
class="application">Gnash</span> run on?</a></span></dt><dt><span
class="sect1"><a href="#flashsupport">What Versions of Flash are
Supported?</a></span></dt><dt><span class="sect1"><a
href="#audience">Audience</a></span></dt><dt><span class="sect1"><a
href="#guide-conventions">Guide Conventions</a></span></dt><dt><span
class="sect1"><a
href="#Acknowledgments">Acknowledgments</a></span></dt></dl></div><p>
+ <span class="application">Gnash</span> is a free Flash movie player. It
is available as a stand-alone application or as a plugin for several popular
browsers.
+</p><p>
+<span class="application">Gnash</span> is based on the excellent work done on
the public domain program <span class="application">GameSWF</span>, which is a
graphics library for games that contains the heart of a Flash interpreter. In
December 2005, <span class="application">Gnash</span> was forked from <span
class="application">GameSWF</span> and repackaged in the GNU project style.
The objective of <span class="application">Gnash</span> is to create an
enterprise-quality Flash movie player that can be widely deployed.
+</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="runs-on"></a>What does <span
class="application">Gnash</span> run on?</h2></div></div></div><p>
+The list of successful <span class="application">Gnash</span> deployments
grows every day. At this time, <span class="application">Gnash</span> has been
found to run on several different UNIX and Linux distributions. The plugin
currently works with any browser that uses the NSAPI. This includes:
+</p><div class="itemizedlist"><ul type="disc"><li><p>Mozilla <a class="ulink"
href="http://www.mozilla.org" target="_top">http://www.mozilla.org</a>
+</p></li><li><p>Firefox <a class="ulink"
href="http://www.mozilla.com/en-US/firefox"
target="_top">http://www.mozilla.com/en-US/firefox</a>
+</p></li><li><p>Galeon <a class="ulink" href="galeon.sourceforge.net"
target="_top">galeon.sourceforge.net</a>
+</p></li><li><p>Epiphany <a class="ulink" href="gnome.org/projects/epiphany"
target="_top">gnome.org/projects/epiphany</a>
+</p></li><li><p>Konqueror <a class="ulink" href="http://www.konqueror.org"
target="_top">http://www.konqueror.org</a>
+</p></li><li><p>Opera <a class="ulink" href="http://www.opera.com"
target="_top">http://www.opera.com</a>
+</p></li><li><p>OLPC Web Activity <a class="ulink"
href="http://www.laptop.org" target="_top">http://www.laptop.org</a>
+</p></li></ul></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="flashsupport"></a>What Versions of Flash are
Supported?</h2></div></div></div><p>
+ <span class="application">Gnash</span> supports the majority of
Flash opcodes up to SWF version
+ 7, and a wide sampling of ActionScript classes for SWF version
+ 7. There are plans to work towards greater support for SWF
+ 8 and beyond. AMF support is minimal.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="audience"></a>Audience</h2></div></div></div><p>
+This manual is primarily focused on developers interested in contributing to
or building from the <span class="application">Gnash</span> project. It serves
as a detailed reference guide, including a catalog and explanation of all
options and features. This level of detail may make this guide cumbersome for
the average user, although advanced users may find it helpful.
+</p><p>
+Those who are new to <span class="application">Gnash</span> will find the <em
class="citetitle"><span class="application">Gnash</span> User's Guide</em>,
currently under development, to be more useful when learning to use <span
class="application">Gnash</span>.
+</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="guide-conventions"></a>Guide
Conventions</h2></div></div></div><p>
+This guide makes use of the following fairly standard typefaces, highlighting,
and language usage:
+</p><div class="variablelist"><dl><dt><span class="term"><span
class="application">application</span></span></dt><dd><p>
+The typeface above will be used whenever an application, such as <span
class="application">Firefox</span> or <span
class="application">OpenOffice.org</span>, is mentioned.
+</p></dd><dt><span class="term"><span
class="command"><strong>command</strong></span></span></dt><dd><p>
+The typeface above will be used whenever the text instructs a user to enter a
command at a shell prompt in UNIX/Linux, such as <span
class="command"><strong>ls</strong></span>.
+</p></dd><dt><span class="term"><code
class="computeroutput">computeroutput</code></span></dt><dd><p>
+This is the typeface used to indicate information produced on <code
class="computeroutput">stdout</code> by the computer. This include error
messages and prompts.
+</p></dd><dt><span class="term"><code
class="filename">filename</code></span></dt><dd><p>
+This typeface indicates that the text is the name (and possibly the path) of a
specific file on the system in question. For example, <code
class="filename">/etc/hosts</code> would appear in this typeface.
+</p></dd><dt><span class="term"><span
class="guibutton">guibutton</span></span></dt><dd><p>
+This formatting indicates a button on a Graphical User Interface (GUI). If
this formatting appears, look for a button with the same text on the GUI of the
<span class="application">Gnash</span> player; the button itself may look
slightly different.
+</p></dd><dt><span class="term"><span
class="guimenu">guimenu</span></span></dt><dd><p>
+This typeface indicates the topmost menu item in a GUI. For example, in many
applications the <span class="guimenu">File</span> menu item is a top=level
menu item.
+</p></dd><dt><span class="term"><span
class="guimenuitem">guimenuitem</span></span></dt><dd><p>
+This typeface indicates a sub-menu item in a GUI. For example, in many
applications the <span class="guimenuitem">Save As</span> menu item is a
sub-menu item.
+</p></dd><dt><span class="term"><span
class="guilabel">guitext</span></span></dt><dd><p>
+This typeface indicates a text string on the GUI. This is generally a text
string that appears on the GUI that is not a button or menuitem.
+</p></dd><dt><span class="term"><span
class="keycap"><strong>key</strong></span></span></dt><dd><p>
+This typeface indicates a specific key on the keyboard. For example, the
<span class="keycap"><strong>Ctrl</strong></span> key appears in this typeface.
+</p></dd><dt><span class="term"><span
class="keycap"><strong>key</strong></span>+<span
class="keycap"><strong>combination</strong></span></span></dt><dd><p>
+This formatting indicates a set of keys to be pressed at the same time. A
familiar key combination is <span
class="keycap"><strong>Ctrl</strong></span>+<span
class="keycap"><strong>Alt</strong></span>+<span
class="keycap"><strong>Delete</strong></span>.
+</p></dd><dt><span class="term"><em
class="replaceable"><code><replaceable></code></em></span></dt><dd><p>
+Whenever a general term is included in an example as a placeholder, it will be
signaled by this formatting. This formatting will usually appear inside other
formatting. For example, <code class="filename">/home/<em
class="replaceable"><code><username></code></em></code> indicates the
home directory of a user, whose actual username would be substituted in for <em
class="replaceable"><code><username></code></em>.
+</p></dd><dt><span class="term"><strong class="userinput"><code>User
input</code></strong></span></dt><dd><p>
+This typeface indicates anything that the user must enter, whether that is at
a shell prompt or in response to a GUI prompt.
+</p></dd></dl></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="Acknowledgments"></a>Acknowledgments</h2></div></div></div><p>
+The first version of this guide was written by Rob Savoye. If not for his
tireless efforts, this book - and this project - would never have come this far.
+</p><p>
+John Steinhart has also been dedicated to the project from the beginning. I
have shamelessly plagiarized one of his early announcement emails in the early
part of this chapter.
+</p><p>
+Ann Barcomb was instrumental in taking this guide from the 0.3.0 to the 0.4.0
version, incorporating the many changes that came with <span
class="application">Gnash</span> version 0.8.0.
+</p><p>
+Finally, thanks to all of the <span class="application">Gnash</span>
developers I haven't mentioned for all their hard work, and for answering my
unending questions.
+</p></div></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a
name="specification"></a>Chapter 2. Technical
Specifications</h2></div></div></div><div class="toc"><p><b>Table of
Contents</b></p><dl><dt><span class="sect1"><a
href="#spec-actionscript">ActionScript</a></span></dt><dt><span
class="sect1"><a href="#spec-memory">Memory Management</a></span></dt><dt><span
class="sect1"><a href="#spec-security">Security</a></span></dt></dl></div><p>
+The information in this chapter may change quickly. For the most current
information about the following subjects, be sure the check the Developer's
Wiki at <a class="ulink"
href="http://www.gnashdev.org/wiki/index.php/Main_Page"
target="_top">http://www.gnashdev.org/wiki/index.php/Main_Page</a>.
+</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a
name="spec-actionscript"></a>ActionScript</h2></div></div></div><p>
+As stated in the section <a class="xref" href="#flashsupport" title="What
Versions of Flash are Supported?">the section called “What Versions of
Flash are Supported?”</a>, <span class="application">Gnash</span> has
implemented about 80% of ActionScript v. 2.0, and has begun implementing
ActionScript v. 3.0. <span class="application">Gnash</span> supports the
majority of Flash opcodes up to SWF version 7, and a wide sampling of
ActionScript classes for SWF version 7.
+</p><p>
+The following table indicates how fully various ActionScript classes have been
implemented:
+</p><div class="table"><a name="id2790236"></a><p class="title"><b>Table 2.1.
ActionScript Classes</b></p><div class="table-contents"><table
summary="ActionScript Classes" border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Class</th><th
align="left">Status</th></tr></thead><tbody><tr><td
align="left">Actionscript/Date</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/Function</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/MovieClip</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/MovieClipLoader</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/Object</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/Sound</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/String</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/XMLNode</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/XMLSocket</td><td
align="left">Implemented</td></tr><tr><td
align="left">Actionscript/_global</td><td align="left">Partially
Implemented</td></tr><tr><td align="left">Actionscript/Array</td><td
align="left">Partially Implemented</td></tr><tr><td
align="left">Actionscript/LocalConnection</td><td align="left">Partially
Implemented</td></tr><tr><td align="left">Actionscript/NetConnection</td><td
align="left">Partially Implemented</td></tr><tr><td
align="left">Actionscript/NetStream</td><td align="left">Partially
Implemented</td></tr><tr><td align="left">Actionscript/TextField</td><td
align="left">Partially Implemented</td></tr><tr><td
align="left">Actionscript/XML</td><td align="left">Partially
Implemented</td></tr><tr><td align="left">Actionscript/Boolean</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/Error</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/LoadVars</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/Number</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/Selection</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/TextFormat</td><td
align="left">Unimplemented</td></tr><tr><td
align="left">Actionscript/Unknown</td><td
align="left">Unimplemented</td></tr></tbody></table></div></div><br
class="table-break"><p>
+The next table indicates which opcodes have been implemented:
+</p><div class="table"><a name="id2790524"></a><p class="title"><b>Table 2.2.
Opcodes</b></p><div class="table-contents"><table summary="Opcodes"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Opcode</th><th
align="left">Status</th></tr></thead><tbody><tr><td align="left">0x43
declare_obj</td><td align="left">Implemented</td></tr><tr><td align="left">0x2B
cast</td><td align="left">Implemented</td></tr><tr><td align="left">0x3B
delete2 - SWF::ACTION_DELETE</td><td align="left">Implemented</td></tr><tr><td
align="left">0x53 new_method</td><td align="left">Implemented</td></tr><tr><td
align="left">0x55 enum_object</td><td align="left">Implemented</td></tr><tr><td
align="left">0x3A delete - SWF::ACTION_DELETEVAR</td><td
align="left">Implemented</td></tr><tr><td align="left">0x69 Extends -
SWF::ACTION_EXTENDS</td><td align="left">Implemented</td></tr><tr><td
align="left">0x54 instance_of</td><td align="left">Partially
Implemented</td></tr><tr><td align="left">0x2A Throw</td><td
align="left">Unimplemented</td></tr><tr><td align="left">0x2C
Implements</td><td align="left">Unimplemented</td></tr><tr><td
align="left">0x8F Try</td><td align="left">Unimplemented</td></tr><tr><td
align="left">0x31 md length</td><td align="left">Unimplemented</td></tr><tr><td
align="left">0x35 md substring</td><td
align="left">Unimplemented</td></tr><tr><td align="left">0x37 md chr</td><td
align="left">Unimplemented</td></tr><tr><td align="left">0x45 get
target</td><td
align="left">Unimplemented</td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="spec-memory"></a>Memory Management</h2></div></div></div><p>
+One of the new features of <span class="application">Gnash</span> 0.8.2 is the
garbage collector. The garbage collector manages complex ActionScript
variables, which are the only ones that are shared by references. In <span
class="application">Gnash</span>, these are <span
class="command"><strong>as_object</strong></span> class instances created by
ActionScript (i.e. not those created by playhead control: <span
class="command"><strong>placeobject</strong></span>/<span
class="command"><strong>removeobject</strong></span>).
+</p><p>
+Collected objects are those allocated due to ActionScript explicit or implicit
calls. Explicit all are any user-defined statements that allocate new objects,
such as arrays, Objects, or script-created movieclips. Implicit calls are the
built-in functions that can be deleted by arbitrary user calls.
+</p><p>
+Any object that is a candidate for garbage collecting is stored in a list
owned by the collector. This list is filled by an executing action context
whenever a collectible object is allocated on the heap.
+</p><p>
+The garbage collector starts at the very end of an execution context, rather
than using a threshold to trigger it. At this point, the virtual machine is in
a "stable" state; any still-reachable object has its roots in one of the
currently live character instances (stage characters).
+</p><p>
+The collector is a conservative collector. Any object on the collectibles
list is marked as <span class="guilabel">UNREACHABLE</span>, an iterative scan
starting from the roots marks any still-reachable object, and a final purge
releases all still-<span class="guilabel">UNREACHABLE</span> resources.
+</p><p>
+This garbage collector has reduced the memory footprint of <span
class="application">Gnash</span>. However, the most current, available test
data indicated the following runtime memory footprint:
+</p><div class="table"><a name="id2790828"></a><p class="title"><b>Table 2.3.
Memory Footprint</b></p><div class="table-contents"><table summary="Memory
Footprint" border="1"><colgroup><col align="left"><col align="left"><col
align="left"><col align="left"></colgroup><thead><tr><th align="left">Render
GUI</th><th align="left">Virtual Memory</th><th align="left">Resident Set Size
(physical RAM</th><th align="left">Shared Memory (code
size)</th></tr></thead><tbody><tr><td align="left">agg-gtk</td><td
align="left">33372 KB</td><td align="left">14 MB</td><td align="left">8948
KB</td></tr><tr><td align="left">agg-sdl</td><td align="left">26564 KB</td><td
align="left">9396 KB</td><td align="left">5124 KB</td></tr><tr><td
align="left">agg-fltk</td><td align="left">24556 KB</td><td align="left">8992
KB</td><td align="left">4220 KB</td></tr><tr><td
align="left">cairo-fltk</td><td align="left">184 MB</td><td align="left">128
MB</td><td align="left">4284 KB</td></tr><tr><td align="left">cairo-gtk</td><td
align="left">192 MB</td><td align="left">133 MB</td><td align="left">8000
KB</td></tr><tr><td align="left">cairo-sdl</td><td align="left">187 MB</td><td
align="left">129 MB </td><td align="left">5256 KB</td></tr><tr><td
align="left">opengl-gtk </td><td align="left">62620 KB</td><td align="left">15
MB</td><td align="left">9336 KB</td></tr><tr><td align="left">opengl-sdl
</td><td align="left">54932 KB</td><td align="left">10 MB</td><td
align="left">5324 KB</td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="spec-security"></a>Security</h2></div></div></div><p>
+Many Flash implementations contain potential security exploits that could
compromise a viewer's system. With <span class="application">Gnash</span>, an
end-user has the ability to see "what's going on" — what types of data
the application accesses, where it is found, and how it is used. Many known
Flash exploits are included in the <span class="application">Gnash</span> test
suite that is used to check whether a release is ready for the public. The
<span class="application">Gnash</span> developers are also in the process of a
security review, developing a security layer that will protect an end-user, no
matter what operating system they use.
+</p><p>
+One early security feature is the blacklist/whitelist. Flash movies running
in a browser can make outgoing network connections. This can be used, for
example, to compromise a network device inside a company firewall via a Flash
movie running on an employee's browser. <span class="application">Gnash</span>
allows you to blacklist hosts that you know are insecure, or to whitelist hosts
you know are secure, by editing a configuration file.
+</p></div></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="build"></a>Chapter 3.
Installing and Configuring <span
class="application">Gnash</span></h2></div></div></div><div
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a
href="#requirements">Requirements</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#hardware">Hardware
Requirements</a></span></dt><dt><span class="sect2"><a
href="#software">Software Requirements</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#downloading">Downloading <span
class="application">Gnash</span></a></span></dt><dd><dl><dt><span
class="sect2"><a href="#packagemanager">Using a Package
Manager</a></span></dt><dt><span class="sect2"><a href="#gettingsource">Getting
the Source</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#pre-configuration">Pre-Compile
Configuration</a></span></dt><dd><dl><dt><span class="sect2"><a
href="#features">Features</a></span></dt><dt><span class="sect2"><a
href="#custompath">Specifying Custom Paths</a></span></dt><dt><span
class="sect2"><a href="#crosscompilingconfiguration">Cross
Compiling</a></span></dt></dl></dd><dt><span class="sect1"><a
href="#compiling">Building from Source</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#compile">Compiling the Code</a></span></dt><dt><span
class="sect2"><a href="#processdoc">Creating the
Documentation</a></span></dt><dt><span class="sect2"><a
href="#runtests">Running the Tests</a></span></dt></dl></dd><dt><span
class="sect1"><a href="#install">Installation</a></span></dt><dd><dl><dt><span
class="sect2"><a href="#libinstall">Libraries</a></span></dt><dt><span
class="sect2"><a href="#appinstall">Executables</a></span></dt><dt><span
class="sect2"><a
href="#docinstall">Documentation</a></span></dt></dl></dd></dl></div><p>
+ There are two ways of installing <span class="application">Gnash</span>:
+ <a class="link" href="#packagemanager" title="Using a Package
Manager">using a package manager</a>
+ or <a class="link" href="#gettingsource" title="Getting the
Source">installing from source</a>.
+ </p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a
name="requirements"></a>Requirements</h2></div></div></div><p>
+Before downloading and installing <span class="application">Gnash</span>,
check that your hardware and software meet the following requirements.
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="hardware"></a>Hardware
Requirements</h3></div></div></div><p>
+One of the goals of <span class="application">Gnash</span> is to make it
portable enough to install on small devices. As a result, the hardware
requirements are minimal. <span class="application">Gnash</span> has even run
on an ARM9 at 200 MHz with 64 MB of RAM! (It ran without video support in this
case.) While firm minimums have not been established, <span
class="application">Gnash</span> has been shown to run successfully with the
following:
+</p><div class="itemizedlist"><ul type="disc"><li><p>
+336 MHz processor
+</p></li><li><p>
+256 MB RAM
+</p></li><li><p>
+Video — <span class="application">Gnash</span> will run on anything from
a raw frame buffer up to an OpenGL-supporting graphics card.
+</p></li></ul></div><p>
+The following table provides a list of the Operating System/CPU combinations
on which <span class="application">Gnash</span> has been shown to run.
+</p><div class="table"><a name="tb-os-cpu"></a><p class="title"><b>Table 3.1.
Build Matrix</b></p><div class="table-contents"><table summary="Build Matrix"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Render GUI</th><th
align="left">Virtual Memory</th></tr></thead><tbody><tr><td
align="left">FreeBSD</td><td align="left">Alpha AXP, AMD64, i386, Itanium,
PC-98, PowerPC, SPARC64
+</td></tr><tr><td align="left">GNU/Linux
+</td><td align="left">CRIS</td></tr><tr><td align="left">GNU/Linux [OLPC]
+</td><td align="left">Geode GX
+</td></tr><tr><td align="left">GNU/Linux ALTLinux
+</td><td align="left">i586</td></tr><tr><td align="left">GNU/Linux Arklinux
+</td><td align="left">i586</td></tr><tr><td align="left">GNU/Linux Debian
+</td><td align="left">Alpha AXP, AMD64, ARM, hppa, i386, Itanium, MIPS,
PowerPC, IBM zSeries (s390), SPARC
+</td></tr><tr><td align="left">GNU/Linux Fedora core
+</td><td align="left">x86-32, x86-64
+</td></tr><tr><td align="left">GNU/Linux Gentoo
+</td><td align="left">AMD64, PowerPC, SPARC, x86
+</td></tr><tr><td align="left">GNU/Linux Gentoo
+</td><td align="left">AMD64, PowerPC, SPARC, x86
+</td></tr><tr><td align="left">GNU/Linux Maemo 2.1
+</td><td align="left">ARMv5t</td></tr><tr><td align="left">GNU/Linux Mandriva
2007
+</td><td align="left"> </td></tr><tr><td align="left">GNU/Linux Open Zaurus
+</td><td align="left">ARM
+</td></tr><tr><td align="left">GNU/Linux OpenSuSE 10
+</td><td align="left">i586, x86-64
+</td></tr><tr><td align="left">GNU/Linux Red Hat
+</td><td align="left">x86-32, x86-64
+</td></tr><tr><td align="left">GNU/Linux Ubuntu
+</td><td align="left">x86-64 reported working, also x86-32 and UltraSPARC
+</td></tr><tr><td align="left">Haiku</td><td align="left"> </td></tr><tr><td
align="left">Irix 6.5
+</td><td align="left">MIPS R10K
+</td></tr><tr><td align="left">MacOS X
+</td><td align="left">PowerPC and x86-32
+</td></tr><tr><td align="left">NetBSD</td><td align="left">many, including VAX
+</td></tr><tr><td align="left">OpenBSD</td><td align="left">many, including
VAX, OS/2 and eComstation</td></tr><tr><td align="left">Windows</td><td
align="left">x86-32</td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a name="software"></a>Software
Requirements</h3></div></div></div><p>
+The 0.8.2 release of <span class="application">Gnash</span> has been designed
to run on UNIX/Linux variants, and has been run on most of the free ones.
However, <span class="application">Gnash</span> has successfully run on
Windows, Darwin (Mac OS X), Irix, Solaris, BeOs, OS/2, and Haiku. <span
class="application">Gnash</span> has also run on the following 64-bit systems:
PowerPC, Itanium, UltraSparc, and AMD64. For now, it is important to be sure
that the following code, testing, and documentation dependencies are met before
installing <span class="application">Gnash</span>. If you will be downloading
<span class="application">Gnash</span> with a package manager, these
dependencies may be solved by the package manager. Otherwise, you must first
verify that each of these dependencies are installed on the target system.
+</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4
class="title"><a name="codedepend"></a>Code
Dependencies</h4></div></div></div><p>
+ <span class="application">Gnash</span> has a number of dependencies on other
packages.
+ If you install the dependencies using a package
+ manager, be certain to install the development versions
+ of the packages. The normal versions are often missing
+ the headers <span class="application">Gnash</span> needs to compile.
+</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3
class="title">Note</h3><p>
+If you want to install the <span class="application">Gnash</span> plugin for
one of the browsers listed in the <a class="xref" href="#intro" title="Chapter
1. Introduction">Chapter 1, <i>Introduction</i></a>, be sure to install the
development package for that browser before configuring. The <span
class="application">Gnash</span> <span
class="command"><strong>configure</strong></span> script searches for the devel
packages before building the plugin.
+</p></div><div class="table"><a name="id2793204"></a><p class="title"><b>Table
3.2. Code Dependency Table</b></p><div class="table-contents"><table
summary="Code Dependency Table" border="1"><colgroup><col align="left"><col
align="left"><col align="left"><col align="left"><col align="left"><col
align="left"><col align="left"></colgroup><thead><tr><th
align="left">Name</th><th align="left">Level</th><th
align="left">Version</th><th align="left">Description</th><th
align="left">Explanation</th><th align="left">apt-get package</th><th
align="left">RPM/Yum package</th></tr></thead><tbody><tr><td
align="left">Boost</td><td align="left">Required</td><td align="left">1.32 or
higher</td><td align="left">
+ Boost is a library of portable C++ classes and
+ templates.
+ </td><td align="left">
+ In <span class="application">Gnash</span>, Boost libraries are used
extensively.
+ </td><td align="left"><code
class="filename">libboost-thread-dev</code></td><td align="left"><code
class="filename">liboost-thread-dev</code></td></tr><tr><td
align="left">libxml2</td><td align="left">Required</td><td align="left">
</td><td align="left">
+ Libxml2 is the GNOME XML parser library and
+ is available at <a class="ulink" href="http://xmlsoft.org"
target="_top">http://xmlsoft.org</a>.
+ </td><td align="left">
+ This library is used to parse messages in the
+ XML or XMLSocket ActionScript classes.
+ </td><td align="left"><code
class="filename">libxml2-dev</code></td><td align="left"><code
class="filename">libxml2-devel</code></td></tr><tr><td align="left">AGG</td><td
align="left">Possibly Required</td><td align="left">2.4 or higher</td><td
align="left">
+ AGG is the AntiGrain low-level 2D graphics
+ library.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ renderer. AGG is considered the <span class="emphasis"><em>best
+ supported</em></span> renderer for <span
class="application">Gnash</span>.
+ </td><td align="left"><code class="filename">libagg-dev</code></td><td
align="left"><code class="filename">agg-devel</code></td></tr><tr><td
align="left">OpenGL</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ OpenGL is a standard specification defining a
+ cross-language cross-platform API for writing
+ applications which produce 3D and 2D graphics.
+ It supports hardware acceleration.
+ You can download a free implementation from
+ <a class="ulink" href="http://www.mesa3d.org"
target="_top">http://www.mesa3d.org</a>.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ renderer.
+ </td><td align="left"><code
class="filename">libgl1-mesa-dev</code></td><td align="left"><code
class="filename">libmesa-devel</code></td></tr><tr><td
align="left">Cairo</td><td align="left">Possibly Required</td><td align="left">
</td><td align="left">
+ Cairo is a 2D graphics library with support for
+ multiple output devices. It will automatically use
+ graphic card acceleration when available, and has
+ an experimental OpenGL backend.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ renderer. Cairo is considered
+ the <span class="emphasis"><em>least supported</em></span> renderer
+ for <span class="application">Gnash</span>.
+ </td><td align="left"><code
class="filename">libcairo2-dev</code></td><td align="left"><code
class="filename">cairo-devel</code></td></tr><tr><td align="left">GTK</td><td
align="left">Possibly Required</td><td align="left">2.2 or higher</td><td
align="left">
+ GTK is the GIMP Toolkit GUI library.
+ It uses Cairo internally.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ GUI library. GTK is considered to be the
+ <span class="emphasis"><em>best supported</em></span> GUI library
+ option for <span class="application">Gnash</span>.
+ </td><td align="left"><code
class="filename">libgtk2.0-dev</code></td><td align="left"><code
class="filename">gtk-devel</code></td></tr><tr><td
align="left">GtkGlExt</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ GtkGlExt integrates OpenGL into GTK.
+ </td><td align="left">
+ This library is required in order to use
+ the GTK GUI library in conjunction with the
+ OpenGL renderer.
+ </td><td align="left"><code
class="filename">libgtkglext1-dev</code></td><td align="left"><code
class="filename">gtkglext-devel</code></td></tr><tr><td
align="left">SDL</td><td align="left">Possibly Required</td><td align="left">
</td><td align="left">
+ The Simple DirectMedia Layer is a cross-platform
+ multimedia library which provides abstraction for
+ audio, graphics, sound and input APIs.
+ SDL is available from
+ <a class="ulink" href="http://www.libsdl.org" target="_top">
+ http://www.libsdl.org</a>.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ GUI library. SDL may also be used as a sound
+ handler regardless of whether it is employed as
+ a GUI library. The GUI
+ library is <span class="emphasis"><em>poorly supported</em></span>
+ in <span class="application">Gnash</span>, but the sound handler is
the
+ <span class="emphasis"><em>best supported</em></span> in <span
class="application">Gnash</span>.
+ </td><td align="left"><code
class="filename">libsdl1.2-dev</code></td><td align="left"><code
class="filename">SDL-devel</code></td></tr><tr><td align="left">FLTK</td><td
align="left">Possibly Required</td><td align="left">2.0 or higher</td><td
align="left">
+ The Fast Light ToolKit is a portable GUI library
+ which is intended as a replacement for the SDL GUI.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ GUI library. FLTK may be used in conjunction with
+ the Cairo and AGG renderers.
+ </td><td align="left">No distribution packages are available.</td><td
align="left">No distribution packages are available.</td></tr><tr><td
align="left">KDE</td><td align="left">Possibly Required</td><td align="left">
</td><td align="left">
+ Kdelibs is a collection of libraries needed to
+ compile KDE applications.
+ </td><td align="left">
+ <span class="application">Gnash</span> requires the installation of
at least one
+ GUI library. Kdelibs is also required for the
+ Kpart plugin for Konqueror.
+ </td><td align="left"><code
class="filename">kdelibs4-dev</code></td><td align="left"><code
class="filename">kdelibs-devel</code></td></tr><tr><td
align="left">libMAD</td><td align="left">Optional</td><td align="left">
</td><td align="left">
+ libMAD is MPEG audio decoder.
+ </td><td align="left">
+ libMAD is one of the available options for sound
+ handling.
+ </td><td align="left"><code
class="filename">libmad0-dev</code></td><td align="left"><code
class="filename">libmad-devel</code></td></tr><tr><td
align="left">Gstreamer</td><td align="left">Optional</td><td align="left">
</td><td align="left">
+ Gstreamer is a video handler.
+ </td><td align="left">
+ If you would like video playback, you must
+ install one of the video handlers.
+ </td><td align="left"><code
class="filename">libgstreamer0.8-dev</code></td><td align="left"><code
class="filename">gstreamer-devel</code></td></tr><tr><td
align="left">gst-ffmpeg</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ gst-ffmpeg allows you to use the FFMPEG decoder
+ with Gstreamer.
+ </td><td align="left">
+ This package is required if you would like to
+ use Gstreamer as a video handler.
+ </td><td align="left"><code
class="filename">gstreamer0.8-ffmpeg-dev</code></td><td align="left"><code
class="filename">gstreamer-ffmpeg-devel</code></td></tr><tr><td
align="left">FFMPEG</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ FFMPEG is a video handler.
+ </td><td align="left">
+ If you would like video playback, you must
+ install one of the video handlers. It is also
+ a dependency of gst-ffmpeg.
+ </td><td align="left"><code class="filename">ffmpeg-dev</code></td><td
align="left"><code class="filename">ffmpeg-devel</code></td></tr><tr><td
align="left">JPEG</td><td align="left">Optional</td><td align="left"> </td><td
align="left">
+ <a class="ulink" href="http://www.ijg.org/" target="_top">JPEG</a>
+ is a lossy image format which is heavily used for images.
+ </td><td align="left">
+ This library is used for rendering JPEGs.
+ </td><td align="left"><code
class="filename">libjpeg62-dev</code></td><td align="left"><code
class="filename">libjpeg</code></td></tr><tr><td align="left">PNG</td><td
align="left">Optional</td><td align="left"> </td><td align="left">
+ <a class="ulink" href="http://www.libpng.org/pub/png/"
target="_top">PNG</a> is
+ a patent-free image format which is comparable to
+ <span class="emphasis"><em>GIF</em></span>.
+ </td><td align="left">
+ This library is used for rendering PNGs.
+ </td><td align="left"><code
class="filename">libpng12-dev</code></td><td align="left"><code
class="filename">libpng</code></td></tr><tr><td align="left">libcurl</td><td
align="left">Optional</td><td align="left"> </td><td align="left">
+ libcurl is the multiprotocal file transfer library.
+ </td><td align="left">
+ This library is used for URL downloading.
+ </td><td align="left"><code
class="filename">libcurl4-gnutls</code></td><td align="left"><code
class="filename">libcurl</code></td></tr><tr><td align="left">automake</td><td
align="left">Possibly Required</td><td align="left">1.6.0</td><td align="left">
+ Automake is a tool for generating
+ <span class="emphasis"><em>Makefile.in</em></span> files.
+ </td><td align="left">
+ This package is required to run
+ <span class="emphasis"><em>autogen.sh</em></span>, which is a
requirement
+ if you are using the development source from CVS.
+ </td><td align="left"><code class="filename">automake</code></td><td
align="left"><code class="filename">automake</code></td></tr><tr><td
align="left">autoconf</td><td align="left">Possibly Required</td><td
align="left">2.59</td><td align="left">
+ Autoconf is a package for generating configure
+ scripts.
+ </td><td align="left">
+ This package is required to run
+ <span class="emphasis"><em>autogen.sh</em></span>, which is a
requirement
+ if you are using the development source from CVS.
+ </td><td align="left"><code class="filename">autoconf</code></td><td
align="left"><code class="filename">autoconf</code></td></tr><tr><td
align="left">gettext</td><td align="left">Possibly Required</td><td
align="left">0.14.6</td><td align="left">
+ Gettext is part of the GNU Translation Project.
+ </td><td align="left">
+ This package is required to run
+ <span class="emphasis"><em>autogen.sh</em></span>, which is a
requirement
+ if you are using the development source from CVS.
+ </td><td align="left"><code class="filename">gettext</code></td><td
align="left"><code class="filename">gettext</code></td></tr><tr><td
align="left">libtool</td><td align="left">Possibly Required</td><td
align="left">1.5.22</td><td align="left">
+ This is a generic library support script.
+ </td><td align="left">
+ This package is required to run
+ <span class="emphasis"><em>autogen.sh</em></span>, which is a
requirement
+ if you are using the development source from CVS.
+ </td><td align="left"><code
class="filename">libltdl3-dev</code></td><td align="left"><code
class="filename">libtool</code></td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a name="testdepend"></a>Testing
Dependencies</h4></div></div></div><p>
+ <span class="application">Gnash</span> tries to run as many tests as
possible, but will
+ simply skip tests if the tools to run them are unavailable.
+</p><div class="table"><a name="id2794774"></a><p class="title"><b>Table 3.3.
Testing Dependency Table</b></p><div class="table-contents"><table
summary="Testing Dependency Table" border="1"><colgroup><col align="left"><col
align="left"><col align="left"><col align="left"><col align="left"><col
align="left"><col align="left"></colgroup><thead><tr><th
align="left">Name</th><th align="left">Level</th><th
align="left">Version</th><th align="left">Description</th><th
align="left">Explanation</th><th align="left">apt-get package</th><th
align="left">RPM/Yum package</th></tr></thead><tbody><tr><td
align="left">Ming</td><td align="left">Optional</td><td
align="left">0.4.0_beta4 or higher</td><td align="left">
+ Ming is an ActionScript compiler.
+ </td><td align="left">
+ Ming is the primary compiler for ActionScript testcases.
+ </td><td align="left">No distribution packages are available.</td><td
align="left">No distribution packages are available.</td></tr><tr><td
align="left">Mtasc</td><td align="left">Optional</td><td align="left"> </td><td
align="left">
+ Mtasc is an ActionScript compiler.
+ </td><td align="left">
+ Mtasc is used in some tests.
+ </td><td align="left"><code class="filename">mtasc</code></td><td
align="left">No distribution packages are available.</td></tr><tr><td
align="left">swfdec</td><td align="left">Optional</td><td align="left">
</td><td align="left">
+ Swfdec is a Flash player.
+ </td><td align="left">
+ Swfdec is used in some testcases.
+ </td><td align="left">No distribution packages are available.</td><td
align="left">Unofficial package <code
class="filename">swfdec</code></td></tr><tr><td align="left">DejaGnu</td><td
align="left">Optional</td><td align="left"> </td><td align="left">
+ DejaGnu is a testing framework.
+ </td><td align="left">
+ DejaGnu is used to run multiple tests in an
+ automated fashion.
+ </td><td align="left"><code class="filename">dejagnu</code></td><td
align="left"><code
class="filename">dejagnu</code></td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a
name="docdepend"></a>Documentation Dependencies</h4></div></div></div><p>
+ The following packages are used to build <span
class="application">Gnash</span>'s documentation.
+</p><div class="table"><a name="id2794922"></a><p class="title"><b>Table 3.4.
Documentation Dependency Table</b></p><div class="table-contents"><table
summary="Documentation Dependency Table" border="1"><colgroup><col
align="left"><col align="left"><col align="left"><col align="left"><col
align="left"><col align="left"><col align="left"></colgroup><thead><tr><th
align="left">Name</th><th align="left">Level</th><th
align="left">Version</th><th align="left">Description</th><th
align="left">Explanation</th><th align="left">apt-get package</th><th
align="left">RPM/Yum package</th></tr></thead><tbody><tr><td
align="left">Docbook</td><td align="left">Required</td><td align="left">
</td><td align="left">
+ <a class="ulink" href="http://http://docbook.sourceforge.net/"
target="_top">Docbook</a> is
+ is an industry-standard XML format for technical
+ documentation. You can download it from
+ <a class="ulink"
href="http://sourceforge.net/project/showfiles.php?group_id=21935#files"
target="_top">http://sourceforge.net/project/showfiles.php?group_id=21935#files</a>.
+ </td><td align="left">
+ <span class="application">Gnash</span> documentation is written in
Docbook.
+ </td><td align="left"><code class="filename">docbook-utils</code> and
+ <code class="filename">docbook-dsssl</code></td><td
align="left"><code class="filename">docbook-dtd41-sgml</code> and
+ <code
class="filename">docbook-style-dsssl</code></td></tr><tr><td
align="left">DocBook2X</td><td align="left">Optional</td><td align="left">
</td><td align="left">
+ This software package converts Docbook documents to
+ the traditional man page format, GNU Texinfo
+ format, and HTML (via Texinfo) format.
+ It is available at <a class="ulink"
href="http://docbook2x.sourceforge.net/"
target="_top">http://docbook2x.sourceforge.net/</a>.
+ </td><td align="left">
+ DocBook2X is required to produce HTML and Texinfo
+ formats.
+ </td><td align="left"><code class="filename">docbook2x</code></td><td
align="left"><code class="filename">docbook2x</code></td></tr><tr><td
align="left">Texinfo</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ Texinfo can be used to convert DocBook2X output
+ into GNU info pages. You can download it from
+ <a class="ulink" href="http://ftp.gnu.org/gnu/texinfo/"
target="_top">http://ftp.gnu.org/gnu/texinfo/</a>.
+ </td><td align="left">
+ Texinfo is required if you wish to product GNU info
+ pages.
+ </td><td align="left"><code class="filename">texinfo</code></td><td
align="left"><code class="filename">texinfo</code></td></tr><tr><td
align="left">FOP</td><td align="left">Optional</td><td
align="left">0.20.5</td><td align="left">
+ Formatting Objects Processor is a print formatter
+ driven by XSL formatting objects. It is a Java
+ application which can output PDF, PCL, PS, SVG, XML,
+ Print, AWT, MIF, and Text. It is available at
+ <a class="ulink" href="http://xmlgraphics.apache.org/fop/"
target="_top">http://xmlgraphics.apache.org/fop/</a>.
+ </td><td align="left">
+ FOP is required for PDF output.
+ </td><td align="left"><code class="filename">fop</code></td><td
align="left"><code class="filename">fop</code></td></tr><tr><td
align="left">Java (j2re)</td><td align="left">Possibly Required</td><td
align="left"> </td><td align="left">
+ FOP requires Sun's Java runtime (GCJ does not work with
+ FOP). You can download it from
+ <a class="ulink" href="http://java.sun.com"
target="_top">http://java.sun.com</a>.
+ </td><td align="left">
+ Sun's Java runtime (j2re) is required to use FOP.
+ </td><td align="left">
+ Download the package from <a class="ulink"
href="http://java.sun.com" target="_top">Sun</a>.
+ </td><td align="left">
+ Download the package from <a class="ulink"
href="http://java.sun.com" target="_top">Sun</a>.
+ </td></tr><tr><td align="left">JAI</td><td align="left">Possibly
Required</td><td align="left"> </td><td align="left">
+ Sun's Java Advanced Imaging API can be downloaded from
+ <a class="ulink"
href="http://java.sun.com/products/java-media/jai/iio.html"
target="_top">http://java.sun.com/products/java-media/jai/iio.html</a>.
+ </td><td align="left">
+ JAI is required
+ if you wish to include graphics in a PDF file being
+ generated with FOP.
+ </td><td align="left">
+ Download the package from <a class="ulink"
href="http://java.sun.com/products/java-media/jai/iio.html"
target="_top">Sun</a>.
+ </td><td align="left">
+ Download the package from <a class="ulink"
href="http://java.sun.com/products/java-media/jai/iio.html"
target="_top">Sun</a>.
+ </td></tr></tbody></table></div></div><br class="table-break"><p>
+ If you install j2re, set the <span class="emphasis"><em>JAVA_HOME</em></span>
+ environment variable to the top directory of the j2re
+ installation. If you encounter problems with the Java
+ installation, you may also need to add this path to the
+ <span class="emphasis"><em>CLASSPATH</em></span> environment variable.
+</p></div></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="downloading"></a>Downloading <span
class="application">Gnash</span></h2></div></div></div><p>
+There are two ways to download <span class="application">Gnash</span>: using a
package manager or by downloading the source code and building it on your
system. If possible, it is advisable to use a package manager to download <span
class="application">Gnash</span>, as it will resolve dependencies for you.
However, if you want the very latest features, or a <span
class="application">Gnash</span> package is not available for your operating
system, it is better to download the source code and build <span
class="application">Gnash</span> locally.
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="packagemanager"></a>Using a Package
Manager</h3></div></div></div><p>
+ <span class="application">Gnash</span> is available as a package for a
number of Linux and BSD
+ distributions, such as <a class="ulink"
href="http://packages.ubuntu.com/feisty/utils/gnash" target="_top">Ubuntu</a>,
+ <a class="ulink" href="http://packages.debian.org/unstable/utils/gnash"
target="_top">Debian</a>,
+ <a class="ulink" href="http://www.freshports.org/graphics/gnash/"
target="_top">FreeBSD</a>,
+ and <a class="ulink" href="http://ports.openbsd.nu/www/gnash"
target="_top">OpenBSD</a>.
+ There is also an unofficial Fedora RPM.
+ This is not an extensive list, and you are advised to search
+ if you wish to use a package manager on a different system.
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="gettingsource"></a>Getting the
Source</h3></div></div></div><p>
+ <span class="application">Gnash</span> is available as a <a class="link"
href="#sourcereleases" title="Releases">release
+ tarball</a>, a <a class="link" href="#sourcerepo"
title="Repository">development
+ checkout</a>, or a <a class="link" href="#sourcesnapshot"
title="Snapshot">development
+ snapshot</a>.
+ </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4
class="title"><a name="sourcereleases"></a>Releases</h4></div></div></div><p>
+ The source can be acquired from a
+ <a class="ulink" href="http://www.gnu.org/prep/ftp.html"
target="_top">GNU FTP
+ Mirror</a>. The release version is intended to be
+ stable, and is probably your best choice if the release took
+ place recently. If you need features or fixes which were
+ introduced after the release, consider a
+ <a class="link" href="#sourcerepo" title="Repository">CVS checkout</a>
or the
+ <a class="link" href="#sourcesnapshot" title="Snapshot">daily
snapshot</a>.
+ </p><p>
+ To download, select a mirror near you, then choose the
+ <code class="filename">gnash</code> directory.
+ </p></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a
name="sourcerepo"></a>Repository</h4></div></div></div><p>
+ The latest development sources are available via
+ anonymous CVS. This is recommended
+ if you need features or bug fixes which were introduced after
+ the <a class="link" href="#sourcereleases" title="Releases">last
release</a>. Look at
+ the <a class="link" href="#sourcesnapshot" title="Snapshot">daily
snapshot</a> if you
+ experience difficulty accessing the repository.
+ </p><p>
+To download via anonymous CVS, first set the
+ environment variable <span
class="command"><strong>CVS_RSH</strong></span> to <span
class="command"><strong>ssh</strong></span>, then check out the source code.
The example below uses the GNU Bourne-Again shell (bash):
+</p><pre class="screen">
+export CVS_RSH="ssh"
+cvs -z3 -d:pserver:address@hidden:/sources/gnash co gnash
+</pre><p>
+ It is also possible to browse the repository
+ <a class="ulink"
href="http://cvs.savannah.gnu.org/viewcvs/gnash/?root=gnash"
target="_top">http://cvs.savannah.gnu.org/viewcvs/gnash/?root=gnash</a> on the
web.
+ </p></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a
name="sourcesnapshot"></a>Snapshot</h4></div></div></div><p>
+ The daily development snapshot can be downloaded from
+ <a class="ulink" href="http://www.gnashdev.org/dev_snapshots/"
target="_top">http://www.gnashdev.org/dev_snapshots/</a>.
+ This is the best option if you need changes which were introduced
+ after the <a class="link" href="#sourcereleases" title="Releases">last
release</a> of
+ <span class="application">Gnash</span>, but are unable to <a
class="link" href="#sourcerepo" title="Repository">download
+ directly from the repository.</a>
+ </p></div></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="pre-configuration"></a>Pre-Compile Configuration</h2></div></div></div><p>
+<span class="application">Gnash</span>, like most GNU projects, allows a user
to select various options before compiling its source code. These options
include selecting from the available features, specifying custom paths for
installation, and cross compiling. <span class="application">Gnash</span> uses
<a class="ulink" href="http://www.gnu.org/software/autoconf/" target="_top">GNU
Autoconf</a>
+ for configuration.
+</p><p>
+ If you opted to download the
+ <a class="link" href="#sourcerepo" title="Repository">development
checkout</a>
+ of <span class="application">Gnash</span>, the <span
class="emphasis"><em>configure</em></span> script will
+ not be included. It can be created by running
+ <span class="emphasis"><em>autogen.sh</em></span> from the source root
directory:
+ </p><pre class="programlisting">
+ ./autogen.sh
+ </pre><p>
+ Note that there are some
+ <a class="link" href="#codedepend" title="Code
Dependencies">dependencies</a> for
+ autogen.
+</p><p>
+ All the standard <span class="command"><strong>configure</strong></span>
options
+ are available. In addition, <span class="application">Gnash</span> has two
types of
+ options: those that <a class="link" href="#features" title="Features">enable
or disable
+ features</a>, and
+ those that <a class="link" href="#custompath" title="Specifying Custom
Paths">specify custom paths for
+ development packages</a>
+ which are not found during the default search. A complete
+ list of <span class="emphasis"><em>all</em></span> configuration options,
including
+ standard ones, can be seen by typing:
+ </p><pre class="programlisting">
+ ./configure --help |less
+ </pre><p>
+ Read further for a more detailed explanation of <span
class="application">Gnash</span>-specific
+ options.
+</p><p>
+ The syntax for running <span class="emphasis"><em>configure</em></span> is
as follows:
+ </p><pre class="programlisting">
+ configure <em class="replaceable"><code><options></code></em>
+ </pre><p>
+ The example below shows the <span
class="command"><strong>configure</strong></span> options
+ which create the smallest working standalone version of <span
class="application">Gnash</span>. In
+ this example, <span class="command"><strong>configure</strong></span> is
being run from the
+ source root directory:
+</p><pre class="programlisting">
+./configure --disable-debugger --disable-cygnal --disable-docbook \
+--disable-plugin --enable-media=mad --enable-gui=sdl
+</pre><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="features"></a>Features</h3></div></div></div><p>
+ Some switches can be used during configuration to enable or disable
+ features of <span class="application">Gnash</span>. Some of the most
important configuration options
+ are:
+</p><div class="itemizedlist"><ul type="opencircle"><li
style="list-style-type: circle"><p>
+<code class="option">--enable-gui</code> lets you specify your GUI of choice.
+The default option is GTK.
+ </p></li><li style="list-style-type: circle"><p>
+<code class="option">--enable-renderer</code> allows a renderer to be
+chosen. The default renderer is OpenGL.
+ </p></li><li style="list-style-type: circle"><p>
+<code class="option">--enable-media</code> permits a media handler to be
+selected. The default is FFMPEG with SDL sound.
+ </p></li></ul></div><p>
+ A complete list of available features follows.
+</p><div class="table"><a name="tb-config-features"></a><p
class="title"><b>Table 3.5. Configuration Options - Features</b></p><div
class="table-contents"><table summary="Configuration Options - Features"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Option</th><th
align="left">Function</th></tr></thead><tbody><tr><td align="left"><code
class="option">--enable-debugger</code></td><td align="left">Enable support for
the Flash debugger. The debugger is
+ mainly of interest to Flash developers.</td></tr><tr><td
align="left"><code class="option">--enable-dmalloc</code></td><td
align="left">Enable support for the DMalloc memory debugging
tool.</td></tr><tr><td align="left"> <code
class="option">--enable-docbook</code></td><td align="left"> Enable the
generation of HTML and PDF versions of the documentation
+ from the XML. You will then be able to use <span
class="command"><strong>make html</strong></span> and <span
class="command"><strong>make pdf</strong></span>.</td></tr><tr><td
align="left"> <code class="option">--enable-embedded</code></td><td
align="left"> Link to Qt-embedded, do not use X. This is only used by
+ Klash</td></tr><tr><td align="left"> <code
class="option">--disable-fork</code></td><td align="left">Disable the plugin
from forking the standalone player, and
+ using a thread for the player instead. Currently forking
+ the standalone player gives you the best results.</td></tr><tr><td
align="left"><code class="option">--enable-ghelp</code>
+</td><td align="left">Enable support for the GNOME help
system.</td></tr><tr><td align="left"><code
class="option">--disable-glext</code>
+</td><td align="left">Disable using GtkGlExt, which forces the use of SDL
+ instead. By default if the GtkGL extension for Gtk is found
+ by the configure script, the GTK-enabled GUI is
built.</td></tr><tr><td align="left"><code
class="option">--enable-gui=gtk|sdl|kde|fltk|fb</code></td><td
align="left"><p>Select the Graphic User Interface to use (choose one).</p>
+ <div class="variablelist"><dl><dt><span class="term">GTK</span></dt><dd><p>
+ The GTK+ toolkit, which is the default GUI.
+ Said to interwork particularly well with firefox.
+</p></dd><dt><span class="term">SDL</span></dt><dd><p>
+ Simple DirectMedia Layer, a simple and portable GUI.
+ Its sound facilities are used when --enable-media=ffmpeg|mad
+ regardless of whether it is also in charge of the GUI.
+</p></dd><dt><span class="term">KDE</span></dt><dd><p>
+ An interface adapted to the KDE Desktop Environment.
+ This must be selected when building the Konqueror plugin
+ "klash". Furthermore, the only renderer that currently
+ works with KDE is opengl.
+</p></dd><dt><span class="term">FLTK</span></dt><dd><p>
+ Fast Light ToolKit, low on resource usage.
+ Since all build using fltk are now broken, we declare it
+ "for developers".
+</p></dd><dt><span class="term">FB</span></dt><dd><p>
+ The Linux Frame Buffer, also known as /dev/fb0.
+ AGG is the only renderer that can currently be used
+ with the framebuffer GUI.
+</p></dd></dl></div>
+</td></tr><tr><td align="left"><code
class="option">--enable-i810-lod-bias</code>
+</td><td align="left">Enable fix for Intel 810 LOD bias problem. Older versions
+ of libMesa on the Intel i810 or i815 graphics processor
+ need this flag or Gnash will core dump. This has been
+ fixed in newer versions (summer 2005) of libMesa.</td></tr><tr><td
align="left"><code class="option">--enable-libsuffix</code>
+</td><td align="left"><code class="filename">/lib</code> directory suffix
(64,32,none=default). This is only
+ used by Klash.</td></tr><tr><td align="left"><code
class="option">--enable-mac</code>
+</td><td align="left">Link to Qt/Mac (don't use X). This is only used by
+ Klash.</td></tr><tr><td align="left"><code
class="option">--enable-media=ffmpeg|mad|gst</code>
+</td><td align="left"> <p>
+ Select the specified media decoder and sound engine.
+ FFMPEG and MAD use the SDL sound engine; GST uses its own.
+ MAD only decodes MP3 sounds and uses integer arithmetic while
+ the others also decode video files and use floating point.
+ <code class="option">FFMPEG</code> is the default decoder.
+ </p>
+ <p>
+ You should only select one media decoder.
+ </p></td></tr><tr><td align="left">
+ <code class="option">--disable-nsapi</code>
+ <code class="option">--enable-nsapi</code>
+ </td><td align="left">Force disable/enable building the NPAPI plugin.
+ By default the Mozilla plugin is built if the GTK gui
+ is selected. Specify the
+ <code class="option">--with-npapi-plugindir=</code> option to specify
where the
+ plugin should be installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--disable-kparts</code>
+ <code class="option">--enable-kparts</code>
+ </td><td align="left">Force disable/enable building the KPARTS plugin. By
default the
+ KDE plugin is built if the kde gui is selected.
+ Specify the <code class="option">--with-kde-plugindir=</code> and
+ <code class="option">--with-kde-servicesdir=</code> options (or more
generally
+ the <code class="option">--with-kde-pluginprefix=</code> one) to
specify where the
+ plugin should be installed. The default installation dir is extracted
+ from kde-config.
+ </td></tr><tr><td align="left">
+ <code class="option">--disable-plugins</code>
+ </td><td align="left">Disable build of both kparts and npapi
plugins</td></tr><tr><td align="left"> <code
class="option">--enable-qtopia</code>
+</td><td align="left"> Link to Qt-embedded, link to the Qtopia
+ Environment. This is only used by Klash.</td></tr><tr><td
align="left"><code class="option">--enable-renderer=opengl|cairo|agg</code>
+</td><td align="left">Enable support for the a graphics backend. Currently
+ only <code class="option">opengl</code> and
+ <code class="option">agg</code> work sufficiently. OpenGL is
+ used when you have hardware accelerated graphics. AGG i
+ used when you do not have hardware accelerated
+ graphics. Typically most desktop machines have OpenGL
+ support, and most embedded systems do not. OpenGl is the
+ default when building Gnash, although the quality of AGG's
+ rendering is currently superior to OpenGL.</td></tr><tr><td
align="left"><code class="option">--enable-sdk-install</code>
+</td><td align="left">Enable installing the libraries and headers as an SDK.
+</td></tr><tr><td align="left"><code class="option">--disable-shared</code>
+</td><td align="left">Enable installing the shared libraries and headers.
+ Note that the extensions mechanism may not work if shared
+ libraries are disabled.</td></tr><tr><td align="left"><code
class="option">--enable-strict</code>
+</td><td align="left">Turn verbose GCC compiler warnings. By default only
+ <code class="option">-Wall</code> is used with GCC.</td></tr><tr><td
align="left"><code class="option">--enable-fps-debug</code>
+</td><td align="left">Enable FPS debugging code. When this feature is compiled
in you can use the -f switch of <span class="application">Gnash</span>
+ to have FPS printed at regular intervals.</td></tr><tr><td
align="left"><code class="option">--enable-write</code></td><td
align="left">Makes the Mozilla plugin write the currently playing SWF movie to
<code class="filename">/tmp</code>.
+</td></tr><tr><td align="left"><code class="option">--disable-mit-shm</code>
+</td><td align="left">Disable support for the MIT-SHM X extensions.
+ Currently support is only available using GTK gui and AGG renderer.
+ Keeping it enabled is not a problem as it will not be used if not
+ available in the current X session.
+ </td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect2" lang="en"><div
class="titlepage"><div><div><h3 class="title"><a
name="custompath"></a>Specifying Custom Paths</h3></div></div></div><p>
+ By default, none of these options should be required
+ unless you want <span class="application">Gnash</span> to use a specific
version of a
+ development package, or if the configure test fails to
+ find a component. Please <a class="link" href="#bugreport" title="Chapter
5. Reporting Bugs">report the problem</a> if a
+ configure test fails.
+</p><p>
+ The following custom path options are available:
+</p><div class="table"><a name="tb-configure-paths"></a><p
class="title"><b>Table 3.6. Custom Path Options</b></p><div
class="table-contents"><table summary="Custom Path Options"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Option</th><th
align="left">Function</th></tr></thead><tbody><tr><td align="left">
+ <code class="option">--x-includes=DIR</code>
+ </td><td align="left">
+ X include files are in DIR.
+ </td></tr><tr><td align="left">
+ <code class="option">--x-libraries=DIR</code>
+ </td><td align="left">
+ X library files are in DIR.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-libxml=PFX</code>
+ </td><td align="left">
+ Prefix to where libxml is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-libxml-libraries=DIR</code>
+ </td><td align="left">
+ Directory where libxml library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-libxml-includes=DIR</code>
+ </td><td align="left">
+ Directory where libxml header files are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-docbook=DIR</code>
+ </td><td align="left">
+ Directory where the DocBook style-sheets are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-sdl-prefix=PFX</code>
+ </td><td align="left">
+ Prefix where SDL is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-zlib-incl</code>
+ </td><td align="left">
+ Directory where zlib header is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-zlib-lib</code>
+ </td><td align="left">
+ Directory where zlib library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-jpeg-incl</code>
+ </td><td align="left">
+ Directory where jpeg header is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-jpeg-lib</code>
+ </td><td align="left">
+ Directory where jpeg library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-png-incl</code>
+ </td><td align="left">
+ Directory where png header is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-png-lib</code>
+ </td><td align="left">
+ Directory where png library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-qt-dir</code>
+ </td><td align="left">
+ Directory where QT is installed. This is only used by
+ the Klash plugin.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-qt-includes</code>
+ </td><td align="left">
+ Directory where the QT header files are installed. This
+ is only used by the Klash plugin.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-qt-libraries</code>
+ </td><td align="left">
+ Directory where the QT libraries are installed. This is
+ only used by the Klash plugin.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-npapi-plugindir</code>
+ </td><td align="left">
+ This is the directory to install the NPAPI (Mozilla) plugin in.
+ By default it goes to ~/.mozilla/plugins.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-kde-pluginprefix</code>
+ </td><td align="left">
+ This option sets the default install dir for all KPARTS (kde) files.
+ The plugin will be installed in PREFIX/lib/kde3, use <code
class="option">-with-kde-plugindir</code> to override.
+ The service file in PREFIX/share/services, use <code
class="option">--with-kde-servicesdir</code> to override.
+ The config file in PREFIX/share/config, use <code
class="option">--with-kde-configdir</code> to override.
+ The appdata file in PREFIX/share/apps/klash, use <code
class="option">--with-kde-appsdatadir</code> to override.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-kde-plugindir</code>
+ </td><td align="left">
+ This is the directory to install the KPARTS (kde) plugin in.
+ By default it is what's set by --with-kde-pluginprefix or what's
returned by kde-config --install module --expandvars,
+ or $(prefix)/share/services if kde-config is not found.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-kde-servicesdir</code>
+ </td><td align="left">
+ This is the directory to install the KPARTS (kde) service in.
+ By default it is what's set by --with-kde-pluginprefix or what's
returned by kde-config --install services --expandvars,
+ or $(libdir)/kde3 if kde-config is not found.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-kde-configdir</code>
+ </td><td align="left">
+ This is the directory to install the KPARTS (kde) config files in.
+ By default it is what's set by --with-kde-pluginprefix or what's
returned by kde-config --install config --expandvars,
+ or $(prefix)/share/config if kde-config is not found.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-kde-appsdatadir</code>
+ </td><td align="left">
+ This is the directory to install the KPARTS (kde) application data
files in.
+ By default it is what's set by --with-kde-pluginprefix or what's
returned by kde-config --install data --expandvars,
+ or $(prefix)/share/apps if kde-config is not found.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-ming</code>
+ </td><td align="left">
+ Ming is used to build test cases, but not by the Gnash
+ player itself.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-mad_incl</code>
+ </td><td align="left">
+ Directory where libmad header is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-mad_lib</code>
+ </td><td align="left">
+ Directory where libmad library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-ogg_incl</code>
+ </td><td align="left">
+ Directory where the libogg headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-ogg_lib</code>
+ </td><td align="left">
+ Directory where the libogg library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-gstreamer-incl</code>
+ </td><td align="left">
+ Directory where the Gstreamer headers are
+ installed. Gstreamer version 0.10 or greater must be used.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-gstreamer-lib</code>
+ </td><td align="left">
+ Directory where the Gstreamer library is
+ installed. Gstreamer version 0.10 or greater must be used.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-opengl-includes</code>
+ </td><td align="left">
+ Directory where OpenGL (libMesa) headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-opengl-lib</code>
+ </td><td align="left">
+ Directory where the OpenGL (libMesa) library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-glext-incl</code>
+ </td><td align="left">
+ Directory where GtkGlExt headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-glext-lib</code>
+ </td><td align="left">
+ Directory where the GtkGlExt library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-gtk2-incl</code>
+ </td><td align="left">
+ Directory where the Gtk2 headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-gtk2-lib</code>
+ </td><td align="left">
+ Directory where the Gtk2 library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-cairo_incl</code>
+ </td><td align="left">
+ Directory where the Cairo headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-cairo-lib</code>
+ </td><td align="left">
+ Directory where the Cairo library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-glib-incl</code>
+ </td><td align="left">
+ Directory where the Glib headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-glib-lib</code>
+ </td><td align="left">
+ Directory where the Glib library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-pango-incl</code>
+ </td><td align="left">
+ Directory where the Pango headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-pango-lib</code>
+ </td><td align="left">
+ Directory where the Pango library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-atk-incl</code>
+ </td><td align="left">
+ Directory where the ATK headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-atk-lib</code>
+ </td><td align="left">
+ Directory where the ATK library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-pthread-incl</code>
+ </td><td align="left">
+ Directory where the Pthread headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-pthread-lib</code>
+ </td><td align="left">
+ Directory where the Pthread library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-agg-incl</code>
+ </td><td align="left">
+ Directory where the AGG (Antigrain) headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-agg-lib</code>
+ </td><td align="left">
+ Directory where the AGG (Antigrain) library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-ffmpeg-incl</code>
+ </td><td align="left">
+ Directory where the FFMPEG headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-ffmpeg-lib</code>
+ </td><td align="left">
+ Directory where the FFMPEG library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-boost-incl</code>
+ </td><td align="left">
+ Directory where the Boost headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-boost-lib</code>
+ </td><td align="left">
+ Directory where the Boost library is installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-curl-incl</code>
+ </td><td align="left">
+ Directory where the libCurl headers are installed.
+ </td></tr><tr><td align="left">
+ <code class="option">--with-curl-lib</code>
+ </td><td align="left">
+ Directory where the libCurl library is installed.
+ </td></tr></tbody></table></div></div><br class="table-break"></div><div
class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a
name="crosscompilingconfiguration"></a>Cross Compiling</h3></div></div></div><p>
+ To cross configure and compile <span class="application">Gnash</span>, begin
by building a target system
+ on your workstation. This includes cross compilers for the target
+ architecture, and some system headers.
+ You will also need the following packages to be built for the target
+ system: <span class="emphasis"><em>libxml2</em></span>, <span
class="emphasis"><em>libpng</em></span>
+ (if used), <span class="emphasis"><em>libjpeg</em></span> (if used), your
+ GUI library, your renderer, and your video handler (if used). The page
+ <a class="ulink" href="http://frank.harvard.edu/~coldwell/toolchain/"
target="_top">http://frank.harvard.edu/~coldwell/toolchain/</a>
+ has instructions on building a target system from scratch and
+ offers a shell script to make the process easier.
+</p><p>
+ Note that you may have some difficulties getting libMesa (opengl)
+ to cross compile.
+</p><p>
+ The important configuration options are the ones which specify the
+ architecture for the build:
+</p><div class="variablelist"><dl><dt><span
class="term">--target</span></dt><dd><p>
+ The target architecture, where the final executables are expected
+ to run.
+ </p></dd><dt><span class="term">--host</span></dt><dd><p>
+ The host architecture, where the executables are expected
+ to run. Usually this is the same as the <span
class="emphasis"><em>--target</em></span>,
+ except when building a compiler as a Canadian Cross. In this
+ case, you might build a cross compiler on a UNIX system which
+ runs on a win32 machine, producing code for a third architecture,
+ such as ARM. In this example, <span
class="emphasis"><em>--target</em></span> would
+ be 'arm-unknown-linux-gnu', while <span
class="emphasis"><em>--host</em></span> would
+ be 'win32'.
+ </p></dd><dt><span class="term">--build</span></dt><dd><p>
+ This is the system the build is running on.
+ </p></dd></dl></div><p>
+ The following example of <span class="emphasis"><em>configure</em></span>
builds for an
+ ARM system on an x86 system. It was run after an ARM system was built
+ in <code class="filename">/usr/arm</code> and other required libraries were
+ cross compiled.
+ </p><pre class="programlisting">
+./configure -target=arm-unknown-linux-gnu --prefix=/usr/arm \
+--host=arm-unknown-linux-gnu --build=i686-pc-linux-gnu --disable-plugin
+ </pre><p>
+</p></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="compiling"></a>Building from Source</h2></div></div></div><p>
+ Once you have <a class="link" href="#pre-configuration" title="Pre-Compile
Configuration">configured</a> <span class="application">Gnash</span>,
+ you are ready to build the code. <span class="application">Gnash</span> is
built using
+ <span class="emphasis"><em>GNU make</em></span>.
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="compile"></a>Compiling the Code</h3></div></div></div><p>
+ The most basic way to compile code is simply:
+ </p><pre class="programlisting">
+ make
+ </pre><p>
+ If the compilation ends with an error, check the output of
+ <span class="emphasis"><em>configure</em></span> and ensure that you are
not missing
+ any required prerequisites. The output of <span
class="command"><strong>make</strong></span> can be verbose; you may wish to
pipe the output to a file.
+ </p><p>
+ The variables used by <span class="emphasis"><em>make</em></span> can be
redefined when
+ the program is invoked, if you desire it. The most interesting flags
+ are <span class="emphasis"><em>CFLAGS</em></span> and <span
class="emphasis"><em>CXXFLAGS</em></span>,
+ which are often used to enable debugging or turn of optimization.
+ The default value for both of these variables is
+ <span class="emphasis"><em>-O2 -g</em></span>. A list of influential
+ environment variables can be seen in the configuration help:
+</p><pre class="programlisting">./configure --help</pre><p>
+ In the following example, debugging is enabled and optimization is
+ disabled:
+</p><pre class="programlisting">make CFLAGS=-g CXXFLAGS=-g</pre></div><div
class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a
name="processdoc"></a>Creating the Documentation</h3></div></div></div><p>
+ By default, documentation is not built when you
+ <a class="link" href="#install" title="Installation">install</a> <span
class="application">Gnash</span>. This is because
+ there are a number of <a class="link" href="#docdepend"
title="Documentation Dependencies">dependencies
+ for the documentation</a>. Documentation is built when it
+ is specified with a specific target in the generated
+ <span class="command"><strong>Makefile</strong></span> in the <code
class="filename">doc/C</code>
+ sub-directory. If you type <span class="command"><strong>make
install</strong></span> in
+ this directory, all documents will be built.
+ </p><p>
+ You must specify a target output format when you wish to create
+ documentation. The available output formats are: <span
class="command"><strong>html</strong></span>,
+ <span class="command"><strong>pdf</strong></span>, <span
class="command"><strong>info</strong></span>,
+ <span class="command"><strong>man</strong></span>, and <span
class="command"><strong>alldocs</strong></span>.
+ It is also possible to output <span class="command"><strong>GNOME
help</strong></span> if
+ the <a class="link" href="#features" title="Features">configure option</a>
+ <code class="option">--enable-ghelp</code> was used.
+ The <span class="command"><strong>alldocs</strong></span> target will
build all output formats
+ except <span class="emphasis"><em>GNOME help</em></span>.
+ For example, to create HTML output, type:
+ </p><pre class="programlisting">
+ make html
+ </pre><p>
+ </p><p>
+ <span class="application">Gnash</span> also uses <a class="ulink"
href="http://www.stack.nl/~dimitri/doxygen/index.html"
target="_top">Doxygen</a> to produce <span class="emphasis"><em>HTML</em></span>
+ documentation of <span class="application">Gnash</span> internals. You
must have Doxygen installed
+ to produce this documentation, which is built from the
+ <code class="filename">doc</code> directory with the command (documents
+ will be placed in the subdirectory <code
class="filename">apidoc/html</code>):
+ </p><pre class="programlisting">
+ make apidoc
+ </pre><p>
+ </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="runtests"></a>Running the Tests</h3></div></div></div><p>
+ Before beginning the potentially lengthy install, it is wise to test the
installation. If a test fails, please report it by following the
+ <a class="link" href="#bugreport" title="Chapter 5. Reporting
Bugs">instructions for reporting a bug</a>.
+ </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4
class="title"><a name="dejagnu"></a>Using DejaGnu</h4></div></div></div><p>
+
+ The easiest way to run <span class="application">Gnash</span>'s test
suite is to install
+ <span class="emphasis"><em><a class="ulink"
href="http://www.gnu.org/software/dejagnu"
target="_top">DejaGnu</a></em></span>.
+ After installing DejaGnu, run:
+ </p><pre class="programlisting">
+ make check
+ </pre><p>
+ </p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5
class="title"><a name="testing_verbosity"></a>Increasing
Verbosity</h5></div></div></div><p>
+ If you encounter a problem with a test, increasing the
+ verbosity may make the issue easier to spot.
+ Additional details are visible when
+ <span class="emphasis"><em>RUNTESTFLAGS</em></span> are used to add
the
+ <span class="emphasis"><em>verbose</em></span> and <span
class="emphasis"><em>all</em></span> options.
+ The <code class="option">verbose</code> option prints more information
about the testing process, while
+ the <code class="option">all</code> option includes details on passing
tests.
+ </p><pre class="programlisting">
+ make check RUNTESTFLAGS="-v -a"
+ </pre><p>
+ </p></div><div class="sect4" lang="en"><div
class="titlepage"><div><div><h5 class="title"><a
name="running_some_tests"></a>Running Some Tests</h5></div></div></div><p>
+ It is possible to run just a single test, or
+ a subdirectory of tests, by specifying the directory or
+ compiled test file.
+ </p><p>
+ Some tests rely on <span
class="emphasis"><em>testsuite/Dejagnu.swf</em></span>,
+ which in turn relies on <span class="emphasis"><em>Ming</em></span>.
+ This file is created when you run <span class="command"><strong>make
check</strong></span> for the entire
+ testsuite, and can also be created on demand:
+ </p><pre class="programlisting">
+ make -C testsuite Dejagnu.swf
+ </pre><p>
+ </p><p>
+ In this example, the <span
class="command"><strong>clip_as_button2</strong></span> test is compiled and
+ run:
+ </p><pre class="programlisting">
+ make -C testsuite/samples clip_as_button2-TestRunner
+ cd testsuite/samples && ./clip_as_button2-TestRunner
+ </pre><p>
+ This creates and runs all the tests in the directory
+ <code class="filename">movies.all</code>:
+ </p><pre class="programlisting">
+ make -C testsuite/movies.all check
+ </pre><p>
+ </p></div></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a name="manually"></a>Running
The Tests Manually</h4></div></div></div><p>
+ You may also run test cases by hand, which can be useful if you
+ want to see all the debugging output from the test case. Often
+ the messages which come from deep within <span
class="application">Gnash</span> are most useful for
+ development.
+ </p><p>
+ The first step is to compile the test case, which can be done
+ with <code class="filename">make XML-v#.swf</code> where the '#' is
replaced
+ with the <span class="emphasis"><em>target</em></span> SWF version or
versions.
+ For example:
+ </p><pre class="programlisting">
+ make XML-v{5,6,7,8}.swf
+ </pre><p>
+ </p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5
class="title"><a name="manual_compiled_tests"></a>Movie
tests</h5></div></div></div><p>
+ This creates a Flash movie version of the test case, which
+ can be run with a standalone Flash player. For instance,
+ the target for SWF version 6 could be run with <span
class="application">Gnash</span>:
+ </p><pre class="programlisting">
+ gnash -v XML-v6.swf
+ </pre><p>
+ </p></div><div class="sect4" lang="en"><div
class="titlepage"><div><div><h5 class="title"><a
name="manual_actionscript_tests"></a>ActionScript Unit
Tests</h5></div></div></div><p>
+ Unit tests for ActionScript classes in <span
class="command"><strong>testsuite/actionscript.all</strong></span>
+ are run without a graphical display:
+ </p><pre class="programlisting">
+ gprocessor -v XML-v6.swf
+ </pre><p>
+ </p></div></div></div></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="install"></a>Installation</h2></div></div></div><p>
+Now that <span class="application">Gnash</span> has been compiled and tested,
use the following command to install it:
+ </p><pre class="programlisting">
+ make install
+ </pre><p>
+The above command installs the standalone player. If the correct files were
found by <span class="command"><strong>configure</strong></span> and if the
<code class="option">--disable-plugin</code> option was not specified, the
<span class="application">Gnash</span> browser plugin is also installed.
+</p><p>
+ <span class="application">Gnash</span> installs a number of <a class="link"
href="#libinstall" title="Libraries">libraries</a>,
+ namely: <span class="emphasis"><em>libbase</em></span>,
+ <span class="emphasis"><em>libgeometry</em></span>, <span
class="emphasis"><em>libbackend</em></span>,
+ <span class="emphasis"><em>libserver</em></span>, and <span
class="emphasis"><em>libmozsdk</em></span>.
+ <a class="link" href="#appinstall" title="Executables">Executables</a>
+ consist of the (optional) plugin, <code class="filename">gprocessor</code>,
+ <code class="filename">cygnal</code>, and <code
class="filename">gnash</code>.
+ <a class="link" href="#docinstall" title="Documentation">Documentation</a>
may also be installed.
+ The installation location is controlled with the
+ <span class="emphasis"><em>--prefix</em></span> <a class="link"
href="#custompath" title="Specifying Custom Paths">configure
+ option</a>, except for plugins, which are explicitly set with
+ <span class="emphasis"><em>--plugin-dir</em></span>.
+</p><p>
+ Note that if you are using a single file-system <span
class="emphasis"><em>NFS</em></span>
+ mounted to multiple platforms, the
+ <a class="link" href="#custompath" title="Specifying Custom
Paths">configuration option</a>
+ <span class="emphasis"><em>--exec-prefix</em></span> may be used to specify
where
+ platform-dependent executables and libraries are installed.
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="libinstall"></a>Libraries</h3></div></div></div><p>
+ Installed libraries are located in
+ <code class="filename">/usr/local/lib</code> by default.
+ If the <span class="emphasis"><em>--prefix</em></span> option was used in
+ <a class="link" href="#pre-configuration" title="Pre-Compile
Configuration">configuration</a>, the libraries will
+ be installed in the directory <code class="filename">lib</code> inside the
+ path you specified. If the libraries are stored in a non-standard
+ location, you must identify the path in one of two ways.
+ </p><p>
+ The traditional way to do this on UNIX
+ platforms is to set the <span
class="emphasis"><em>LD_LIBRARY_PATH</em></span> variable
+ to the path plus <code class="filename">/lib</code>. For example, if you
+ installed in <code class="filename">/home/gnash</code>, the
+ <span class="emphasis"><em>LD_LIBRARY_PATH</em></span> path would be
+ <code class="filename">/home/gnash/lib</code>. Multiple paths are
delimited
+ with a colon (':').
+ </p><p>
+ GNU/Linux allows the custom path to be added to
+ <code class="filename">/etc/ld.so.conf</code>. After adding the path,
+ run <span class="emphasis"><em>ldconfig</em></span> as root to update the
runtime
+ cache.
+ </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="appinstall"></a>Executables</h3></div></div></div><p>
+ The Mozilla plugin is built from headers (the Mozilla SDK) provided with
Gnash and
+ does not need extra development packages to be installed. By default,
the
+ plugin is installed to <code
class="filename">~/.mozilla/plugins/</code>. To enable
+ the plugin for other users, copy the file <code
class="filename">libgnashplugin.so</code>
+ to <code class="filename">.mozilla/plugins/</code> in their home
directory.
+ You may also specify the plugin installation directory by using the
+ <code class="option">--with-plugindir</code> <a class="link"
href="#custompath" title="Specifying Custom Paths">option
+ at configuration time</a>.
+ </p><p>
+ These defaults are likely to change in future versions of Gnash.
+ </p><p>
+ The remaining executables are installed in the <code
class="filename">bin</code>
+ subdirectory of the directory specified by during configuration.
+ If no path was specified, the default is
+ <code class="filename">/usr/local/bin</code>.
+ </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="docinstall"></a>Documentation</h3></div></div></div><p>
+ Documentation is not built by default; please refer to the
+ <a class="link" href="#processdoc" title="Creating the
Documentation">section on documentation</a> for
+ more information on building documentation.
+ </p><p>
+ <span class="command"><strong>man</strong></span> and <span
class="command"><strong>info</strong></span>
+ are installed in <code class="filename">/usr/local/share/man</code>
+ and <code class="filename">/usr/local/share/info</code> respectively,
unless
+ the <code class="option">--mandif</code> or <code
class="option">--infodir</code>
+ <a class="link" href="#custompath" title="Specifying Custom
Paths">configuration options</a> are used.
+ </p><p>
+ <span class="emphasis"><em>GNOME help</em></span> documentation uses the
directory
+ <code class="filename">/usr/local/share/gnash/doc/gnash/C/</code> by
default.
+ A configuration file in the <span class="application">Gnash</span> source
tree,
+ <code class="filename">doc/C/gnash.omf</code> is used to specify under
+ which menu item <span class="application">Gnash</span> appears in the
<span class="emphasis"><em>GNOME help</em></span>
+ system.
+ </p></div></div></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="usage"></a>Chapter 4.
Using <span class="application">Gnash</span></h2></div></div></div><div
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a
href="#options"><span class="application">Gnash</span> Command Line
Options</a></span></dt><dt><span class="sect1"><a href="#keys"><span
class="application">Gnash</span> Interactive Control
Keys</a></span></dt><dt><span class="sect1"><a href="#gnashrc">User
Configuration File</a></span></dt></dl></div><p>
+When used as a standalone player, you can play any Flash file from the command
line by entering a command of the format:
+</p><pre class="programlisting">
+gnash <em class="replaceable"><code><option>
<flashfile.swf></code></em>
+</pre><p>
+The only required argument is the name (and location)of the file to be played.
+ </p><p>
+ The available options are listed in the following section, or you may
view them in the terminal window by executing the following at the command line:
+</p><pre class="programlisting">
+gnash --help |less
+</pre><p>
+ </p><p>
+The source code download of <span class="application">Gnash</span> includes
several example .SWF files. They are located in the <code
class="filename">testsuite/samples/</code> directory of the <span
class="application">Gnash</span> source directory. If you have installed <span
class="application">Gnash</span> correctly, issuing the a command similar to
the following plays a short animation of a car swerving and crashing:
+</p><pre class="programlisting">
+gnash /home/<em
class="replaceable"><code><username></code></em>/gnash/testsuite/car_smash.swf
+</pre><p>
+ </p><div class="mediaobject" align="center"><img
src="images/car_crash.png" align="middle"></div><p>
+ </p><p>
+The above is useful for playing Flash files downloaded to your local system.
It is also possible to play Flash files directly from the web. To do so, use
the <code class="option">-u</code> option along with the URL of the desired
file.
+</p><pre class="programlisting">
+gnash -u http://example.domain.com/flashfile.swf
+</pre><p>
+Note that this will not work with every website; some embedded Flash files are
difficult to play.
+</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="options"></a><span
class="application">Gnash</span> Command Line Options</h2></div></div></div><p>
+ No options are required for <span class="application">Gnash</span>'s
default behavior. However, there are many options that can be used to that
behavior.
+ </p><p>
+</p><pre class="programlisting">
+ gnash <em class="replaceable"><code><options></code></em> <code
class="filename">filename.swf</code>
+</pre><p>
+ </p><div class="table"><a name="tb-command-line-options"></a><p
class="title"><b>Table 4.1. Gnash Command Line Options</b></p><div
class="table-contents"><table summary="Gnash Command Line Options"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Option</th><th
align="left">Function</th></tr></thead><tbody><tr><td align="left"><code
class="option">-h</code></td><td align="left">
+ Print usage information.
+ </td></tr><tr><td align="left">
+ <code class="option">-s factor</code>
+ </td><td align="left">
+ Scale the movie up/down by the specified factor.
+ </td></tr><tr><td align="left">
+ <code class="option">-c</code>
+ </td><td align="left">
+ Produce a core file instead of letting SDL trap it. By
+ default, SDL traps all signals, but sometimes a core file
+ is desired to assist with debugging.
+ </td></tr><tr><td align="left">
+ <code class="option">-d num</code>
+ </td><td align="left">
+ Number of milliseconds to delay in main loop. The main
+ loop polls continuously with a delay to adjust how long
+ <span class="emphasis"><em><span
class="application">Gnash</span></em></span> sleeps between iterations of the
+ loop. The smaller the number, the higher the CPU load
+ gets, and of course, the more iterations of the main
+ command loop.
+ </td></tr><tr><td align="left">
+ <code class="option">-p</code>
+ </td><td align="left">
+ Run full speed (no sleep) and log frame rate.
+ </td></tr><tr><td align="left">
+ <code class="option">-a</code>
+ </td><td align="left">
+ Enable Actionscript debugging.
+ </td></tr><tr><td align="left">
+ <code class="option">-v</code>
+ </td><td align="left">
+ Be verbose; i.e. print debug messages to stdout.
+ </td></tr><tr><td align="left">
+ <code class="option">-va</code>
+ </td><td align="left">
+ Be verbose about movie Actions.
+ </td></tr><tr><td align="left">
+ <code class="option">-vp</code>
+ </td><td align="left">
+ Be verbose about parsing the movie. Warning: this can
+ generate a lot of text, and can affect the performance of
+ the movie you are playing.
+ </td></tr><tr><td align="left">
+ <code class="option">-ml bias</code>
+ </td><td align="left">
+ Specify the texture LOD bias (float, default is -1) This
+ affects the fuzziness of small objects, especially small
+ text.
+ </td></tr><tr><td align="left">
+ <code class="option">-w</code>
+ </td><td align="left">
+ Write a debug log called gnash-dbg.log. This will
+ record of all the debug messages whether they are printed
+ to the screen or not.
+ </td></tr><tr><td align="left">
+ <code class="option">-j</code>
+ </td><td align="left">
+ Specify the width of the window. This is mostly used
+ only by the plugin.
+ </td></tr><tr><td align="left">
+ <code class="option">-k</code>
+ </td><td align="left">
+ Specify the height of the window. This is mostly used
+ only by the plugin.
+ </td></tr><tr><td align="left">
+ <code class="option">-1</code>
+ </td><td align="left">
+ Play once; exit when/if movie reaches the last
+ frame. This is the default.
+ </td></tr><tr><td align="left">
+ <code class="option">-r [0|1|2|3]</code>
+ </td><td align="left">
+<div class="itemizedlist"><ul type="disc"><li><p>
+ 0 disables rendering and sound (good for batch tests).
+</p></li><li><p>
+ 1 enables rendering and disables sound (default setting).
+</p></li><li><p>
+ 2 enables sound and disables rendering.
+</p></li><li><p>
+ 3 enables rendering and sound.
+</p></li></ul></div>
+ </td></tr><tr><td align="left">
+ <code class="option">-t sec</code>
+ </td><td align="left">
+ Timeout and exit after the specified number of
+ seconds. This is useful for movies which repeat
+ themselves.
+ </td></tr><tr><td align="left">
+ <code class="option">-g</code>
+ </td><td align="left">
+ Start <span class="application">Gnash</span> with a Flash
debugger console so one can set
+ break points or watchpoints.
+ </td></tr><tr><td align="left">
+ <code class="option">-x id</code>
+ </td><td align="left">
+ This specifies the X11 window ID to display
+ in; this is mainly used by plugins.
+ </td></tr><tr><td align="left">
+ <code class="option">-b bits</code>
+ </td><td align="left">
+ Bit depth of output window (for example, 16 or 32). Appropriate
+ bit depths depend on the renderer and GUI library used.
+
+ </td></tr><tr><td align="left">
+ <code class="option">-u url</code>
+ </td><td align="left">
+ Set the _url member of the root movie. This is useful
+ when you download a movie and play it from a different
+ location. See also the -U switch.
+ </td></tr><tr><td align="left">
+ <code class="option">-U baseurl</code>
+ </td><td align="left">
+ Set base URL for this run. URLs are resolved relative to
+ this base. If omitted defaults to the _url member of the
+ top-level movie (see the -u switch).
+ </td></tr><tr><td align="left">
+ <code class="option">-P entrymeter</code>
+ </td><td align="left">
+ Parameters are given in ParamName=Value syntax and are mostly
+ useful to the plugin to honour EMBED tags attributes
+ or explicit OBJECT PARAM tags. A common use for -P
+ is to provide FlashVars
+ (ie: -P "FlashVars=home=http://www.gnu.org").
+ </td></tr><tr><td align="left">
+ <code class="option">-F filedescriptor</code>
+ </td><td align="left">
+ Use the given filedescriptor to send requests to the host
+ application. This is currently only used for GETURL requests.
+ The protocol is not documented yet, and also needs improvement.
+ Primary use for this switch is for the NPAPI plugin to properly
+ support javascript and target windows in geturl requests.
+ </td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="keys"></a><span class="application">Gnash</span> Interactive Control
Keys</h2></div></div></div><p>
+ While a movie is playing, there are several control
+ keys. These can be used to step through frames, pause the
+ playing, and control other actions.
+ </p><div class="table"><a name="tb-control-keys"></a><p
class="title"><b>Table 4.2. Gnash Interactive Control Keys</b></p><div
class="table-contents"><table summary="Gnash Interactive Control Keys"
border="1"><colgroup><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Key Combination</th><th
align="left">Function</th></tr></thead><tbody><tr><td align="left">
+ <code class="option">CTRL-Q</code>
+ </td><td align="left">
+ Quit/Exit.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-W</code>
+ </td><td align="left">
+ Quit/Exit.
+ </td></tr><tr><td align="left">
+ <code class="option">ESC</code>
+ </td><td align="left">
+ Quit/Exit.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-P</code>
+ </td><td align="left">
+ Toggle Pause.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-R </code>
+ </td><td align="left">
+ Restart the movie.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-[ or kp-</code>
+ </td><td align="left">
+ Step back one frame.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-] or kp+</code>
+ </td><td align="left">
+ Step forward one frame.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-T</code>
+ </td><td align="left">
+ Debug. Test the set_variable() function.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-G</code>
+ </td><td align="left">
+ Debug. Test the get_variable() function.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-M</code>
+ </td><td align="left">
+ Debug. Test the call_method() function.
+ </td></tr><tr><td align="left">
+ <code class="option">CTRL-B</code>
+ </td><td align="left">
+ Toggle the background color.
+ </td></tr></tbody></table></div></div><br
class="table-break"></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="gnashrc"></a>User Configuration File</h2></div></div></div><p>
+Individual user preferences may be set by editing variables with the <code
class="filename">.gnashrc</code> file:
+</p><pre class="programlisting">
+~/.gnashrc
+</pre><p>
+</p><p>
+Each line must begin with an action: either <span
class="emphasis"><em>set</em></span> or, in the case of lists, also
+<span class="emphasis"><em>append</em></span>.
+</p><p>
+The values in this configuration file apply only to an individual user, and
become the default settings of the standalone player and the plugin. Note that
any command line options take precedence over <code
class="filename">.gnashrc</code> settings.
+</p><p>
+The variables in the <code class="filename">.gnashrc</code> file support three
types of arguments: on/off, numeric values, or in the case of the
+ whitelist and blacklist, a list of hostnames as ASCII text.
+ </p><div class="table"><a name="tb-config-variables"></a><p
class="title"><b>Table 4.3. User Configuration Variables</b></p><div
class="table-contents"><table summary="User Configuration Variables"
border="1"><colgroup><col align="left"><col align="left"><col
align="left"></colgroup><thead><tr><th align="left">Variable</th><th
align="left">Value</th><th
align="left">Function</th></tr></thead><tbody><tr><td
align="left">localdomain</td><td align="left">on/off</td><td align="left">This
value can be set to either <span class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls the
loading of
+ external Flash movies over a network. This option
+ tells Gnash to only load Flash movies from the existing
domain.</td></tr><tr><td align="left">localhost</td><td
align="left">on/off</td><td align="left">This value can be set to either <span
class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls the
loading of
+ external Flash movies over a network. This is a stricter
+ version of the <span class="emphasis"><em>localdomain</em></span>
setting as
+ this allows the loading of Flash movies to the same host
+ that is running <span
class="application">Gnash</span>.</td></tr><tr><td
align="left">whitelist</td><td align="left">hostnames</td><td align="left">This
is a list of hostnames separated by spaces, or <span
class="emphasis"><em>off</em></span>
+ to disable the whitelist. The hostname must be given
+ without a protocol (http://, https://). If this list is populated,
+ <span class="application">Gnash</span> will only load external
Flash movies from the specified hosts. The
+ whitelist takes precedence over the blacklist. Because several
files can
+ be parsed in succession, each file can override or add to
+ lists in other files. Use <span
class="emphasis"><em>set</em></span> to override
+ all other lists or <span class="emphasis"><em>append</em></span> to
add your blacklisted
+ hosts to lists in previously parsed files.</td></tr><tr><td
align="left">blacklist</td><td align="left">hostnames</td><td align="left">This
is a list of hostnames separated by spaces, or <span
class="emphasis"><em>off</em></span>
+ to disable the blacklist. The hostname must be given
+ without a protocol (http://, https://).
+ External flash movies from these
+ domains are never allowed to load. If whitelist is present
+ and not empty, blacklist is not used. Because several files can
+ be parsed in succession, each file can override or add to
+ lists in other files. Use <span
class="emphasis"><em>set</em></span> to override
+ all other lists or <span class="emphasis"><em>append</em></span> to
add your blacklisted
+ hosts to lists in previously parsed files.</td></tr><tr><td
align="left">localSandboxPath</td><td align="left">dirs</td><td
align="left">This is a list of directories separated by spaces.
+ Only resources from these directories and from the directory
+ portion of movie filename (if loaded from filesystem) are allowed
to load.
+ Because several files can be parsed in succession, each file can
override
+ or add to lists in other files. Use <span
class="emphasis"><em>set</em></span> to override
+ all other lists or <span class="emphasis"><em>append</em></span> to
add new sandboxes.
+ Note that there's currently no way to *drop* the directory of base
dir
+ from the list of allowed local sandboxes.
+ </td></tr><tr><td align="left">delay</td><td
align="left">Number</td><td align="left"><span class="application">Gnash</span>
uses a timer-based event mechanism to advance frames
+ at a steady rate. This option overrides the default
+ setting in Gnash to play a movie slower or faster.</td></tr><tr><td
align="left">verbosity</td><td align="left">Number</td><td align="left">This is
a numeric value which defines the default level of
+ verbosity from the player.</td></tr><tr><td
align="left">MalformedSWFVerbosity</td><td align="left">on/off</td><td
align="left">This value can be set to either <span
class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls whether
malformed SWF errors should
+ be printed. If set to true, verbosity level is automatically
incremented.
+ Set <code class="option">verbosity</code> to 0 afterwards to
hush.</td></tr><tr><td align="left">ASCodingErrorsVerbosity</td><td
align="left">on/off</td><td align="left">This value can be set to either <span
class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls whether
ActionScript coding
+ errors should be printed. If set to true, verbosity level is
+ automatically incremented. Set <code
class="option">verbosity</code> to 0 afterwards to hush.</td></tr><tr><td
align="left">debuglog</td><td align="left">Absolute path</td><td
align="left">This is the full path and name of debug logfile as
+ produced by <span class="application">Gnash</span>. On systems with a
UNIX-type shell,
+ a tilde prefix (~) will be expanded as by Posix shell requirements
+ (see
http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01).</td></tr><tr><td
align="left">writelog</td><td align="left">on/off</td><td align="left">This
value can be set to either <span class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls whether a
debug log
+ is always written by <span class="application">Gnash</span>, or not
at all.</td></tr><tr><td align="left">sound</td><td align="left">on/off</td><td
align="left">This value can be set to either <span
class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls the sound
of the
+ standalone player. By default <span
class="application">Gnash</span> enables playing the
+ sound in any Flash movie.</td></tr><tr><td
align="left">pluginsound</td><td align="left">on/off</td><td align="left">This
value can be set to either <span class="emphasis"><em>on</em></span> or
+ <span class="emphasis"><em>off</em></span>, and controls the sound
of the
+ player when running as a browser plugin. By default, sound
+ is enabled when using <span class="application">Gnash</span> as a
browser plugin.</td></tr><tr><td align="left">EnableExtensions</td><td
align="left">on/off</td><td align="left">Set to <span
class="emphasis"><em>on</em></span> to enable extensions. This option is <span
class="emphasis"><em>off</em></span> by default</td></tr><tr><td
align="left">StartStopped</td><td align="left">on/off</td><td align="left">Set
to <span class="emphasis"><em>on</em></span> to have the GUI start in "stop"
mode. This is useful in particular
+ for the plugin, so you have to explicitly start any movie on a
webpage. This option is <span class="emphasis"><em>off</em></span> by default.
+ </td></tr><tr><td align="left">flashVersionString</td><td
align="left">string</td><td align="left">Set the string returned by $version
and System.capabilities.version.
+ Useful to get around some flash version detection movies.
+ Note that the version advertised by the plugin is NOT affected by this
setting,
+ instead you need to set the GNASH_FLASH_VERSION environment variable for
+ the latter (which doesn't affect $version and
System.capabilities.version).</td></tr><tr><td
align="left">flashSystemOS</td><td align="left">string</td><td align="left">The
string that Gnash should return for System.capabilities.OS</td></tr><tr><td
align="left">flashSystemManufacturer</td><td align="left">string</td><td
align="left">The string that Gnash should return for
System.capabilities.manufacturer</td></tr><tr><td
align="left">StreamsTimeout</td><td align="left">double</td><td align="left">
+Set the number of seconds after which streams download time out. Note that
timeouts only occurs after the given number of seconds
+passed w/out anything was received.
+</td></tr><tr><td align="left">insecureSSL</td><td align="left">on/off</td><td
align="left">If set to <span class="emphasis"><em>on</em></span>, no
verification of SSL connections
+is performed. This means that, although the connection is encrypted, the server
+certificate could be invalid, may not belong to the host, or both. Equivalent
+to curl --insecure. By default, this option is <span
class="emphasis"><em>off</em></span> and
+connections will fail when a host cannot be verified.</td></tr><tr><td
align="left">SOLsafedir</td><td align="left">Absolute path</td><td
align="left">The full path to a directory where <span
class="application">Gnash</span> should store Shared Object files ("flash
cookies") if
+they are enabled.</td></tr><tr><td align="left">SOLreadonly</td><td
align="left">on/off</td><td align="left">If set to <span
class="emphasis"><em>on</em></span>, <span class="application">Gnash</span>
will not write Shared Object files.</td></tr><tr><td
align="left">URLOpenerFormat</td><td align="left">string</td><td align="left">
+Set the format of an url opener command. The %u label would be substituted by
the actual url to be opened.
+Examples:
+<pre class="programlisting">
+ set urlOpenerFormat firefox -remote 'openurl(%u)'
+ set urlOpenerFormat xdg-open %u
+ set urlOpenerFormat open %u
+ set urlOpenerFormat kfmclient exec %u
+</pre>
+</td></tr></tbody></table></div></div><br class="table-break"><p>
+The following example <code class="filename">.gnashrc</code> file allows a
user to only play Flash files saved locally to the machine on which <span
class="application">Gnash</span> is running. It also specifically forbids
content from doubleclick.com and mochibot.com. <span
class="application">Gnash</span>'s error output is set to be fairly verbose,
with the debug log placed in a location convenient for the user. Finally,
sound is turned on for both the standalone player and the plugin.
+</p><pre class="programlisting">
+
+ #
+ # Gnash client options
+ #
+
+ # Only access remote content from our local domain
+ set localdomain on
+
+ # Only access content from our local host
+ set localhost on
+
+ # These sites are OK
+ # uncommenting the following line will allow load of external
+ # movies *only* from the specified hosts.
+ #set whitelist www.doonesbury.com www.cnn.com www.9news.com
+
+ # Disable whitelists set in any other gnashrc files, because
+ # these could override our blacklist.
+ set whitelist off
+
+ # Don't access content from these sites
+ set blacklist www.doubleclick.com mochibot.com
+
+ # The delay between timer interrupts
+ set delay 50
+
+ # The default verbosity level
+ set verbosity 1
+
+ # Be verbose about malformed SWF
+ set MalformedSWFVerbosity true
+
+ # Be verbose about AS coding errors
+ set ASCodingErrorsVerbosity true
+
+ # The full path to the debug log
+ set debuglog ~/gnash-dbg.log
+
+ # Write a debug log to disk
+ set writelog on
+
+ # Enable or Disable sound for the standalone player
+ set sound on
+
+ # Enable or Disable sound for the standalone player
+ set pluginsound on
+
+ # Make sure SSL connections are always verified
+ set insecureSSL off
+
+ # Use firefox to open urls
+ set urlOpenerFormat firefox -remote 'openurl(%u)'
+
+ </pre></div></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="bugreport"></a>Chapter
5. Reporting Bugs</h2></div></div></div><div class="toc"><p><b>Table of
Contents</b></p><dl><dt><span class="sect1"><a
href="#bugstep_newcheckout">Compile the latest <span
class="application">Gnash</span> build</a></span></dt><dt><span
class="sect1"><a href="#bugstep_search">Determine if the bug was previously
reported</a></span></dt><dt><span class="sect1"><a
href="#bugstep_guidelines">Review the bug writing
guidelines</a></span></dt><dt><span class="sect1"><a
href="#bugstep_file">Filing a bug report</a></span></dt></dl></div><p>
+The <span class="application">Gnash</span> project relies on the community to
use and test the player; feedback is critical to any successful project. Not
only does it let us know that people use <span
class="application">Gnash</span>, but it helps us understand the community's
needs. <span class="application">Gnash</span> uses a bug tracker on <a
class="ulink" href="http://savannah.gnu.org"
target="_top">http://savannah.gnu.org</a> to manage these reports.
+</p><p>
+When filing a report, please follow the guidelines below. The better your bug
report is, the easier it will be for the
+ developers to address the issue.
+</p><div class="orderedlist"><ol type="1"><li><p>
+ <a class="link" href="#bugstep_newcheckout" title="Compile the latest
Gnash build">Compile the latest
+ <span class="application">Gnash</span> build.</a>
+ </p></li><li><p>
+ <a class="link" href="#bugstep_search" title="Determine if the bug was
previously reported">Determine if the bug was
+ previously reported.</a>
+ </p></li><li><p>
+ <a class="link" href="#bugstep_guidelines" title="Review the bug
writing guidelines">Review the bug writing
+ guidelines.</a>
+ </p></li></ol></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="bugstep_newcheckout"></a>Compile the latest <span
class="application">Gnash</span> build</h2></div></div></div><p>
+ Obtain a copy of the latest <a class="link" href="#sourcerepo"
title="Repository">development
+ checkout</a> or <a class="link" href="#sourcesnapshot"
title="Snapshot">development
+ snapshot</a>. Put the source in an empty directory, then
+ <a class="link" href="#pre-configuration" title="Pre-Compile
Configuration">configure</a> and
+ <a class="link" href="#compile" title="Compiling the Code">compile</a>
<span class="application">Gnash</span>.
+ </p><p>
+ If you are able to replicate the bug in the latest version,
+ <a class="link" href="#bugstep_search" title="Determine if the bug was
previously reported">proceed to the next step</a>. If you cannot replicate the
bug with the newer version, the problem may have been solved, or the issue may
involve your environment
+ </p><p>
+To check this, create a fresh build of the version in which you encountered
the bug. If you can reproduce the bug with the fresh copy of the original
version, but cannot with the latest version, this is most likely a resolved bug.
+</p><p>
+If you cannot reproduce the bug, it may still be unclear whether the bug is
related to your environment or a <span class="application">Gnash</span> bug.
Try to determine the source of the problem. <span
class="application">Gnash</span> offers several helpful debugging options in
the configure stage, and many verbosity options at the command line to help.
+</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="bugstep_search"></a>Determine if the
bug was previously reported</h2></div></div></div><p>
+ Search the <a class="ulink"
href="https://savannah.gnu.org/bugs/?group=gnash" target="_top"><span
class="application">Gnash</span>
+ bug tracker</a> to see if the bug has already been identified.
+ </p><p>
+ If the issue has already been reported, you should not file
+ a bug report. However, you may add some additional information
+ to the ticket if you feel that it will be beneficial to the
+ developers. For instance, if someone reported a memory issue
+ on Ubuntu GNU/Linux, and you noticed the same problem on OpenBSD,
+ your stacktrace would be useful. Conversely, adding a "me too"
+ note to a feature request is not helpful.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="bugstep_guidelines"></a>Review the bug writing
guidelines</h2></div></div></div><p>
+ A good bug report should be precise, explicit, and discrete.
+ This means that there should be just one bug per ticket, and
+ that a ticket should contain the following information:
+</p><div class="itemizedlist"><ul type="opencircle"><li
style="list-style-type: circle"><p>
+ An overview of the problem;
+</p></li><li style="list-style-type: circle"><p>
+ Instructions on how to replicate the bug;
+</p></li><li style="list-style-type: circle"><p>
+ A description of what happened when you performed the steps
+ to replicate the bug, and what you expected to happen;
+</p></li><li style="list-style-type: circle"><p>
+ Your system information: operating system name and version, as
+ well as the versions of major <a class="link" href="#codedepend"
title="Code Dependencies">dependencies</a>;
+</p></li><li style="list-style-type: circle"><p>
+ The release number or checkout timestamp for the version of <span
class="application">Gnash</span>
+ where you observe the problem;
+</p></li><li style="list-style-type: circle"><p>
+ The file <code class="filename">config.log</code>, which should be
+ attached as a file; and
+</p></li><li style="list-style-type: circle"><p>
+ A descriptive title.
+</p></li></ul></div><p>
+ Include any additional information that you feel might be useful
+ to the developers.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="bugstep_file"></a>Filing a bug report</h2></div></div></div><p>
+ After following the steps described above, you can file a bug report at
+ <a class="ulink" href="https://savannah.gnu.org/bugs/?group=gnash"
target="_top">https://savannah.gnu.org/bugs/?group=gnash</a>.
+ </p></div></div><div class="glossary"><div class="titlepage"><div><div><h2
class="title"><a name="glossary"></a>Glossary</h2></div></div></div><div
class="glossdiv"><h3 class="title">A</h3><dl><dt>
+ ActionScript
+ </dt><dd><p>
+ <span class="emphasis"><em>ActionScript</em></span>, or "AS", is the
scripting
+ language for <span class="emphasis"><em>Flash</em></span>
+ applications. It is compiled to bytecode, which is a subset of
+ the <span class="emphasis"><em>SWF</em></span> format.
+ </p></dd><dt>
+ AGG
+ </dt><dd><p>
+ AGG is the AntiGrain 2D graphics library, which can be used as a
renderer in Gnash. It is faster than OpenGL on systems without hardware
graphics acceleration. As of Gnash version 0.7.2 it is the more feature
complete renderer.
+ </p></dd><dt>
+ AMF
+ </dt><dd><p>
+ <span class="emphasis"><em>AMF</em></span>
+ is the object format used by <span
class="emphasis"><em>Flash</em></span>
+ for shared objects and streaming video.
+ </p></dd><dt>
+ as_environment
+ </dt><dd><p>
+ In Gnash terms, the as_environment, or ActionScript execution
environment, contains a stack of objects, characters and values which are in
the immediate environment of the current fn_call. Please refer to the Gnash
ActionScript manual for more information.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">C</h3><dl><dt>
+ Cairo
+ </dt><dd><p>
+ Cairo is a 2D graphics library with support for multiple output
devices. Can be used as a renderer in Gnash. A useful feature of Cairo is that
it will automatically use graphic card acceleration when available. Cairo has
an experimental OpenGL backend.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">D</h3><dl><dt>
+ DejaGNU
+ </dt><dd><p>
+ DejaGNU is a framework for testing software.
+ </p></dd><dt>
+ DocBook
+ </dt><dd><p>
+ <span class="emphasis"><em>DocBook</em></span>
+ is a markup language for presentation-neutral
+ documentation, such as manuals.
+ </p></dd><dt>
+ Doxygen
+ </dt><dd><p>
+ <span class="emphasis"><em>Doxygen</em></span>
+ is a documentation generator for for multiple languages
+ which uses comments in the source code to create stand-alone
+ documentation.
+ </p></dd><dt>
+ Drupal
+ </dt><dd><p>
+ Drupal is a CMS/blog system used for the main Gnash website.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">E</h3><dl><dt>
+ extensions
+ </dt><dd><p>
+ A <span class="application">Gnash</span> <span
class="emphasis"><em>extension</em></span> is a plugin (not
+ a browser plugin) which
+ implements additional
+ functionality beyond what is covered by
+ <span class="emphasis"><em>Flash</em></span> specification.
+ These are shared libraries which are loaded at runtime.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">F</h3><dl><dt>
+ ffmpeg
+ </dt><dd><p>
+ ffmpeg is an audio and video decoding library which can be used by
Gnash to decode mp3, FLV and other media types.
+ </p></dd><dt>
+ Flash
+ </dt><dd><p>
+ The glossterm <span class="emphasis"><em>Flash</em></span> is used
to describe both the
+ Adobe IDE for creating <span class="emphasis"><em>SWF</em></span>
+ files, and the technology itself.
+ <span class="application">Gnash</span> documentation uses the latter
definition.
+ </p></dd><dt>
+ FLV
+ </dt><dd><p>
+ FLV is a proprietary file format used to deliver Flash video. It is
used by YouTube, among others.
+ </p></dd><dt>
+ FLTK
+ </dt><dd><p>
+ FLTK, or the 'Fast Light ToolKit', is a portable GUI library which
is intended to replace the SDL GUI. Currently in Gnash, FLTK may be used with
the Cairo and AGG renderers. FLTK has an experimental Cairo backend.
+ </p></dd><dt>
+ FrameBuffer
+ </dt><dd><p>
+ In Gnash, this is a GUI library that outputs directly to the Linux
Frame Buffer and so does not need a window system to run. This makes it
particularly suitable for use on small devices.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">G</h3><dl><dt>
+ Gnash
+ </dt><dd><p>
+ Gnash is the GNU Flash movie player.
+ </p></dd><dt>
+ Gstreamer
+ </dt><dd><p>
+ Gstreamer is a multimedia framework which Gnash can use for decoding
audio and video. Gstreamer itself cannot decode anything, so it needs some
appropriate decoding-plugins to do the work for it. Remember to install them if
you use Gnash with Gstreamer enabled. To get the best out of Gnashs
gstreamer-parts, it is recommended to install the gst-plugins-good,
gst-plugins-good and gst-ffmpeg plugins packages.
+ </p></dd><dt>
+ GTK
+ </dt><dd><p>
+ GTK is the GIMP Toolkit GUI library. It is one of the GUI options
for Gnash. As of Gnash 0.7.2, this is the more performant and feature-rich
choice. GTK uses Cairo internally.
+ </p></dd><dt>
+ GUI
+ </dt><dd><p>
+ A <span class="emphasis"><em>GUI</em></span> is a
+ "graphical user interface". In <span
class="application">Gnash</span>, the GUI
+ library provides a wrapper for mouse and keyboard events,
+ menus, windowing (where available) and a drawing area.
+ You must choose a GUI library during the
+ <a class="link" href="#pre-configuration" title="Pre-Compile
Configuration">configuration</a> stage.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">K</h3><dl><dt>
+ Klash
+ </dt><dd><p>
+ <span class="emphasis"><em>Klash</em></span> was the name given to
the stand-alone
+ instance of <span class="application">Gnash</span> which used the
KDE GUI. It has been replaced with
+ an implementation using Qt. Some documentation may incorrectly
+ refer to the Konqueror plugin as <span
class="emphasis"><em>Klash</em></span>.
+ The plugin was renamed <span class="emphasis"><em>Kpart</em></span>.
+ </p></dd><dt>
+ Kpart
+ </dt><dd><p>
+ <span class="emphasis"><em>Kpart</em></span> is a plugin for
Konqueror which is
+ enabled with the <a class="link" href="#features"
title="Features">configuration option</a>
+ <span class="emphasis"><em>--enable-klash</em></span>.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">L</h3><dl><dt>
+ libmad
+ </dt><dd><p>
+ libmad is a mp3-decoding library, which can be used by Gnash's sound
handler to decode mp3-audio.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">M</h3><dl><dt>
+ Mesa
+ </dt><dd><p>
+ <span class="emphasis"><em>Mesa</em></span> is the free software
OpenGL
+ implementation. <span class="application">Gnash</span>
documentation will sometimes use the
+ glossterms 'OpenGL' and 'Mesa' interchangeably.
+ </p></dd><dt>
+ Ming
+ </dt><dd><p>
+ Ming is a C library for generating SWF ("Flash") format movies, plus
a set of wrappers for using the library. It is used by the Gnash project for
generating testcases.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">N</h3><dl><dt>
+ Nellymoser
+ </dt><dd><p>
+ Nellymoser is a proprietary audio codec introduced in the Flash
Player in version 6. For more information, please see Wikipedia.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">O</h3><dl><dt>
+ OpenGL
+ </dt><dd><p>
+ OpenGL (Open Graphics Library) is a standard specification defining
a cross-language cross-platform API for writing applications that produce 3D
and 2D computer graphics. Accelerated graphic cards usually provide OpenGL at
the hardware level. Please refer to Wikipedia for availability of free software
OpenGL hardware drivers. A free software implementation of the API is available
(Mesa). OpenGL can be used as a renderer in Gnash.
+ </p></dd><dt>
+ ORM
+ </dt><dd><p>
+ ORM is a system for ensuring the rights of the creator over a piece
of digital content. It is more passive than DRM.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">P</h3><dl><dt>
+ plugin
+ </dt><dd><p>
+ The glossterm <span class="emphasis"><em>plugin</em></span> is used
in <span class="application">Gnash</span> to
+ refer to both any <span class="application">Gnash</span> browser
plugin, as well as the Firefox
+ plugin specifically. The Konqueror plugin is called
+ <span class="emphasis"><em>Kpart</em></span>. Sometimes, the term
is used in
+ an even more generic sense to refer to
+ <span class="emphasis"><em>extensions</em></span>.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">Q</h3><dl><dt>
+ Qt
+ </dt><dd><p>
+ Qt is a GUI library which is used by KDE. The plugin version of
Gnash using this GUI library is Kpart. The standalone version is enabled with
--enable-gui=kde.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">R</h3><dl><dt>
+ renderer
+ </dt><dd><p>
+ The <span class="emphasis"><em>renderer</em></span> is the subsystem
of <span class="application">Gnash</span>
+ which renders content. Only one renderer may be used; it is
+ chosen during <a class="link" href="#pre-configuration"
title="Pre-Compile Configuration">configuration</a>.
+ </p><p>
+ Available renderers are: AGG, OpenGL, and Cairo. In terms of
+ feature completeness, AGG comes first; followed by OpenGL and
+ then Cairo. In most cases, AGG is preferred for performance,
+ except cases where it is beneficial to have hardware accelerated
+ rendering (for example, when you have a very slow CPU but a very
+ fast graphics card). In this case OpenGL should be used.
+ </p></dd><dt>
+ RTMP
+ </dt><dd><p>
+ RTMP is the Real Time Messaging Protocol primarily used with to
stream audio and video over the internet to the Flash Player client.
+ </p></dd><dt>
+ RTMPT
+ </dt><dd><p>
+ RTMPT is basically a HTTP wrapper around the RTMP protocol that is
sent using POST requests from the client to the server. Because of the
non-persistent nature of HTTP connections, RTMPT requires the clients to poll
for updates periodically in order to get notified about events that are
generated by the server or other clients.
+ </p></dd><dt>
+ RTMPTS
+ </dt><dd><p>
+ RTMPTS is the same as RTMPT, but instead of being a HTTP wrapper, it
is a HTTPSSL wrapper (HTTP secure connection).
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">S</h3><dl><dt>
+ SDL
+ </dt><dd><p>
+ Simple DirectMedia Layer is a cross-platform multimedia free
software library that creates an abstraction over various platforms' graphics,
sound, and input APIs. Gnash can use it as a GUI and/or as a sound handler.
Note that the two usages are independent of each other: you can use it for a
task and not for the other if you wish. At time or writing (2007-01-11) the SDL
GUI lacks menus and a performant input event architecture; the SDL sound
handler is the most feature rich, supporting Video through ffmpeg.
+ </p></dd><dt>
+ sound handler
+ </dt><dd><p>
+ The <span class="emphasis"><em>sound handler</em></span> is the part
of <span class="application">Gnash</span>
+ which handles both event sounds and streaming sound. Audio
+ from external sources are also handled through the sound handler
+ when SDL is used. The sound handler must be selected during
+ <a class="link" href="#pre-configuration" title="Pre-Compile
Configuration">configuration</a>.
+ </p><p>
+ There are currently two sound handlers available in <span
class="application">Gnash</span>:
+ SDL and Gstreamer. The SDL sound handler uses ffmpeg or
+ libmad for decoding mp3-audio, although it can be built without
+ mp3-support. The Gstreamer-sound handler uses the available
+ plugins to decode the audio, so it might not work if some
+ important plugins are missing. The SDL sound handler is
+ recommended.
+ </p></dd><dt>
+ sprite
+ </dt><dd><p>
+ A sprite is an element of an Flash Movie. It's basically a Movie
inside another, having its own timeline.
+ </p></dd><dt>
+ Stage
+ </dt><dd><p>
+ The visible area of a Flash movie. The name derives from a theater
analogy. Graphical elements are referred to as characters.
+ </p></dd><dt>
+ SWF
+ </dt><dd><p>
+ <span class="emphasis"><em>SWF</em></span> is the file format for
+ <span class="emphasis"><em>Flash</em></span> movies.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">T</h3><dl><dt>
+ Tamarin
+ </dt><dd><p>
+ The Tamarin project seeks to create an open source implementation of
the ECMAScript 4th edition language specification. The code is used by Adobe as
part of the ActionScript Virtual Machine within the Adobe Flash Player. Gnash
does not use Tamarin; it already has a working virtual server and most
ActionScript classes are implemented.
+ </p></dd><dt>
+ timeline
+ </dt><dd><p>
+ In Flash technology, a timeline is a sequence of "frames". A single
Flash movie can contain multiple timelines, each independently controlled (STOP
or PLAY). At regular intervals (FPS) the player advances all timelines in PLAY
mode to the next frame, looping back when last frame is reached.
+ </p></dd></dl></div><div class="glossdiv"><h3
class="title">X</h3><dl><dt>
+ X.org
+ </dt><dd><p>
+ X.org is the most commonly used X server; it was forked from XFree86.
+ </p></dd></dl></div></div><div class="sect3" lang="en"><div
class="titlepage"><div><div><h4 class="title"><a name="amf"></a>AMF
Format</h4></div></div></div><p>
+ The AMF format is used in the LocalConnection, SharedObject,
+ NetConnection, and NetStream ActionScript classes. This is a means
+ of binary data interchange between Flash movies, or between a
+ Flash player and a Flash server.
+ </p><p>
+ Like the RTMP messages, an AMF packet header can be of a variable
+ size. The size is either the same as the initial header of the
+ RTMP message, or a 1 byte header, which is commonly used for
+ streaming audio or video data.
+ </p><p>
+ The body of an AMF packet may look something like this
+ example. The spaces have been added for clarity.
+
+ </p><pre class="screen">
+ 02 0007 636f6e6e656374
+ </pre><p>
+
+ </p><div class="variablelist"><dl><dt><span
class="term">02</span></dt><dd><p>
+ This is a single byte header. The value of the first 2
+ bits is 0x3, and the AMF index is also 0x3.
+ </p></dd><dt><span class="term">0007</span></dt><dd><p>
+ This is the length in bytes of the string.
+ </p></dd><dt><span class="term">63 6f 6e 6e 65 63
74</span></dt><dd><p>
+ This is the string. Note that there is no null terminator
+ since the length is specified.
+ </p></dd></dl></div><p>
+
+ </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3
class="title"><a name="rtmp"></a>RTMP Protocol</h3></div></div></div><p>
+ This document is based mostly on my own reverse engineering of the
+ RTMP protocol and AMF format. <span
class="emphasis"><em>tcpdump</em></span> and
+ <span class="emphasis"><em>ethereal</em></span> are your friend. Some
additional info that got
+ me started was from the <a class="ulink"
href="http://www.osflash.org/red5" target="_top">Red5</a>
+ project. <span class="emphasis"><em>Red5</em></span> is the only other
open source Flash
+ server. So some details are still vague, but as the implementation
+ appears to work, we'll figure out what they are later.
+ </p><p>
+ The Real Time Messaging Protocol was created by MacroMedia (now
+ Adobe) for delivering Flash objects and video over a network
+ connection. Currently the only servers which support this format
+ are the MacroMedia Media sever, and the Open Source Red5 project.
+ </p><p>
+ This is a simple protocol, optimized for poor bandwidth
+ connections. It can support up to 64 concurrent streams over the
+ same network connection. Part of each AMF packet header contains
+ the index number of the stream. A single RTMP message can contain
+ multiple AMF packets.
+ </p><p>
+ An RTMP connection uses Tcp/ip port 1935. It is also possible to
+ tunnel RTMP over an HTTP connection using port 80. Each AMF packet
+ is 128 bytes long except for streaming audio, which has 64 byte
+ packets.
+ </p><p>
+ The basics of the RTMP protocol are as follows. All communications
+ are initiated by the client.
+ </p><div class="mediaobject" align="center"><img src="images/rtmp.png"
align="middle"></div><p>
+ </p><p>
+ The client starts the RTMP connection by sending a single byte
+ with a value of 0x3. This byte is followed by a data block of 1536
+ bytes. The format if this data block is unknown, but it appears to
+ not be actually used by the protocol except as a handshake.
+ </p><p>
+ The server receives this packet, stores the 1536 byte data block,
+ and then send a single byte with the value of 0x3, followed by two
+ 1536 data blocks. The second data block is the full contents of
+ the original data block as sent by the client.
+ </p><p>
+ The client receives the 1536 byte data block, and if they match,
+ the connection is established. After the handshake process is
+ done, there are three other messages that the client sends to the
+ sever to start the data flowing.
+ </p><p>
+ The first AMF packet sent to the server contains the
+ <span class="emphasis"><em>connect</em></span> packet. This doesn't appear
to do
+ much but notify the server the client is happy with the
+ handshake, and ready to start reading packets.
+ </p><p>
+ The second packet is the <span
class="emphasis"><em>NetConnection</em></span> object from
+ the client. This ActionScript class is used by the Flash movie to
+ create the network connection to the server.
+ </p><p>
+ The third packet is the <span class="emphasis"><em>NetStream</em></span>
object from the
+ client. This is the ActionScript class used to specify the file to
+ be streamed by the server.
+ </p><p>
+ The RTMP packet for our example looks like this:
+
+ </p><pre class="programlisting">
+ 030000190000c91400000000020007connect00?f0000000000000030003app0200#
+ software/gnash/tests/1153948634.flv0008flashVer02000cLNX 6,0,82,0 0006
+ swfUrl02001dfile:///file|%2Ftmp%2Fout.swfc30005tcUrl\002\0004
+ rtmp://localhost/software/gnash/tests/1153948634.flv\000\000\t
+ \002\000\005userx
+ </pre><p>
+
+ We'll take this apart in a bit, but you can see how all three AMF
+ packets are in the same message. The message is received in
+ several 128 byte blocks, with the last one being less than
+ that. The total size of the RTMP message is in the header, so the
+ reader can tell if the entire message was read or not.
+ </p><p>
+ The RTMP header is first, followed by the connect message as an
+ ASCII string as the message body. The following AMF packet is the
+ <span class="emphasis"><em>NetConnection</em></span> one, which specifies
that this is coming
+ from a Flash application. This also contains the file path the server
+ can use to find the file to stream. This is then followed by the
+ version number, which I assume is the version of the Flash player,
+ so the server knows what it is talking to.
+ </p><p>
+ The third packet is the one from <span
class="emphasis"><em>NetStream</em></span>, which
+ specifies the URL used for the movie, followed by the user name
+ for a semblance of security.
+ </p><p>
+ For the next level of detail, we'll explain the format of AMF. AMF
+ is used by the RTMP protocol to transfer data. Each Flash object
+ is encapsulated in an AMF packet, including streaming audio or
+ video.
+ </p><p>
+ The first byte of the RTMP header determines two things about the
+ rest of the message. The first 2 bits of this byte signify the
+ total size of the RTMP header. The RTMP header is of a variable
+ size, so this is important.
+
+ </p><div class="variablelist"><dl><dt><span
class="term">00</span></dt><dd><p>
+ This specifies the header contains 12 bytes, including
+ this one.
+ </p></dd><dt><span class="term">01</span></dt><dd><p>
+ This specifies the header contains 8 bytes, including this
+ one.
+ </p></dd><dt><span class="term">02</span></dt><dd><p>
+ This specifies the header contains 4 bytes, including this
+ one.
+ </p></dd><dt><span class="term">03</span></dt><dd><p>
+ This specifies the header contains 1 byte, so this is the
+ complete header.
+ </p></dd></dl></div><p>
+ </p><p>
+ The other 6 bits in this byte represent the AMF index. As a single
+ RTMP connection can support multiple data streams, this signifies
+ which stream this packet is for. Once an AMF object is fully
+ received by the client, the AMF index may be reused.
+ </p><p>
+ For messages with headers of at least 4 bytes, the next 3 bytes are
+ used by audio and video data packets, but at this time the meaning
+ of this field is unknown.
+ </p><p>
+ For messages with a 8 byte or larger header, the next 3 bytes
+ determine the size of the RTMP message being transmitted. Messages
+ with a 1 byte or 4 byte header use a standard size, 128 bytes for
+ video, and 64 bytes for audio.
+ </p><p>
+ For messages with an 8 byte or larger header, the next byte is the
+ type of the AMF object.
+
+ </p><div class="variablelist"><dl><dt><span
class="term">0x3</span></dt><dd><p>
+ This specifies the content type of the RTMP packet is the
+ number of bytes read. This is used to start the RTMP
+ connection.
+ </p></dd><dt><span class="term">0x4</span></dt><dd><p>
+ This specifies the content type of the RTMP message is a
+ <span class="emphasis"><em>ping</em></span> packet.
+ </p></dd><dt><span class="term">0x5</span></dt><dd><p>
+ This specifies the content type of the RTMP message is
+ server response of some type.
+ </p></dd><dt><span class="term">0x6</span></dt><dd><p>
+ This specifies the content type of the RTMP packet is
+ client request of some type.
+ </p></dd><dt><span class="term">0x8</span></dt><dd><p>
+ This specifies the content type of the RTMP packet is an
+ audio message.
+ </p></dd><dt><span class="term">0x9</span></dt><dd><p>
+ This specifies the content type of the RTMP message is a
+ video packet.
+ </p></dd><dt><span class="term">0x12</span></dt><dd><p>
+ This specifies the content type of the RTMP message is
+ notify.
+ </p></dd><dt><span class="term">0x13</span></dt><dd><p>
+ This specifies the content type of the RTMP message is
+ shared object.
+ </p></dd><dt><span class="term">0x14</span></dt><dd><p>
+ This specifies the content type of the RTMP message is
+ remote procedure call. This invokes the method of a Flash
+ class remotely.
+ </p></dd></dl></div><p>
+
+ </p><p>
+ There are two sets of data types to consider. One set is used by
+ the to specify the content type of the AMF object, the other is an
+ ActionScript data type tag used to denote which type of object is
+ being transferred.
+ </p><p>
+ The values of the initial type byte are:
+ </p><div class="variablelist"><dl><dt><span
class="term">0x0</span></dt><dd><p>
+ This specifies the data in the AMF packet is a numeric
+ value. All numeric values in Flash are 64 bit,
+ <span class="emphasis"><em>big-endian</em></span>.
+ </p></dd><dt><span class="term">0x1</span></dt><dd><p>
+ This specifies the data in the AMF packet is a boolean
+ value.
+ </p></dd><dt><span class="term">0x2</span></dt><dd><p>
+ This specifies the data in the AMF packet is an
+ <span class="emphasis"><em>ASCII</em></span> string.
+ </p></dd><dt><span class="term">0x3</span></dt><dd><p>
+ This specifies the data in the AMF packet is a Flash
+ object. The Flash object data type field further along in
+ the message specifies which type of ActionScript object it
+ is.
+ </p></dd><dt><span class="term">0x4</span></dt><dd><p>
+ This specifies the data in the AMF packet is a Flash
+ movie, ie. another Flash movie.
+ </p></dd><dt><span class="term">0x5</span></dt><dd><p>
+ This specifies the data in the AMF packet is a NULL
+ value. NULL is often used as the return code from calling
+ Flash functions.
+ </p></dd><dt><span class="term">0x6</span></dt><dd><p>
+ This specifies the data in the AMF packet is a
+ undefined. This is also used as the return code from
+ calling Flash functions.
+ </p></dd><dt><span class="term">0x7</span></dt><dd><p>
+ This specifies the data in the AMF packet is a reference.
+ </p></dd><dt><span class="term">0x8</span></dt><dd><p>
+ This specifies the data in the AMF packet is a ECMA
+ array.
+ </p></dd><dt><span class="term">0x9</span></dt><dd><p>
+ This specifies the data in the AMF packet is the end of an
+ object definition. As an object is transmitted with
+ multiple AMF packets, this lets the server know when the
+ end of the object is reached.
+ </p></dd><dt><span class="term">0xa</span></dt><dd><p>
+ This specifies the data in the AMF packet is a Strict
+ array.
+ </p></dd><dt><span class="term">0xb</span></dt><dd><p>
+ This specifies the data in the AMF packet is a date.
+ </p></dd><dt><span class="term">0xc</span></dt><dd><p>
+ This specifies the data in the AMF packet is a multi-byte
+ string. Multi-byte strings are used for international
+ language support to represent non <span
class="emphasis"><em>ASCII</em></span>
+ fonts.
+ </p></dd><dt><span class="term">0xd</span></dt><dd><p>
+ This specifies the data in the AMF packet is a an
+ unsupported feature.
+ </p></dd><dt><span class="term">0xe</span></dt><dd><p>
+ This specifies the data in the AMF packet is a record
+ set.
+ </p></dd><dt><span class="term">0xf</span></dt><dd><p>
+ This specifies the data in the AMF packet is a AML
+ object. XML objects are then parsed by the
+ <span class="emphasis"><em>XML</em></span> ActionScript class.
+ </p></dd><dt><span class="term">0x10</span></dt><dd><p>
+ This specifies the data in the AMF packet is a typed object.
+ </p></dd></dl></div><p>
+
+ </p><p>
+ For messages with a 12 byte header, the last 4 bytes are the
+ routing of the message. If the destination is the server, this
+ value is the NetStream object source. If the destination is the
+ client, this is the NetStream object for this RTMP message. A
+ value of 0x00000000 appears to be reserved for the NetConnection
+ object.
+ </p><p>
+ Multiple AMF streams can be contained in a single RTMP messages,
+ so it's important to check the index of each AMF packet.
+ </p><p>
+ An example RTMP header might look like this. (spaces added between
+ fields for clarity) All the numbers are in hex.
+
+ </p><pre class="screen">
+ 03 000019 0000c9 14 000000000
+ </pre><p>
+
+ </p><div class="variablelist"><dl><dt><span
class="term">03</span></dt><dd><p>
+ The first two bits of this byte are the size of the
+ header, which in this example is 00, for a 12 byte
+ header. The next 6 bits is the AMF stream index number,
+ which in this example is 0x3.
+ </p></dd><dt><span class="term">000019</span></dt><dd><p>
+ These 3 bytes currently have an unknown purpose.
+ </p></dd><dt><span class="term">000c9</span></dt><dd><p>
+ Since this example has a 12 byte header, this is the size
+ of the RTMP message, in this case 201 bytes.
+ </p></dd><dt><span class="term">14</span></dt><dd><p>
+ This is the content type of the RTMP message, which in
+ this case is to invoke a remote function call. (which we
+ later see is the connect function).
+ </p></dd><dt><span class="term">00000000</span></dt><dd><p>
+ The source is the NetConnection object used to start this
+ connection.
+ </p></dd></dl></div><p>
+
+ </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4
class="title"><a name="amf"></a>AMF Format</h4></div></div></div><p>
+ The AMF format is used in the LocalConnection, SharedObject,
+ NetConnection, and NetStream ActionScript classes. This is a means
+ of binary data interchange between Flash movies, or between a
+ Flash player and a Flash server.
+ </p><p>
+ Like the RTMP messages, an AMF packet header can be of a variable
+ size. The size is either the same as the initial header of the
+ RTMP message, or a 1 byte header, which is commonly used for
+ streaming audio or video data.
+ </p><p>
+ The body of an AMF packet may look something like this
+ example. The spaces have been added for clarity.
+
+ </p><pre class="screen">
+ 02 0007 636f6e6e656374
+ </pre><p>
+
+ </p><div class="variablelist"><dl><dt><span
class="term">02</span></dt><dd><p>
+ This is a single byte header. The value of the first 2
+ bits is 0x3, and the AMF index is also 0x3.
+ </p></dd><dt><span class="term">0007</span></dt><dd><p>
+ This is the length in bytes of the string.
+ </p></dd><dt><span class="term">63 6f 6e 6e 65 63
74</span></dt><dd><p>
+ This is the string. Note that there is no null terminator
+ since the length is specified.
+ </p></dd></dl></div><p>
+
+ </p></div></div><div class="chapter" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="authors"></a>Chapter 6.
Authors</h2></div></div></div><p>
+ <span class="application">Gnash</span> is maintained by Rob Savoye
<code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>.
+ Other active developers are: Sandro Santilli, Bastiaan Jacques,
+ and Tomas Groth. Please send all comments and suggestions to
+ <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>.
+ </p><p>
+ <span class="application">Gnash</span> was initially derived from
<span class="application">GameSWF</span>.
+ <span class="application">GameSWF</span> is maintained by
+ Thatcher Ulrich <code class="email"><<a class="email"
href="mailto:address@hidden">address@hidden</a>></code>. The following
+ people contributed to <span class="application">GameSWF</span>:
+ Mike Shaver, Thierry Berger-Perrin,
+ Ignacio Castaño, Willem Kokke, Vitaly Alexeev, Alexander Streit,
+ and Rob Savoye.
+ </p></div><div class="appendix" lang="en"><div
class="titlepage"><div><div><h2 class="title"><a name="fdl"></a>Appendix A. GNU
Free Documentation License</h2></div><div><p class="releaseinfo">
+ Version 1.1, March 2000
+ </p></div><div><p class="copyright">Copyright © 2000 Free Software
Foundation, Inc.</p></div><div><div class="legalnotice"><a
name="fdl-legalnotice"></a><p>
+ </p><div class="address"><p>Free Software Foundation, Inc. <span
class="street">59 Temple Place, <br>
+ Suite 330</span>, <span class="city">Boston</span>, <span
class="state">MA</span> <br>
+ <span class="postcode">02111-1307</span> <span
class="country">USA</span></p></div><p>
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+ </p></div></div></div></div><div class="toc"><p><b>Table of
Contents</b></p><dl><dt><span class="sect1"><a href="#fdl-preamble">0.
PREAMBLE</a></span></dt><dt><span class="sect1"><a href="#fdl-section1">1.
APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a
href="#fdl-section2">2. VERBATIM COPYING</a></span></dt><dt><span
class="sect1"><a href="#fdl-section3">3. COPYING IN
QUANTITY</a></span></dt><dt><span class="sect1"><a href="#fdl-section4">4.
MODIFICATIONS</a></span></dt><dt><span class="sect1"><a href="#fdl-section5">5.
COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a
href="#fdl-section6">6. COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span
class="sect1"><a href="#fdl-section7">7. AGGREGATION WITH INDEPENDENT
WORKS</a></span></dt><dt><span class="sect1"><a href="#fdl-section8">8.
TRANSLATION</a></span></dt><dt><span class="sect1"><a href="#fdl-section9">9.
TERMINATION</a></span></dt><dt><span class="sect1"><a href="#fdl-section10">10.
FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a
href="#fdl-using">Addendum</a></span></dt></dl></div><div class="sect1"
lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear:
both"><a name="fdl-preamble"></a>0. PREAMBLE</h2></div></div></div><p>
+ The purpose of this License is to make a manual, textbook, or
+ other written document "free" in the sense of
+ freedom: to assure everyone the effective freedom to copy and
+ redistribute it, with or without modifying it, either
+ commercially or non-commercially. Secondarily, this License
+ preserves for the author and publisher a way to get credit for
+ their work, while not being considered responsible for
+ modifications made by others.
+ </p><p>
+ This License is a kind of "copyleft", which means
+ that derivative works of the document must themselves be free in
+ the same sense. It complements the GNU General Public License,
+ which is a copyleft license designed for free software.
+ </p><p>
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same
+ freedoms that the software does. But this License is not limited
+ to software manuals; it can be used for any textual work,
+ regardless of subject matter or whether it is published as a
+ printed book. We recommend this License principally for works
+ whose purpose is instruction or reference.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section1"></a>1. APPLICABILITY AND
DEFINITIONS</h2></div></div></div><p><a name="fdl-document"></a>
+ This License applies to any manual or other work that contains a
+ notice placed by the copyright holder saying it can be
+ distributed under the terms of this License. The
+ "Document", below, refers to any such manual or
+ work. Any member of the public is a licensee, and is addressed
+ as "you".
+ </p><p><a name="fdl-modified"></a>
+ A "Modified Version" of the Document means any work
+ containing the Document or a portion of it, either copied
+ verbatim, or with modifications and/or translated into another
+ language.
+ </p><p><a name="fdl-secondary"></a>
+ A "Secondary Section" is a named appendix or a
+ front-matter section of the <a class="link"
href="#fdl-document">Document</a> that deals exclusively
+ with the relationship of the publishers or authors of the
+ Document to the Document's overall subject (or to related
+ matters) and contains nothing that could fall directly within
+ that overall subject. (For example, if the Document is in part a
+ textbook of mathematics, a Secondary Section may not explain any
+ mathematics.) The relationship could be a matter of historical
+ connection with the subject or with related matters, or of
+ legal, commercial, philosophical, ethical or political position
+ regarding them.
+ </p><p><a name="fdl-invariant"></a>
+ The "Invariant Sections" are certain <a class="link"
href="#fdl-secondary"> Secondary Sections</a> whose titles
+ are designated, as being those of Invariant Sections, in the
+ notice that says that the <a class="link"
href="#fdl-document">Document</a> is released under this
+ License.
+ </p><p><a name="fdl-cover-texts"></a>
+ The "Cover Texts" are certain short passages of
+ text that are listed, as Front-Cover Texts or Back-Cover Texts,
+ in the notice that says that the <a class="link"
href="#fdl-document">Document</a> is released under this
+ License.
+ </p><p><a name="fdl-transparent"></a>
+ A "Transparent" copy of the <a class="link" href="#fdl-document">
Document</a> means a machine-readable
+ copy, represented in a format whose specification is available
+ to the general public, whose contents can be viewed and edited
+ directly and straightforwardly with generic text editors or (for
+ images composed of pixels) generic paint programs or (for
+ drawings) some widely available drawing editor, and that is
+ suitable for input to text formatters or for automatic
+ translation to a variety of formats suitable for input to text
+ formatters. A copy made in an otherwise Transparent file format
+ whose markup has been designed to thwart or discourage
+ subsequent modification by readers is not Transparent. A copy
+ that is not "Transparent" is called "Opaque".
+ </p><p>
+ Examples of suitable formats for Transparent copies include
+ plain ASCII without markup, Texinfo input format, LaTeX input
+ format, SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML designed for human
+ modification. Opaque formats include PostScript, PDF,
+ proprietary formats that can be read and edited only by
+ proprietary word processors, SGML or XML for which the DTD
+ and/or processing tools are not generally available, and the
+ machine-generated HTML produced by some word processors for
+ output purposes only.
+ </p><p><a name="fdl-title-page"></a>
+ The "Title Page" means, for a printed book, the
+ title page itself, plus such following pages as are needed to
+ hold, legibly, the material this License requires to appear in
+ the title page. For works in formats which do not have any title
+ page as such, "Title Page" means the text near the
+ most prominent appearance of the work's title, preceding the
+ beginning of the body of the text.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section2"></a>2. VERBATIM COPYING</h2></div></div></div><p>
+ You may copy and distribute the <a class="link"
href="#fdl-document">Document</a> in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that
+ you add no other conditions whatsoever to those of this
+ License. You may not use technical measures to obstruct or
+ control the reading or further copying of the copies you make or
+ distribute. However, you may accept compensation in exchange for
+ copies. If you distribute a large enough number of copies you
+ must also follow the conditions in <a class="link" href="#fdl-section3"
title="3. COPYING IN QUANTITY">section 3</a>.
+ </p><p>
+ You may also lend copies, under the same conditions stated
+ above, and you may publicly display copies.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section3"></a>3. COPYING IN QUANTITY</h2></div></div></div><p>
+ If you publish printed copies of the <a class="link"
href="#fdl-document">Document</a> numbering more than 100,
+ and the Document's license notice requires <a class="link"
href="#fdl-cover-texts">Cover Texts</a>, you must enclose
+ the copies in covers that carry, clearly and legibly, all these
+ Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also
+ clearly and legibly identify you as the publisher of these
+ copies. The front cover must present the full title with all
+ words of the title equally prominent and visible. You may add
+ other material on the covers in addition. Copying with changes
+ limited to the covers, as long as they preserve the title of the
+ <a class="link" href="#fdl-document">Document</a> and satisfy these
+ conditions, can be treated as verbatim copying in other
+ respects.
+ </p><p>
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+ </p><p>
+ If you publish or distribute <a class="link"
href="#fdl-transparent">Opaque</a> copies of the <a class="link"
href="#fdl-document">Document</a> numbering more than 100,
+ you must either include a machine-readable <a class="link"
href="#fdl-transparent">Transparent</a> copy along with
+ each Opaque copy, or state in or with each Opaque copy a
+ publicly-accessible computer-network location containing a
+ complete Transparent copy of the Document, free of added
+ material, which the general network-using public has access to
+ download anonymously at no charge using public-standard network
+ protocols. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly
+ or through your agents or retailers) of that edition to the
+ public.
+ </p><p>
+ It is requested, but not required, that you contact the authors
+ of the <a class="link" href="#fdl-document">Document</a> well before
+ redistributing any large number of copies, to give them a chance
+ to provide you with an updated version of the Document.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section4"></a>4. MODIFICATIONS</h2></div></div></div><p>
+ You may copy and distribute a <a class="link"
href="#fdl-modified">Modified Version</a> of the <a class="link"
href="#fdl-document">Document</a> under the conditions of
+ sections <a class="link" href="#fdl-section2" title="2. VERBATIM
COPYING">2</a> and <a class="link" href="#fdl-section3" title="3. COPYING IN
QUANTITY">3</a> above, provided that you release
+ the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version
+ to whoever possesses a copy of it. In addition, you must do
+ these things in the Modified Version:
+ </p><div class="itemizedlist"><ul type="opencircle"><li
style="list-style-type: circle"><p><b>A. </b>
+ Use in the <a class="link" href="#fdl-title-page">Title
+ Page</a> (and on the covers, if any) a title distinct
+ from that of the <a class="link" href="#fdl-document">Document</a>,
and from those of
+ previous versions (which should, if there were any, be
+ listed in the History section of the Document). You may
+ use the same title as a previous version if the original
+ publisher of that version gives permission.
+ </p></li><li style="list-style-type: circle"><p><b>B. </b>
+ List on the <a class="link" href="#fdl-title-page">Title
+ Page</a>, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the
+ <a class="link" href="#fdl-modified">Modified Version</a>,
+ together with at least five of the principal authors of
+ the <a class="link" href="#fdl-document">Document</a> (all of
+ its principal authors, if it has less than five).
+ </p></li><li style="list-style-type: circle"><p><b>C. </b>
+ State on the <a class="link" href="#fdl-title-page">Title
+ Page</a> the name of the publisher of the <a class="link"
href="#fdl-modified">Modified Version</a>, as the
+ publisher.
+ </p></li><li style="list-style-type: circle"><p><b>D. </b>
+ Preserve all the copyright notices of the <a class="link"
href="#fdl-document">Document</a>.
+ </p></li><li style="list-style-type: circle"><p><b>E. </b>
+ Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+ </p></li><li style="list-style-type: circle"><p><b>F. </b>
+ Include, immediately after the copyright notices, a
+ license notice giving the public permission to use the
+ <a class="link" href="#fdl-modified">Modified Version</a> under
+ the terms of this License, in the form shown in the
+ Addendum below.
+ </p></li><li style="list-style-type: circle"><p><b>G. </b>
+ Preserve in that license notice the full lists of <a class="link"
href="#fdl-invariant"> Invariant Sections</a> and
+ required <a class="link" href="#fdl-cover-texts">Cover
+ Texts</a> given in the <a class="link"
href="#fdl-document">Document's</a> license notice.
+ </p></li><li style="list-style-type: circle"><p><b>H. </b>
+ Include an unaltered copy of this License.
+ </p></li><li style="list-style-type: circle"><p><b>I. </b>
+ Preserve the section entitled "History", and
+ its title, and add to it an item stating at least the
+ title, year, new authors, and publisher of the <a class="link"
href="#fdl-modified">Modified Version </a>as given on
+ the <a class="link" href="#fdl-title-page">Title Page</a>. If
+ there is no section entitled "History" in the
+ <a class="link" href="#fdl-document">Document</a>, create one
+ stating the title, year, authors, and publisher of the
+ Document as given on its Title Page, then add an item
+ describing the Modified Version as stated in the previous
+ sentence.
+ </p></li><li style="list-style-type: circle"><p><b>J. </b>
+ Preserve the network location, if any, given in the <a class="link"
href="#fdl-document">Document</a> for public access
+ to a <a class="link" href="#fdl-transparent">Transparent</a>
+ copy of the Document, and likewise the network locations
+ given in the Document for previous versions it was based
+ on. These may be placed in the "History"
+ section. You may omit a network location for a work that
+ was published at least four years before the Document
+ itself, or if the original publisher of the version it
+ refers to gives permission.
+ </p></li><li style="list-style-type: circle"><p><b>K. </b>
+ In any section entitled "Acknowledgements" or
+ "Dedications", preserve the section's title,
+ and preserve in the section all the substance and tone of
+ each of the contributor acknowledgements and/or
+ dedications given therein.
+ </p></li><li style="list-style-type: circle"><p><b>L. </b>
+ Preserve all the <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> of the <a class="link"
href="#fdl-document">Document</a>, unaltered in their
+ text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+ </p></li><li style="list-style-type: circle"><p><b>M. </b>
+ Delete any section entitled
+ "Endorsements". Such a section may not be
+ included in the <a class="link" href="#fdl-modified">Modified
+ Version</a>.
+ </p></li><li style="list-style-type: circle"><p><b>N. </b>
+ Do not retitle any existing section as
+ "Endorsements" or to conflict in title with
+ any <a class="link" href="#fdl-invariant">Invariant
+ Section</a>.
+ </p></li></ul></div><p>
+ If the <a class="link" href="#fdl-modified">Modified Version</a>
+ includes new front-matter sections or appendices that qualify as
+ <a class="link" href="#fdl-secondary">Secondary Sections</a> and
+ contain no material copied from the Document, you may at your
+ option designate some or all of these sections as invariant. To
+ do this, add their titles to the list of <a class="link"
href="#fdl-invariant">Invariant Sections</a> in the
+ Modified Version's license notice. These titles must be
+ distinct from any other section titles.
+ </p><p>
+ You may add a section entitled "Endorsements",
+ provided it contains nothing but endorsements of your <a class="link"
href="#fdl-modified">Modified Version</a> by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+ </p><p>
+ You may add a passage of up to five words as a <a class="link"
href="#fdl-cover-texts">Front-Cover Text</a>, and a passage
+ of up to 25 words as a <a class="link"
href="#fdl-cover-texts">Back-Cover Text</a>, to the end of
+ the list of <a class="link" href="#fdl-cover-texts">Cover Texts</a>
+ in the <a class="link" href="#fdl-modified">Modified Version</a>.
+ Only one passage of Front-Cover Text and one of Back-Cover Text
+ may be added by (or through arrangements made by) any one
+ entity. If the <a class="link" href="#fdl-document">Document</a>
+ already includes a cover text for the same cover, previously
+ added by you or by arrangement made by the same entity you are
+ acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+ </p><p>
+ The author(s) and publisher(s) of the <a class="link"
href="#fdl-document">Document</a> do not by this License
+ give permission to use their names for publicity for or to
+ assert or imply endorsement of any <a class="link"
href="#fdl-modified">Modified Version </a>.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section5"></a>5. COMBINING DOCUMENTS</h2></div></div></div><p>
+ You may combine the <a class="link" href="#fdl-document">Document</a>
+ with other documents released under this License, under the
+ terms defined in <a class="link" href="#fdl-section4" title="4.
MODIFICATIONS">section 4</a>
+ above for modified versions, provided that you include in the
+ combination all of the <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> of all of the original documents, unmodified,
+ and list them all as Invariant Sections of your combined work in
+ its license notice.
+ </p><p>
+ The combined work need only contain one copy of this License,
+ and multiple identical <a class="link" href="#fdl-invariant">Invariant
+ Sections</a> may be replaced with a single copy. If there are
+ multiple Invariant Sections with the same name but different
+ contents, make the title of each such section unique by adding
+ at the end of it, in parentheses, the name of the original
+ author or publisher of that section if known, or else a unique
+ number. Make the same adjustment to the section titles in the
+ list of Invariant Sections in the license notice of the combined
+ work.
+ </p><p>
+ In the combination, you must combine any sections entitled
+ "History" in the various original documents,
+ forming one section entitled "History"; likewise
+ combine any sections entitled "Acknowledgements",
+ and any sections entitled "Dedications". You must
+ delete all sections entitled "Endorsements."
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section6"></a>6. COLLECTIONS OF DOCUMENTS</h2></div></div></div><p>
+ You may make a collection consisting of the <a class="link"
href="#fdl-document">Document</a> and other documents
+ released under this License, and replace the individual copies
+ of this License in the various documents with a single copy that
+ is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+ </p><p>
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you
+ insert a copy of this License into the extracted document, and
+ follow this License in all other respects regarding verbatim
+ copying of that document.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section7"></a>7. AGGREGATION WITH INDEPENDENT
WORKS</h2></div></div></div><p>
+ A compilation of the <a class="link" href="#fdl-document">Document</a>
or its derivatives with
+ other separate and independent documents or works, in or on a
+ volume of a storage or distribution medium, does not as a whole
+ count as a <a class="link" href="#fdl-modified">Modified Version</a>
+ of the Document, provided no compilation copyright is claimed
+ for the compilation. Such a compilation is called an
+ "aggregate", and this License does not apply to the
+ other self-contained works thus compiled with the Document , on
+ account of their being thus compiled, if they are not themselves
+ derivative works of the Document. If the <a class="link"
href="#fdl-cover-texts">Cover Text</a> requirement of <a class="link"
href="#fdl-section3" title="3. COPYING IN QUANTITY">section 3</a> is applicable
to these
+ copies of the Document, then if the Document is less than one
+ quarter of the entire aggregate, the Document's Cover Texts may
+ be placed on covers that surround only the Document within the
+ aggregate. Otherwise they must appear on covers around the whole
+ aggregate.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section8"></a>8. TRANSLATION</h2></div></div></div><p>
+ Translation is considered a kind of modification, so you may
+ distribute translations of the <a class="link"
href="#fdl-document">Document</a> under the terms of <a class="link"
href="#fdl-section4" title="4. MODIFICATIONS">section 4</a>. Replacing <a
class="link" href="#fdl-invariant"> Invariant Sections</a> with
+ translations requires special permission from their copyright
+ holders, but you may include translations of some or all
+ Invariant Sections in addition to the original versions of these
+ Invariant Sections. You may include a translation of this
+ License provided that you also include the original English
+ version of this License. In case of a disagreement between the
+ translation and the original English version of this License,
+ the original English version will prevail.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section9"></a>9. TERMINATION</h2></div></div></div><p>
+ You may not copy, modify, sublicense, or distribute the <a class="link"
href="#fdl-document">Document</a> except as expressly
+ provided for under this License. Any other attempt to copy,
+ modify, sublicense or distribute the Document is void, and will
+ automatically terminate your rights under this License. However,
+ parties who have received copies, or rights, from you under this
+ License will not have their licenses terminated so long as such
+ parties remain in full compliance.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-section10"></a>10. FUTURE REVISIONS OF THIS
LICENSE</h2></div></div></div><p>
+ The <a class="ulink" href="http://www.gnu.org/fsf/fsf.html"
target="_top">Free Software
+ Foundation</a> may publish new, revised versions of the GNU
+ Free Documentation License from time to time. Such new versions
+ will be similar in spirit to the present version, but may differ
+ in detail to address new problems or concerns. See <a class="ulink"
href="http://www.gnu.org/copyleft"
target="_top">http://www.gnu.org/copyleft/</a>.
+ </p><p>
+ Each version of the License is given a distinguishing version
+ number. If the <a class="link" href="#fdl-document">Document</a>
+ specifies that a particular numbered version of this License
+ "or any later version" applies to it, you have the
+ option of following the terms and conditions either of that
+ specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by
+ the Free Software Foundation.
+ </p></div><div class="sect1" lang="en"><div
class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="fdl-using"></a>Addendum</h2></div></div></div><p>
+ To use this License in a document you have written, include a copy of
+ the License in the document and put the following copyright and
+ license notices just after the title page:
+ </p><div class="blockquote"><blockquote class="blockquote"><p>
+ Copyright YEAR YOUR NAME.
+ </p><p>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License, Version 1.1 or any later version published by the
+ Free Software Foundation; with the <a class="link"
href="#fdl-invariant">Invariant Sections</a> being LIST
+ THEIR TITLES, with the <a class="link"
href="#fdl-cover-texts">Front-Cover Texts</a> being LIST,
+ and with the <a class="link" href="#fdl-cover-texts">Back-Cover
+ Texts</a> being LIST. A copy of the license is included in
+ the section entitled "GNU Free Documentation
+ License".
+ </p></blockquote></div><p>
+ If you have no <a class="link" href="#fdl-invariant">Invariant
+ Sections</a>, write "with no Invariant Sections"
+ instead of saying which ones are invariant. If you have no
+ <a class="link" href="#fdl-cover-texts">Front-Cover Texts</a>, write
+ "no Front-Cover Texts" instead of
+ "Front-Cover Texts being LIST"; likewise for <a class="link"
href="#fdl-cover-texts">Back-Cover Texts</a>.
+ </p><p>
+ If your document contains nontrivial examples of program code,
+ we recommend releasing these examples in parallel under your
+ choice of free software license, such as the <a class="ulink"
href="http://www.gnu.org/copyleft/gpl.html" target="_top"> GNU General Public
+ License</a>, to permit their use in free software.
+ </p></div></div></div></body></html>
Index: packaging/doc/gnash.info.in
===================================================================
RCS file: packaging/doc/gnash.info.in
diff -N packaging/doc/gnash.info.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/gnash.info.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,1966 @@
+START-INFO-DIR-ENTRY
+This is gnash.info, produced by makeinfo version 4.11 from gnash.texi.
+
+* Gnash Developer's Guide version 0.4.3:
(gnash_developer's_guide_version_0.4.3).
+ [MISSING TEXT]
+END-INFO-DIR-ENTRY
+
+
+File: gnash.info, Node: Top, Next: Introduction, Up: (dir)
+
+Gnash Developer's Guide version 0.4.3
+*************************************
+
+* Menu:
+
+* Introduction::
+* Technical Specifications::
+* Installing and Configuring Gnash::
+* Using Gnash::
+* Reporting Bugs::
+* Glossary::
+* AMF Format: AMF Format <1>.
+* RTMP Protocol::
+* Authors::
+* GNU Free Documentation License::
+
+--- The Detailed Node Listing ---
+
+Introduction
+
+* What does Gnash run on?::
+* What Versions of Flash are Supported?::
+* Audience::
+* Guide Conventions::
+* Acknowledgments::
+
+Technical Specifications
+
+* ActionScript::
+* Memory Management::
+* Security::
+
+Installing and Configuring Gnash
+
+* Requirements::
+* Downloading Gnash::
+* Pre-Compile Configuration::
+* Building from Source::
+* Installation::
+
+Using Gnash
+
+* Gnash Command Line Options::
+* Gnash Interactive Control Keys::
+* User Configuration File::
+
+Reporting Bugs
+
+* Compile the latest Gnash build::
+* Determine if the bug was previously reported::
+* Review the bug writing guidelines::
+* Filing a bug report::
+
+RTMP Protocol
+
+* AMF Format: AMF Format <1>.
+
+GNU Free Documentation License
+
+* 0. PREAMBLE: 0_ PREAMBLE.
+* 1. APPLICABILITY AND DEFINITIONS: 1_ APPLICABILITY AND DEFINITIONS.
+* 2. VERBATIM COPYING: 2_ VERBATIM COPYING.
+* 3. COPYING IN QUANTITY: 3_ COPYING IN QUANTITY.
+* 4. MODIFICATIONS: 4_ MODIFICATIONS.
+* 5. COMBINING DOCUMENTS: 5_ COMBINING DOCUMENTS.
+* 6. COLLECTIONS OF DOCUMENTS: 6_ COLLECTIONS OF DOCUMENTS.
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7_ AGGREGATION WITH INDEPENDENT WORKS.
+* 8. TRANSLATION: 8_ TRANSLATION.
+* 9. TERMINATION: 9_ TERMINATION.
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10_ FUTURE REVISIONS OF THIS LICENSE.
+* Addendum::
+
+
+File: gnash.info, Node: Introduction, Next: Technical Specifications, Prev:
Top, Up: Top
+
+1 Introduction
+**************
+
+Gnash is a free Flash movie player. It is available as a stand-alone
+application or as a plugin for several popular browsers.
+
+ Gnash is based on the excellent work done on the public domain
+program GameSWF, which is a graphics library for games that contains
+the heart of a Flash interpreter. In December 2005, Gnash was forked
+from GameSWF and repackaged in the GNU project style. The objective of
+Gnash is to create an enterprise-quality Flash movie player that can be
+widely deployed.
+
+* Menu:
+
+* What does Gnash run on?::
+* What Versions of Flash are Supported?::
+* Audience::
+* Guide Conventions::
+* Acknowledgments::
+
+
+File: gnash.info, Node: What does Gnash run on?, Next: What Versions of
Flash are Supported?, Up: Introduction
+
+1.1 What does Gnash run on?
+===========================
+
+The list of successful Gnash deployments grows every day. At this
+time, Gnash has been found to run on several different UNIX and Linux
+distributions. The plugin currently works with any browser that uses
+the NSAPI. This includes:
+
+ * Mozilla `http://www.mozilla.org'
+
+ * Firefox `http://www.mozilla.com/en-US/firefox'
+
+ * Galeon `galeon.sourceforge.net'
+
+ * Epiphany `gnome.org/projects/epiphany'
+
+ * Konqueror `http://www.konqueror.org'
+
+ * Opera `http://www.opera.com'
+
+ * OLPC Web Activity `http://www.laptop.org'
+
+
+File: gnash.info, Node: What Versions of Flash are Supported?, Next:
Audience, Prev: What does Gnash run on?, Up: Introduction
+
+1.2 What Versions of Flash are Supported?
+=========================================
+
+Gnash supports the majority of Flash opcodes up to SWF version 7, and a
+wide sampling of ActionScript classes for SWF version 7. There are
+plans to work towards greater support for SWF 8 and beyond. AMF
+support is minimal.
+
+
+File: gnash.info, Node: Audience, Next: Guide Conventions, Prev: What
Versions of Flash are Supported?, Up: Introduction
+
+1.3 Audience
+============
+
+This manual is primarily focused on developers interested in
+contributing to or building from the Gnash project. It serves as a
+detailed reference guide, including a catalog and explanation of all
+options and features. This level of detail may make this guide
+cumbersome for the average user, although advanced users may find it
+helpful.
+
+ Those who are new to Gnash will find the Gnash User's Guide,
+currently under development, to be more useful when learning to use
+Gnash.
+
+
+File: gnash.info, Node: Guide Conventions, Next: Acknowledgments, Prev:
Audience, Up: Introduction
+
+1.4 Guide Conventions
+=====================
+
+This guide makes use of the following fairly standard typefaces,
+highlighting, and language usage:
+
+application
+ The typeface above will be used whenever an application, such as
+ Firefox or OpenOffice.org, is mentioned.
+
+`command'
+ The typeface above will be used whenever the text instructs a user
+ to enter a command at a shell prompt in UNIX/Linux, such as `ls'.
+
+`computeroutput'
+ This is the typeface used to indicate information produced on
+ `stdout' by the computer. This include error messages and prompts.
+
+`filename'
+ This typeface indicates that the text is the name (and possibly
+ the path) of a specific file on the system in question. For
+ example, `/etc/hosts' would appear in this typeface.
+
+guibutton
+ This formatting indicates a button on a Graphical User Interface
+ (GUI). If this formatting appears, look for a button with the
+ same text on the GUI of the Gnash player; the button itself may
+ look slightly different.
+
+guimenu
+ This typeface indicates the topmost menu item in a GUI. For
+ example, in many applications the File menu item is a top=level
+ menu item.
+
+guimenuitem
+ This typeface indicates a sub-menu item in a GUI. For example, in
+ many applications the Save As menu item is a sub-menu item.
+
+guitext
+ This typeface indicates a text string on the GUI. This is
+ generally a text string that appears on the GUI that is not a
+ button or menuitem.
+
+<key>
+ This typeface indicates a specific key on the keyboard. For
+ example, the <Ctrl> key appears in this typeface.
+
+<key><combination>
+ This formatting indicates a set of keys to be pressed at the same
+ time. A familiar key combination is <Ctrl><Alt><Delete>.
+
+<REPLACEABLE>
+ Whenever a general term is included in an example as a
+ placeholder, it will be signaled by this formatting. This
+ formatting will usually appear inside other formatting. For
+ example, `/home/<USERNAME>' indicates the home directory of a
+ user, whose actual username would be substituted in for <USERNAME>.
+
+`User input'
+ This typeface indicates anything that the user must enter, whether
+ that is at a shell prompt or in response to a GUI prompt.
+
+
+File: gnash.info, Node: Acknowledgments, Prev: Guide Conventions, Up:
Introduction
+
+1.5 Acknowledgments
+===================
+
+The first version of this guide was written by Rob Savoye. If not for
+his tireless efforts, this book - and this project - would never have
+come this far.
+
+ John Steinhart has also been dedicated to the project from the
+beginning. I have shamelessly plagiarized one of his early announcement
+emails in the early part of this chapter.
+
+ Ann Barcomb was instrumental in taking this guide from the 0.3.0 to
+the 0.4.0 version, incorporating the many changes that came with Gnash
+version 0.8.0.
+
+ Finally, thanks to all of the Gnash developers I haven't mentioned
+for all their hard work, and for answering my unending questions.
+
+
+File: gnash.info, Node: Technical Specifications, Next: Installing and
Configuring Gnash, Prev: Introduction, Up: Top
+
+2 Technical Specifications
+**************************
+
+The information in this chapter may change quickly. For the most
+current information about the following subjects, be sure the check the
+Developer's Wiki at `http://www.gnashdev.org/wiki/index.php/Main_Page'.
+
+* Menu:
+
+* ActionScript::
+* Memory Management::
+* Security::
+
+
+File: gnash.info, Node: ActionScript, Next: Memory Management, Up:
Technical Specifications
+
+2.1 ActionScript
+================
+
+As stated in the section *note What Versions of Flash are Supported?::,
+Gnash has implemented about 80% of ActionScript v. 2.0, and has begun
+implementing ActionScript v. 3.0. Gnash supports the majority of Flash
+opcodes up to SWF version 7, and a wide sampling of ActionScript
+classes for SWF version 7.
+
+ The following table indicates how fully various ActionScript classes
+have been implemented:
+
+ *ActionScript Classes*
+
+Class Status
+Actionscript/Date Implemented
+Actionscript/Function Implemented
+Actionscript/MovieClip Implemented
+Actionscript/MovieClipLoader Implemented
+Actionscript/Object Implemented
+Actionscript/Sound Implemented
+Actionscript/String Implemented
+Actionscript/XMLNode Implemented
+Actionscript/XMLSocket Implemented
+Actionscript/_global Partially Implemented
+Actionscript/Array Partially Implemented
+Actionscript/LocalConnection Partially Implemented
+Actionscript/NetConnection Partially Implemented
+Actionscript/NetStream Partially Implemented
+Actionscript/TextField Partially Implemented
+Actionscript/XML Partially Implemented
+Actionscript/Boolean Unimplemented
+Actionscript/Error Unimplemented
+Actionscript/LoadVars Unimplemented
+Actionscript/Number Unimplemented
+Actionscript/Selection Unimplemented
+Actionscript/TextFormat Unimplemented
+Actionscript/Unknown Unimplemented
+
+ The next table indicates which opcodes have been implemented:
+
+ *Opcodes*
+
+Opcode Status
+0x43 declare_obj Implemented
+0x2B cast Implemented
+0x3B delete2 - SWF::ACTION_DELETE Implemented
+0x53 new_method Implemented
+0x55 enum_object Implemented
+0x3A delete - SWF::ACTION_DELETEVAR Implemented
+0x69 Extends - SWF::ACTION_EXTENDS Implemented
+0x54 instance_of Partially Implemented
+0x2A Throw Unimplemented
+0x2C Implements Unimplemented
+0x8F Try Unimplemented
+0x31 md length Unimplemented
+0x35 md substring Unimplemented
+0x37 md chr Unimplemented
+0x45 get target Unimplemented
+
+
+File: gnash.info, Node: Memory Management, Next: Security, Prev:
ActionScript, Up: Technical Specifications
+
+2.2 Memory Management
+=====================
+
+One of the new features of Gnash 0.8.2 is the garbage collector. The
+garbage collector manages complex ActionScript variables, which are the
+only ones that are shared by references. In Gnash, these are
+`as_object' class instances created by ActionScript (i.e. not those
+created by playhead control: `placeobject'/`removeobject').
+
+ Collected objects are those allocated due to ActionScript explicit
+or implicit calls. Explicit all are any user-defined statements that
+allocate new objects, such as arrays, Objects, or script-created
+movieclips. Implicit calls are the built-in functions that can be
+deleted by arbitrary user calls.
+
+ Any object that is a candidate for garbage collecting is stored in a
+list owned by the collector. This list is filled by an executing
+action context whenever a collectible object is allocated on the heap.
+
+ The garbage collector starts at the very end of an execution
+context, rather than using a threshold to trigger it. At this point,
+the virtual machine is in a "stable" state; any still-reachable object
+has its roots in one of the currently live character instances (stage
+characters).
+
+ The collector is a conservative collector. Any object on the
+collectibles list is marked as UNREACHABLE, an iterative scan starting
+from the roots marks any still-reachable object, and a final purge
+releases all still-UNREACHABLE resources.
+
+ This garbage collector has reduced the memory footprint of Gnash.
+However, the most current, available test data indicated the following
+runtime memory footprint:
+
+ *Memory Footprint*
+
+Render GUI Virtual Memory Resident Set Size Shared Memory
+ (physical RAM (code size)
+agg-gtk 33372 KB 14 MB 8948 KB
+agg-sdl 26564 KB 9396 KB 5124 KB
+agg-fltk 24556 KB 8992 KB 4220 KB
+cairo-fltk 184 MB 128 MB 4284 KB
+cairo-gtk 192 MB 133 MB 8000 KB
+cairo-sdl 187 MB 129 MB 5256 KB
+opengl-gtk 62620 KB 15 MB 9336 KB
+opengl-sdl 54932 KB 10 MB 5324 KB
+
+
+File: gnash.info, Node: Security, Prev: Memory Management, Up: Technical
Specifications
+
+2.3 Security
+============
+
+Many Flash implementations contain potential security exploits that
+could compromise a viewer's system. With Gnash, an end-user has the
+ability to see "what's going on" -- what types of data the application
+accesses, where it is found, and how it is used. Many known Flash
+exploits are included in the Gnash test suite that is used to check
+whether a release is ready for the public. The Gnash developers are
+also in the process of a security review, developing a security layer
+that will protect an end-user, no matter what operating system they use.
+
+ One early security feature is the blacklist/whitelist. Flash movies
+running in a browser can make outgoing network connections. This can be
+used, for example, to compromise a network device inside a company
+firewall via a Flash movie running on an employee's browser. Gnash
+allows you to blacklist hosts that you know are insecure, or to
+whitelist hosts you know are secure, by editing a configuration file.
+
+
+File: gnash.info, Node: Installing and Configuring Gnash, Next: Using Gnash,
Prev: Technical Specifications, Up: Top
+
+3 Installing and Configuring Gnash
+**********************************
+
+There are two ways of installing Gnash: using a package manager (*note
+Using a Package Manager::) or installing from source (*note Getting the
+Source::).
+
+* Menu:
+
+* Requirements::
+* Downloading Gnash::
+* Pre-Compile Configuration::
+* Building from Source::
+* Installation::
+
+
+File: gnash.info, Node: Requirements, Next: Downloading Gnash, Up:
Installing and Configuring Gnash
+
+3.1 Requirements
+================
+
+Before downloading and installing Gnash, check that your hardware and
+software meet the following requirements.
+
+* Menu:
+
+* Hardware Requirements::
+* Software Requirements::
+
+
+File: gnash.info, Node: Hardware Requirements, Next: Software Requirements,
Up: Requirements
+
+3.1.1 Hardware Requirements
+---------------------------
+
+One of the goals of Gnash is to make it portable enough to install on
+small devices. As a result, the hardware requirements are minimal.
+Gnash has even run on an ARM9 at 200 MHz with 64 MB of RAM! (It ran
+without video support in this case.) While firm minimums have not
+been established, Gnash has been shown to run successfully with the
+following:
+
+ * 336 MHz processor
+
+ * 256 MB RAM
+
+ * Video -- Gnash will run on anything from a raw frame buffer up to
+ an OpenGL-supporting graphics card.
+
+ The following table provides a list of the Operating System/CPU
+combinations on which Gnash has been shown to run.
+
+*Build Matrix*
+
+Render GUI Virtual Memory
+FreeBSD Alpha AXP, AMD64, i386, Itanium,
+ PC-98, PowerPC, SPARC64
+GNU/Linux CRIS
+GNU/Linux [OLPC] Geode GX
+GNU/Linux ALTLinux i586
+GNU/Linux Arklinux i586
+GNU/Linux Debian Alpha AXP, AMD64, ARM, hppa, i386,
+ Itanium, MIPS, PowerPC, IBM zSeries
+ (s390), SPARC
+GNU/Linux Fedora core x86-32, x86-64
+GNU/Linux Gentoo AMD64, PowerPC, SPARC, x86
+GNU/Linux Gentoo AMD64, PowerPC, SPARC, x86
+GNU/Linux Maemo 2.1 ARMv5t
+GNU/Linux Mandriva 2007
+GNU/Linux Open Zaurus ARM
+GNU/Linux OpenSuSE 10 i586, x86-64
+GNU/Linux Red Hat x86-32, x86-64
+GNU/Linux Ubuntu x86-64 reported working, also
+ x86-32 and UltraSPARC
+Haiku
+Irix 6.5 MIPS R10K
+MacOS X PowerPC and x86-32
+NetBSD many, including VAX
+OpenBSD many, including VAX, OS/2 and
+ eComstation
+Windows x86-32
+
+
+File: gnash.info, Node: Software Requirements, Prev: Hardware Requirements,
Up: Requirements
+
+3.1.2 Software Requirements
+---------------------------
+
+The 0.8.2 release of Gnash has been designed to run on UNIX/Linux
+variants, and has been run on most of the free ones. However, Gnash
+has successfully run on Windows, Darwin (Mac OS X), Irix, Solaris,
+BeOs, OS/2, and Haiku. Gnash has also run on the following 64-bit
+systems: PowerPC, Itanium, UltraSparc, and AMD64. For now, it is
+important to be sure that the following code, testing, and
+documentation dependencies are met before installing Gnash. If you
+will be downloading Gnash with a package manager, these dependencies
+may be solved by the package manager. Otherwise, you must first verify
+that each of these dependencies are installed on the target system.
+
+* Menu:
+
+* Code Dependencies::
+* Testing Dependencies::
+* Documentation Dependencies::
+
+
+File: gnash.info, Node: Code Dependencies, Next: Testing Dependencies, Up:
Software Requirements
+
+3.1.2.1 Code Dependencies
+.........................
+
+Gnash has a number of dependencies on other packages. If you install
+the dependencies using a package manager, be certain to install the
+development versions of the packages. The normal versions are often
+missing the headers Gnash needs to compile.
+
+ *Note*
+
+ If you want to install the Gnash plugin for one of the browsers
+ listed in the *note Introduction::, be sure to install the
+ development package for that browser before configuring. The
+ Gnash `configure' script searches for the devel packages before
+ building the plugin.
+
+ *Code Dependency Table*
+
+Name Level Version DescriptionExplanationapt-get RPM/Yum
+ package package
+Boost Required 1.32 or Boost is In Gnash,
`libboost-thread-dev'`liboost-thread-dev'
+ higher a library Boost
+ of libraries
+ portable are used
+ C++ extensively.
+ classes
+ and
+ templates.
+libxml2 Required Libxml2 This
`libxml2-dev'`libxml2-devel'
+ is the library
+ GNOME XML is used
+ parser to parse
+ library messages
+ and is in the
+ available XML or
+ at XMLSocket
+ http://xmlsoft.orgActionScript
+ (http://xmlsoft.org).classes.
+AGG Possibly 2.4 or AGG is Gnash `libagg-dev'`agg-devel'
+ Required higher the requires
+ AntiGrain the
+ low-level installation
+ 2D of at
+ graphics least one
+ library. renderer.
+ AGG is
+ considered
+ the _best
+ supported_
+ renderer
+ for Gnash.
+OpenGL Possibly OpenGL Gnash
`libgl1-mesa-dev'`libmesa-devel'
+ Required is a requires
+ standard the
+ specificationinstallation
+ defining a of at
+ cross-languageleast one
+ cross-platformrenderer.
+ API for
+ writing
+ applications
+ which
+ produce
+ 3D and 2D
+ graphics.
+ It
+ supports
+ hardware
+ acceleration.
+ You can
+ download
+ a free
+ implementation
+ from
+ http://www.mesa3d.org
+ (http://www.mesa3d.org).
+Cairo Possibly Cairo is Gnash
`libcairo2-dev'`cairo-devel'
+ Required a 2D requires
+ graphics the
+ library installation
+ with of at
+ support least one
+ for renderer.
+ multiple Cairo is
+ output considered
+ devices. the
+ It will _least
+ automaticallysupported_
+ use renderer
+ graphic for Gnash.
+ card
+ acceleration
+ when
+ available,
+ and has
+ an
+ experimental
+ OpenGL
+ backend.
+GTK Possibly 2.2 or GTK is Gnash
`libgtk2.0-dev'`gtk-devel'
+ Required higher the GIMP requires
+ Toolkit the
+ GUI installation
+ library. of at
+ It uses least one
+ Cairo GUI
+ internally.library.
+ GTK is
+ considered
+ to be the
+ _best
+ supported_
+ GUI
+ library
+ option
+ for Gnash.
+GtkGlExt Possibly GtkGlExt This
`libgtkglext1-dev'`gtkglext-devel'
+ Required integrates library
+ OpenGL is
+ into GTK. required
+ in order
+ to use
+ the GTK
+ GUI
+ library
+ in
+ conjunction
+ with the
+ OpenGL
+ renderer.
+SDL Possibly The Gnash
`libsdl1.2-dev'`SDL-devel'
+ Required Simple requires
+ DirectMediathe
+ Layer is installation
+ a of at
+ cross-platformleast one
+ multimedia GUI
+ library library.
+ which SDL may
+ provides also be
+ abstractionused as a
+ for sound
+ audio, handler
+ graphics, regardless
+ sound and of
+ input whether
+ APIs. it is
+ SDL is employed
+ available as a GUI
+ from library.
+ http://www.libsdl.orgThe GUI
+ (http://www.libsdl.org).library
+ is
+ _poorly
+ supported_
+ in Gnash,
+ but the
+ sound
+ handler
+ is the
+ _best
+ supported_
+ in Gnash.
+FLTK Possibly 2.0 or The Fast Gnash No No
+ Required higher Light requires distributiondistribution
+ ToolKit the packages packages
+ is a installationare are
+ portable of at available. available.
+ GUI least one
+ library GUI
+ which is library.
+ intended FLTK may
+ as a be used
+ replacementin
+ for the conjunction
+ SDL GUI. with the
+ Cairo and
+ AGG
+ renderers.
+KDE Possibly Kdelibs Gnash
`kdelibs4-dev'`kdelibs-devel'
+ Required is a requires
+ collection the
+ of installation
+ libraries of at
+ needed to least one
+ compile GUI
+ KDE library.
+ applications.Kdelibs
+ is also
+ required
+ for the
+ Kpart
+ plugin
+ for
+ Konqueror.
+libMAD Optional libMAD libMAD is
`libmad0-dev'`libmad-devel'
+ is MPEG one of
+ audio the
+ decoder. available
+ options
+ for sound
+ handling.
+Gstreamer Optional Gstreamer If you
`libgstreamer0.8-dev'`gstreamer-devel'
+ is a would
+ video like
+ handler. video
+ playback,
+ you must
+ install
+ one of
+ the video
+ handlers.
+gst-ffmpeg Possibly gst-ffmpegThis
`gstreamer0.8-ffmpeg-dev'`gstreamer-ffmpeg-devel'
+ Required allows package
+ you to is
+ use the required
+ FFMPEG if you
+ decoder would
+ with like to
+ Gstreamer. use
+ Gstreamer
+ as a
+ video
+ handler.
+FFMPEG Possibly FFMPEG If you
`ffmpeg-dev'`ffmpeg-devel'
+ Required is a would
+ video like
+ handler. video
+ playback,
+ you must
+ install
+ one of
+ the video
+ handlers.
+ It is also
+ a
+ dependency
+ of
+ gst-ffmpeg.
+JPEG Optional JPEG This `libjpeg62-dev'`libjpeg'
+ (http://www.ijg.org/)library
+ is a is used
+ lossy for
+ image rendering
+ format JPEGs.
+ which is
+ heavily
+ used for
+ images.
+PNG Optional PNG This `libpng12-dev'`libpng'
+ (http://www.libpng.org/pub/png/)library
+ is a is used
+ patent-freefor
+ image rendering
+ format PNGs.
+ which is
+ comparable
+ to _GIF_.
+libcurl Optional libcurl This
`libcurl4-gnutls'`libcurl'
+ is the library
+ multiprotocalis used
+ file for URL
+ transfer downloading.
+ library.
+automake Possibly 1.6.0 Automake This `automake' `automake'
+ Required is a tool package
+ for is
+ generating required
+ _Makefile.in_to run
+ files. _autogen.sh_,
+ which is
+ a
+ requirement
+ if you
+ are using
+ the
+ development
+ source
+ from CVS.
+autoconf Possibly 2.59 Autoconf This `autoconf' `autoconf'
+ Required is a package
+ package is
+ for required
+ generating to run
+ configure _autogen.sh_,
+ scripts. which is
+ a
+ requirement
+ if you
+ are using
+ the
+ development
+ source
+ from CVS.
+gettext Possibly 0.14.6 Gettext This `gettext' `gettext'
+ Required is part package
+ of the is
+ GNU required
+ Translationto run
+ Project. _autogen.sh_,
+ which is
+ a
+ requirement
+ if you
+ are using
+ the
+ development
+ source
+ from CVS.
+libtool Possibly 1.5.22 This is This `libltdl3-dev'`libtool'
+ Required a generic package
+ library is
+ support required
+ script. to run
+ _autogen.sh_,
+ which is
+ a
+ requirement
+ if you
+ are using
+ the
+ development
+ source
+ from CVS.
+
+
+File: gnash.info, Node: Testing Dependencies, Next: Documentation
Dependencies, Prev: Code Dependencies, Up: Software Requirements
+
+3.1.2.2 Testing Dependencies
+............................
+
+Gnash tries to run as many tests as possible, but will simply skip
+tests if the tools to run them are unavailable.
+
+ *Testing Dependency Table*
+
+Name Level Version DescriptionExplanationapt-get RPM/Yum
+ package package
+Ming Optional 0.4.0_beta4 Ming is Ming is No No
+ or higher an the distributiondistribution
+ ActionScriptprimary packages packages
+ compiler. compiler are are
+ for available. available.
+ ActionScript
+ testcases.
+Mtasc Optional Mtasc is Mtasc is `mtasc' No
+ an used in distribution
+ ActionScriptsome packages
+ compiler. tests. are
+ available.
+swfdec Optional Swfdec Swfdec is No Unofficial
+ is a used in distributionpackage
+ Flash some packages `swfdec'
+ player. testcases. are
+ available.
+DejaGnu Optional DejaGnu DejaGnu `dejagnu' `dejagnu'
+ is a is used
+ testing to run
+ framework. multiple
+ tests in
+ an
+ automated
+ fashion.
+
+
+File: gnash.info, Node: Documentation Dependencies, Prev: Testing
Dependencies, Up: Software Requirements
+
+3.1.2.3 Documentation Dependencies
+..................................
+
+The following packages are used to build Gnash's documentation.
+
+ *Documentation Dependency Table*
+
+Name Level Version DescriptionExplanationapt-get RPM/Yum
+ package package
+Docbook Required Docbook Gnash
`docbook-utils'`docbook-dtd41-sgml'
+
(http://http://docbook.sourceforge.net/)documentationand and
+ is is an is
`docbook-dsssl'`docbook-style-dsssl'
+ industry-standardwritten
+ XML in
+ format Docbook.
+ for
+ technical
+ documentation.
+ You can
+ download
+ it from
+
http://sourceforge.net/project/showfiles.php?group_id=21935#files
+
(http://sourceforge.net/project/showfiles.php?group_id=21935#files).
+DocBook2X Optional This DocBook2X `docbook2x'`docbook2x'
+ software is
+ package required
+ converts to
+ Docbook produce
+ documents HTML and
+ to the Texinfo
+ traditionalformats.
+ man page
+ format,
+ GNU
+ Texinfo
+ format,
+ and HTML
+ (via
+ Texinfo)
+ format.
+ It is
+ available
+ at
+ http://docbook2x.sourceforge.net/
+ (http://docbook2x.sourceforge.net/).
+Texinfo Possibly Texinfo Texinfo `texinfo' `texinfo'
+ Required can be is
+ used to required
+ convert if you
+ DocBook2X wish to
+ output product
+ into GNU GNU info
+ info pages.
+ pages.
+ You can
+ download
+ it from
+ http://ftp.gnu.org/gnu/texinfo/
+ (http://ftp.gnu.org/gnu/texinfo/).
+FOP Optional 0.20.5 FormattingFOP is `fop' `fop'
+ Objects required
+ Processor for PDF
+ is a output.
+ print
+ formatter
+ driven by
+ XSL
+ formatting
+ objects.
+ It is a
+ Java
+ application
+ which can
+ output
+ PDF, PCL,
+ PS, SVG,
+ XML,
+ Print,
+ AWT, MIF,
+ and Text.
+ It is
+ available
+ at
+ http://xmlgraphics.apache.org/fop/
+ (http://xmlgraphics.apache.org/fop/).
+Java Possibly FOP Sun's Download Download
+(j2re) Required requires Java the the
+ Sun's runtime package package
+ Java (j2re) is from Sun from Sun
+ runtime required
(http://java.sun.com).(http://java.sun.com).
+ (GCJ does to use
+ not work FOP.
+ with
+ FOP).
+ You can
+ download
+ it from
+ http://java.sun.com
+ (http://java.sun.com).
+JAI Possibly Sun's JAI is Download Download
+ Required Java required the the
+ Advanced if you package package
+ Imaging wish to from Sun from Sun
+ API can include
(http://java.sun.com/products/java-media/jai/iio.html).(http://java.sun.com/products/java-media/jai/iio.html).
+ be graphics
+ downloaded in a PDF
+ from file being
+
http://java.sun.com/products/java-media/jai/iio.htmlgenerated
+
(http://java.sun.com/products/java-media/jai/iio.html).with FOP.
+
+ If you install j2re, set the _JAVA_HOME_ environment variable to the
+top directory of the j2re installation. If you encounter problems with
+the Java installation, you may also need to add this path to the
+_CLASSPATH_ environment variable.
+
+
+File: gnash.info, Node: Downloading Gnash, Next: Pre-Compile Configuration,
Prev: Requirements, Up: Installing and Configuring Gnash
+
+3.2 Downloading Gnash
+=====================
+
+There are two ways to download Gnash: using a package manager or by
+downloading the source code and building it on your system. If
+possible, it is advisable to use a package manager to download Gnash,
+as it will resolve dependencies for you. However, if you want the very
+latest features, or a Gnash package is not available for your operating
+system, it is better to download the source code and build Gnash
+locally.
+
+* Menu:
+
+* Using a Package Manager::
+* Getting the Source::
+
+
+File: gnash.info, Node: Using a Package Manager, Next: Getting the Source,
Up: Downloading Gnash
+
+3.2.1 Using a Package Manager
+-----------------------------
+
+Gnash is available as a package for a number of Linux and BSD
+distributions, such as Ubuntu
+(http://packages.ubuntu.com/feisty/utils/gnash), Debian
+(http://packages.debian.org/unstable/utils/gnash), FreeBSD
+(http://www.freshports.org/graphics/gnash/), and OpenBSD
+(http://ports.openbsd.nu/www/gnash). There is also an unofficial
+Fedora RPM. This is not an extensive list, and you are advised to
+search if you wish to use a package manager on a different system.
+
+
+File: gnash.info, Node: Getting the Source, Prev: Using a Package Manager,
Up: Downloading Gnash
+
+3.2.2 Getting the Source
+------------------------
+
+Gnash is available as a release tarball (*note Releases::), a
+development checkout (*note Repository::), or a development snapshot
+(*note Snapshot::).
+
+* Menu:
+
+* Releases::
+* Repository::
+* Snapshot::
+
+
+File: gnash.info, Node: Releases, Next: Repository, Up: Getting the Source
+
+3.2.2.1 Releases
+................
+
+The source can be acquired from a GNU FTP Mirror
+(http://www.gnu.org/prep/ftp.html). The release version is intended to
+be stable, and is probably your best choice if the release took place
+recently. If you need features or fixes which were introduced after
+the release, consider a CVS checkout (*note Repository::) or the daily
+snapshot (*note Snapshot::).
+
+ To download, select a mirror near you, then choose the `gnash'
+directory.
+
+
+File: gnash.info, Node: Repository, Next: Snapshot, Prev: Releases, Up:
Getting the Source
+
+3.2.2.2 Repository
+..................
+
+The latest development sources are available via anonymous CVS. This
+is recommended if you need features or bug fixes which were introduced
+after the last release (*note Releases::). Look at the daily snapshot
+(*note Snapshot::) if you experience difficulty accessing the
+repository.
+
+ To download via anonymous CVS, first set the environment variable
+`CVS_RSH' to `ssh', then check out the source code. The example below
+uses the GNU Bourne-Again shell (bash):
+
+
+ export CVS_RSH="ssh"
+ cvs -z3 -d:pserver:address@hidden:/sources/gnash co gnash
+
+ It is also possible to browse the repository
+`http://cvs.savannah.gnu.org/viewcvs/gnash/?root=gnash' on the web.
+
+
+File: gnash.info, Node: Snapshot, Prev: Repository, Up: Getting the Source
+
+3.2.2.3 Snapshot
+................
+
+The daily development snapshot can be downloaded from
+http://www.gnashdev.org/dev_snapshots/
+(http://www.gnashdev.org/dev_snapshots/). This is the best option if
+you need changes which were introduced after the last release (*note
+Releases::) of Gnash, but are unable to download directly from the
+repository. (*note Repository::)
+
+
+File: gnash.info, Node: Pre-Compile Configuration, Next: Building from
Source, Prev: Downloading Gnash, Up: Installing and Configuring Gnash
+
+3.3 Pre-Compile Configuration
+=============================
+
+Gnash, like most GNU projects, allows a user to select various options
+before compiling its source code. These options include selecting from
+the available features, specifying custom paths for installation, and
+cross compiling. Gnash uses GNU Autoconf
+(http://www.gnu.org/software/autoconf/) for configuration.
+
+ If you opted to download the development checkout (*note
+Repository::) of Gnash, the _configure_ script will not be included.
+It can be created by running _autogen.sh_ from the source root
+directory:
+
+
+ ./autogen.sh
+
+Note that there are some dependencies (*note Code Dependencies::) for
+autogen.
+
+ All the standard `configure' options are available. In addition,
+Gnash has two types of options: those that enable or disable features
+(*note Features::), and those that specify custom paths for development
+packages (*note Specifying Custom Paths::) which are not found during
+the default search. A complete list of _all_ configuration options,
+including standard ones, can be seen by typing:
+
+
+ ./configure --help |less
+
+Read further for a more detailed explanation of Gnash-specific options.
+
+ The syntax for running _configure_ is as follows:
+
+
+ configure <options>
+
+The example below shows the `configure' options which create the
+smallest working standalone version of Gnash. In this example,
+`configure' is being run from the source root directory:
+
+
+ ./configure --disable-debugger --disable-cygnal --disable-docbook \
+ --disable-plugin --enable-media=mad --enable-gui=sdl
+
+* Menu:
+
+* Features::
+* Specifying Custom Paths::
+* Cross Compiling::
+
+
+File: gnash.info, Node: Features, Next: Specifying Custom Paths, Up:
Pre-Compile Configuration
+
+3.3.1 Features
+--------------
+
+Some switches can be used during configuration to enable or disable
+features of Gnash. Some of the most important configuration options are:
+
+ * `--enable-gui' lets you specify your GUI of choice. The default
+ option is GTK.
+
+ * `--enable-renderer' allows a renderer to be chosen. The default
+ renderer is OpenGL.
+
+ * `--enable-media' permits a media handler to be selected. The
+ default is FFMPEG with SDL sound.
+
+ A complete list of available features follows.
+
+*Configuration Options - Features*
+
+Option Function
+`--enable-debugger' Enable support for the Flash
+ debugger. The debugger is mainly of
+ interest to Flash developers.
+`--enable-dmalloc' Enable support for the DMalloc
+ memory debugging tool.
+`--enable-docbook' Enable the generation of HTML and
+ PDF versions of the documentation
+ from the XML. You will then be able
+ to use `make html' and `make pdf'.
+`--enable-embedded' Link to Qt-embedded, do not use X.
+ This is only used by Klash
+`--disable-fork' Disable the plugin from forking the
+ standalone player, and using a
+ thread for the player instead.
+ Currently forking the standalone
+ player gives you the best results.
+`--enable-ghelp' Enable support for the GNOME help
+ system.
+`--disable-glext' Disable using GtkGlExt, which
+ forces the use of SDL instead. By
+ default if the GtkGL extension for
+ Gtk is found by the configure
+ script, the GTK-enabled GUI is
+ built.
+`--enable-gui=gtk|sdl|kde|fltk|fb' Select the Graphic User Interface
+ to use (choose one).?
+ [undisplayable block object]
+`--enable-i810-lod-bias' Enable fix for Intel 810 LOD bias
+ problem. Older versions of libMesa
+ on the Intel i810 or i815 graphics
+ processor need this flag or Gnash
+ will core dump. This has been fixed
+ in newer versions (summer 2005) of
+ libMesa.
+`--enable-libsuffix' `/lib' directory suffix
+ (64,32,none=default). This is only
+ used by Klash.
+`--enable-mac' Link to Qt/Mac (don't use X). This
+ is only used by Klash.
+`--enable-media=ffmpeg|mad|gst' Select the specified media decoder
+ and sound engine. FFMPEG and MAD
+ use the SDL sound engine; GST uses
+ its own. MAD only decodes MP3
+ sounds and uses integer arithmetic
+ while the others also decode video
+ files and use floating point.
+ `FFMPEG' is the default decoder. ?
+ [undisplayable block object] You
+ should only select one media
+ decoder.
+`--disable-nsapi'`--enable-nsapi' Force disable/enable building the
+ NPAPI plugin. By default the
+ Mozilla plugin is built if the GTK
+ gui is selected. Specify the
+ `--with-npapi-plugindir=' option to
+ specify where the plugin should be
+ installed.
+`--disable-kparts'`--enable-kparts' Force disable/enable building the
+ KPARTS plugin. By default the KDE
+ plugin is built if the kde gui is
+ selected. Specify the
+ `--with-kde-plugindir=' and
+ `--with-kde-servicesdir=' options
+ (or more generally the
+ `--with-kde-pluginprefix=' one) to
+ specify where the plugin should be
+ installed. The default installation
+ dir is extracted from kde-config.
+`--disable-plugins' Disable build of both kparts and
+ npapi plugins
+`--enable-qtopia' Link to Qt-embedded, link to the
+ Qtopia Environment. This is only
+ used by Klash.
+`--enable-renderer=opengl|cairo|agg' Enable support for the a graphics
+ backend. Currently only `opengl' and
+ `agg' work sufficiently. OpenGL is
+ used when you have hardware
+ accelerated graphics. AGG i used
+ when you do not have hardware
+ accelerated graphics. Typically
+ most desktop machines have OpenGL
+ support, and most embedded systems
+ do not. OpenGl is the default when
+ building Gnash, although the
+ quality of AGG's rendering is
+ currently superior to OpenGL.
+`--enable-sdk-install' Enable installing the libraries and
+ headers as an SDK.
+`--disable-shared' Enable installing the shared
+ libraries and headers. Note that
+ the extensions mechanism may not
+ work if shared libraries are
+ disabled.
+`--enable-strict' Turn verbose GCC compiler warnings.
+ By default only `-Wall' is used
+ with GCC.
+`--enable-fps-debug' Enable FPS debugging code. When
+ this feature is compiled in you can
+ use the -f switch of Gnash to have
+ FPS printed at regular intervals.
+`--enable-write' Makes the Mozilla plugin write the
+ currently playing SWF movie to
+ `/tmp'.
+`--disable-mit-shm' Disable support for the MIT-SHM X
+ extensions. Currently support is
+ only available using GTK gui and
+ AGG renderer. Keeping it enabled
+ is not a problem as it will not be
+ used if not available in the
+ current X session.
+
+
+File: gnash.info, Node: Specifying Custom Paths, Next: Cross Compiling,
Prev: Features, Up: Pre-Compile Configuration
+
+3.3.2 Specifying Custom Paths
+-----------------------------
+
+By default, none of these options should be required unless you want
+Gnash to use a specific version of a development package, or if the
+configure test fails to find a component. Please report the problem
+(*note Reporting Bugs::) if a configure test fails.
+
+ The following custom path options are available:
+
+*Custom Path Options*
+
+Option Function
+`--x-includes=DIR' X include files are in DIR.
+`--x-libraries=DIR' X library files are in DIR.
+`--with-libxml=PFX' Prefix to where libxml is
+ installed.
+`--with-libxml-libraries=DIR' Directory where libxml library is
+ installed.
+`--with-libxml-includes=DIR' Directory where libxml header
+ files are installed.
+`--with-docbook=DIR' Directory where the DocBook
+ style-sheets are installed.
+`--with-sdl-prefix=PFX' Prefix where SDL is installed.
+`--with-zlib-incl' Directory where zlib header is
+ installed.
+`--with-zlib-lib' Directory where zlib library is
+ installed.
+`--with-jpeg-incl' Directory where jpeg header is
+ installed.
+`--with-jpeg-lib' Directory where jpeg library is
+ installed.
+`--with-png-incl' Directory where png header is
+ installed.
+`--with-png-lib' Directory where png library is
+ installed.
+`--with-qt-dir' Directory where QT is installed.
+ This is only used by the Klash
+ plugin.
+`--with-qt-includes' Directory where the QT header
+ files are installed. This is only
+ used by the Klash plugin.
+`--with-qt-libraries' Directory where the QT libraries
+ are installed. This is only used by
+ the Klash plugin.
+`--with-npapi-plugindir' This is the directory to install
+ the NPAPI (Mozilla) plugin in. By
+ default it goes to
+ ~/.mozilla/plugins.
+`--with-kde-pluginprefix' This option sets the default
+ install dir for all KPARTS (kde)
+ files. The plugin will be
+ installed in PREFIX/lib/kde3, use
+ `-with-kde-plugindir' to override.
+ The service file in
+ PREFIX/share/services, use
+ `--with-kde-servicesdir' to
+ override. The config file in
+ PREFIX/share/config, use
+ `--with-kde-configdir' to override.
+ The appdata file in
+ PREFIX/share/apps/klash, use
+ `--with-kde-appsdatadir' to
+ override.
+`--with-kde-plugindir' This is the directory to install
+ the KPARTS (kde) plugin in. By
+ default it is what's set by
+ -with-kde-pluginprefix or what's
+ returned by kde-config -install
+ module -expandvars, or
+ $(prefix)/share/services if
+ kde-config is not found.
+`--with-kde-servicesdir' This is the directory to install
+ the KPARTS (kde) service in. By
+ default it is what's set by
+ -with-kde-pluginprefix or what's
+ returned by kde-config -install
+ services -expandvars, or
+ $(libdir)/kde3 if kde-config is not
+ found.
+`--with-kde-configdir' This is the directory to install
+ the KPARTS (kde) config files in.
+ By default it is what's set by
+ -with-kde-pluginprefix or what's
+ returned by kde-config -install
+ config -expandvars, or
+ $(prefix)/share/config if
+ kde-config is not found.
+`--with-kde-appsdatadir' This is the directory to install
+ the KPARTS (kde) application data
+ files in. By default it is what's
+ set by -with-kde-pluginprefix or
+ what's returned by kde-config
+ -install data -expandvars, or
+ $(prefix)/share/apps if kde-config
+ is not found.
+`--with-ming' Ming is used to build test cases,
+ but not by the Gnash player itself.
+`--with-mad_incl' Directory where libmad header is
+ installed.
+`--with-mad_lib' Directory where libmad library is
+ installed.
+`--with-ogg_incl' Directory where the libogg headers
+ are installed.
+`--with-ogg_lib' Directory where the libogg library
+ is installed.
+`--with-gstreamer-incl' Directory where the Gstreamer
+ headers are installed. Gstreamer
+ version 0.10 or greater must be
+ used.
+`--with-gstreamer-lib' Directory where the Gstreamer
+ library is installed. Gstreamer
+ version 0.10 or greater must be
+ used.
+`--with-opengl-includes' Directory where OpenGL (libMesa)
+ headers are installed.
+`--with-opengl-lib' Directory where the OpenGL
+ (libMesa) library is installed.
+`--with-glext-incl' Directory where GtkGlExt headers
+ are installed.
+`--with-glext-lib' Directory where the GtkGlExt
+ library is installed.
+`--with-gtk2-incl' Directory where the Gtk2 headers
+ are installed.
+`--with-gtk2-lib' Directory where the Gtk2 library
+ is installed.
+`--with-cairo_incl' Directory where the Cairo headers
+ are installed.
+`--with-cairo-lib' Directory where the Cairo library
+ is installed.
+`--with-glib-incl' Directory where the Glib headers
+ are installed.
+`--with-glib-lib' Directory where the Glib library
+ is installed.
+`--with-pango-incl' Directory where the Pango headers
+ are installed.
+`--with-pango-lib' Directory where the Pango library
+ is installed.
+`--with-atk-incl' Directory where the ATK headers
+ are installed.
+`--with-atk-lib' Directory where the ATK library is
+ installed.
+`--with-pthread-incl' Directory where the Pthread
+ headers are installed.
+`--with-pthread-lib' Directory where the Pthread
+ library is installed.
+`--with-agg-incl' Directory where the AGG
+ (Antigrain) headers are installed.
+`--with-agg-lib' Directory where the AGG
+ (Antigrain) library is installed.
+`--with-ffmpeg-incl' Directory where the FFMPEG headers
+ are installed.
+`--with-ffmpeg-lib' Directory where the FFMPEG library
+ is installed.
+`--with-boost-incl' Directory where the Boost headers
+ are installed.
+`--with-boost-lib' Directory where the Boost library
+ is installed.
+`--with-curl-incl' Directory where the libCurl
+ headers are installed.
+`--with-curl-lib' Directory where the libCurl
+ library is installed.
+
+
+File: gnash.info, Node: Cross Compiling, Prev: Specifying Custom Paths, Up:
Pre-Compile Configuration
+
+3.3.3 Cross Compiling
+---------------------
+
+To cross configure and compile Gnash, begin by building a target system
+on your workstation. This includes cross compilers for the target
+architecture, and some system headers. You will also need the
+following packages to be built for the target system: _libxml2_,
+_libpng_ (if used), _libjpeg_ (if used), your GUI library, your
+renderer, and your video handler (if used). The page
+http://frank.harvard.edu/~coldwell/toolchain/
+(http://frank.harvard.edu/~coldwell/toolchain/) has instructions on
+building a target system from scratch and offers a shell script to make
+the process easier.
+
+ Note that you may have some difficulties getting libMesa (opengl) to
+cross compile.
+
+ The important configuration options are the ones which specify the
+architecture for the build:
+
+-target
+ The target architecture, where the final executables are expected
+ to run.
+
+-host
+ The host architecture, where the executables are expected to run.
+ Usually this is the same as the _-target_, except when building a
+ compiler as a Canadian Cross. In this case, you might build a
+ cross compiler on a UNIX system which runs on a win32 machine,
+ producing code for a third architecture, such as ARM. In this
+ example, _-target_ would be 'arm-unknown-linux-gnu', while _-host_
+ would be 'win32'.
+
+-build
+ This is the system the build is running on.
+
+ The following example of _configure_ builds for an ARM system on an
+x86 system. It was run after an ARM system was built in `/usr/arm' and
+other required libraries were cross compiled.
+
+
+ ./configure -target=arm-unknown-linux-gnu --prefix=/usr/arm \
+ --host=arm-unknown-linux-gnu --build=i686-pc-linux-gnu --disable-plugin
+
+
+File: gnash.info, Node: Building from Source, Next: Installation, Prev:
Pre-Compile Configuration, Up: Installing and Configuring Gnash
+
+3.4 Building from Source
+========================
+
+Once you have configured (*note Pre-Compile Configuration::) Gnash, you
+are ready to build the code. Gnash is built using _GNU make_.
+
+* Menu:
+
+* Compiling the Code::
+* Creating the Documentation::
+* Running the Tests::
+
+
+File: gnash.info, Node: Compiling the Code, Next: Creating the
Documentation, Up: Building from Source
+
+3.4.1 Compiling the Code
+------------------------
+
+The most basic way to compile code is simply:
+
+
+ make
+
+If the compilation ends with an error, check the output of _configure_
+and ensure that you are not missing any required prerequisites. The
+output of `make' can be verbose; you may wish to pipe the output to a
+file.
+
+ The variables used by _make_ can be redefined when the program is
+invoked, if you desire it. The most interesting flags are _CFLAGS_
+and _CXXFLAGS_, which are often used to enable debugging or turn of
+optimization. The default value for both of these variables is _-O2
+-g_. A list of influential environment variables can be seen in the
+configuration help:
+
+ ./configure --help
+
+ In the following example, debugging is enabled and optimization is
+disabled:
+
+ make CFLAGS=-g CXXFLAGS=-g
+
+
+File: gnash.info, Node: Creating the Documentation, Next: Running the Tests,
Prev: Compiling the Code, Up: Building from Source
+
+3.4.2 Creating the Documentation
+--------------------------------
+
+By default, documentation is not built when you install (*note
+Installation::) Gnash. This is because there are a number of
+dependencies for the documentation (*note Documentation
+Dependencies::). Documentation is built when it is specified with a
+specific target in the generated `Makefile' in the `doc/C'
+sub-directory. If you type `make install' in this directory, all
+documents will be built.
+
+ You must specify a target output format when you wish to create
+documentation. The available output formats are: `html', `pdf', `info',
+`man', and `alldocs'. It is also possible to output `GNOME help' if
+the configure option (*note Features::) `--enable-ghelp' was used. The
+`alldocs' target will build all output formats except _GNOME help_.
+For example, to create HTML output, type:
+
+
+ make html
+
+ Gnash also uses Doxygen
+(http://www.stack.nl/~dimitri/doxygen/index.html) to produce _HTML_
+documentation of Gnash internals. You must have Doxygen installed to
+produce this documentation, which is built from the `doc' directory
+with the command (documents will be placed in the subdirectory
+`apidoc/html'):
+
+
+ make apidoc
+
+
+File: gnash.info, Node: Running the Tests, Prev: Creating the Documentation,
Up: Building from Source
+
+3.4.3 Running the Tests
+-----------------------
+
+Before beginning the potentially lengthy install, it is wise to test
+the installation. If a test fails, please report it by following the
+instructions for reporting a bug (*note Reporting Bugs::).
+
+* Menu:
+
+* Using DejaGnu::
+* Running The Tests Manually::
+
+
+File: gnash.info, Node: Using DejaGnu, Next: Running The Tests Manually,
Up: Running the Tests
+
+3.4.3.1 Using DejaGnu
+.....................
+
+The easiest way to run Gnash's test suite is to install _DejaGnu
+(http://www.gnu.org/software/dejagnu)_. After installing DejaGnu, run:
+
+
+ make check
+
+* Menu:
+
+* Increasing Verbosity::
+* Running Some Tests::
+
+
+File: gnash.info, Node: Increasing Verbosity, Next: Running Some Tests, Up:
Using DejaGnu
+
+Increasing Verbosity
+....................
+
+If you encounter a problem with a test, increasing the verbosity may
+make the issue easier to spot. Additional details are visible when
+_RUNTESTFLAGS_ are used to add the _verbose_ and _all_ options. The
+`verbose' option prints more information about the testing process,
+while the `all' option includes details on passing tests.
+
+
+ make check RUNTESTFLAGS="-v -a"
+
+
+File: gnash.info, Node: Running Some Tests, Prev: Increasing Verbosity, Up:
Using DejaGnu
+
+Running Some Tests
+..................
+
+It is possible to run just a single test, or a subdirectory of tests,
+by specifying the directory or compiled test file.
+
+ Some tests rely on _testsuite/Dejagnu.swf_, which in turn relies on
+_Ming_. This file is created when you run `make check' for the entire
+testsuite, and can also be created on demand:
+
+
+ make -C testsuite Dejagnu.swf
+
+ In this example, the `clip_as_button2' test is compiled and run:
+
+
+ make -C testsuite/samples clip_as_button2-TestRunner
+ cd testsuite/samples && ./clip_as_button2-TestRunner
+
+This creates and runs all the tests in the directory `movies.all':
+
+
+ make -C testsuite/movies.all check
+
+
+File: gnash.info, Node: Running The Tests Manually, Prev: Using DejaGnu,
Up: Running the Tests
+
+3.4.3.2 Running The Tests Manually
+..................................
+
+You may also run test cases by hand, which can be useful if you want to
+see all the debugging output from the test case. Often the messages
+which come from deep within Gnash are most useful for development.
+
+ The first step is to compile the test case, which can be done with
+`make XML-v#.swf' where the '#' is replaced with the _target_ SWF
+version or versions. For example:
+
+
+ make XML-v{5,6,7,8}.swf
+
+* Menu:
+
+* Movie tests::
+* ActionScript Unit Tests::
+
+
+File: gnash.info, Node: Movie tests, Next: ActionScript Unit Tests, Up:
Running The Tests Manually
+
+Movie tests
+...........
+
+This creates a Flash movie version of the test case, which can be run
+with a standalone Flash player. For instance, the target for SWF
+version 6 could be run with Gnash:
+
+
+ gnash -v XML-v6.swf
+
+
+File: gnash.info, Node: ActionScript Unit Tests, Prev: Movie tests, Up:
Running The Tests Manually
+
+ActionScript Unit Tests
+.......................
+
+Unit tests for ActionScript classes in `testsuite/actionscript.all' are
+run without a graphical display:
+
+
+ gprocessor -v XML-v6.swf
+
+
+File: gnash.info, Node: Installation, Prev: Building from Source, Up:
Installing and Configuring Gnash
+
+3.5 Installation
+================
+
+Now that Gnash has been compiled and tested, use the following command
+to install it:
+
+
+ make install
+
+The above command installs the standalone player. If the correct files
+were found by `configure' and if the `--disable-plugin' option was not
+specified, the Gnash browser plugin is also installed.
+
+ Gnash installs a number of libraries (*note Libraries::), namely:
+_libbase_, _libgeometry_, _libbackend_, _libserver_, and _libmozsdk_.
+Executables (*note Executables::) consist of the (optional) plugin,
+`gprocessor', `cygnal', and `gnash'. Documentation (*note
+Documentation::) may also be installed. The installation location is
+controlled with the _-prefix_ configure option (*note Specifying Custom
+Paths::), except for plugins, which are explicitly set with
+_-plugin-dir_.
+
+ Note that if you are using a single file-system _NFS_ mounted to
+multiple platforms, the configuration option (*note Specifying Custom
+Paths::) _-exec-prefix_ may be used to specify where platform-dependent
+executables and libraries are installed.
+
+* Menu:
+
+* Libraries::
+* Executables::
+* Documentation::
+
+
+File: gnash.info, Node: Libraries, Next: Executables, Up: Installation
+
+3.5.1 Libraries
+---------------
+
+Installed libraries are located in `/usr/local/lib' by default. If the
+_-prefix_ option was used in configuration (*note Pre-Compile
+Configuration::), the libraries will be installed in the directory
+`lib' inside the path you specified. If the libraries are stored in a
+non-standard location, you must identify the path in one of two ways.
+
+ The traditional way to do this on UNIX platforms is to set the
+_LD_LIBRARY_PATH_ variable to the path plus `/lib'. For example, if you
+installed in `/home/gnash', the _LD_LIBRARY_PATH_ path would be
+`/home/gnash/lib'. Multiple paths are delimited with a colon (':').
+
+ GNU/Linux allows the custom path to be added to `/etc/ld.so.conf'.
+After adding the path, run _ldconfig_ as root to update the runtime
+cache.
+
+
+File: gnash.info, Node: Executables, Next: Documentation, Prev: Libraries,
Up: Installation
+
+3.5.2 Executables
+-----------------
+
+The Mozilla plugin is built from headers (the Mozilla SDK) provided
+with Gnash and does not need extra development packages to be
+installed. By default, the plugin is installed to
+`~/.mozilla/plugins/'. To enable the plugin for other users, copy the
+file `libgnashplugin.so' to `.mozilla/plugins/' in their home directory.
+You may also specify the plugin installation directory by using the
+`--with-plugindir' option at configuration time (*note Specifying
+Custom Paths::).
+
+ These defaults are likely to change in future versions of Gnash.
+
+ The remaining executables are installed in the `bin' subdirectory of
+the directory specified by during configuration. If no path was
+specified, the default is `/usr/local/bin'.
+
+
+File: gnash.info, Node: Documentation, Prev: Executables, Up: Installation
+
+3.5.3 Documentation
+-------------------
+
+Documentation is not built by default; please refer to the section on
+documentation (*note Creating the Documentation::) for more information
+on building documentation.
+
+ `man' and `info' are installed in `/usr/local/share/man' and
+`/usr/local/share/info' respectively, unless the `--mandif' or
+`--infodir' configuration options (*note Specifying Custom Paths::) are
+used.
+
+ _GNOME help_ documentation uses the directory
+`/usr/local/share/gnash/doc/gnash/C/' by default. A configuration file
+in the Gnash source tree, `doc/C/gnash.omf' is used to specify under
+which menu item Gnash appears in the _GNOME help_ system.
+
+
+File: gnash.info, Node: Using Gnash, Next: Reporting Bugs, Prev: Installing
and Configuring Gnash, Up: Top
+
+4 Using Gnash
+*************
+
+When used as a standalone player, you can play any Flash file from the
+command line by entering a command of the format:
+
+
+ gnash <option> <flashfile.swf>
+
+The only required argument is the name (and location)of the file to be
+played.
+
+ The available options are listed in the following section, or you
+may view them in the terminal window by executing the following at the
+command line:
+
+
+ gnash --help |less
+
+ The source code download of Gnash includes several example .SWF
+files. They are located in the `testsuite/samples/' directory of the
+Gnash source directory. If you have installed Gnash correctly, issuing
+the a command similar to the following plays a short animation of a car
+swerving and crashing:
+
+
+ gnash /home/<username>/gnash/testsuite/car_smash.swf
+
+ The above is useful for playing Flash files downloaded to your local
+system. It is also possible to play Flash files directly from the web.
+To do so, use the `-u' option along with the URL of the desired file.
+
+
+ gnash -u http://example.domain.com/flashfile.swf
+
+Note that this will not work with every website; some embedded Flash
+files are difficult to play.
+
+* Menu:
+
+* Gnash Command Line Options::
+* Gnash Interactive Control Keys::
+* User Configuration File::
+
+
+File: gnash.info, Node: Gnash Command Line Options, Next: Gnash Interactive
Control Keys, Up: Using Gnash
+
+4.1 Gnash Command Line Options
+==============================
+
+No options are required for Gnash's default behavior. However, there
+are many options that can be used to that behavior.
+
+
+ gnash <options> filename.swf
+
+*Gnash Command Line Options*
+
+Option Function
+`-h' Print usage information.
+`-s factor' Scale the movie up/down by the
+ specified factor.
+`-c' Produce a core file instead of
+ letting SDL trap it. By default,
+ SDL traps all signals, but
+ sometimes a core file is desired to
+ assist with debugging.
+`-d num' Number of milliseconds to delay in
+ main loop. The main loop polls
+ continuously with a delay to adjust
+ how long _Gnash_ sleeps between
+ iterations of the loop. The smaller
+ the number, the higher the CPU load
+ gets, and of course, the more
+ iterations of the main command loop.
+`-p' Run full speed (no sleep) and log
+ frame rate.
+`-a' Enable Actionscript debugging.
+`-v' Be verbose; i.e. print debug
+ messages to stdout.
+`-va' Be verbose about movie Actions.
+`-vp' Be verbose about parsing the
+ movie. Warning: this can generate a
+ lot of text, and can affect the
+ performance of the movie you are
+ playing.
+`-ml bias' Specify the texture LOD bias
+ (float, default is -1) This affects
+ the fuzziness of small objects,
+ especially small text.
+`-w' Write a debug log called
+ gnash-dbg.log. This will record of
+ all the debug messages whether they
+ are printed to the screen or not.
+`-j' Specify the width of the window.
+ This is mostly used only by the
+ plugin.
+`-k' Specify the height of the window.
+ This is mostly used only by the
+ plugin.
+`-1' Play once; exit when/if movie
+ reaches the last frame. This is the
+ default.
+`-r [0|1|2|3]' ? [undisplayable block object]
+`-t sec' Timeout and exit after the
+ specified number of seconds. This
+ is useful for movies which repeat
+ themselves.
+`-g' Start Gnash with a Flash debugger
+ console so one can set break points
+ or watchpoints.
+`-x id' This specifies the X11 window ID
+ to display in; this is mainly used
+ by plugins.
+`-b bits' Bit depth of output window (for
+ example, 16 or 32). Appropriate bit
+ depths depend on the renderer and
+ GUI library used.
+`-u url' Set the _url member of the root
+ movie. This is useful when you
+ download a movie and play it from a
+ different location. See also the -U
+ switch.
+`-U baseurl' Set base URL for this run. URLs
+ are resolved relative to this base.
+ If omitted defaults to the _url
+ member of the top-level movie (see
+ the -u switch).
+`-P entrymeter' Parameters are given in
+ ParamName=Value syntax and are
+ mostly useful to the plugin to
+ honour EMBED tags attributes or
+ explicit OBJECT PARAM tags. A
+ common use for -P is to provide
+ FlashVars (ie: -P
+ "FlashVars=home=http://www.gnu.org").
+`-F filedescriptor' Use the given filedescriptor to
+ send requests to the host
+ application. This is currently only
+ used for GETURL requests. The
+ protocol is not documented yet, and
+ also needs improvement. Primary
+ use for this switch is for the
+ NPAPI plugin to properly support
+ javascript and target windows in
+ geturl requests.
+
+
+File: gnash.info, Node: Gnash Interactive Control Keys, Next: User
Configuration File, Prev: Gnash Command Line Options, Up: Using Gnash
+
+4.2 Gnash Interactive Control Keys
+==================================
+
+While a movie is playing, there are several control keys. These can be
+used to step through frames, pause the playing, and control other
+actions.
+
+*Gnash Interactive Control Keys*
+
+Key Combination Function
+`CTRL-Q' Quit/Exit.
+`CTRL-W' Quit/Exit.
+`ESC' Quit/Exit.
+`CTRL-P' Toggle Pause.
+`CTRL-R ' Restart the movie.
+`CTRL-[ or kp-' Step back one frame.
+`CTRL-] or kp+' Step forward one frame.
+
+
+
+Local Variables:
+coding: US-ASCII
+End:
Index: packaging/doc/gprocessor.1.in
===================================================================
RCS file: packaging/doc/gprocessor.1.in
diff -N packaging/doc/gprocessor.1.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/gprocessor.1.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,47 @@
+.\" -*- coding: us-ascii -*-
+.if \n(.g .ds T< \\FC
+.if \n(.g .ds T> \\F[\n[.fam]]
+.de URL
+\\$2 \(la\\$1\(ra\\$3
+..
+.if \n(.g .mso www.tmac
+.TH gprocessor 1 "13 February 2008"
+.SH NAME
+gprocessor \- Gnash SWF Processor
+.SH Synopsis
+.nf
+
+gprocessor (options)... (file)...
+.fi
+.SH DESCRIPTION
+Gprocessor is an debugging tool for SWF files, that is a companion to
+Gnash. This is most often used for debugging and running testcases,
+as this tool is equivalant to running Gnash with no graphic
+output. This tool is primarily used by Gnash developers, or anyone
+that wishes to run the Gnash test cases.
+.TP
+-h
+Print usage info.
+.TP
+-w
+Write a .gsc file with preprocessed info, for each input file.
+.TP
+-vp
+Be verbose about movie parsing.
+.TP
+-va
+Be verbose about ActionScript.
+.TP
+-d [ms]
+Milliseconds delay between advances (0 by default). If '-1'
+the delay will be computed from the FPS.
+.TP
+-f [frames]
+Allow the given number of frame advancements. Keep advancing
+untill any other stop condition is encountered if set to 0
+(default).
+.TP
+-r [times]
+Allow the given number of complete runs. Keep looping
+undefinitely if set to 0. Default is 1 (end as soon as the
+last frame is reached).
Index: packaging/doc/soldumper.1.in
===================================================================
RCS file: packaging/doc/soldumper.1.in
diff -N packaging/doc/soldumper.1.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ packaging/doc/soldumper.1.in 16 Feb 2008 17:51:06 -0000 1.1
@@ -0,0 +1,31 @@
+.\" -*- coding: us-ascii -*-
+.if \n(.g .ds T< \\FC
+.if \n(.g .ds T> \\F[\n[.fam]]
+.de URL
+\\$2 \(la\\$1\(ra\\$3
+..
+.if \n(.g .mso www.tmac
+.TH soldumper 1 "13 February 2008"
+.SH NAME
+soldumper \- Gnash Local Shared Object file Dumper
+.SH Synopsis
+.nf
+
+soldumper (options)... (file)...
+.fi
+.SH DESCRIPTION
+Dump information about the .sol files used by the SharedObject
+ActionScript class. These files are comprised of a header, and a
+collection of SWF AMF Objects, normally not viewable by the user.
+.TP
+-h
+Print usage info.
+.TP
+-l
+List all the .sol files in the default path.
+.TP
+-f
+Ignore the global setting, use the current directory for files.
+.TP
+-v
+Verbose output.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog doc/C/Makefile.am packaging/doc...,
Rob Savoye <=