gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ./ChangeLog server/movie_def_impl.cpp ser...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ./ChangeLog server/movie_def_impl.cpp ser...
Date: Tue, 09 May 2006 16:07:52 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         
Changes by:     Sandro Santilli <address@hidden>        06/05/09 16:07:52

Modified files:
        .              : ChangeLog 
        server         : movie_def_impl.cpp sprite_definition.cpp 
                         sprite_definition.h 
        server/swf     : tag_loaders.cpp tag_loaders.h 

Log message:
        modified sprite_definition constructor to automatically read the SWF 
stream.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.282&tr2=1.283&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/movie_def_impl.cpp.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/sprite_definition.cpp.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/sprite_definition.h.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/swf/tag_loaders.cpp.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/swf/tag_loaders.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.282 gnash/ChangeLog:1.283
--- gnash/ChangeLog:1.282       Tue May  9 15:34:15 2006
+++ gnash/ChangeLog     Tue May  9 16:07:52 2006
@@ -1,5 +1,8 @@
 2006-05-09 Sandro Santilli <address@hidden>
 
+       * server/sprite_definition.h, server/sprite_definition.cpp,
+       server/impl.cpp: modified sprite_definition constructor to
+       automatically read the SWF stream.
        * server/swf: new swf directory for SWF parsing related classes.
        * server/swf/TagLoadersTable.{h,cpp}: new class modeling a
        table of tag loaders.
Index: gnash/server/movie_def_impl.cpp
diff -u gnash/server/movie_def_impl.cpp:1.5 gnash/server/movie_def_impl.cpp:1.6
--- gnash/server/movie_def_impl.cpp:1.5 Tue May  9 15:34:16 2006
+++ gnash/server/movie_def_impl.cpp     Tue May  9 16:07:52 2006
@@ -56,6 +56,7 @@
 #include "bitmap_character_def.h"
 #include "smart_ptr.h"
 #include "swf/TagLoadersTable.h"
+#include "execute_tag.h"
 
 using namespace std;
 
Index: gnash/server/sprite_definition.cpp
diff -u gnash/server/sprite_definition.cpp:1.4 
gnash/server/sprite_definition.cpp:1.5
--- gnash/server/sprite_definition.cpp:1.4      Tue May  9 15:34:16 2006
+++ gnash/server/sprite_definition.cpp  Tue May  9 16:07:52 2006
@@ -79,10 +79,12 @@
        }
 }
 
+/*private*/
+// only called from constructors
 void
 sprite_definition::read(stream* in)
 {
-       int     tag_end = in->get_tag_end_position();
+       int tag_end = in->get_tag_end_position();
 
        m_frame_count = in->read_u16();
 
@@ -152,7 +154,7 @@
        m_named_frames[n] = m_loading_frame;
 }
 
-sprite_definition::sprite_definition(movie_definition* m)
+sprite_definition::sprite_definition(movie_definition* m, stream* in)
        :
        _tag_loaders(s_tag_loaders),  // FIXME: use a class-static 
TagLoadersTable for sprite_definition
        m_movie_def(m),
@@ -160,6 +162,7 @@
        m_loading_frame(0)
 {
        assert(m_movie_def);
+       read(in);
 }
 
 
Index: gnash/server/sprite_definition.h
diff -u gnash/server/sprite_definition.h:1.5 
gnash/server/sprite_definition.h:1.6
--- gnash/server/sprite_definition.h:1.5        Tue May  9 15:34:16 2006
+++ gnash/server/sprite_definition.h    Tue May  9 16:07:52 2006
@@ -61,25 +61,28 @@
 
 public:
 
-       sprite_definition(movie_definition* m);
-
-       /// Destructor, releases playlist data
-       ~sprite_definition();
-
        /// \brief
        /// Read the sprite info from input stream.
        //
-       /// Consists of a series of tags.
+       /// A sprite definition consists of a series control tags.
        ///
-       // @@ Could be another constructor
-       void read(stream* in);
+       /// @param m 
+       sprite_definition(movie_definition* m, stream* in);
+
+       /// Destructor, releases playlist data
+       ~sprite_definition();
 
 private:
 
-       /// Tags loader table
+       void read(stream* in);
+
+       /// Tags loader table.
+       //
+       /// TODO: make it a static member, specific to sprite_definition
        SWF::TagLoadersTable& _tag_loaders;
 
        /// Top-level movie (the one with a character_def)
+       /// (or is it just the parent?)
        movie_definition* m_movie_def;
 
        /// movie control events for each frame.
Index: gnash/server/swf/tag_loaders.cpp
diff -u gnash/server/swf/tag_loaders.cpp:1.1 
gnash/server/swf/tag_loaders.cpp:1.2
--- gnash/server/swf/tag_loaders.cpp:1.1        Tue May  9 15:34:16 2006
+++ gnash/server/swf/tag_loaders.cpp    Tue May  9 16:07:52 2006
@@ -1098,25 +1098,28 @@
     m->add_execute_tag(ch);
 }
 
-
-
-
-
-
-
-void   sprite_loader(stream* in, tag_type tag, movie_definition* m)
-    // Create and initialize a sprite, and add it to the movie.
+// Create and initialize a sprite, and add it to the movie.
+void
+sprite_loader(stream* in, tag_type tag, movie_definition* m)
 {
-    assert(tag == SWF::DEFINESPRITE); // 39 - DefineSprite
+       assert(tag == SWF::DEFINESPRITE); // 39 - DefineSprite
                 
-    int        character_id = in->read_u16();
+       int     character_id = in->read_u16();
+
+       IF_VERBOSE_PARSE(log_msg("  sprite\n  char id = %d\n", character_id));
 
-    IF_VERBOSE_PARSE(log_msg("  sprite\n  char id = %d\n", character_id));
+       /// A DEFINESPRITE tag as part of a DEFINESPRITE
+       /// would be a malformed SWF
+       if ( ! dynamic_cast<movie_def_impl>(m) )
+       {
+               log_error("Malformed SWF (nested DEFINESPRITE tags)");
+       }
 
-    sprite_definition* ch = new sprite_definition(m);  // @@ combine 
sprite_definition with movie_def_impl
-    ch->read(in);
+       // will automatically read the sprite
+       sprite_definition* ch = new sprite_definition(m, in);
+       //ch->read(in);
 
-    m->add_character(character_id, ch);
+       m->add_character(character_id, ch);
 }
 
 
Index: gnash/server/swf/tag_loaders.h
diff -u gnash/server/swf/tag_loaders.h:1.1 gnash/server/swf/tag_loaders.h:1.2
--- gnash/server/swf/tag_loaders.h:1.1  Tue May  9 15:34:16 2006
+++ gnash/server/swf/tag_loaders.h      Tue May  9 16:07:52 2006
@@ -101,6 +101,10 @@
 
 void   define_bits_lossless_2_loader(stream*, tag_type, movie_definition*);
 
+/// Create and initialize a sprite, and add it to the movie. 
+//
+/// Handles a SWF::DEFINESPRITE tag
+///
 void   sprite_loader(stream*, tag_type, movie_definition*);
 
 void   end_loader(stream*, tag_type, movie_definition*);




reply via email to

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