[Top][All Lists]
[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