File: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/chunky_png-1.4.0/lib/chunky_png/canvas/stream_exporting.rb
# frozen-string-literal: true
module ChunkyPNG
class Canvas
# Methods to save load a canvas from to stream, encoded in RGB, RGBA, BGR or ABGR format.
module StreamExporting
# Creates an RGB-formatted pixelstream with the pixel data from this canvas.
#
# Note that this format is fast but bloated, because no compression is used
# and the internal representation is left intact. To reconstruct the
# canvas, the width and height should be known.
#
# @return [String] The RGBA-formatted pixel data.
def to_rgba_stream
pixels.pack("N*")
end
# Creates an RGB-formatted pixelstream with the pixel data from this canvas.
#
# Note that this format is fast but bloated, because no compression is used
# and the internal representation is almost left intact. To reconstruct
# the canvas, the width and height should be known.
#
# @return [String] The RGB-formatted pixel data.
def to_rgb_stream
pixels.pack("NX" * pixels.length)
end
# Creates a stream of the alpha channel of this canvas.
#
# @return [String] The 0-255 alpha values of all pixels packed as string
def to_alpha_channel_stream
pixels.pack("C*")
end
# Creates a grayscale stream of this canvas.
#
# This method assume sthat this image is fully grayscale, i.e. R = G = B for
# every pixel. The alpha channel will not be included in the stream.
#
# @return [String] The 0-255 grayscale values of all pixels packed as string.
def to_grayscale_stream
pixels.pack("nX" * pixels.length)
end
# Creates an ABGR-formatted pixelstream with the pixel data from this canvas.
#
# Note that this format is fast but bloated, because no compression is used
# and the internal representation is left intact. To reconstruct the
# canvas, the width and height should be known.
#
# @return [String] The RGBA-formatted pixel data.
def to_abgr_stream
pixels.pack("V*")
end
end
end
end