The base chunk class is the superclass for every chunk type. It contains methods to write the chunk to an output stream.
A subclass should implement the content
method, which gets
called when the chunk gets written to a PNG datastream
@abstract
The four-character type indicator for the chunk. This field is used to find the correct class for a chunk when it is loaded from a PNG stream. @return [String]
Initializes the chunk instance. @param type [String] The four character chunk type indicator. @param attributes [Hash] A hash of attributes to set on this chunk.
# File lib/chunky_png/chunk.rb, line 55 def initialize(type, attributes = {}) self.type = type attributes.each { |k, v| send("#{k}=", v) } end
Writes the chunk to the IO stream.
It will call the content
method to get the content for this
chunk, and will calculate and append the checksum automatically. @param io
[IO] The IO stream to write to.
# File lib/chunky_png/chunk.rb, line 74 def write(io) write_with_crc(io, content || '') end
Writes the chunk to the IO stream, using the provided content. The checksum will be calculated and appended to the stream. @param io [IO] The IO stream to write to. @param content [String] The content for this chunk.
# File lib/chunky_png/chunk.rb, line 64 def write_with_crc(io, content) io << [content.length].pack('N') << type << content io << [Zlib.crc32(content, Zlib.crc32(type))].pack('N') end