lib/exiffer/png/chunk/IDAT.ex

defmodule Exiffer.PNG.Chunk.IDAT do
  defstruct ~w(data)a

  def binary(%__MODULE__{} = idat) do
    Exiffer.PNG.Chunk.binary("IDAT", idat.data)
  end

  def text(%__MODULE__{} = idat) do
    """
    IDAT
    ----
    Data: #{byte_size(idat.data)} bytes
    """
  end

  def write(item, io_device) do
    binary = binary(item)
    :ok = IO.binwrite(io_device, binary)
  end

  defimpl Exiffer.Serialize do
    alias Exiffer.PNG.Chunk.IDAT

    def binary(idat) do
      IDAT.binary(idat)
    end

    def text(idat) do
      IDAT.text(idat)
    end

    def write(idat, io_device) do
      IDAT.write(idat, io_device)
    end
  end
end