CVSROOT: /sources/gnash Module name: gnash Changes by: Zou Lunkai <zoulunkai> 07/12/12 06:16:31
Modified files: . : ChangeLog server : button_character_instance.cpp server/swf : PlaceObject2Tag.cpp Log message: * server/button_character_instance.cpp: stagePlacementCallback(), don't forget to set charcter depth and id. * server/swf/PlaceObject2Tag.cpp: readPlaceObject2() and readPlaceObject3(), replace 8 read_bit() with one read_u8(). CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5139&r2=1.5140 http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.67&r2=1.68 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/PlaceObject2Tag.cpp?cvsroot=gnash&r1=1.25&r2=1.26 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5139 retrieving revision 1.5140 diff -u -b -r1.5139 -r1.5140 --- ChangeLog 12 Dec 2007 04:31:04 -0000 1.5139 +++ ChangeLog 12 Dec 2007 06:16:30 -0000 1.5140 @@ -1,3 +1,10 @@ +2007-12-12 Zou Lunkai <[EMAIL PROTECTED]> + + * server/button_character_instance.cpp: stagePlacementCallback(), don't + forget to set charcter depth and id. + * server/swf/PlaceObject2Tag.cpp: readPlaceObject2() and readPlaceObject3(), + replace 8 read_bit() with one read_u8(). + 2007-12-12 Sandro Santilli <[EMAIL PROTECTED]> * server/asobj/System.cpp: add System.capabilities properties Index: server/button_character_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v retrieving revision 1.67 retrieving revision 1.68 diff -u -b -r1.67 -r1.68 --- server/button_character_instance.cpp 10 Dec 2007 20:17:16 -0000 1.67 +++ server/button_character_instance.cpp 12 Dec 2007 06:16:31 -0000 1.68 @@ -801,6 +801,7 @@ button_character_instance::stagePlacementCallback() { // Register this button instance as a live character + // do we need this??? _vm.getRoot().addLiveChar(this); size_t r, r_num = m_def->m_button_records.size(); @@ -810,26 +811,29 @@ { button_record& bdef = m_def->m_button_records[r]; - const matrix& mat = m_def->m_button_records[r].m_button_matrix; - const cxform& cx = m_def->m_button_records[r].m_button_cxform; + const matrix& mat = bdef.m_button_matrix; + const cxform& cx = bdef.m_button_cxform; + int ch_depth = bdef.m_button_layer; + int ch_id = bdef.m_character_id; - // we don't need an id here, do we ? - boost::intrusive_ptr<character> ch = bdef.m_character_def->create_character_instance(this, 0); - ch->stagePlacementCallback(); // give this character life (TODO: they aren't on stage, are them ?) - m_record_character[r] = ch; + boost::intrusive_ptr<character> ch = bdef.m_character_def->create_character_instance(this, ch_id); ch->set_matrix(mat); ch->set_cxform(cx); + ch->set_depth(ch_depth); ch->set_parent(this); - if (ch->get_name().empty() && ch->wantsInstanceName()) { + if (ch->get_name().empty() && ch->wantsInstanceName()) + { std::string instance_name = getNextUnnamedInstanceName(); ch->set_name(instance_name.c_str()); } + m_record_character[r] = ch; + + ch->stagePlacementCallback(); // give this character life (TODO: they aren't on stage, are them ?) } - // does a CONSTRUCT event even exist ? - // We'll not call it here.. + // there's no INITIALIZE/CONSTRUCT/LOAD/ENTERFRAME/UNLOAD events for buttons } #ifdef GNASH_USE_GC Index: server/swf/PlaceObject2Tag.cpp =================================================================== RCS file: /sources/gnash/gnash/server/swf/PlaceObject2Tag.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -u -b -r1.25 -r1.26 --- server/swf/PlaceObject2Tag.cpp 11 Dec 2007 15:33:10 -0000 1.25 +++ server/swf/PlaceObject2Tag.cpp 12 Dec 2007 06:16:31 -0000 1.26 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: PlaceObject2Tag.cpp,v 1.25 2007/12/11 15:33:10 strk Exp $ */ +/* $Id: PlaceObject2Tag.cpp,v 1.26 2007/12/12 06:16:31 zoulunkai Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -219,14 +219,17 @@ { in->align(); - bool has_actions = in->read_bit(); - bool has_clip_bracket = in->read_bit(); - bool has_name = in->read_bit(); - bool has_ratio = in->read_bit(); - bool has_cxform = in->read_bit(); - bool has_matrix = in->read_bit(); - bool has_char = in->read_bit(); - bool flag_move = in->read_bit(); + // PlaceObject2 specific flags + uint8_t has_flags2 = in->read_u8(); + + bool has_actions = has_flags2 & (1 << 7); + bool has_clip_depth = has_flags2 & (1 << 6); + bool has_name = has_flags2 & (1 << 5); + bool has_ratio = has_flags2 & (1 << 4); + bool has_cxform = has_flags2 & (1 << 3); + bool has_matrix = has_flags2 & (1 << 2); + bool has_char = has_flags2 & (1 << 1); + bool flag_move = has_flags2 & (1 << 0); m_depth = in->read_u16()+character::staticDepthOffset; @@ -251,7 +254,7 @@ if (has_name) m_name = in->read_string(); - if (has_clip_bracket) + if (has_clip_depth) m_clip_depth = in->read_u16()+character::staticDepthOffset; else m_clip_depth = character::noClipDepthValue; @@ -296,43 +299,44 @@ } if ( has_ratio ) log_parse(_(" ratio: %d"), m_ratio); if ( has_name ) log_parse(_(" name = %s"), m_name ? m_name : "<null>"); - if ( has_clip_bracket ) log_parse(_(" clip_depth = %d (%d)"), m_clip_depth, m_clip_depth-character::staticDepthOffset); + if ( has_clip_depth ) log_parse(_(" clip_depth = %d (%d)"), m_clip_depth, m_clip_depth-character::staticDepthOffset); log_parse(_(" m_place_type: %d"), m_place_type); ); //log_msg("place object at depth %i", m_depth); } -// read SWF::PLACEOBJECT4 +// read SWF::PLACEOBJECT3 void PlaceObject2Tag::readPlaceObject3(stream* in, int movie_version) { in->align(); + // PlaceObject2 specific flags + uint8_t has_flags2 = in->read_u8(); + + bool has_actions = has_flags2 & (1 << 7); + bool has_clip_depth = has_flags2 & (1 << 6); + bool has_name = has_flags2 & (1 << 5); + bool has_ratio = has_flags2 & (1 << 4); + bool has_cxform = has_flags2 & (1 << 3); + bool has_matrix = has_flags2 & (1 << 2); + bool has_char = has_flags2 & (1 << 1); + bool flag_move = has_flags2 & (1 << 0); + + // PlaceObject3 specific flags, first 3 bits are unused + uint8_t has_flags3 = in->read_u8(); + + bool hasImage = has_flags3 & (1 << 4); + bool hasClassName = has_flags3 & (1 << 3); + bool has_bitmap_caching = has_flags3 & (1 << 2); + bool has_blend_mode = has_flags3 & (1 << 1); + bool has_filters = has_flags3 & (1 << 0); + uint8_t blend_mode = 0; uint8_t bitmask = 0; - bool has_bitmap_caching = false; - bool has_blend_mode = false; - bool has_filters = false; std::string className; - bool has_actions = in->read_bit(); - bool has_clip_bracket = in->read_bit(); - bool has_name = in->read_bit(); - bool has_ratio = in->read_bit(); - bool has_cxform = in->read_bit(); - bool has_matrix = in->read_bit(); - bool has_char = in->read_bit(); - bool flag_move = in->read_bit(); - - in->align(); - in->read_uint(3); // Ignore on purpose. - bool hasImage = in->read_bit(); - bool hasClassName = in->read_bit(); - has_bitmap_caching = in->read_bit(); - has_blend_mode = in->read_bit(); - has_filters = in->read_bit(); - m_depth = in->read_u16()+character::staticDepthOffset; if (has_char) @@ -365,7 +369,7 @@ if (has_name) m_name = in->read_string(); - if (has_clip_bracket) + if (has_clip_depth) m_clip_depth = in->read_u16()+character::staticDepthOffset; else m_clip_depth = character::noClipDepthValue; @@ -429,7 +433,7 @@ if ( has_ratio ) log_parse(_(" ratio: %d"), m_ratio); if ( has_name ) log_parse(_(" name = %s"), m_name ? m_name : "<null>"); if ( hasClassName ) log_parse(_(" class name = %s"), className.c_str()); - if ( has_clip_bracket ) log_parse(_(" clip_depth = %d (%d)"), m_clip_depth, m_clip_depth-character::staticDepthOffset); + if ( has_clip_depth ) log_parse(_(" clip_depth = %d (%d)"), m_clip_depth, m_clip_depth-character::staticDepthOffset); log_parse(_(" m_place_type: %d"), m_place_type); ); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit