class ChunkyPNG::Datastream

def from_io(io)

Returns:
  • (ChunkyPNG::Datastream) - The loaded datastream instance.

Parameters:
  • io (IO) -- The stream to read from.
def from_io(io)
  io.set_encoding(::Encoding::BINARY)
  verify_signature!(io)
  ds = new
  while ds.end_chunk.nil?
    chunk = ChunkyPNG::Chunk.read(io)
    case chunk
      when ChunkyPNG::Chunk::Header       then ds.header_chunk = chunk
      when ChunkyPNG::Chunk::Palette      then ds.palette_chunk = chunk
      when ChunkyPNG::Chunk::Transparency then ds.transparency_chunk = chunk
      when ChunkyPNG::Chunk::ImageData    then ds.data_chunks << chunk
      when ChunkyPNG::Chunk::Physical     then ds.physical_chunk = chunk
      when ChunkyPNG::Chunk::End          then ds.end_chunk = chunk
      else ds.other_chunks << chunk
    end
  end
  ds
end