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.
- data/lib/swf_ruby/replace_target.rb +16 -4
- data/lib/swf_ruby/swf/tag.rb +17 -6
- data/lib/swf_ruby/version.rb +1 -1
- metadata +4 -24
@@ -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
|
65
|
-
|
66
|
-
|
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]]
|
data/lib/swf_ruby/swf/tag.rb
CHANGED
@@ -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
|
-
@
|
139
|
-
|
140
|
-
|
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
|
data/lib/swf_ruby/version.rb
CHANGED
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:
|
5
|
-
|
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-
|
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.
|
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.
|