Benjamin Otte
2007-Jul-26 20:28 UTC
[Swfdec] 5 commits - doc/Makefile.am doc/swfdec-sections.txt libswfdec/Makefile.am libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_player_as.c
doc/Makefile.am | 1 doc/swfdec-sections.txt | 1 libswfdec/Makefile.am | 8 ++ libswfdec/swfdec_as_object.c | 58 +++++++++++++++------ libswfdec/swfdec_as_object.h | 4 + libswfdec/swfdec_initialize.as | 7 ++ libswfdec/swfdec_initialize.h | 110 ++++++++++++++++++++--------------------- libswfdec/swfdec_player_as.c | 78 ++++++++++++++++++++++++----- 8 files changed, 182 insertions(+), 85 deletions(-) New commits: diff-tree 13033450e2eb8c051d53c6a17a7aa11b88daad9e (from 4b9595646109aa01417c7331d582bcff5e2ca6cf) Author: Benjamin Otte <otte at gnome.org> Date: Thu Jul 26 21:35:57 2007 +0200 initialize Stage using ASSetNativeAccessor This allows using addProperty in Flash 5 diff --git a/libswfdec/swfdec_initialize.as b/libswfdec/swfdec_initialize.as index c922016..6012fbb 100644 --- a/libswfdec/swfdec_initialize.as +++ b/libswfdec/swfdec_initialize.as @@ -17,6 +17,10 @@ * Boston, MA 02110-1301 USA */ +/*** GENERAL ***/ + +ASSetNativeAccessor = ASnative (4, 1); + /*** ASBROADCASTER ***/ function AsBroadcaster () { }; @@ -61,4 +65,5 @@ AsBroadcaster.initialize (Mouse); /*** STAGE ***/ Stage = new Object (); -Stage.addProperty ("scaleMode", ASnative (666, 1), ASnative (666, 2)); +ASSetNativeAccessor (Stage, 666, "scaleMode", 1); + diff --git a/libswfdec/swfdec_initialize.h b/libswfdec/swfdec_initialize.h index 2660c64..c8799fb 100644 --- a/libswfdec/swfdec_initialize.h +++ b/libswfdec/swfdec_initialize.h @@ -2,61 +2,61 @@ /* compiled from swfdec_initialize.as */ const unsigned char swfdec_initialize[] = { - 0x88, 0xFA, 0x00, 0x19, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, - 0x65, 0x72, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x00, 0x41, 0x53, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x00, 0x61, 0x64, 0x64, - 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x74, 0x68, 0x69, 0x73, 0x00, 0x78, 0x00, - 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x5F, - 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x70, 0x75, 0x73, 0x68, 0x00, 0x6C, - 0x00, 0x69, 0x00, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, - 0x00, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x00, 0x6F, 0x00, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2C, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, - 0x2C, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x2C, - 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, - 0x50, 0x72, 0x6F, 0x70, 0x46, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x4D, 0x6F, 0x75, 0x73, 0x65, 0x00, - 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x73, 0x68, 0x6F, 0x77, 0x00, 0x68, 0x69, 0x64, 0x65, - 0x00, 0x53, 0x74, 0x61, 0x67, 0x65, 0x00, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x4D, 0x6F, 0x64, 0x65, - 0x00, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x79, 0x00, 0x9B, 0x12, 0x00, - 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x01, 0x07, 0x0C, 0x00, - 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x02, 0x3D, 0x4F, - 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x03, 0x9B, 0x07, 0x00, 0x00, 0x01, - 0x00, 0x78, 0x00, 0x3C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x05, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, - 0x00, 0x00, 0x00, 0x08, 0x04, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x06, 0x52, 0x17, 0x96, 0x02, 0x00, - 0x08, 0x05, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x1C, 0x96, 0x02, - 0x00, 0x08, 0x07, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x08, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, - 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x06, 0x9B, 0x07, 0x00, - 0x00, 0x01, 0x00, 0x78, 0x00, 0x8F, 0x00, 0x96, 0x04, 0x00, 0x08, 0x09, 0x08, 0x04, 0x1C, 0x96, - 0x02, 0x00, 0x08, 0x07, 0x4E, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x41, 0x96, 0x07, 0x00, 0x08, - 0x0A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x02, 0x00, 0x08, - 0x0A, 0x4C, 0x1C, 0x50, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, - 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x48, 0x12, 0x9D, 0x02, 0x00, 0x42, 0x00, 0x96, 0x02, - 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x05, + 0x88, 0x02, 0x01, 0x19, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x4E, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x00, 0x41, 0x53, 0x6E, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x00, + 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x00, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x74, 0x68, 0x69, + 0x73, 0x00, 0x78, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, + 0x65, 0x72, 0x00, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x70, 0x75, + 0x73, 0x68, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x73, 0x70, + 0x6C, 0x69, 0x63, 0x65, 0x00, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x00, + 0x6F, 0x00, 0x41, 0x72, 0x72, 0x61, 0x79, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, + 0x65, 0x6E, 0x65, 0x72, 0x2C, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, + 0x6E, 0x65, 0x72, 0x2C, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x41, + 0x53, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6F, 0x70, 0x46, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x4D, 0x6F, + 0x75, 0x73, 0x65, 0x00, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x73, 0x68, 0x6F, 0x77, 0x00, + 0x68, 0x69, 0x64, 0x65, 0x00, 0x53, 0x74, 0x61, 0x67, 0x65, 0x00, 0x73, 0x63, 0x61, 0x6C, 0x65, + 0x4D, 0x6F, 0x64, 0x65, 0x00, 0x9B, 0x12, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x13, 0x00, 0x08, 0x00, 0x07, + 0x01, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, + 0x3D, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x02, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x03, 0x07, 0x0C, 0x00, + 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, + 0x96, 0x02, 0x00, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x9B, 0x07, 0x00, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x3C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, + 0x00, 0x00, 0x00, 0x08, 0x05, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x52, 0x17, 0x96, 0x02, 0x00, + 0x08, 0x06, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x05, 0x1C, 0x96, 0x02, + 0x00, 0x08, 0x08, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x09, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, + 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x9B, 0x07, 0x00, + 0x00, 0x01, 0x00, 0x78, 0x00, 0x8F, 0x00, 0x96, 0x04, 0x00, 0x08, 0x0A, 0x08, 0x05, 0x1C, 0x96, + 0x02, 0x00, 0x08, 0x08, 0x4E, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x41, 0x96, 0x07, 0x00, 0x08, + 0x0B, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x02, 0x00, 0x08, + 0x0B, 0x4C, 0x1C, 0x50, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0A, + 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x4E, 0x48, 0x12, 0x9D, 0x02, 0x00, 0x42, 0x00, 0x96, 0x02, + 0x00, 0x08, 0x0A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x1C, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x23, 0x00, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, - 0x08, 0x0A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, - 0x00, 0x08, 0x0C, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E, 0x99, 0x02, 0x00, 0x9C, 0xFF, - 0x96, 0x02, 0x00, 0x05, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, - 0x08, 0x0D, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x6F, 0x00, 0x75, 0x00, 0x96, 0x02, 0x00, 0x08, - 0x0E, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x01, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, - 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x02, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, - 0x96, 0x04, 0x00, 0x08, 0x03, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x03, 0x4E, 0x4F, 0x96, - 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x06, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, - 0x08, 0x06, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x09, 0x00, 0x08, 0x07, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x40, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x08, 0x0E, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x11, 0x3D, - 0x17, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x1C, 0x96, 0x07, - 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x11, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x08, 0x12, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0x40, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x13, - 0x00, 0x08, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x13, 0x00, 0x08, - 0x15, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, - 0x08, 0x02, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x12, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0D, 0x52, 0x17, 0x96, 0x09, 0x00, 0x08, - 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0x40, 0x1D, 0x96, 0x11, 0x00, 0x07, 0x02, 0x00, - 0x00, 0x00, 0x07, 0x9A, 0x02, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x02, 0x3D, 0x96, - 0x11, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x9A, 0x02, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, - 0x00, 0x08, 0x02, 0x3D, 0x96, 0x09, 0x00, 0x08, 0x17, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x16, - 0x1C, 0x96, 0x02, 0x00, 0x08, 0x18, 0x52, 0x17, 0x00 + 0x08, 0x0B, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x1C, 0x96, 0x02, + 0x00, 0x08, 0x0D, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E, 0x99, 0x02, 0x00, 0x9C, 0xFF, + 0x96, 0x02, 0x00, 0x05, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, + 0x08, 0x0E, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x6F, 0x00, 0x75, 0x00, 0x96, 0x02, 0x00, 0x08, + 0x0F, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x03, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, + 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x1C, + 0x96, 0x04, 0x00, 0x08, 0x04, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x4F, 0x96, + 0x02, 0x00, 0x08, 0x0F, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x07, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, + 0x08, 0x07, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x1C, 0x96, 0x09, 0x00, 0x08, 0x08, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x40, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, + 0x08, 0x11, 0x08, 0x0F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x3D, + 0x17, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x02, 0x1C, 0x96, 0x07, + 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x12, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x08, 0x13, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x40, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x13, + 0x00, 0x08, 0x15, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, + 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x13, 0x00, 0x08, + 0x16, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x08, 0x02, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x52, 0x17, 0x96, 0x09, 0x00, 0x08, + 0x17, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x40, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x08, 0x18, 0x07, 0x9A, 0x02, 0x00, 0x00, 0x08, 0x17, 0x1C, 0x96, 0x07, 0x00, 0x07, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x00 }; diff-tree 4b9595646109aa01417c7331d582bcff5e2ca6cf (from a55dc2529b23ba135fad711e623d307829989996) Author: Benjamin Otte <otte at gnome.org> Date: Thu Jul 26 21:34:32 2007 +0200 implement ASSetNativeAccessor diff --git a/libswfdec/swfdec_player_as.c b/libswfdec/swfdec_player_as.c index 3da2083..f480226 100644 --- a/libswfdec/swfdec_player_as.c +++ b/libswfdec/swfdec_player_as.c @@ -21,15 +21,20 @@ #include "config.h" #endif +/* NB: include this first, it redefines SWFDEC_AS_NATIVE */ +#include "swfdec_asnative.h" + #include "swfdec_player_internal.h" #include "swfdec_as_function.h" #include "swfdec_as_native_function.h" #include "swfdec_as_object.h" #include "swfdec_as_strings.h" -#include "swfdec_asnative.h" #include "swfdec_debug.h" #include "swfdec_internal.h" #include "swfdec_interval.h" +/* FIXME: to avoid duplicate definitions */ +#undef SWFDEC_AS_NATIVE +#define SWFDEC_AS_NATIVE(x, y, func) /*** INTERVALS ***/ @@ -90,29 +95,80 @@ swfdec_player_clearInterval (SwfdecAsCon swfdec_interval_remove (player, id); } +/*** VARIOUS ***/ + +static SwfdecAsFunction * +swfdec_get_asnative (SwfdecAsContext *cx, guint x, guint y) +{ + guint i; + + for (i = 0; native_funcs[i].func != NULL; i++) { + if (native_funcs[i].x == x && native_funcs[i].y == y) { + return swfdec_as_native_function_new (cx, native_funcs[i].name, + native_funcs[i].func, 0); + } + } + return NULL; +} + static void swfdec_player_ASnative (SwfdecAsContext *cx, SwfdecAsObject *obj, guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval) { - guint i, x, y; + SwfdecAsFunction *func; + guint x, y; x = swfdec_as_value_to_integer (cx, &argv[0]); y = swfdec_as_value_to_integer (cx, &argv[1]); - for (i = 0; native_funcs[i].func != NULL; i++) { - if (native_funcs[i].x == x && native_funcs[i].y == y) { - SwfdecAsFunction *func = swfdec_as_native_function_new (cx, native_funcs[i].name, - native_funcs[i].func, 0); - if (func) - SWFDEC_AS_VALUE_SET_OBJECT (rval, SWFDEC_AS_OBJECT (func)); + func = swfdec_get_asnative (cx, x, y); + if (func) { + SWFDEC_AS_VALUE_SET_OBJECT (rval, SWFDEC_AS_OBJECT (func)); + } else { + SWFDEC_FIXME ("ASnative for %u %u missing", x, y); + } +} + +SWFDEC_AS_NATIVE (4, 1, ASSetNativeAccessor) +void +ASSetNativeAccessor (SwfdecAsContext *cx, SwfdecAsObject *object, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval) +{ + SwfdecAsFunction *get, *set; + SwfdecAsObject *target; + const char *s; + char **names; + guint i, x, y; + + if (argc < 3) + return; + + target = swfdec_as_value_to_object (cx, &argv[0]); + x = swfdec_as_value_to_integer (cx, &argv[1]); + s = swfdec_as_value_to_string (cx, &argv[2]); + if (argc > 3) + y = swfdec_as_value_to_integer (cx, &argv[3]); + else + y = 0; + names = g_strsplit (s, ",", -1); + for (i = 0; names[i]; i++) { + s = names[i]; + if (s[0] >= '0' && s[0] <= '9') { + SWFDEC_FIXME ("implement the weird numbers"); + s++; + } + get = swfdec_get_asnative (cx, x, y++); + set = swfdec_get_asnative (cx, x, y++); + if (get == NULL) { + SWFDEC_ERROR ("no getter for %s", s); return; } + swfdec_as_object_add_variable (target, swfdec_as_context_get_string (cx, s), + get, set); } - SWFDEC_FIXME ("ASnative for %u %u missing", x, y); + g_free (names); } -/*** VARIOUS ***/ - static void swfdec_player_object_registerClass (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval) diff-tree a55dc2529b23ba135fad711e623d307829989996 (from 79a46534730bb6e1d19ce2ba5f54a43acdb8a303) Author: Benjamin Otte <otte at gnome.org> Date: Thu Jul 26 21:34:01 2007 +0200 update docs diff --git a/doc/Makefile.am b/doc/Makefile.am index 494217a..c5766a9 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -68,6 +68,7 @@ IGNORE_HFILES= \ swfdec_as_strings.h \ swfdec_as_super.h \ swfdec_as_with.h \ + swfdec_asnative.h \ swfdec_audio_internal.h \ swfdec_audio_event.h \ swfdec_audio_flv.h \ diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt index 9c9eb75..3048a95 100644 --- a/doc/swfdec-sections.txt +++ b/doc/swfdec-sections.txt @@ -266,6 +266,7 @@ SwfdecAsVariableFlag swfdec_as_object_get_variable swfdec_as_object_get_variable_and_flags swfdec_as_object_set_variable +swfdec_as_object_add_variable swfdec_as_object_set_variable_flags swfdec_as_object_unset_variable_flags swfdec_as_object_delete_variable diff-tree 79a46534730bb6e1d19ce2ba5f54a43acdb8a303 (from 272b75f217c4ed1ff99d597007caea376790857b) Author: Benjamin Otte <otte at gnome.org> Date: Thu Jul 26 21:32:38 2007 +0200 add swfdec_as_object_add_variable() diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c index 6c4e199..ec00ec2 100644 --- a/libswfdec/swfdec_as_object.c +++ b/libswfdec/swfdec_as_object.c @@ -176,6 +176,12 @@ swfdec_as_object_do_get (SwfdecAsObject return TRUE; } +static gboolean +swfdec_as_variable_name_is_valid (const char *name) +{ + return name != SWFDEC_AS_STR_EMPTY; +} + static SwfdecAsVariable * swfdec_as_object_lookup_variable (SwfdecAsObject *object, const char *variable) { @@ -185,18 +191,14 @@ swfdec_as_object_lookup_variable (Swfdec if (var == NULL) { if (!swfdec_as_context_use_mem (object->context, sizeof (SwfdecAsVariable))) return NULL; + if (!swfdec_as_variable_name_is_valid (variable)) + return NULL; var = g_slice_new0 (SwfdecAsVariable); g_hash_table_insert (object->properties, (gpointer) variable, var); } return var; } -static gboolean -swfdec_as_variable_name_is_valid (const char *name) -{ - return name != SWFDEC_AS_STR_EMPTY; -} - static void swfdec_as_object_do_set (SwfdecAsObject *object, const char *variable, const SwfdecAsValue *val) @@ -934,6 +936,39 @@ swfdec_as_object_set_constructor (Swfdec swfdec_as_object_set_variable (object, scripted ? SWFDEC_AS_STR_constructor : SWFDEC_AS_STR___constructor__, &val); } +/** + * swfdec_as_object_add_variable: + * @object: a #SwfdecAsObject + * @variable: name of the variable + * @get: getter function to call when reading the variable + * @set: setter function to call when writing the variable or %NULL if read-only + * + * Adds a variable to @object in the same way as the Actionscript code + * "object.addProperty()" would do. Accessing the variable will from now on be + * handled by calling the @get or @set functions. A previous value of the + * variable or a previous call to this function will be overwritten. + **/ +void +swfdec_as_object_add_variable (SwfdecAsObject *object, const char *variable, + SwfdecAsFunction *get, SwfdecAsFunction *set) +{ + SwfdecAsVariable *var; + + g_return_if_fail (SWFDEC_IS_AS_OBJECT (object)); + g_return_if_fail (variable != NULL); + g_return_if_fail (SWFDEC_IS_AS_FUNCTION (get)); + g_return_if_fail (set == NULL || SWFDEC_IS_AS_FUNCTION (set)); + + var = swfdec_as_object_lookup_variable (object, variable); + if (var == NULL) + return; + var->get = get; + var->set = set; + var->flags = SWFDEC_AS_VARIABLE_PERMANENT; + if (set == NULL) + var->flags |= SWFDEC_AS_VARIABLE_READONLY; +} + /*** AS CODE ***/ static void @@ -941,7 +976,6 @@ swfdec_as_object_addProperty (SwfdecAsCo guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) { SwfdecAsFunction *get, *set; - SwfdecAsVariable *var; const char *name; SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE); @@ -961,15 +995,7 @@ swfdec_as_object_addProperty (SwfdecAsCo return; } - var = swfdec_as_object_lookup_variable (object, name); - if (var == NULL) - return; - var->get = get; - var->set = set; - var->flags = SWFDEC_AS_VARIABLE_PERMANENT; - if (set == NULL) - var->flags |= SWFDEC_AS_VARIABLE_READONLY; - + swfdec_as_object_add_variable (object, name, get, set); SWFDEC_AS_VALUE_SET_BOOLEAN (retval, TRUE); } diff --git a/libswfdec/swfdec_as_object.h b/libswfdec/swfdec_as_object.h index bb2efeb..04deb10 100644 --- a/libswfdec/swfdec_as_object.h +++ b/libswfdec/swfdec_as_object.h @@ -113,6 +113,10 @@ void swfdec_as_object_add (SwfdecAsObj void swfdec_as_object_set_variable (SwfdecAsObject * object, const char * variable, const SwfdecAsValue * value); +void swfdec_as_object_add_variable (SwfdecAsObject * object, + const char * variable, + SwfdecAsFunction * get, + SwfdecAsFunction * set); #define swfdec_as_object_get_variable(object, variable, value) \ swfdec_as_object_get_variable_and_flags (object, variable, value, NULL, NULL) gboolean swfdec_as_object_get_variable_and_flags diff-tree 272b75f217c4ed1ff99d597007caea376790857b (from e9a1e2cf91496460342ffc67cdf965ad1bf73044) Author: Benjamin Otte <otte at gnome.org> Date: Thu Jul 26 21:24:00 2007 +0200 make swfdec_asnative.h work on its own so the autogeneration code needed to be changed diff --git a/libswfdec/Makefile.am b/libswfdec/Makefile.am index ed5330e..ae81146 100644 --- a/libswfdec/Makefile.am +++ b/libswfdec/Makefile.am @@ -226,14 +226,18 @@ CLEANFILES = \ $(BUILT_SOURCES) swfdec_asnative.h: $(libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES) - (echo "#include \"swfdec_player.h\"" \ + (echo "#include \"swfdec_as_types.h\"" \ + && echo "#define SWFDEC_AS_NATIVE(x, y, func) void func (SwfdecAsContext *cx, \\" \ + && echo " SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret);" \ && grep -he "^SWFDEC_AS_NATIVE" $(libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES) \ && echo "#undef SWFDEC_AS_NATIVE" \ && echo "#define SWFDEC_AS_NATIVE(x,y,func) { x, y, func, G_STRINGIFY (func) }," \ && echo "static const struct { guint x, y; SwfdecAsNative func; const char *name; } native_funcs[] = {" \ && grep -he "^SWFDEC_AS_NATIVE" $(libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES) \ && echo " { 0, 0, NULL }" \ - && echo "};") >> xgen-san \ + && echo "};" \ + && echo "#undef SWFDEC_AS_NATIVE" \ + ) >> xgen-san \ && (cmp -s xgen-san swfdec_asnative.h || cp xgen-san swfdec_asnative.h) \ && rm -f xgen-san
Seemingly Similar Threads
- 17 commits - doc/swfdec-sections.txt libswfdec/compiler.c libswfdec/.gitignore libswfdec/Makefile.am libswfdec/swfdec_asbroadcaster.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h libswfdec/swfdec_as_strings.c
- 13 commits - libswfdec-gtk/Makefile.am libswfdec-gtk/swfdec_gtk_keys.c libswfdec-gtk/swfdec_gtk_keys.h libswfdec-gtk/swfdec_gtk_widget.c libswfdec/Makefile.am libswfdec/swfdec_as_types.c libswfdec/swfdec.h libswfdec/swfdec_initialize.as
- 20 commits - libswfdec/swfdec_as_function.c libswfdec/swfdec_as_string.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_load_object_as.c libswfdec/swfdec_movie_as_drawing.c libswfdec/swfdec_player_as.c
- 9 commits - libswfdec/swfdec_as_function.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_object.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_player_as.c test/trace
- 6 commits - libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h libswfdec/swfdec_stage_as.c test/trace