swf_ruby 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,6 +31,7 @@ module SwfRuby
31
31
  attr_accessor :idmap
32
32
  attr_accessor :target_define_tags_string
33
33
  attr_accessor :target_control_tags_string
34
+ attr_reader :target_swf_dumper
34
35
 
35
36
  def initialize(offset, swf)
36
37
  @offset = offset
@@ -39,7 +40,7 @@ module SwfRuby
39
40
  @frame_count = @target_swf_dumper.header.frame_count
40
41
  @define_tags = @target_swf_dumper.tags.select { |t| t.define_tag? }
41
42
  @control_tags = @target_swf_dumper.tags - @define_tags
42
- @idmap = {}
43
+ @idmap = { 65535 => 65535 }
43
44
  end
44
45
 
45
46
  def self.build_list_by_instance_var_names(swf_dumper, var_name_to_swf)
@@ -61,10 +62,21 @@ module SwfRuby
61
62
  if t.character_id
62
63
  sprite_indices[t.character_id] = i
63
64
  end
64
- if var_name == t.refer_character_inst_name
65
- refer_character_id = t.refer_character_id
66
- break
65
+ if Swf::TAG_TYPE[t.code] == "DefineSprite"
66
+ sd = SwfRuby::SpriteDumper.new
67
+ sd.dump(t)
68
+ sd.tags.each do |t2|
69
+ if var_name == t2.refer_character_inst_name
70
+ refer_character_id = t2.refer_character_id
71
+ break
72
+ end
73
+ end
74
+ else
75
+ if var_name == t.refer_character_inst_name
76
+ refer_character_id = t.refer_character_id
77
+ end
67
78
  end
79
+ break if refer_character_id
68
80
  end
69
81
  raise ReplaceTargetError unless refer_character_id
70
82
  offset = swf_dumper.tags_addresses[sprite_indices[refer_character_id]]
@@ -90,9 +90,7 @@ module SwfRuby
90
90
  when "RemoveObject"
91
91
  @refer_character_id_offset = data_offset
92
92
  @refer_character_id = @data[0, 2].unpack("v").first
93
- when "DefineShape"
94
- when "DefineShape2"
95
- when "DefineShape3"
93
+ when "DefineShape", "DefineShape2", "DefineShape3"
96
94
  version = Swf::TAG_TYPE[@code][-1].to_i
97
95
  version = 1 if version == 0
98
96
  @refer_bitmap_offsets_to_ids = {}
@@ -135,9 +133,22 @@ module SwfRuby
135
133
  if self.define_tag?
136
134
  offset = @long_header ? 6 : 2
137
135
  @rawdata[offset, 2] = [character_id].pack("v")
138
- @refer_bitmap_offsets_to_ids.each do |bitmap_id_offset, bitmap_id|
139
- @rawdata[bitmap_id_offset, 2] = [idmap[bitmap_id]].pack("v")
140
- end if @refer_bitmap_offsets_to_ids
136
+ if Swf::TAG_TYPE[@code] == "DefineSprite"
137
+ sd = SwfRuby::SpriteDumper.new.dump(self)
138
+ rdata = ""
139
+ sd.tags.each do |t|
140
+ if t.refer_character_id
141
+ rdata << t.rawdata_with_refer_character_id(idmap[t.refer_character_id])
142
+ else
143
+ rdata << t.rawdata
144
+ end
145
+ end
146
+ @rawdata[offset+4..-1] = rdata
147
+ else
148
+ @refer_bitmap_offsets_to_ids.each do |bitmap_id_offset, bitmap_id|
149
+ @rawdata[bitmap_id_offset, 2] = [idmap[bitmap_id]].pack("v")
150
+ end if @refer_bitmap_offsets_to_ids
151
+ end
141
152
  end
142
153
  @rawdata
143
154
  end
@@ -1,3 +1,3 @@
1
1
  module SwfRuby
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swf_ruby
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 2
8
- - 0
9
- version: 0.2.0
4
+ prerelease:
5
+ version: 0.2.1
10
6
  platform: ruby
11
7
  authors: []
12
8
 
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-04-27 00:00:00 +09:00
13
+ date: 2011-05-24 00:00:00 +09:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,12 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 0
32
- - rc
33
- - 5
34
24
  version: 1.0.0.rc.5
35
25
  type: :runtime
36
26
  version_requirements: *id001
@@ -42,10 +32,6 @@ dependencies:
42
32
  requirements:
43
33
  - - ">="
44
34
  - !ruby/object:Gem::Version
45
- segments:
46
- - 2
47
- - 13
48
- - 0
49
35
  version: 2.13.0
50
36
  type: :runtime
51
37
  version_requirements: *id002
@@ -117,23 +103,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
103
  requirements:
118
104
  - - ">="
119
105
  - !ruby/object:Gem::Version
120
- segments:
121
- - 0
122
106
  version: "0"
123
107
  required_rubygems_version: !ruby/object:Gem::Requirement
124
108
  none: false
125
109
  requirements:
126
110
  - - ">="
127
111
  - !ruby/object:Gem::Version
128
- segments:
129
- - 1
130
- - 3
131
- - 6
132
112
  version: 1.3.6
133
113
  requirements: []
134
114
 
135
115
  rubyforge_project: swf_ruby
136
- rubygems_version: 1.3.7
116
+ rubygems_version: 1.6.2
137
117
  signing_key:
138
118
  specification_version: 3
139
119
  summary: Utilities to dump or manipulate Swf binary file.