gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ./ChangeLog backend/gnash.cpp server/Func...


From: strk
Subject: [Gnash-commit] gnash ./ChangeLog backend/gnash.cpp server/Func...
Date: Sun, 26 Feb 2006 21:44:54 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         
Changes by:     strk <address@hidden>   06/02/26 21:44:53

Modified files:
        .              : ChangeLog 
        backend        : gnash.cpp 
        server         : Function.cpp Movie.cpp Movie.h 
                         MovieClipLoader.cpp Sprite.cpp Sprite.h 
                         action.cpp action.h button.cpp button.h 
                         font.cpp font.h fontlib.cpp fontlib.h gnash.h 
                         impl.cpp impl.h morph.cpp morph.h morph2.cpp 
                         morph2.h shape.cpp shape.h sound.cpp styles.cpp 
                         styles.h text.cpp text.h 
        testsuite/actionscript.all: Makefile.am 
        utilities      : processor.cpp 

Log message:
        * server/action.cpp: fixed bug in doActionCallFunction making
        samples/slider.swf play fine.
        * server/: merged movie_definition_sub into
        movie_definition.
        * testsuite/actionscript.all/Makefile.am: provided
        OUTPUT_VERSION define for *.swf and *.vswf rules

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.160&tr2=1.161&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/backend/gnash.cpp.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Function.cpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Movie.cpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Movie.h.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/MovieClipLoader.cpp.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Sprite.cpp.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/Sprite.h.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.51&tr2=1.52&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.h.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/button.cpp.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/button.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/font.cpp.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/font.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/fontlib.cpp.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/fontlib.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/gnash.h.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/impl.cpp.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/impl.h.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/morph.cpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/morph.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/morph2.cpp.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/morph2.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/shape.cpp.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/shape.h.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/sound.cpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/styles.cpp.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/styles.h.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/text.cpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/text.h.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/testsuite/actionscript.all/Makefile.am.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/utilities/processor.cpp.diff?tr1=1.4&tr2=1.5&r1=text&r2=text

Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.160 gnash/ChangeLog:1.161
--- gnash/ChangeLog:1.160       Sun Feb 26 15:49:29 2006
+++ gnash/ChangeLog     Sun Feb 26 21:44:53 2006
@@ -1,3 +1,12 @@
+2006-02-26 Sandro Santilli <address@hidden>
+
+       * server/action.cpp: fixed bug in doActionCallFunction making
+       samples/slider.swf play fine.
+       * server/: merged movie_definition_sub into
+       movie_definition.
+       * testsuite/actionscript.all/Makefile.am: provided
+       OUTPUT_VERSION define for *.swf and *.vswf rules
+
 2006-02-26  Rob Savoye  <address@hidden>
 
        * libbase/dlmalloc.h: Include stdlib.h instead of the depreciated
Index: gnash/backend/gnash.cpp
diff -u gnash/backend/gnash.cpp:1.11 gnash/backend/gnash.cpp:1.12
--- gnash/backend/gnash.cpp:1.11        Thu Feb 23 02:50:47 2006
+++ gnash/backend/gnash.cpp     Sun Feb 26 21:44:53 2006
@@ -33,6 +33,7 @@
 #include "tu_file.h"
 #include "tu_types.h"
 #include "xmlsocket.h"
+#include "Movie.h"
 
 bool gofast = false;           // FIXME: this flag gets set based on
                                // an XML message written using
Index: gnash/server/Function.cpp
diff -u gnash/server/Function.cpp:1.7 gnash/server/Function.cpp:1.8
--- gnash/server/Function.cpp:1.7       Sat Feb 25 03:54:03 2006
+++ gnash/server/Function.cpp   Sun Feb 26 21:44:53 2006
@@ -155,11 +155,8 @@
                        our_env->add_local(m_args[i].m_name, fn.arg(i));
                }
 
-               // Set up local variable 'this'.
-               //    --strk(2006-02-07);
                assert(fn.this_ptr);
                our_env->set_local("this", fn.this_ptr);
-
        }
        else
        {
Index: gnash/server/Movie.cpp
diff -u gnash/server/Movie.cpp:1.7 gnash/server/Movie.cpp:1.8
--- gnash/server/Movie.cpp:1.7  Sat Feb 25 03:54:03 2006
+++ gnash/server/Movie.cpp      Sun Feb 26 21:44:53 2006
@@ -157,7 +157,7 @@
            // it?  Compare a member function pointer, or
            // something?
            movie_def_impl*     def_impl = 
static_cast<movie_def_impl*>(source_movie);
-           movie_definition_sub*       def = 
static_cast<movie_definition_sub*>(def_impl);
+           movie_definition*   def = static_cast<movie_definition*>(def_impl);
 
            // Iterate in reverse, since we remove stuff along the way.
            for (int i = m_imports.size() - 1; i >= 0; i--)
@@ -411,7 +411,7 @@
                            int id = it->first;
 
                            // Insert in correct place.
-                           unsigned int        insert;
+                           unsigned int insert;
                            for (insert = 0; insert < font_ids.size(); insert++)
                                {
                                    if (font_ids[insert] > id)
@@ -761,4 +761,28 @@
            return m_movie->call_method_args(method_name, method_arg_fmt, args);
        }
 
+
+void
+movieclip_init(as_object* global)
+{
+#if 0
+       // This is going to be the global MovieClip "class"/"function"
+       static function_as_object *func=new function_as_object();
+
+       // We make the 'prototype' element be a reference to
+       // the __proto__ element
+       as_object* proto = func->m_prototype;
+       proto->add_ref();
+
+       proto->set_member("constructor", func); //as_value(func));
+       proto->set_member_flags("constructor", 1);
+
+       func->set_member("prototype", as_value(proto));
+
+       // Register _global.Function
+       global->set_member("Function", func);
+#endif
+}
+
 } // namespace gnash
+
Index: gnash/server/Movie.h
diff -u gnash/server/Movie.h:1.6 gnash/server/Movie.h:1.7
--- gnash/server/Movie.h:1.6    Sat Feb 25 03:54:03 2006
+++ gnash/server/Movie.h        Sun Feb 26 21:44:53 2006
@@ -39,7 +39,6 @@
 #define GNASH_MOVIE_H
 
 #include "container.h"
-#include "impl.h" // for movie_definition_sub
 #include "button.h" // for mouse_button_state
 #include "timers.h" // for Timer
 #include "fontlib.h"
@@ -53,6 +52,7 @@
        struct import_info;
        struct movie_def_impl;
        struct movie_root;
+       struct import_visitor; // in gnash.h
 
        //
        // Helper for movie_def_impl
@@ -78,264 +78,388 @@
                }
        };
 
