swf_ruby 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.