module ChunkyPNG::Canvas::PNGDecoding

def decode_png_scanline_paeth(bytes, previous_bytes, pixelsize = 3)

def decode_png_scanline_paeth(bytes, previous_bytes, pixelsize = 3)
  bytes.each_with_index do |byte, i|
    a = (i >= pixelsize) ? bytes[i - pixelsize] : 0
    b = previous_bytes[i]
    c = (i >= pixelsize) ? previous_bytes[i - pixelsize] : 0
    p = a + b - c
    pa = (p - a).abs
    pb = (p - b).abs
    pc = (p - c).abs
    pr = (pa <= pb && pa <= pc) ? a : (pb <= pc ? b : c)
    bytes[i] = (byte + pr) % 256
  end
  bytes
end