-
-       /// Immutable definition of a movie's contents.
+/// Client program's interface to the definition of a movie
+//
+/// (i.e. the shared constant source info).
+///
+struct movie_definition : public character_def
+{
+       virtual int     get_version() const = 0;
+       virtual float   get_width_pixels() const = 0;
+       virtual float   get_height_pixels() const = 0;
+       virtual int     get_frame_count() const = 0;
+       virtual float   get_frame_rate() const = 0;
+       
+       /// Create a playable movie instance from a def.
        //
-       /// It cannot be played directly, and does not hold
-       /// current state; for that you need to call create_instance()
-       /// to get a movie_instance (movie_interface).
+       /// This calls add_ref() on the movie_interface internally.
+       /// Call drop_ref() on the movie_interface when you're done with it.
+       /// Or use smart_ptr<T> from base/smart_ptr.h if you want.
        ///
-       struct movie_def_impl : public movie_definition_sub
+       virtual movie_interface*        create_instance() = 0;
+       
+       virtual void    output_cached_data(tu_file* out, const cache_options& 
options) = 0;
+       virtual void    input_cached_data(tu_file* in) = 0;
+       
+       /// \brief
+       /// Causes this movie def to generate texture-mapped
+       /// versions of all the fonts it owns. 
+       //
+       /// This improves
+       /// speed and quality of text rendering.  The
+       /// texture-map data is serialized in the
+       /// output/input_cached_data() calls, so you can
+       /// preprocess this if you load cached data.
+       ///
+       virtual void    generate_font_bitmaps() = 0;
+       
+       //
+       // (optional) API to support gnash::create_movie_no_recurse().
+       //
+       
+       /// \brief
+       /// Call visit_imported_movies() to retrieve a list of
+       /// names of movies imported into this movie.
+       //
+       /// visitor->visit() will be called back with the name
+       /// of each imported movie.
+       struct import_visitor
        {
-               hash<int, smart_ptr<character_def> >            m_characters;
-               hash<int, smart_ptr<font> >                     m_fonts;
-               hash<int, smart_ptr<bitmap_character_def> >     
m_bitmap_characters;
-               hash<int, smart_ptr<sound_sample> >             m_sound_samples;
-
-               /// A list of movie control events for each frame.
-               std::vector<std::vector<execute_tag*> >                 
m_playlist;
-
-               /// Init actions for each frame.
-               std::vector<std::vector<execute_tag*> >    m_init_action_list;
-
-               /// 0-based frame #'s
-               stringi_hash<int>                  m_named_frames;
-
-               stringi_hash<smart_ptr<resource> > m_exports;
+           virtual ~import_visitor() {}
+           virtual void        visit(const char* imported_movie_filename) = 0;
+       };
+       virtual void    visit_imported_movies(import_visitor* visitor) = 0;
+       
+       /// Call this to resolve an import of the given movie.
+       /// Replaces the dummy placeholder with the real
+       /// movie_definition* given.
+       virtual void    resolve_import(const char* name, movie_definition* def) 
= 0;
+       
+       //
+       // (optional) API to support host-driven creation of textures.
+       //
+       // Create the movie using gnash::create_movie_no_recurse(..., 
DO_NOT_LOAD_BITMAPS),
+       // and then initialize each bitmap info via get_bitmap_info_count(), 
get_bitmap_info(),
+       // and bitmap_info::init_*_image() or your own subclassed API.
+       //
+       // E.g.:
+       //
+       // // During preprocessing:
+       // // This will create bitmap_info's using the rgba, rgb, alpha 
contructors.
+       // my_def = gnash::create_movie_no_recurse("myfile.swf", 
DO_LOAD_BITMAPS);
+       // int ct = my_def->get_bitmap_info_count();
+       // for (int i = 0; i < ct; i++)
+       // {
+       //      my_bitmap_info_subclass*        bi = NULL;
+       //      my_def->get_bitmap_info(i, (bitmap_info**) &bi);
+       //      
my_precomputed_textures.push_back(bi->m_my_internal_texture_reference);
+       // }
+       // // Save out my internal data.
+       // my_precomputed_textures->write_into_some_cache_stream(...);
+       //
+       // // Later, during run-time loading:
+       // my_precomputed_textures->read_from_some_cache_stream(...);
+       // // This will create blank bitmap_info's.
+       // my_def = gnash::create_movie_no_recurse("myfile.swf", 
DO_NOT_LOAD_BITMAPS);
+       // 
+       // // Push cached texture info into the movie's bitmap_info structs.
+       // int  ct = my_def->get_bitmap_info_count();
+       // for (int i = 0; i < ct; i++)
+       // {
+       //      my_bitmap_info_subclass*        bi = (my_bitmap_info_subclass*) 
my_def->get_bitmap_info(i);
+       //      bi->set_internal_texture_reference(my_precomputed_textures[i]);
+       // }
+       virtual int     get_bitmap_info_count() const = 0;
+       virtual bitmap_info*    get_bitmap_info(int i) const = 0;
+
+       // From movie_definition_sub
+
+       virtual const std::vector<execute_tag*>&        get_playlist(int 
frame_number) = 0;
+       virtual const std::vector<execute_tag*>*        get_init_actions(int 
frame_number) = 0;
+       virtual smart_ptr<resource>     get_exported_resource(const tu_string& 
symbol) = 0;
+       virtual character_def*  get_character_def(int id) = 0;
+
+       virtual bool    get_labeled_frame(const char* label, int* frame_number) 
= 0;
+
+       // For use during creation.
+       virtual int     get_loading_frame() const = 0;
+       virtual void    add_character(int id, character_def* ch) = 0;
+       virtual void    add_font(int id, font* ch) = 0;
+       virtual font*   get_font(int id) = 0;
+       virtual void    add_execute_tag(execute_tag* c) = 0;
+       virtual void    add_init_action(int sprite_id, execute_tag* c) = 0;
+       virtual void    add_frame_name(const char* name) = 0;
+       virtual void    set_jpeg_loader(jpeg::input* j_in) = 0;
+       virtual jpeg::input*    get_jpeg_loader() = 0;
+       virtual bitmap_character_def*   get_bitmap_character(int character_id) 
= 0;
+       virtual void    add_bitmap_character(int character_id, 
bitmap_character_def* ch) = 0;
+       virtual sound_sample*   get_sound_sample(int character_id) = 0;
+       virtual void    add_sound_sample(int character_id, sound_sample* sam) = 
0;
+       virtual void    export_resource(const tu_string& symbol, resource* res) 
= 0;
+       virtual void    add_import(const char* source_url, int id, const char* 
symbol_name) = 0;
+       virtual void    add_bitmap_info(bitmap_info* ch) = 0;
+
+       virtual create_bitmaps_flag     get_create_bitmaps() const = 0;
+       virtual create_font_shapes_flag get_create_font_shapes() const = 0;
+};
+
+/// Immutable definition of a movie's contents.
+//
+/// It cannot be played directly, and does not hold
+/// current state; for that you need to call create_instance()
+/// to get a movie_instance (movie_interface).
+///
+struct movie_def_impl : public movie_definition
+{
+       hash<int, smart_ptr<character_def> >            m_characters;
+       hash<int, smart_ptr<font> >                     m_fonts;
+       hash<int, smart_ptr<bitmap_character_def> >     m_bitmap_characters;
+       hash<int, smart_ptr<sound_sample> >             m_sound_samples;
 
-               /// Items we import.
-               std::vector<import_info>        m_imports;
+       /// A list of movie control events for each frame.
+       std::vector<std::vector<execute_tag*> >         m_playlist;
 
-               /// Movies we import from; hold a ref on these,
-               /// to keep them alive
-               std::vector<smart_ptr<movie_definition> >       
m_import_source_movies;
+       /// Init actions for each frame.
+       std::vector<std::vector<execute_tag*> >    m_init_action_list;
 
-               /// Bitmaps used in this movie; collected in one place to make
-               /// it possible for the host to manage them as textures.
-               std::vector<smart_ptr<bitmap_info> >    m_bitmap_list;
+       /// 0-based frame #'s
+       stringi_hash<int> m_named_frames;
 
-               create_bitmaps_flag     m_create_bitmaps;
-               create_font_shapes_flag m_create_font_shapes;
+       stringi_hash<smart_ptr<resource> > m_exports;
 
-               rect    m_frame_size;
-               float   m_frame_rate;
-               int     m_frame_count;
-               int     m_version;
-               int     m_loading_frame;
-               uint32  m_file_length;
+       /// Items we import.
+       std::vector<import_info> m_imports;
 
-               jpeg::input*    m_jpeg_in;
+       /// Movies we import from; hold a ref on these,
+       /// to keep them alive
+       std::vector<smart_ptr<movie_definition> > m_import_source_movies;
 
-               movie_def_impl(create_bitmaps_flag cbf,
-                               create_font_shapes_flag cfs)
-                       :
-                       m_create_bitmaps(cbf),
-                       m_create_font_shapes(cfs),
-                       m_frame_rate(30.0f),
-                       m_frame_count(0),
-                       m_version(0),
-                       m_loading_frame(0),
-                       m_jpeg_in(0)
-                       {
-                       }
+       /// Bitmaps used in this movie; collected in one place to make
+       /// it possible for the host to manage them as textures.
+       std::vector<smart_ptr<bitmap_info> >    m_bitmap_list;
 
-               ~movie_def_impl();
+       create_bitmaps_flag     m_create_bitmaps;
+       create_font_shapes_flag m_create_font_shapes;
 
-               // ...
-               int     get_frame_count() const { return m_frame_count; }
-               float   get_frame_rate() const { return m_frame_rate; }
+       rect    m_frame_size;
+       float   m_frame_rate;
+       int     m_frame_count;
+       int     m_version;
+       int     m_loading_frame;
+       uint32  m_file_length;
 
-               float   get_width_pixels() const
-               {
-                       return ceilf(TWIPS_TO_PIXELS(m_frame_size.width()));
-               }
+       jpeg::input*    m_jpeg_in;
 
-               float   get_height_pixels() const
+       movie_def_impl(create_bitmaps_flag cbf,
+                       create_font_shapes_flag cfs)
+               :
+               m_create_bitmaps(cbf),
+               m_create_font_shapes(cfs),
+               m_frame_rate(30.0f),
+               m_frame_count(0),
+               m_version(0),
+               m_loading_frame(0),
+               m_jpeg_in(0)
                {
-                       return ceilf(TWIPS_TO_PIXELS(m_frame_size.height()));
                }
 
-               virtual int     get_version() const { return m_version; }
+       ~movie_def_impl();
 
-               virtual int     get_loading_frame() const
-               {
-                       return m_loading_frame;
-               }
+       // ...
+       int     get_frame_count() const { return m_frame_count; }
+       float   get_frame_rate() const { return m_frame_rate; }
 
-               uint32  get_file_bytes() const { return m_file_length; }
+       float   get_width_pixels() const
+       {
+               return ceilf(TWIPS_TO_PIXELS(m_frame_size.width()));
+       }
 
-               /// Returns DO_CREATE_BITMAPS if we're supposed to
-               /// initialize our bitmap infos, or DO_NOT_INIT_BITMAPS
-               /// if we're supposed to create blank placeholder
-               /// bitmaps (to be init'd later explicitly by the host
-               /// program).
-               virtual create_bitmaps_flag get_create_bitmaps() const
-               {
-                       return m_create_bitmaps;
-               }
+       float   get_height_pixels() const
+       {
+               return ceilf(TWIPS_TO_PIXELS(m_frame_size.height()));
+       }
 
-               /// Returns DO_LOAD_FONT_SHAPES if we're supposed to
-               /// initialize our font shape info, or
-               /// DO_NOT_LOAD_FONT_SHAPES if we're supposed to not
-               /// create any (vector) font glyph shapes, and instead
-               /// rely on precached textured fonts glyphs.
-               virtual create_font_shapes_flag get_create_font_shapes() const
-               {
-                   return m_create_font_shapes;
-               }
+       virtual int     get_version() const { return m_version; }
 
-               /// All bitmap_info's used by this movie should be
-               /// registered with this API.
-               virtual void    add_bitmap_info(bitmap_info* bi)
-               {
-                   m_bitmap_list.push_back(bi);
-               }
+       virtual int     get_loading_frame() const
+       {
+               return m_loading_frame;
+       }
 
-               virtual int get_bitmap_info_count() const
-               {
-                       return m_bitmap_list.size();
-               }
+       uint32  get_file_bytes() const { return m_file_length; }
 
-               virtual bitmap_info*    get_bitmap_info(int i) const
-               {
-                       return m_bitmap_list[i].get_ptr();
-               }
-
-               /// Expose one of our resources under the given symbol,
-               /// for export.  Other movies can import it.
-               virtual void export_resource(const tu_string& symbol,
-                               resource* res)
-               {
-                   // SWF sometimes exports the same thing more than once!
-                   m_exports.set(symbol, res);
-               }
+       /// Returns DO_CREATE_BITMAPS if we're supposed to
+       /// initialize our bitmap infos, or DO_NOT_INIT_BITMAPS
+       /// if we're supposed to create blank placeholder
+       /// bitmaps (to be init'd later explicitly by the host
+       /// program).
+       virtual create_bitmaps_flag get_create_bitmaps() const
+       {
+               return m_create_bitmaps;
+       }
 
-               /// Get the named exported resource, if we expose it.
-               /// Otherwise return NULL.
-               virtual smart_ptr<resource> get_exported_resource(const 
tu_string& symbol)
-               {
-                   smart_ptr<resource> res;
-                   m_exports.get(symbol, &res);
-                   return res;
-               }
+       /// Returns DO_LOAD_FONT_SHAPES if we're supposed to
+       /// initialize our font shape info, or
+       /// DO_NOT_LOAD_FONT_SHAPES if we're supposed to not
+       /// create any (vector) font glyph shapes, and instead
+       /// rely on precached textured fonts glyphs.
+       virtual create_font_shapes_flag get_create_font_shapes() const
+       {
+           return m_create_font_shapes;
+       }
 
-               /// Adds an entry to a table of resources that need to
-               /// be imported from other movies.  Client code must
-               /// call resolve_import() later, when the source movie
-               /// has been loaded, so that the actual resource can be
-               /// used.
-               virtual void add_import(const char* source_url, int id, const 
char* symbol)
-               {
-                   assert(in_import_table(id) == false);
+       /// All bitmap_info's used by this movie should be
+       /// registered with this API.
+       virtual void    add_bitmap_info(bitmap_info* bi)
+       {
+           m_bitmap_list.push_back(bi);
+       }
 
-                   m_imports.push_back(import_info(source_url, id, symbol));
-               }
+       virtual int get_bitmap_info_count() const
+       {
+               return m_bitmap_list.size();
+       }
 
-               /// Debug helper; returns true if the given
-               /// character_id is listed in the import table.
-               bool in_import_table(int character_id);
+       virtual bitmap_info*    get_bitmap_info(int i) const
+       {
+               return m_bitmap_list[i].get_ptr();
+       }
 
-               /// Calls back the visitor for each movie that we
-               /// import symbols from.
-               virtual void visit_imported_movies(import_visitor* visitor);
+       /// Expose one of our resources under the given symbol,
+       /// for export.  Other movies can import it.
+       virtual void export_resource(const tu_string& symbol,
+                       resource* res)
+       {
+           // SWF sometimes exports the same thing more than once!
+           m_exports.set(symbol, res);
+       }
+
+       /// Get the named exported resource, if we expose it.
+       /// Otherwise return NULL.
+       virtual smart_ptr<resource> get_exported_resource(const tu_string& 
symbol)
+       {
+           smart_ptr<resource> res;
+           m_exports.get(symbol, &res);
+           return res;
+       }
+
+       /// Adds an entry to a table of resources that need to
+       /// be imported from other movies.  Client code must
+       /// call resolve_import() later, when the source movie
+       /// has been loaded, so that the actual resource can be
+       /// used.
+       virtual void add_import(const char* source_url, int id, const char* 
symbol)
+       {
+           assert(in_import_table(id) == false);
 
-               /// Grabs the stuff we want from the source movie.
-               virtual void resolve_import(const char* source_url,
-                       movie_definition* source_movie);
+           m_imports.push_back(import_info(source_url, id, symbol));
+       }
 
-               void add_character(int character_id, character_def* c);
+       /// Debug helper; returns true if the given
+       /// character_id is listed in the import table.
+       bool in_import_table(int character_id);
 
-               character_def*  get_character_def(int character_id);
+       /// Calls back the visitor for each movie that we
+       /// import symbols from.
+       virtual void visit_imported_movies(import_visitor* visitor);
 
-               /// Returns 0-based frame #
-               bool get_labeled_frame(const char* label, int* frame_number)
-               {
-                       return m_named_frames.get(label, frame_number);
-               }
+       /// Grabs the stuff we want from the source movie.
+       virtual void resolve_import(const char* source_url,
+               movie_definition* source_movie);
 
-               void    add_font(int font_id, font* f);
-               font*   get_font(int font_id);
-               bitmap_character_def*   get_bitmap_character(int character_id);
-               void    add_bitmap_character(int character_id, 
bitmap_character_def* ch);
-               sound_sample*   get_sound_sample(int character_id);
-               virtual void    add_sound_sample(int character_id, 
sound_sample* sam);
+       void add_character(int character_id, character_def* c);
 
-               /// Add an execute_tag to this movie_definition's playlist
-               void    add_execute_tag(execute_tag* e)
-               {
-                   assert(e);
-                   m_playlist[m_loading_frame].push_back(e);
-               }
+       character_def*  get_character_def(int character_id);
 
-               /// Need to execute the given tag before entering the
-               /// currently-loading frame for the first time.
-               ///
-               /// @@ AFAIK, the sprite_id is totally pointless -- correct?
-               void    add_init_action(int sprite_id, execute_tag* e)
-               {
-                   assert(e);
-                   m_init_action_list[m_loading_frame].push_back(e);
-               }
+       /// Returns 0-based frame #
+       bool get_labeled_frame(const char* label, int* frame_number)
+       {
+               return m_named_frames.get(label, frame_number);
+       }
 
-               /// Labels the frame currently being loaded with the
-               /// given name.  A copy of the name string is made and
-               /// kept in this object.
-               void    add_frame_name(const char* name)
-               {
-                   assert(m_loading_frame >= 0 && m_loading_frame < 
m_frame_count);
+       void    add_font(int font_id, font* f);
+       font*   get_font(int font_id);
+       bitmap_character_def*   get_bitmap_character(int character_id);
+       void    add_bitmap_character(int character_id, bitmap_character_def* 
ch);
+       sound_sample*   get_sound_sample(int character_id);
+       virtual void    add_sound_sample(int character_id, sound_sample* sam);
 
-                   tu_string   n = name;
-                   assert(m_named_frames.get(n, NULL) == false);       // 
frame should not already have a name (?)
-                   m_named_frames.add(n, m_loading_frame);     // stores 
0-based frame #
-               }
+       /// Add an execute_tag to this movie_definition's playlist
+       void    add_execute_tag(execute_tag* e)
+       {
+           assert(e);
+           m_playlist[m_loading_frame].push_back(e);
+       }
 
-               /// Set an input object for later loading DefineBits
-               /// images (JPEG images without the table info).
-               void    set_jpeg_loader(jpeg::input* j_in)
-               {
-                   assert(m_jpeg_in == NULL);
-                   m_jpeg_in = j_in;
-               }
+       /// Need to execute the given tag before entering the
+       /// currently-loading frame for the first time.
+       ///
+       /// @@ AFAIK, the sprite_id is totally pointless -- correct?
+       void    add_init_action(int sprite_id, execute_tag* e)
+       {
+           assert(e);
+           m_init_action_list[m_loading_frame].push_back(e);
+       }
+
+       /// Labels the frame currently being loaded with the
+       /// given name.  A copy of the name string is made and
+       /// kept in this object.
+       void    add_frame_name(const char* name)
+       {
+           assert(m_loading_frame >= 0 && m_loading_frame < m_frame_count);
 
-               /// Get the jpeg input loader, to load a DefineBits
-               /// image (one without table info).
-               jpeg::input*    get_jpeg_loader()
-               {
-                   return m_jpeg_in;
-               }
+           tu_string   n = name;
+           assert(m_named_frames.get(n, NULL) == false);       // frame should 
not already have a name (?)
+           m_named_frames.add(n, m_loading_frame);     // stores 0-based frame 
#
+       }
+
+       /// Set an input object for later loading DefineBits
+       /// images (JPEG images without the table info).
+       void    set_jpeg_loader(jpeg::input* j_in)
+       {
+           assert(m_jpeg_in == NULL);
+           m_jpeg_in = j_in;
+       }
+
+       /// Get the jpeg input loader, to load a DefineBits
+       /// image (one without table info).
+       jpeg::input*    get_jpeg_loader()
+       {
+           return m_jpeg_in;
+       }
 
-               virtual const std::vector<execute_tag*>& get_playlist(int 
frame_number) { return m_playlist[frame_number]; }
+       virtual const std::vector<execute_tag*>& get_playlist(int frame_number) 
{ return m_playlist[frame_number]; }
 
-               virtual const std::vector<execute_tag*>*get_init_actions(int 
frame_number) { return &m_init_action_list[frame_number]; }
+       virtual const std::vector<execute_tag*>*get_init_actions(int 
frame_number) { return &m_init_action_list[frame_number]; }
 
-               /// Read Movie definition from an SWF file.
-               //
-               /// This function uses the gnash::s_tag_loaders
-               /// global variable to interpret specific tag types.
-               ///
-               void read(tu_file *in);
+       /// Read Movie definition from an SWF file.
+       //
+       /// This function uses the gnash::s_tag_loaders
+       /// global variable to interpret specific tag types.
+       ///
+       void read(tu_file *in);
 
-               /// Fill up *fonts with fonts that we own.
-               void get_owned_fonts(std::vector<font*>* fonts);
+       /// Fill up *fonts with fonts that we own.
+       void get_owned_fonts(std::vector<font*>* fonts);
 
-               /// Generate bitmaps for our fonts, if necessary.
-               void generate_font_bitmaps();
+       /// Generate bitmaps for our fonts, if necessary.
+       void generate_font_bitmaps();
 
-               /// Dump our cached data into the given stream.
-               void output_cached_data(tu_file* out,
-                       const cache_options& options);
+       /// Dump our cached data into the given stream.
+       void output_cached_data(tu_file* out,
+               const cache_options& options);
 
-               /// Read in cached data and use it to prime our
-               /// loaded characters.
-               void    input_cached_data(tu_file* in);
+       /// Read in cached data and use it to prime our
+       /// loaded characters.
+       void    input_cached_data(tu_file* in);
 
-               /// Create a playable movie_root instance from a def.
-               //
-               /// The _root reference of the newly created instance
-               /// will be set to a newly created sprite_instace (Help!)
-               ///
-               movie_interface* create_instance();
-       };
+       /// Create a playable movie_root instance from a def.
+       //
+       /// The _root reference of the newly created instance
+       /// will be set to a newly created sprite_instace (Help!)
+       ///
+       movie_interface* create_instance();
+};
 
 
        /// Global, shared root state for a movie and all its characters.
