2023-08-16 00:20:26 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
2023-05-31 16:19:06 +02:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
2023-03-14 04:42:17 +01:00
|
|
|
|
2023-07-07 15:03:49 +10:00
|
|
|
/** \file
|
|
|
|
|
* \ingroup imbuf
|
|
|
|
|
*/
|
|
|
|
|
|
2023-03-14 04:42:17 +01:00
|
|
|
#include "oiio/openimageio_support.hh"
|
|
|
|
|
|
2023-03-14 16:09:08 +11:00
|
|
|
#include "IMB_filetype.h"
|
|
|
|
|
|
2023-03-14 04:42:17 +01:00
|
|
|
#include "IMB_imbuf_types.h"
|
|
|
|
|
|
|
|
|
|
OIIO_NAMESPACE_USING
|
|
|
|
|
using namespace blender::imbuf;
|
|
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
|
|
|
|
bool imb_is_a_psd(const uchar *mem, size_t size)
|
|
|
|
|
{
|
2023-05-06 00:16:19 +02:00
|
|
|
const uchar magic[4] = {'8', 'B', 'P', 'S'};
|
|
|
|
|
if (size < sizeof(magic)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return memcmp(magic, mem, sizeof(magic)) == 0;
|
2023-03-14 04:42:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ImBuf *imb_load_psd(const uchar *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE])
|
|
|
|
|
{
|
|
|
|
|
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_embedded_colorspace = true;
|
|
|
|
|
|
|
|
|
|
return imb_oiio_read(ctx, config, colorspace, spec);
|
|
|
|
|
}
|
|
|
|
|
}
|