class Branding::PNG::Imagedata
Private class for holding and deflating image data
Public Class Methods
new(data: nil, scanline_width: 0, color_channels: 3)
click to toggle source
# File lib/branding/png.rb, line 17 def initialize(data: nil, scanline_width: 0, color_channels: 3) @scanline_width = scanline_width @color_channels = color_channels zstream = Zlib::Inflate.new zstream << data @inflated = zstream.finish zstream.close end
Public Instance Methods
each() { |byte| ... }
click to toggle source
yields byte
# File lib/branding/png.rb, line 29 def each @inflated.each_byte do |byte| yield byte end end
each_pixel() { |pixel(*rgba)| ... }
click to toggle source
# File lib/branding/png.rb, line 51 def each_pixel each_scanline do |scanline| scanline.each_slice(@color_channels) do |*rgba| yield Pixel.new(*rgba) end end end
each_scanline() { |recon| ... }
click to toggle source
# File lib/branding/png.rb, line 35 def each_scanline # the number of bytes is + 1 because of the filter byte bytes_in_scanline = @scanline_width * @color_channels + 1 previous_scanline = nil each_slice(bytes_in_scanline) do |scanline| filter_bit, *rest = *scanline filter = Filter.new(filter_bit, rest, previous_scanline, @color_channels) recon = filter.reconstructed_scanline yield recon previous_scanline = recon end end