@@ -513,6 +637,11 @@
                }
        };
 
+
+
+/// Initialize the global MovieClip constructor
+void movieclip_init(as_object* global);
+
 } // namespace gnash
 
 #endif // GNASH_MOVIE_H
Index: gnash/server/MovieClipLoader.cpp
diff -u gnash/server/MovieClipLoader.cpp:1.9 
gnash/server/MovieClipLoader.cpp:1.10
--- gnash/server/MovieClipLoader.cpp:1.9        Sat Feb 25 03:54:03 2006
+++ gnash/server/MovieClipLoader.cpp    Sun Feb 26 21:44:53 2006
@@ -42,6 +42,7 @@
 #endif
 #endif
 #include "MovieClipLoader.h"
+#include "Movie.h" // for movie_definition::create_instance, to be renamed
 #include "log.h"
 #include "tu_file.h"
 #include "image.h"
@@ -343,10 +344,9 @@
 
        if (suffix == ".swf")
        {
-               movie_definition_sub* md = \
-                       create_library_movie_sub(filespec.c_str());
+               movie_definition* md = create_library_movie(filespec.c_str());
                if (md == NULL) {
-                       log_error("can't create movie_definition_sub for %s\n",
+                       log_error("can't create movie_definition for %s\n",
                                filespec.c_str());
                        return;
                }
@@ -441,7 +441,7 @@
 
                movie *mov = target->to_movie();
                //movie_definition *def = mov->get_movie_definition();
-               //movie_definition_sub *m = (movie_definition_sub *)mov;
+               //movie_definition *m = (movie_definition *)mov;
                //target->add_bitmap_info(bi);
 
                character* tar = (character*)mov;
@@ -459,11 +459,11 @@
                        filespec.length() - 3);
                swfm += "swf";
 
-               movie_definition_sub  *ms = create_movie_sub(swfm.c_str());
+               movie_definition *ms = create_movie(swfm.c_str());
                // The file may not exist.
                if (ms) { 
                        movie_interface* extern_movie = \
-                               create_library_movie_inst_sub(ms);
+                               create_library_movie_inst(ms);
                        character * newchar = \
                                ms->create_character_instance(tar->get_parent(),
                                                id);
@@ -473,7 +473,7 @@
                //movie* new_movie = 
static_cast<movie*>(extern_movie)->get_root_movie();
      
 // #else
-//     movie_definition_sub  *ms;
+//     movie_definition*ms;
 //     ms->add_bitmap_info(bi);
 // #endif
                //movie* m = mov->get_root_movie();
Index: gnash/server/Sprite.cpp
diff -u gnash/server/Sprite.cpp:1.14 gnash/server/Sprite.cpp:1.15
--- gnash/server/Sprite.cpp:1.14        Sat Feb 25 03:54:03 2006
+++ gnash/server/Sprite.cpp     Sun Feb 26 21:44:53 2006
@@ -230,14 +230,7 @@
                //
 
                // Get target's movie definition
-               movie_definition *m1 = sprite->get_movie_definition();
-
-
-               // text_character_def ctor insists in having
-               // a movie_definition_sub...
-               movie_definition_sub *mds = 
dynamic_cast<movie_definition_sub*>(m1);
-               assert(mds);
-
+               movie_definition *mds = sprite->get_movie_definition();
 
                log_msg("Target's movie definition at %p\n", mds);
 
Index: gnash/server/Sprite.h
diff -u gnash/server/Sprite.h:1.8 gnash/server/Sprite.h:1.9
--- gnash/server/Sprite.h:1.8   Sat Feb 25 03:54:03 2006
+++ gnash/server/Sprite.h       Sun Feb 26 21:44:53 2006
@@ -59,15 +59,15 @@
        //
        // sprite_definition
        //
-       struct sprite_definition : public movie_definition_sub
+       struct sprite_definition : public movie_definition
        {
-               movie_definition_sub* m_movie_def;      // parent movie.
+               movie_definition* m_movie_def;  // parent movie.
                std::vector<std::vector<execute_tag*> > m_playlist;     // 
movie control events for each frame.
                stringi_hash<int> m_named_frames;       // stores 0-based frame 
#'s
                int m_frame_count;
                int m_loading_frame;
 
-               sprite_definition(movie_definition_sub* m) :
+               sprite_definition(movie_definition* m) :
                        m_movie_def(m),
                        m_frame_count(0),
                        m_loading_frame(0)
@@ -259,7 +259,7 @@
        /// Stateful Sprite object. Also known as a MovieClip.
        struct sprite_instance : public character
        {
-               smart_ptr<movie_definition_sub> m_def;
+               smart_ptr<movie_definition>     m_def;
                movie_root*     m_root;
 
                display_list    m_display_list;
@@ -295,7 +295,7 @@
                };
                mouse_state m_mouse_state;
 
-               sprite_instance(movie_definition_sub* def,
+               sprite_instance(movie_definition* def,
                        movie_root* r, movie* parent, int id)
                        :
                        character(parent, id),
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.51 gnash/server/action.cpp:1.52
--- gnash/server/action.cpp:1.51        Sat Feb 25 03:54:03 2006
+++ gnash/server/action.cpp     Sun Feb 26 21:44:53 2006
@@ -18,6 +18,7 @@
 #include "tu_random.h"
 
 #include "gstring.h"
+#include "Movie.h" // for movie_definition::create_instance
 #include "MovieClipLoader.h"
 #include "Function.h"
 #include "timers.h"
@@ -134,10 +135,10 @@
                tu_string infile = get_workdir();
                infile += url;
 
-               movie_definition_sub*   md = 
create_library_movie_sub(infile.c_str());
+               movie_definition* md = create_library_movie(infile.c_str());
                if (md == NULL)
                {
-                       log_error("can't create movie_definition_sub for %s\n", 
infile.c_str());
+                       log_error("can't create movie_definition for %s\n", 
infile.c_str());
                        return;
                }
 
@@ -145,7 +146,7 @@
 
                if (target == root_movie)
                {
-                       extern_movie = create_library_movie_inst_sub(md);       
                
+                       extern_movie = create_library_movie_inst(md);           
        
                        if (extern_movie == NULL)
                        {
                                log_error("can't create extern root 
movie_interface for %s\n", infile.c_str());
@@ -510,8 +511,7 @@
                so->sound = fn.arg(0).to_tu_string();
 
                // check the import.
-               movie_definition_sub*   def = (movie_definition_sub*)
-                       
fn.env->get_target()->get_root_movie()->get_movie_definition();
+               movie_definition* def = 
fn.env->get_target()->get_root_movie()->get_movie_definition();
                assert(def);
                smart_ptr<resource> res = def->get_exported_resource(so->sound);
                if (res == NULL)
@@ -1457,6 +1457,7 @@
                        s_global->set_member("isFinite", as_global_isfinite);
 
                        function_init(s_global.get_ptr());
+                       movieclip_init(s_global.get_ptr());
                        math_init();
                        key_init();
                }
@@ -1563,7 +1564,7 @@
                }
        };
 
-       void    do_action_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    do_action_loader(stream* in, int tag_type, movie_definition* m)
        {
                IF_VERBOSE_PARSE(log_msg("tag %d: do_action_loader\n", 
tag_type));
 
@@ -1585,7 +1586,7 @@
        //
 
 
-       void    do_init_action_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    do_init_action_loader(stream* in, int tag_type, 
movie_definition* m)
        {
                assert(tag_type == 59);
 
@@ -1885,7 +1886,7 @@
 
                // Get an object
                as_value& obj_value = env->top(1);
-               as_object*      obj = obj_value.to_object();
+               as_object* obj = obj_value.to_object();
                //log_msg(" method object: %p\n", obj);
 
                // Get number of arguments
@@ -1961,7 +1962,10 @@
                        function = env->top(0);
                }
                int     nargs = (int) env->top(1).to_number();
-               as_value        result = call_method(function, env, NULL, 
nargs, env->get_top_index() - 2);
+
+               as_value result = call_method(function, env, env->get_target(),
+                               nargs, env->get_top_index() - 2);
+
                env->drop(nargs + 1);
                env->top(0) = result;
        }
Index: gnash/server/action.h
diff -u gnash/server/action.h:1.22 gnash/server/action.h:1.23
--- gnash/server/action.h:1.22  Sat Feb 25 03:54:03 2006
+++ gnash/server/action.h       Sun Feb 26 21:44:53 2006
@@ -291,6 +291,7 @@
                /// function2 uses this
                std::vector<as_value>   m_local_register;
 
+               /// Movie target. 
                movie*  m_target;
 
                /// Variables available in this environment
Index: gnash/server/button.cpp
diff -u gnash/server/button.cpp:1.5 gnash/server/button.cpp:1.6
--- gnash/server/button.cpp:1.5 Sat Feb 25 03:54:03 2006
+++ gnash/server/button.cpp     Sun Feb 26 21:44:53 2006
@@ -12,6 +12,7 @@
 #include "render.h"
 #include "sound.h"
 #include "stream.h"
+#include "Movie.h"
 
 
 /*
@@ -301,8 +302,7 @@
                        int r, r_num =  m_def->m_button_records.size();
                        m_record_character.resize(r_num);
 
-                       movie_definition_sub*   movie_def = 
static_cast<movie_definition_sub*>(
-                               
parent->get_root_movie()->get_movie_definition());
+                       movie_definition* movie_def = 
parent->get_root_movie()->get_movie_definition();
 
                        for (r = 0; r < r_num; r++)
                        {
@@ -780,7 +780,7 @@
        // button_record
        //
 
-       bool    button_record::read(stream* in, int tag_type, 
movie_definition_sub* m)
+       bool    button_record::read(stream* in, int tag_type, movie_definition* 
m)
        // Return true if we read a record; false if this is a null record.
        {
                int     flags = in->read_u8();
@@ -902,7 +902,7 @@
 
 
 
-       void    button_character_definition::read(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    button_character_definition::read(stream* in, int tag_type, 
movie_definition* m)
        // Initialize from the given stream.
        {
                assert(tag_type == 7 || tag_type == 17 || tag_type == 34);
Index: gnash/server/button.h
diff -u gnash/server/button.h:1.2 gnash/server/button.h:1.3
--- gnash/server/button.h:1.2   Sat Feb 25 03:54:03 2006
+++ gnash/server/button.h       Sun Feb 26 21:44:53 2006
@@ -62,7 +62,7 @@
                matrix  m_button_matrix;
                cxform  m_button_cxform;
 
-               bool    read(stream* in, int tag_type, movie_definition_sub* m);
+               bool    read(stream* in, int tag_type, movie_definition* m);
        };
        
 
@@ -122,7 +122,7 @@
 
                struct button_sound_def
                {
-                       void    read(stream* in, movie_definition_sub* m);
+                       void    read(stream* in, movie_definition* m);
                        button_sound_info m_button_sounds[4];
                };
 
@@ -136,7 +136,7 @@
                virtual ~button_character_definition();
 
                character*      create_character_instance(movie* parent, int 
id);
-               void    read(stream* in, int tag_type, movie_definition_sub* m);
+               void    read(stream* in, int tag_type, movie_definition* m);
        };
 
 };     // end namespace gnash
Index: gnash/server/font.cpp
diff -u gnash/server/font.cpp:1.5 gnash/server/font.cpp:1.6
--- gnash/server/font.cpp:1.5   Sat Feb 25 03:54:03 2006
+++ gnash/server/font.cpp       Sun Feb 26 21:44:53 2006
@@ -12,6 +12,7 @@
 #include "log.h"
 #include "shape.h"
 #include "tu_file.h"
+#include "Movie.h"
 
 namespace gnash {
        font::font()
@@ -99,7 +100,7 @@
        }
 
 
-       void    font::read(stream* in, int tag_type, movie_definition_sub* m)
+       void    font::read(stream* in, int tag_type, movie_definition* m)
        {
                assert(tag_type == 10 || tag_type == 48);
 
Index: gnash/server/font.h
diff -u gnash/server/font.h:1.2 gnash/server/font.h:1.3
--- gnash/server/font.h:1.2     Sat Feb 25 03:54:03 2006
+++ gnash/server/font.h Sun Feb 26 21:44:53 2006
@@ -59,7 +59,7 @@
 
                int     get_glyph_count() const { return m_glyphs.size(); }
                shape_character_def*    get_glyph(int glyph_index) const;
-               void    read(stream* in, int tag_type, movie_definition_sub* m);
+               void    read(stream* in, int tag_type, movie_definition* m);
                void    read_font_info(stream* in);
 
                void    output_cached_data(tu_file* out, const cache_options& 
options);
@@ -68,7 +68,7 @@
                void    wipe_texture_glyphs();
 
                const char*     get_name() const { return m_name; }
-               movie_definition_sub*   get_owning_movie() const { return 
m_owning_movie; }
+               movie_definition* get_owning_movie() const { return 
m_owning_movie; }
 
                const texture_glyph&    get_texture_glyph(int glyph_index) 
const;
                void    add_texture_glyph(int glyph_index, const texture_glyph& 
glyph);
@@ -90,7 +90,7 @@
                int     m_texture_glyph_nominal_size;
 
                char*   m_name;
-               movie_definition_sub*   m_owning_movie;
+               movie_definition*       m_owning_movie;
                bool    m_has_layout;
                bool    m_unicode_chars;
                bool    m_shift_jis_chars;
Index: gnash/server/fontlib.cpp
diff -u gnash/server/fontlib.cpp:1.4 gnash/server/fontlib.cpp:1.5
--- gnash/server/fontlib.cpp:1.4        Sat Feb 25 03:54:03 2006
+++ gnash/server/fontlib.cpp    Sun Feb 26 21:44:53 2006
@@ -17,6 +17,7 @@
 #include "styles.h"
 #include "tesselate.h"
 #include "render.h"
+#include "Movie.h"
 
 
 namespace gnash {
@@ -214,7 +215,7 @@
        }
 
 
-       void    finish_current_texture(movie_definition_sub* owner)
+       void    finish_current_texture(movie_definition* owner)
        {
                if (s_pending_glyphs.size() == 0)
                {
@@ -741,7 +742,7 @@
        }
 
 
-       void    pack_and_assign_glyphs(std::vector<rendered_glyph_info>* 
glyph_info, movie_definition_sub* owner)
+       void    pack_and_assign_glyphs(std::vector<rendered_glyph_info>* 
glyph_info, movie_definition* owner)
        // Pack the given glyphs into textures, and push the
        // texture_glyph info into the source fonts.
        //
@@ -873,7 +874,7 @@
        }
 
 
-       static void     generate_font_bitmaps(std::vector<rendered_glyph_info>* 
glyph_info, font* f, movie_definition_sub* owner)
+       static void     generate_font_bitmaps(std::vector<rendered_glyph_info>* 
glyph_info, font* f, movie_definition* owner)
        // Render images for each of the font's glyphs, and put the
        // info about them in the given array.
        {
@@ -937,7 +938,7 @@
        //
 
 
-       void    generate_font_bitmaps(const std::vector<font*>& fonts, 
movie_definition_sub* owner)
+       void    generate_font_bitmaps(const std::vector<font*>& fonts, 
movie_definition* owner)
        // Build cached textures from glyph outlines.
        {
                assert(s_render_buffer == NULL);
@@ -983,7 +984,7 @@
        void    output_cached_data(
                tu_file* out,
                const std::vector<font*>& fonts,
-               movie_definition_sub* owner,
+               movie_definition* owner,
                const cache_options& options)
        // Save cached font data, including glyph textures, to a
        // stream.  This is used by the movie caching code.
@@ -1086,7 +1087,7 @@
        }
        
 
-       void    input_cached_data(tu_file* in, const std::vector<font*>& fonts, 
movie_definition_sub* owner)
+       void    input_cached_data(tu_file* in, const std::vector<font*>& fonts, 
movie_definition* owner)
        // Load a stream containing previously-saved font glyph textures.
        {
                // load number of bitmaps.
Index: gnash/server/fontlib.h
diff -u gnash/server/fontlib.h:1.2 gnash/server/fontlib.h:1.3
--- gnash/server/fontlib.h:1.2  Sat Feb 25 03:54:03 2006
+++ gnash/server/fontlib.h      Sun Feb 26 21:44:53 2006
@@ -32,19 +32,19 @@
                float   get_texture_glyph_max_height(const font* f);
 
                // Builds cached glyph textures from shape info.
-               void    generate_font_bitmaps(const std::vector<font*>& fonts, 
movie_definition_sub* owner);
+               void    generate_font_bitmaps(const std::vector<font*>& fonts, 
movie_definition* owner);
                
                // Save cached font data, including glyph textures, to a
                // stream.
                void    output_cached_data(
                        tu_file* out,
                        const std::vector<font*>& fonts,
-                       movie_definition_sub* owner,
+                       movie_definition* owner,
                        const cache_options& options);
                
                // Load a stream containing previously-saved cachded font
                // data, including glyph texture info.
-               void    input_cached_data(tu_file* in, const 
std::vector<font*>& fonts, movie_definition_sub* owner);
+               void    input_cached_data(tu_file* in, const 
std::vector<font*>& fonts, movie_definition* owner);
                
        }       // end namespace fontlib
 }      // end namespace gnash
Index: gnash/server/gnash.h
diff -u gnash/server/gnash.h:1.12 gnash/server/gnash.h:1.13
--- gnash/server/gnash.h:1.12   Wed Feb 15 23:35:53 2006
+++ gnash/server/gnash.h        Sun Feb 26 21:44:53 2006
@@ -63,6 +63,7 @@
 struct font;
 struct movie;
 struct movie_interface;
+struct movie_definition;
 struct render_handler;
 struct resource;
 struct rgba;
@@ -167,8 +168,8 @@
 /// Immutable data representing the template of a movie element.
 //
 /// This is not really a public interface.  It's here so it
-/// can be mixed into movie_definition, movie_definition_sub,
-/// and sprite_definition, without using multiple inheritance.
+/// can be mixed into movie_definition and sprite_definition,
+/// without using multiple inheritance.
 ///
 struct character_def : public resource
 {
@@ -204,101 +205,6 @@
 };
 
 
-/// Client program's interface to the definition of a movie
-//
-/// (i.e. the shared constant source info).
-///
-struct movie_definition : public character_def
-{
-       virtual int     get_version() const = 0;
-       virtual float   get_width_pixels() const = 0;
-       virtual float   get_height_pixels() const = 0;
-       virtual int     get_frame_count() const = 0;
-       virtual float   get_frame_rate() const = 0;
-       
-       /// Create a playable movie instance from a def.
-       //
-       /// This calls add_ref() on the movie_interface internally.
-       /// Call drop_ref() on the movie_interface when you're done with it.
-       /// Or use smart_ptr<T> from base/smart_ptr.h if you want.
-       ///
-       virtual movie_interface*        create_instance() = 0;
-       
-       virtual void    output_cached_data(tu_file* out, const cache_options& 
options) = 0;
-       virtual void    input_cached_data(tu_file* in) = 0;
-       
-       /// \brief
-       /// Causes this movie def to generate texture-mapped
-       /// versions of all the fonts it owns. 
-       //
-       /// This improves
-       /// speed and quality of text rendering.  The
-       /// texture-map data is serialized in the
-       /// output/input_cached_data() calls, so you can
-       /// preprocess this if you load cached data.
-       ///
-       virtual void    generate_font_bitmaps() = 0;
-       
-       //
-       // (optional) API to support gnash::create_movie_no_recurse().
-       //
-       
-       /// \brief
-       /// Call visit_imported_movies() to retrieve a list of
-       /// names of movies imported into this movie.
-       //
-       /// visitor->visit() will be called back with the name
-       /// of each imported movie.
-       struct import_visitor
-       {
-           virtual ~import_visitor() {}
-           virtual void        visit(const char* imported_movie_filename) = 0;
-       };
-       virtual void    visit_imported_movies(import_visitor* visitor) = 0;
-       
-       /// Call this to resolve an import of the given movie.
-       /// Replaces the dummy placeholder with the real
-       /// movie_definition* given.
-       virtual void    resolve_import(const char* name, movie_definition* def) 
= 0;
-       
-       //
-       // (optional) API to support host-driven creation of textures.
-       //
-       // Create the movie using gnash::create_movie_no_recurse(..., 
DO_NOT_LOAD_BITMAPS),
-       // and then initialize each bitmap info via get_bitmap_info_count(), 
get_bitmap_info(),
-       // and bitmap_info::init_*_image() or your own subclassed API.
-       //
-       // E.g.:
-       //
-       // // During preprocessing:
-       // // This will create bitmap_info's using the rgba, rgb, alpha 
contructors.
-       // my_def = gnash::create_movie_no_recurse("myfile.swf", 
DO_LOAD_BITMAPS);
-       // int ct = my_def->get_bitmap_info_count();
-       // for (int i = 0; i < ct; i++)
-       // {
-       //      my_bitmap_info_subclass*        bi = NULL;
-       //      my_def->get_bitmap_info(i, (bitmap_info**) &bi);
-       //      
my_precomputed_textures.push_back(bi->m_my_internal_texture_reference);
-       // }
-       // // Save out my internal data.
-       // my_precomputed_textures->write_into_some_cache_stream(...);
-       //
-       // // Later, during run-time loading:
-       // my_precomputed_textures->read_from_some_cache_stream(...);
-       // // This will create blank bitmap_info's.
-       // my_def = gnash::create_movie_no_recurse("myfile.swf", 
DO_NOT_LOAD_BITMAPS);
-       // 
-       // // Push cached texture info into the movie's bitmap_info structs.
-       // int  ct = my_def->get_bitmap_info_count();
-       // for (int i = 0; i < ct; i++)
-       // {
-       //      my_bitmap_info_subclass*        bi = (my_bitmap_info_subclass*) 
my_def->get_bitmap_info(i);
-       //      bi->set_internal_texture_reference(my_precomputed_textures[i]);
-       // }
-       virtual int     get_bitmap_info_count() const = 0;
-       virtual bitmap_info*    get_bitmap_info(int i) const = 0;
-};
-
 
 /// An independent stateful live movie.
 //
Index: gnash/server/impl.cpp
diff -u gnash/server/impl.cpp:1.20 gnash/server/impl.cpp:1.21
--- gnash/server/impl.cpp:1.20  Sat Feb 25 03:54:03 2006
+++ gnash/server/impl.cpp       Sun Feb 26 21:44:53 2006
@@ -407,17 +407,7 @@
     delete original_in;
 }
 
-
-
-movie_definition*      create_movie(const char* filename)
-    // Create the movie definition from the specified .swf file.
-{
-    //printf("%s: filename is %s\n",  __PRETTY_FUNCTION__, filename);
-    return create_movie_sub(filename);
-}
-
-
-movie_definition_sub*  create_movie_sub(const char* filename)
+movie_definition* create_movie(const char* filename)
 {
     //printf("%s: filename is %s\n",  __PRETTY_FUNCTION__, filename);
     if (s_opener_function == NULL)
@@ -522,8 +512,8 @@
 //
 
 
-static stringi_hash< smart_ptr<movie_definition_sub> > s_movie_library;
-static hash< movie_definition_sub*, smart_ptr<movie_interface> >       
s_movie_library_inst;
+static stringi_hash< smart_ptr<movie_definition> >     s_movie_library;
+static hash< movie_definition*, smart_ptr<movie_interface> >   
s_movie_library_inst;
 static std::vector<movie_interface*> s_extern_sprites;
 static movie_interface* s_current_root;
 
@@ -584,16 +574,10 @@
     s_movie_library_inst.clear();
 }
 
-movie_definition*      create_library_movie(const char* filename)
-    // Try to load a movie from the given url, if we haven't
-    // loaded it already.  Add it to our library on success, and
-    // return a pointer to it.
-{
-    return create_library_movie_sub(filename);
-}
-
-
-movie_definition_sub*  create_library_movie_sub(const char* filename)
+// Try to load a movie from the given url, if we haven't
+// loaded it already.  Add it to our library on success, and
+// return a pointer to it.
+movie_definition* create_library_movie(const char* filename)
 {
     tu_string  fn(filename);
 
@@ -601,7 +585,7 @@
 
     // Is the movie already in the library?
     {
-       smart_ptr<movie_definition_sub> m;
+       smart_ptr<movie_definition>     m;
        s_movie_library.get(fn, &m);
        if (m != NULL)
            {
@@ -613,7 +597,7 @@
     }
 
     // Try to open a file under the filename.
-    movie_definition_sub*      mov = create_movie_sub(filename);
+    movie_definition* mov = create_movie(filename);
 
     if (mov == NULL)
        {
@@ -628,14 +612,8 @@
     mov->add_ref();
     return mov;
 }
-       
-movie_interface*       create_library_movie_inst(movie_definition* md)
-{
-    return create_library_movie_inst_sub((movie_definition_sub*)md);
-}
-
 
-movie_interface*       create_library_movie_inst_sub(movie_definition_sub* md)
+movie_interface* create_library_movie_inst(movie_definition* md)
 {
     // Is the movie instance already in the library?
     {
@@ -772,12 +750,12 @@
 //
 
 
-void   null_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   null_loader(stream* in, int tag_type, movie_definition* m)
     // Silently ignore the contents of this tag.
 {
 }
 
-void   frame_label_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   frame_label_loader(stream* in, int tag_type, movie_definition* m)
     // Label the current frame of m with the name from the stream.
 {
     char*      n = in->read_string();
@@ -812,7 +790,7 @@
 };
 
 
-void   set_background_color_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+void   set_background_color_loader(stream* in, int tag_type, movie_definition* 
m)
 {
     assert(tag_type == 9);
     assert(m);
@@ -859,7 +837,7 @@
 };
 #endif
 
-void   jpeg_tables_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   jpeg_tables_loader(stream* in, int tag_type, movie_definition* m)
     // Load JPEG compression tables that can be used to load
     // images further along in the stream.
 {
@@ -874,7 +852,7 @@
 }
 
 
-void   define_bits_jpeg_loader(stream* in, int tag_type, movie_definition_sub* 
m)
+void   define_bits_jpeg_loader(stream* in, int tag_type, movie_definition* m)
     // A JPEG image without included tables; those should be in an
     // existing jpeg::input object stored in the movie.
 {
@@ -915,7 +893,7 @@
 }
 
 
-void   define_bits_jpeg2_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+void   define_bits_jpeg2_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 21);
                
@@ -1007,7 +985,7 @@
 #endif // TU_CONFIG_LINK_TO_ZLIB
 
 
-void   define_bits_jpeg3_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+void   define_bits_jpeg3_loader(stream* in, int tag_type, movie_definition* m)
     // loads a define_bits_jpeg3 tag. This is a jpeg file with an alpha
     // channel using zlib compression.
 {
@@ -1068,7 +1046,7 @@
 }
 
 
-void   define_bits_lossless_2_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+void   define_bits_lossless_2_loader(stream* in, int tag_type, 
movie_definition* m)
 {
     assert(tag_type == 20 || tag_type == 36);
 
@@ -1316,7 +1294,7 @@
 }
 
 
-void   define_shape_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   define_shape_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 2
           || tag_type == 22
@@ -1333,7 +1311,7 @@
     m->add_character(character_id, ch);
 }
 
-void define_shape_morph_loader(stream* in, int tag_type, movie_definition_sub* 
m)
+void define_shape_morph_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 46);
     Uint16 character_id = in->read_u16();
@@ -1348,7 +1326,7 @@
 //
 
 
-void   define_font_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   define_font_loader(stream* in, int tag_type, movie_definition* m)
     // Load a DefineFont or DefineFont2 tag.
 {
     assert(tag_type == 10 || tag_type == 48);
@@ -1367,7 +1345,7 @@
 }
 
 
-void   define_font_info_loader(stream* in, int tag_type, movie_definition_sub* 
m)
+void   define_font_info_loader(stream* in, int tag_type, movie_definition* m)
     // Load a DefineFontInfo tag.  This adds information to an
     // existing font.
 {
@@ -1765,7 +1743,7 @@
 
 
        
-void   place_object_2_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   place_object_2_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 4 || tag_type == 26);
 
@@ -1783,7 +1761,7 @@
 
 
 
-void   sprite_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   sprite_loader(stream* in, int tag_type, movie_definition* m)
     // Create and initialize a sprite, and add it to the movie.
 {
     assert(tag_type == SWF::DEFINESPRITE); // 39 - DefineSprite
@@ -1806,7 +1784,7 @@
 
 // end_tag doesn't actually need to exist.
 
-void   end_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   end_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 0);
     assert(in->get_position() == in->get_tag_end_position());
@@ -1864,7 +1842,7 @@
 };
 
 
-void   remove_object_2_loader(stream* in, int tag_type, movie_definition_sub* 
m)
+void   remove_object_2_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 5 || tag_type == 28);
 
@@ -1877,7 +1855,7 @@
 }
 
 
-void   button_sound_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   button_sound_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 17);
 
@@ -1889,7 +1867,7 @@
 }
 
 
-void   button_character_loader(stream* in, int tag_type, movie_definition_sub* 
m)
+void   button_character_loader(stream* in, int tag_type, movie_definition* m)
 {
     assert(tag_type == 7 || tag_type == 34);
 
@@ -1909,7 +1887,7 @@
 //
 
 
-void   export_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   export_loader(stream* in, int tag_type, movie_definition* m)
     // Load an export tag (for exposing internal resources of m)
 {
     assert(tag_type == 56);
@@ -1955,7 +1933,7 @@
 //
 
 
-void   import_loader(stream* in, int tag_type, movie_definition_sub* m)
+void   import_loader(stream* in, int tag_type, movie_definition* m)
     // Load an import tag (for pulling in external resources)
 {
     assert(tag_type == 57);
@@ -1966,11 +1944,11 @@
     IF_VERBOSE_PARSE(log_msg("  import: source_url = %s, count = %d\n", 
source_url, count));
 
     // Try to load the source movie into the movie library.
-    movie_definition_sub*      source_movie = NULL;
+    movie_definition*  source_movie = NULL;
 
     if (s_no_recurse_while_loading == false)
        {
-           source_movie = create_library_movie_sub(source_url);
+           source_movie = create_library_movie(source_url);
            if (source_movie == NULL)
                {
                    // Give up on imports.
@@ -1994,7 +1972,7 @@
                {
                    // @@ TODO get rid of this, always use
                    // s_no_recurse_while_loading, change
-                   // create_movie_sub().
+                   // create_movie().
 
                    smart_ptr<resource> res = 
source_movie->get_exported_resource(symbol_name);
                    if (res == NULL)
Index: gnash/server/impl.h
diff -u gnash/server/impl.h:1.12 gnash/server/impl.h:1.13
--- gnash/server/impl.h:1.12    Sat Feb 25 03:54:03 2006
+++ gnash/server/impl.h Sun Feb 26 21:44:53 2006
@@ -52,44 +52,6 @@
 
        void save_extern_movie(movie_interface* m);
 
-       /// Extra internal interfaces added to movie_definition
-       struct movie_definition_sub : public movie_definition
-       // @@@ why not adding to movie_definition instead ?
-       {
-               virtual const std::vector<execute_tag*>&        
get_playlist(int frame_number) = 0;
-               virtual const std::vector<execute_tag*>*        
get_init_actions(int frame_number) = 0;
-               virtual smart_ptr<resource>     get_exported_resource(const 
tu_string& symbol) = 0;
-               virtual character_def*  get_character_def(int id) = 0;
-
-               virtual bool    get_labeled_frame(const char* label, int* 
frame_number) = 0;
-
-               // For use during creation.
-               virtual int     get_loading_frame() const = 0;
-               virtual void    add_character(int id, character_def* ch) = 0;
-               virtual void    add_font(int id, font* ch) = 0;
-               virtual font*   get_font(int id) = 0;
-               virtual void    add_execute_tag(execute_tag* c) = 0;
-               virtual void    add_init_action(int sprite_id, execute_tag* c) 
= 0;
-               virtual void    add_frame_name(const char* name) = 0;
-               virtual void    set_jpeg_loader(jpeg::input* j_in) = 0;
-               virtual jpeg::input*    get_jpeg_loader() = 0;
-               virtual bitmap_character_def*   get_bitmap_character(int 
character_id) = 0;
-               virtual void    add_bitmap_character(int character_id, 
bitmap_character_def* ch) = 0;
-               virtual sound_sample*   get_sound_sample(int character_id) = 0;
-               virtual void    add_sound_sample(int character_id, 
sound_sample* sam) = 0;
-               virtual void    export_resource(const tu_string& symbol, 
resource* res) = 0;
-               virtual void    add_import(const char* source_url, int id, 
const char* symbol_name) = 0;
-               virtual void    add_bitmap_info(bitmap_info* ch) = 0;
-
-               virtual create_bitmaps_flag     get_create_bitmaps() const = 0;
-               virtual create_font_shapes_flag get_create_font_shapes() const 
= 0;
-       };
-
-
-       // For internal use.
-       movie_definition_sub*   create_movie_sub(const char* filename);
-       movie_definition_sub*   create_library_movie_sub(const char* filename);
-       movie_interface*        
create_library_movie_inst_sub(movie_definition_sub* md);
 
 //v for extern movies
 
@@ -653,7 +615,7 @@
        // to call this in order to handle special tag types.
 
        /// Signature of an SWF tag loader
-       typedef void (*loader_function)(stream* input, int tag_type, 
movie_definition_sub* m);
+       typedef void (*loader_function)(stream* input, int tag_type, 
movie_definition* m);
 
        /// Register a tag loader for the given tag
        void    register_tag_loader(int tag_type, loader_function lf);
@@ -662,32 +624,32 @@
        extern hash<int, loader_function> s_tag_loaders;
        
        // Tag loader functions.
-       void    null_loader(stream* in, int tag_type, movie_definition_sub* m);
-       void    set_background_color_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    jpeg_tables_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_bits_jpeg_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_bits_jpeg2_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_bits_jpeg3_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_shape_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_shape_morph_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_font_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_font_info_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_text_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_edit_text_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    place_object_2_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    define_bits_lossless_2_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    sprite_loader(stream* in, int tag_type, movie_definition_sub* 
m);
-       void    end_loader(stream* in, int tag_type, movie_definition_sub* m);
-       void    remove_object_2_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    do_action_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    button_character_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    frame_label_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    export_loader(stream* in, int tag_type, movie_definition_sub* 
m);
-       void    import_loader(stream* in, int tag_type, movie_definition_sub* 
m);
-       void    define_sound_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    start_sound_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    button_sound_loader(stream* in, int tag_type, 
movie_definition_sub* m);
-       void    do_init_action_loader(stream* in, int tag_type, 
movie_definition_sub* m);
+       void    null_loader(stream* in, int tag_type, movie_definition* m);
+       void    set_background_color_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    jpeg_tables_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    define_bits_jpeg_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_bits_jpeg2_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_bits_jpeg3_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_shape_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    define_shape_morph_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_font_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    define_font_info_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_text_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    define_edit_text_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    place_object_2_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    define_bits_lossless_2_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    sprite_loader(stream* in, int tag_type, movie_definition* m);
+       void    end_loader(stream* in, int tag_type, movie_definition* m);
+       void    remove_object_2_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    do_action_loader(stream* in, int tag_type, movie_definition* m);
+       void    button_character_loader(stream* in, int tag_type, 
movie_definition* m);
+       void    frame_label_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    export_loader(stream* in, int tag_type, movie_definition* m);
+       void    import_loader(stream* in, int tag_type, movie_definition* m);
+       void    define_sound_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    start_sound_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    button_sound_loader(stream* in, int tag_type, movie_definition* 
m);
+       void    do_init_action_loader(stream* in, int tag_type, 
movie_definition* m);
        // sound_stream_loader();       // head, head2, block
 
 
Index: gnash/server/morph.cpp
diff -u gnash/server/morph.cpp:1.2 gnash/server/morph.cpp:1.3
--- gnash/server/morph.cpp:1.2  Sat Feb 25 15:27:35 2006
+++ gnash/server/morph.cpp      Sun Feb 26 21:44:53 2006
@@ -72,7 +72,7 @@
        }
 
        void shape_morph_def::read(stream *in, int tag_type, bool with_style,
-                                  movie_definition_sub *m)
+                                  movie_definition*m)
        {
                assert(tag_type == 46);
                int pos = in->get_underlying_stream()->get_position();
@@ -156,7 +156,7 @@
        }
 
        int shape_morph_def::read_shape_record(stream* in,
-                                              movie_definition_sub* m,
+                                              movie_definition* m,
                                               bool start)
        {
                morph_path current_path;
@@ -305,7 +305,7 @@
        {
        }
 
-       morph_fill_style::morph_fill_style(stream* in, movie_definition_sub *m)
+       morph_fill_style::morph_fill_style(stream* in, movie_definition*m)
                :
                m_bitmap_character(0)
        {
@@ -316,7 +316,7 @@
        {
        }
 
-       void morph_fill_style::read(stream* in, movie_definition_sub* m)
+       void morph_fill_style::read(stream* in, movie_definition* m)
        {
                m_type = in->read_u8();
                switch(m_type) {
Index: gnash/server/morph.h
diff -u gnash/server/morph.h:1.2 gnash/server/morph.h:1.3
--- gnash/server/morph.h:1.2    Sat Feb 25 15:27:35 2006
+++ gnash/server/morph.h        Sun Feb 26 21:44:53 2006
@@ -32,12 +32,12 @@
                 virtual ~shape_morph_def();
                 virtual void display(character *instance_info);
                 void read(stream* in, int tag_type, bool with_style,
-                         movie_definition_sub* m);
+                         movie_definition* m);
                virtual void tesselate(float error_tolerance, 
tesselate::trapezoid_accepter *accepter, float ratio) const;
 
         private:
                void read_edge(stream* in, edge& e, float& x, float& y);
-               int read_shape_record(stream* in, movie_definition_sub* m,
+               int read_shape_record(stream* in, movie_definition* m,
                                      bool start);
 
                rect    m_bound_orig, m_bound_target;
Index: gnash/server/morph2.cpp
diff -u gnash/server/morph2.cpp:1.3 gnash/server/morph2.cpp:1.4
--- gnash/server/morph2.cpp:1.3 Sat Feb 25 03:15:51 2006
+++ gnash/server/morph2.cpp     Sun Feb 26 21:44:53 2006
@@ -8,6 +8,7 @@
 
 #include "morph2.h"
 #include "stream.h"
+#include "Movie.h"
 
 
 namespace gnash {
@@ -112,7 +113,7 @@
        }
 
   
-       void    morph2_character_def::read(stream* in, int tag_type, bool 
with_style, movie_definition_sub* md)
+       void    morph2_character_def::read(stream* in, int tag_type, bool 
with_style, movie_definition* md)
        {
                UNUSED(tag_type);
                UNUSED(with_style);
Index: gnash/server/morph2.h
diff -u gnash/server/morph2.h:1.1 gnash/server/morph2.h:1.2
--- gnash/server/morph2.h:1.1   Tue Dec 20 21:01:18 2005
+++ gnash/server/morph2.h       Sun Feb 26 21:44:53 2006
@@ -14,7 +14,7 @@
        {
                morph2_character_def();
                virtual ~morph2_character_def();
-               void    read(stream* in, int tag_type, bool with_style, 
movie_definition_sub* m);
+               void    read(stream* in, int tag_type, bool with_style, 
movie_definition* m);
                virtual void    display(character* inst);
                void lerp_matrix(matrix& t, const matrix& m1, const matrix& m2, 
const float ratio);
 
Index: gnash/server/shape.cpp
diff -u gnash/server/shape.cpp:1.8 gnash/server/shape.cpp:1.9
--- gnash/server/shape.cpp:1.8  Sat Feb 25 03:54:03 2006
+++ gnash/server/shape.cpp      Sun Feb 26 21:44:53 2006
@@ -13,6 +13,7 @@
 #include "render.h"
 #include "stream.h"
 #include "tesselate.h"
+#include "Movie.h"
 
 #include "tu_file.h"
 
@@ -789,7 +790,7 @@
        //
 
 
-       static void     read_fill_styles(std::vector<fill_style>* styles, 
stream* in, int tag_type, movie_definition_sub* m)
+       static void     read_fill_styles(std::vector<fill_style>* styles, 
stream* in, int tag_type, movie_definition* m)
        // Read fill styles, and push them onto the given style array.
        {
                assert(styles);
@@ -862,7 +863,7 @@
        }
 
 
-       void    shape_character_def::read(stream* in, int tag_type, bool 
with_style, movie_definition_sub* m)
+       void    shape_character_def::read(stream* in, int tag_type, bool 
with_style, movie_definition* m)
        {
                if (with_style)
                {
Index: gnash/server/shape.h
diff -u gnash/server/shape.h:1.4 gnash/server/shape.h:1.5
--- gnash/server/shape.h:1.4    Sat Feb 25 03:54:03 2006
+++ gnash/server/shape.h        Sun Feb 26 21:44:53 2006
@@ -150,7 +150,7 @@
                float   get_height_local();
                float   get_width_local();
 
-               void    read(stream* in, int tag_type, bool with_style, 
movie_definition_sub* m);
+               void    read(stream* in, int tag_type, bool with_style, 
movie_definition* m);
                void    display(
                        const matrix& mat,
                        const cxform& cx,
Index: gnash/server/sound.cpp
diff -u gnash/server/sound.cpp:1.2 gnash/server/sound.cpp:1.3
--- gnash/server/sound.cpp:1.2  Fri Jan 27 00:54:38 2006
+++ gnash/server/sound.cpp      Sun Feb 26 21:44:53 2006
@@ -10,6 +10,7 @@
 #include "stream.h"
 #include "impl.h"
 #include "log.h"
+#include "Movie.h"
 
 namespace gnash {
        // Callback interface to host, for handling sounds.  If it's NULL,
@@ -48,7 +49,7 @@
                bool stereo);
 
 
-       void    define_sound_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    define_sound_loader(stream* in, int tag_type, movie_definition* 
m)
        // Load a DefineSound tag.
        {
                assert(tag_type == 14);
@@ -138,7 +139,7 @@
                }
 
 
-               void    read(stream* in, int tag_type, movie_definition_sub* m, 
const sound_sample_impl* sam)
+               void    read(stream* in, int tag_type, movie_definition* m, 
const sound_sample_impl* sam)
                // Initialize this StartSound tag from the stream & given 
sample.
                // Insert ourself into the movie.
                {
@@ -184,7 +185,7 @@
        };
 
 
-       void    start_sound_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    start_sound_loader(stream* in, int tag_type, movie_definition* 
m)
        // Load a StartSound tag.
        {
                assert(tag_type == 15);
@@ -215,7 +216,7 @@
 
 
 // @@ currently not implemented
-//     void    sound_stream_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+//     void    sound_stream_loader(stream* in, int tag_type, movie_definition* 
m)
 //     // Load the various stream-related tags: SoundStreamHead,
 //     // SoundStreamHead2, SoundStreamBlock.
 //     {
Index: gnash/server/styles.cpp
diff -u gnash/server/styles.cpp:1.5 gnash/server/styles.cpp:1.6
--- gnash/server/styles.cpp:1.5 Sat Feb 25 03:15:51 2006
+++ gnash/server/styles.cpp     Sun Feb 26 21:44:53 2006
@@ -11,6 +11,7 @@
 #include "log.h"
 #include "render.h"
 #include "stream.h"
+#include "Movie.h"
 
 namespace gnash {
        //
@@ -50,7 +51,7 @@
        {
        }
 
-       void    fill_style::read(stream* in, int tag_type, 
movie_definition_sub* md)
+       void    fill_style::read(stream* in, int tag_type, movie_definition* md)
        {
                m_type = in->read_u8();
 
Index: gnash/server/styles.h
diff -u gnash/server/styles.h:1.3 gnash/server/styles.h:1.4
--- gnash/server/styles.h:1.3   Sat Feb 25 03:54:03 2006
+++ gnash/server/styles.h       Sun Feb 26 21:44:53 2006
@@ -38,7 +38,7 @@
                fill_style();
                virtual ~fill_style();
 
-               void    read(stream* in, int tag_type, movie_definition_sub* m);
+               void    read(stream* in, int tag_type, movie_definition* m);
                rgba    sample_gradient(int ratio) const;
                gnash::bitmap_info*     create_gradient_bitmap() const;
                virtual void    apply(int fill_side, float ratio) const;
@@ -66,10 +66,10 @@
        struct morph_fill_style : public base_fill_style
        {
                morph_fill_style();
-               morph_fill_style(stream* in, movie_definition_sub* m);
+               morph_fill_style(stream* in, movie_definition* m);
                virtual ~morph_fill_style();
                
-               void read(stream* in, movie_definition_sub* m);
+               void read(stream* in, movie_definition* m);
                rgba sample_gradient(int ratio, float morph);
                bitmap_info* create_gradient_bitmap(float morph) const;
                virtual void apply(int fill_side, float morph) const;
Index: gnash/server/text.cpp
diff -u gnash/server/text.cpp:1.7 gnash/server/text.cpp:1.8
--- gnash/server/text.cpp:1.7   Sat Feb 25 03:54:03 2006
+++ gnash/server/text.cpp       Sun Feb 26 21:44:53 2006
@@ -17,10 +17,11 @@
 #include "render.h"
 #include "textformat.h"
 #include "text.h"
+#include "Movie.h"
 
 namespace gnash {
 
-       void text_style::resolve_font(movie_definition_sub* root_def) const
+       void text_style::resolve_font(movie_definition* root_def) const
        {
                if (m_font == NULL)
                {
@@ -50,7 +51,7 @@
                const matrix& this_mat,
                character* inst,
                const std::vector<text_glyph_record>& records,
-               movie_definition_sub* root_def)
+               movie_definition* root_def)
        {
                static std::vector<fill_style>  s_dummy_style;  // used to pass 
a color on to shape_character::display()
                static std::vector<line_style>  s_dummy_line_style;
@@ -175,7 +176,7 @@
        // 
 
        void text_character_def::read(stream* in, int tag_type,
-                       movie_definition_sub* m)
+                       movie_definition* m)
        {
                assert(m != NULL);
                assert(tag_type == 11 || tag_type == 33);
@@ -296,7 +297,7 @@
 
 
        /// Read a DefineText tag.
-       void    define_text_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    define_text_loader(stream* in, int tag_type, movie_definition* 
m)
        {
                assert(tag_type == 11 || tag_type == 33);
 
@@ -318,7 +319,7 @@
 
        void
        edit_text_character_def::read(stream* in, int tag_type,
-                       movie_definition_sub* m)
+                       movie_definition* m)
        {
                assert(m != NULL);
                assert(tag_type == 37);
@@ -936,7 +937,7 @@
        }
 
 
-       void    define_edit_text_loader(stream* in, int tag_type, 
movie_definition_sub* m)
+       void    define_edit_text_loader(stream* in, int tag_type, 
movie_definition* m)
        // Read a DefineText tag.
        {
                assert(tag_type == 37);
Index: gnash/server/text.h
diff -u gnash/server/text.h:1.3 gnash/server/text.h:1.4
--- gnash/server/text.h:1.3     Sat Feb 25 03:54:03 2006
+++ gnash/server/text.h Sun Feb 26 21:44:53 2006
@@ -57,7 +57,7 @@
                {
                }
 
-               void    resolve_font(movie_definition_sub* root_def) const;
+               void    resolve_font(movie_definition* root_def) const;
        };
 
 
@@ -84,19 +84,19 @@
        ///
        struct text_character_def : public character_def
        {
-               movie_definition_sub*   m_root_def;
+               movie_definition*       m_root_def;
                rect    m_rect;
                matrix  m_matrix;
                std::vector<text_glyph_record>  m_text_glyph_records;
 
-               text_character_def(movie_definition_sub* root_def)
+               text_character_def(movie_definition* root_def)
                        :
                        m_root_def(root_def)
                {
                        assert(m_root_def);
                }
 
-               void read(stream* in, int tag_type, movie_definition_sub* m);
+               void read(stream* in, int tag_type, movie_definition* m);
 
                /// Draw the string.
                void display(character* inst);
@@ -110,7 +110,7 @@
        ///
        struct edit_text_character_def : public character_def
        {
-               movie_definition_sub*   m_root_def;
+               movie_definition*       m_root_def;
                rect                    m_rect;
                tu_string               m_default_name;
                text_format             m_format;
@@ -191,7 +191,7 @@
                float   m_leading;
                tu_string       m_default_text;
 
-               edit_text_character_def(movie_definition_sub* root_def)
+               edit_text_character_def(movie_definition* root_def)
                        :
                        m_root_def(root_def),
                        m_word_wrap(false),
@@ -233,7 +233,7 @@
 
 
                /// Initialize from SWF input stream (tag 37)
-               void read(stream* in, int tag_type, movie_definition_sub* m);
+               void read(stream* in, int tag_type, movie_definition* m);
        };
 
        /// ...
Index: gnash/testsuite/actionscript.all/Makefile.am
diff -u gnash/testsuite/actionscript.all/Makefile.am:1.16 
gnash/testsuite/actionscript.all/Makefile.am:1.17
--- gnash/testsuite/actionscript.all/Makefile.am:1.16   Wed Feb 15 10:34:23 2006
+++ gnash/testsuite/actionscript.all/Makefile.am        Sun Feb 26 21:44:53 2006
@@ -121,14 +121,14 @@
 #  MAKESWF_FLAGS=-DUSE_XTRACE make Whatever.swf
 .as.swf: 
        @if test x"$(MAKESWF)" != x; then \
-         $(MAKESWF) $(MAKESWF_FLAGS) -o $@ $< ; \
+         $(MAKESWF) -DOUTPUT_VERSION=6 -v6 $(MAKESWF_FLAGS) -o $@ $< ; \
        else \
          echo "You need to install Ming to compile"; \
        fi
 
 .as.vswf: 
        @if test x"$(MAKESWF)" != x; then \
-         $(MAKESWF) -DUSE_XTRACE $(MAKESWF_FLAGS) -o $@ $< ; \
+         $(MAKESWF) -DUSE_XTRACE -DOUTPUT_VERSION=6 -v6 $(MAKESWF_FLAGS) -o $@ 
$< ; \
        else \
          echo "You need to install Ming to compile"; \
        fi
Index: gnash/utilities/processor.cpp
diff -u gnash/utilities/processor.cpp:1.4 gnash/utilities/processor.cpp:1.5
--- gnash/utilities/processor.cpp:1.4   Sat Feb 25 03:54:03 2006
+++ gnash/utilities/processor.cpp       Sun Feb 26 21:44:53 2006
@@ -16,6 +16,7 @@
 #include "tu_file.h"
 #include "container.h"
 #include "gnash.h"
+#include "Movie.h"
 
 bool gofast = false;           // FIXME: this flag gets set based on
                                // an XML message written using




reply via email to

[Prev in Thread] Current Thread [Next in Thread]