10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/swfheader/swf-header.rb', line 10
def (file)
@size=read_full_size(file)
buffer=File.open(file,"rb") do |f|
f.read
end
if !is_swf?(buffer)
raise RuntimeError.new,"File does not appear to be a swf file",caller
else
@signature=buffer[0,3]
end
if is_compressed?(buffer[0])
buffer=SWFDecompressor.new.uncompress(buffer)
@compression_type=COMPRESSED
else
@compression_type=UNCOMPRESSED
end
@version=buffer[3]
@nbits = ((buffer[8]&0xff)>>3)
pbo = read_packed_bits( buffer, 8, 5, @nbits )
pbo2 = read_packed_bits( buffer, pbo.nextByteIndex,pbo.nextBitIndex, @nbits )
pbo3 = read_packed_bits( buffer, pbo2.nextByteIndex,pbo2.nextBitIndex, @nbits )
pbo4 = read_packed_bits( buffer, pbo3.nextByteIndex,pbo3.nextBitIndex, @nbits )
@xmax = pbo2.value
@ymax = pbo4.value
@width = convert_twips_to_pixels( @xmax )
@height = convert_twips_to_pixels( @ymax )
byte_pointer = pbo4.nextByteIndex + 2
@frame_rate = buffer[byte_pointer]
byte_pointer+=1
fc1 = buffer[byte_pointer] & 0xFF
byte_pointer+=1
fc2 = buffer[byte_pointer] & 0xFF
byte_pointer+=1
@frame_count=(fc2<<8)+fc1
byte_pointer+=2
avm_bit = buffer[byte_pointer] & 0x08
@avm_version = (avm_bit == 0) ? "AVM1" : "AVM2"
buffer=nil
end
|