/* SPDX-FileCopyrightText: 2023 Blender Authors
 *
 * SPDX-License-Identifier: GPL-2.0-or-later */

/** \file
 * \ingroup imbuf
 */

#include "oiio/openimageio_support.hh"

#include "IMB_filetype.hh"

#include "IMB_imbuf_types.hh"

namespace blender {

const char *imb_file_extensions_psd[] = {".psd", ".pdd", ".psb", nullptr};

OIIO_NAMESPACE_USING
using namespace blender::imbuf;

bool imb_is_a_psd(const uchar *mem, size_t size)
{
  return imb_oiio_check(mem, size, "psd");
}

ImBuf *imb_load_psd(const uchar *mem,
                    size_t size,
                    ImBufFlags flags,
                    ImFileColorSpace &r_colorspace)
{
  ImageSpec config, spec;
  config.attribute("oiio:UnassociatedAlpha", 1);

  ReadContext ctx{mem, size, "psd", IMB_FTYPE_PSD, flags};

  /* PSD should obey color space information embedded in the file. */
  ctx.use_metadata_colorspace = true;

  return imb_oiio_read(ctx, config, r_colorspace, spec);
}

}  // namespace blender
