    <sect3 id="exists">
      <title>Level of Conformance</title>

      <para>
	Gnash is a capable of reading up to SWF v9 files and opcodes,
	but primarily supports SWF v7, with better SWF v8 and v9
	support under heavy developement. Since the 0.8.2 release,
	Gnash includes initial parser support for SWF v8 and v9.
	Not all ActionScript 2 classes are implemented yet, but all of the
	most heavily used ones are. Many ActionScript 2 classes are
	partially implemented; there is support for all of the
	commonly used methods of each class.
      </para>

      <para>
	As ActionsScript 3 is a more developed version of
	ActionScript 2, many of the same classes work for
	both. Support has been added to Gnash's ActionScript library
	to support the new ActionScript 3 filters, which get applied
	to every class. Implementing ActionScript classes is often the
	easiest way for new Gnash developers to make a contribution
	without a deep internal knowledge of Gnash.
      </para>

      <para>
	Gnash has included video support since early 2007, but this is
	an ever changing field of reverse engineering. Many of the
	popular video sharing sites use SWF v8 or v9, which Gnash
	supports imperfectly. This is improving all the
	time, so often builds from a development snapshot will work
	when using the older release packaged in your distribution
	doesn't. You can find daily snapshots of the latest CVS tree
	at: <ulink type="http" url="http://www.gnashdev.org/dev_snapshots/">
	http://www.gnashdev.org/dev_snapshots</ulink>.
      </para>

      <para>
	Gnash uses FFmpeg for codecs, so any file supported by Mplayer
	should work with Gnash. Gnash supports the loading of patent
	free codecs like Ogg Vorbis or Theora from disk based files,
	while work is being done to support these codecs when embedded
	in a SWF file. FFmpeg contains the codecs used by the current
	SWF definition, FLV, VP6 (ON2), H.263, H.264, and MP3.
      </para>

      <para>
      </para>

      <para>
	This is a quick list of what is currently implemented in Gnash
	as of May, 2008.

	<informaltable frame="all">
	  <?dbhtml table-width="75%" ?>
	  <tgroup cols="3">
	    <colspec colname="COLSPEC1" colwidth="2*"/>
	    <colspec colname="COLSPEC2" colwidth="2*"/>
	    <colspec colname="COLSPEC3" colwidth="*"/>
	    <thead>
	      <row>
		<entry valign="top">
		  <para>Class Name</para>
		</entry>
		<entry valign="top">
		  <para>When Added</para>
		</entry>
		<entry valign="top">
		  <para>Conformance</para>
		</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry valign="top" align="left">
		  <para><link linkend="asarray">_global</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		  </para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
		  <para><link linkend="asarray">Accessibility</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7 ???
		  </para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
		  <para><link linkend="asarray">Array</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    Fully Implemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
		  <para><link linkend="asboolean">Boolean</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asbutton">Button</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Most of the functionality is implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="ascamera">Camera</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="ascolor">Color</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially Implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="ascontextmenu">ContextMenu</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="ascustomactions">CustomActions</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asdate">Date</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="aserror">Error</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>


	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asfunction">Function</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented..
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="askey">Implements</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>
	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="askey">Key</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asloadvars">LoadVars</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="aslocalconnection">LocalConnection</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asmath">Math</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v4
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asmicrophone">Microphone</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asmouse">Mouse</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Most of the functionality is implemented. 
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asmovieclip">MovieClip</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v3
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asmoviecliploader">MovieClipLoader</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Barely implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asnetconnection">NetConnection</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asnetstream">NetStream</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v7
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asnumber">Number</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asobject">Object</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asselection">Selection</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Unimplemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="assharedobject">SharedObject</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="assound">Sound</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asstage">Stage</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
		  <para><link linkend="asstring">String</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="assystem">System</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="astextfield">TextField</link></para>
		</entry>
		<entry valign="top" align="center">
	 	  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="astextformat">TextFormat</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asvideo">Video</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v6
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Partially implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asxml">XML</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asxml">XMLNode</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	      <row>
		<entry valign="top" align="left">
 		  <para><link linkend="asxmlsocket">XMLSocket</link></para>
		</entry>
		<entry valign="top" align="center">
		  <para>
		    swf v5
		  </para>
		</entry>
		<entry valign="top"  align="center">
		  <para>
		    Fully implemented.
		  </para>
		</entry>
	      </row>

	    </tbody>
	  </tgroup>
	</informaltable>
      </para>

    </sect3>
