mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-01-23 06:46:00 +00:00
6.4 update (minus sprites)
This commit is contained in:
@@ -980,45 +980,45 @@ class SpriteHash
|
||||
end
|
||||
end
|
||||
|
||||
# class ByteWriter
|
||||
# def initialize(filename)
|
||||
# @file = File.new(filename, "wb")
|
||||
# end
|
||||
#
|
||||
# def <<(*data)
|
||||
# write(*data)
|
||||
# end
|
||||
#
|
||||
# def write(*data)
|
||||
# data.each do |e|
|
||||
# if e.is_a?(Array)
|
||||
# e.each { |item| write(item) }
|
||||
# elsif e.is_a?(Numeric)
|
||||
# @file.putc e
|
||||
# else
|
||||
# raise "Invalid data for writing."
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def write_int(int)
|
||||
# self << ByteWriter.to_bytes(int)
|
||||
# end
|
||||
#
|
||||
# def close
|
||||
# @file.close
|
||||
# @file = nil
|
||||
# end
|
||||
#
|
||||
# def self.to_bytes(int)
|
||||
# return [
|
||||
# (int >> 24) & 0xFF,
|
||||
# (int >> 16) & 0xFF,
|
||||
# (int >> 8) & 0xFF,
|
||||
# int & 0xFF
|
||||
# ]
|
||||
# end
|
||||
# end
|
||||
class ByteWriter
|
||||
def initialize(filename)
|
||||
@file = File.new(filename, "wb")
|
||||
end
|
||||
|
||||
def <<(*data)
|
||||
write(*data)
|
||||
end
|
||||
|
||||
def write(*data)
|
||||
data.each do |e|
|
||||
if e.is_a?(Array)
|
||||
e.each { |item| write(item) }
|
||||
elsif e.is_a?(Numeric)
|
||||
@file.putc e
|
||||
else
|
||||
raise "Invalid data for writing."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def write_int(int)
|
||||
self << ByteWriter.to_bytes(int)
|
||||
end
|
||||
|
||||
def close
|
||||
@file.close
|
||||
@file = nil
|
||||
end
|
||||
|
||||
def self.to_bytes(int)
|
||||
return [
|
||||
(int >> 24) & 0xFF,
|
||||
(int >> 16) & 0xFF,
|
||||
(int >> 8) & 0xFF,
|
||||
int & 0xFF
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
class Bitmap
|
||||
def save_to_png(filename)
|
||||
@@ -1057,9 +1057,12 @@ class Bitmap
|
||||
data << px.alpha
|
||||
end
|
||||
end
|
||||
|
||||
# Zlib deflation
|
||||
smoldata = Zlib::Deflate.deflate(data.pack("C*")).bytes.map
|
||||
# data chunk length
|
||||
smoldata = Zlib::Deflate.deflate(data.pack("C*"))
|
||||
smoldata = smoldata.bytes
|
||||
|
||||
# Data chunk length
|
||||
f.write_int smoldata.size
|
||||
# IDAT
|
||||
f << [0x49, 0x44, 0x41, 0x54]
|
||||
@@ -1074,9 +1077,11 @@ class Bitmap
|
||||
f << [0x49, 0x45, 0x4E, 0x44]
|
||||
# CRC32 checksum
|
||||
f.write_int Zlib::crc32([0x49, 0x45, 0x4E, 0x44].pack("C*"))
|
||||
|
||||
f.close
|
||||
return nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Stand-alone methods
|
||||
|
||||
Reference in New Issue
Block a user