gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/parser/button_character_...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/parser/button_character_...
Date: Tue, 12 Feb 2008 12:28:08 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/02/12 12:28:08

Modified files:
        .              : ChangeLog 
        server/parser  : button_character_def.cpp button_character_def.h 

Log message:
        properly parse button records with filters and blend mode. Fixes bug 
#22094.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5621&r2=1.5622
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.cpp?cvsroot=gnash&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.h?cvsroot=gnash&r1=1.25&r2=1.26

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5621
retrieving revision 1.5622
diff -u -b -r1.5621 -r1.5622
--- ChangeLog   12 Feb 2008 12:03:10 -0000      1.5621
+++ ChangeLog   12 Feb 2008 12:28:07 -0000      1.5622
@@ -1,5 +1,10 @@
 2008-02-12 Sandro Santilli <address@hidden>
 
+       * server/parser/button_character_def.{cpp,h}: properly parse button
+         records with filters and blend mode. Fixes bug #22094.
+
+2008-02-12 Sandro Santilli <address@hidden>
+
        * server/parser/button_character_def.cpp: print state info for
          button records (debuggin).
 

Index: server/parser/button_character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- server/parser/button_character_def.cpp      12 Feb 2008 12:03:10 -0000      
1.28
+++ server/parser/button_character_def.cpp      12 Feb 2008 12:28:08 -0000      
1.29
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: button_character_def.cpp,v 1.28 2008/02/12 12:03:10 strk Exp $ */
+/* $Id: button_character_def.cpp,v 1.29 2008/02/12 12:28:08 strk Exp $ */
 
 // Based on the public domain work of Thatcher Ulrich <address@hidden> 2003
 
@@ -27,6 +27,7 @@
 #include "stream.h" // for read()
 #include "movie_definition.h"
 #include "action_buffer.h"
+#include "filter_factory.h"
 
 
 namespace gnash {
@@ -110,9 +111,8 @@
        // Upper 4 bits are:
        //
        //   ButtonReserved = readBits (f, 2);
-       //   ButtonHasBlendMode = readBits(f, 1);
-       //   ButtonHasFilterList = readBits(f, 1);
-       //
+       bool buttonHasBlendMode = flags & (1<<5); 
+       bool buttonHasFilterList = flags & (1<<4);
        m_hit_test = flags & (1<<3); // 8 ? true : false;
        m_down     = flags & (1<<2); // 4 ? true : false;
        m_over     = flags & (1<<1); // 2 ? true : false;
@@ -167,6 +167,28 @@
                m_button_cxform.read_rgba(in);
        }
 
+       if ( buttonHasFilterList )
+       {
+               filter_factory::read(*in, true, &_filters);
+               static bool warned=false;
+               if ( ! warned )
+               {
+                       log_unimpl("Button filters"); 
+                       warned=true;
+               }
+       }
+
+       if ( buttonHasBlendMode )
+       {
+               _blendMode = in->read_u8();
+               static bool warned=false;
+               if ( ! warned )
+               {
+                       log_unimpl("Button blend mode");
+                       warned=true;
+               }
+       }
+
        return true;
 }
 

Index: server/parser/button_character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- server/parser/button_character_def.h        16 Jan 2008 11:31:08 -0000      
1.25
+++ server/parser/button_character_def.h        12 Feb 2008 12:28:08 -0000      
1.26
@@ -16,8 +16,10 @@
 #include "matrix.h" // for composition
 #include "cxform.h" // for composition
 #include "action_buffer.h" // for composition of button_action
+#include "filter_factory.h" // for Filters (composition of button_record)
 
 #include <boost/scoped_ptr.hpp>
+#include <boost/cstdint.hpp> // for boost::uint64_t typedef
 
 #ifndef UNUSED
 #define UNUSED(x) ((x) = (x))
@@ -34,6 +36,22 @@
 class button_record
 {
 
+private:
+
+       /// SWF8 and above can have a number of filters
+       /// associated with button records
+       //
+       /// Currently unused by Gnash.
+       ///
+       Filters _filters;
+
+       /// SWF8 and above can have a blend mode
+       /// associated with button records.
+       //
+       /// Currently unused by Gnash.
+       ///
+       boost::uint8_t _blendMode;
+
 // TODO: make private, provide accessors 
 public:
 
@@ -66,6 +84,8 @@
        /// @param endPos
        ///     Last stream offset available for a valid read
        ///
+       /// TODO: take the stream by ref, not pointer
+       ///
        bool    read(stream* in, int tag_type, movie_definition* m, unsigned 
long endPos);
 
        /// Return true if the button_record is valid




reply via email to

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