Blender V5.0
IMB_filetype.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "IMB_imbuf.hh"
12
13struct ImBuf;
14struct ImFileColorSpace;
15
16/* -------------------------------------------------------------------- */
19
20#define IM_FTYPE_FLOAT 1
21
22struct ImFileType {
24 void (*init)();
26 void (*exit)();
27
33 bool (*is_a)(const unsigned char *buf, size_t size);
34
36 ImBuf *(*load)(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace);
38 ImBuf *(*load_filepath)(const char *filepath, int flags, ImFileColorSpace &r_colorspace);
44 ImBuf *(*load_filepath_thumbnail)(const char *filepath,
45 int flags,
46 size_t max_thumb_size,
47 ImFileColorSpace &r_colorspace,
48 size_t *r_width,
49 size_t *r_height);
51 bool (*save)(ImBuf *ibuf, const char *filepath, int flags);
52
53 int flag;
54
57
59};
60
61/* Color space information provided by the file. */
63 /* Color space from metadata. */
65 /* Is image HDR with range potentially outside 0..1? */
66 bool is_hdr_float = false;
67};
68
69extern const ImFileType IMB_FILE_TYPES[];
71
72const ImFileType *IMB_file_type_from_ftype(int ftype);
73const ImFileType *IMB_file_type_from_ibuf(const ImBuf *ibuf);
74
77
79
80/* Type Specific Functions */
81
82/* -------------------------------------------------------------------- */
85
86bool imb_is_a_png(const unsigned char *mem, size_t size);
87ImBuf *imb_load_png(const unsigned char *mem,
88 size_t size,
89 int flags,
90 ImFileColorSpace &r_colorspace);
91bool imb_save_png(ImBuf *ibuf, const char *filepath, int flags);
92
94
95/* -------------------------------------------------------------------- */
98
99bool imb_is_a_tga(const unsigned char *mem, size_t size);
100ImBuf *imb_load_tga(const unsigned char *mem,
101 size_t size,
102 int flags,
103 ImFileColorSpace &r_colorspace);
104bool imb_save_tga(ImBuf *ibuf, const char *filepath, int flags);
105
107
108/* -------------------------------------------------------------------- */
111
112bool imb_is_a_iris(const unsigned char *mem, size_t size);
116ImBuf *imb_loadiris(const unsigned char *mem,
117 size_t size,
118 int flags,
119 ImFileColorSpace &r_colorspace);
120bool imb_saveiris(ImBuf *ibuf, const char *filepath, int flags);
121
123
124/* -------------------------------------------------------------------- */
127
128bool imb_is_a_jp2(const unsigned char *buf, size_t size);
129ImBuf *imb_load_jp2(const unsigned char *mem,
130 size_t size,
131 int flags,
132 ImFileColorSpace &r_colorspace);
133ImBuf *imb_load_jp2_filepath(const char *filepath, int flags, ImFileColorSpace &r_colorspace);
134bool imb_save_jp2(ImBuf *ibuf, const char *filepath, int flags);
135
137
138/* -------------------------------------------------------------------- */
141
142bool imb_is_a_jpeg(const unsigned char *mem, size_t size);
143bool imb_savejpeg(ImBuf *ibuf, const char *filepath, int flags);
144ImBuf *imb_load_jpeg(const unsigned char *buffer,
145 size_t size,
146 int flags,
147 ImFileColorSpace &r_colorspace);
148ImBuf *imb_thumbnail_jpeg(const char *filepath,
149 int flags,
150 size_t max_thumb_size,
151 ImFileColorSpace &r_colorspace,
152 size_t *r_width,
153 size_t *r_height);
154
156
157/* -------------------------------------------------------------------- */
160
161bool imb_is_a_bmp(const unsigned char *mem, size_t size);
162ImBuf *imb_load_bmp(const unsigned char *mem,
163 size_t size,
164 int flags,
165 ImFileColorSpace &r_colorspace);
166/* Found write info at http://users.ece.gatech.edu/~slabaugh/personal/c/bitmapUnix.c */
167bool imb_save_bmp(ImBuf *ibuf, const char *filepath, int flags);
168
170
171/* -------------------------------------------------------------------- */
174
175bool imb_is_a_cineon(const unsigned char *mem, size_t size);
176bool imb_save_cineon(ImBuf *buf, const char *filepath, int flags);
177ImBuf *imb_load_cineon(const unsigned char *mem,
178 size_t size,
179 int flags,
180 ImFileColorSpace &r_colorspace);
181
183
184/* -------------------------------------------------------------------- */
187
188bool imb_is_a_dpx(const unsigned char *mem, size_t size);
189bool imb_save_dpx(ImBuf *ibuf, const char *filepath, int flags);
190ImBuf *imb_load_dpx(const unsigned char *mem,
191 size_t size,
192 int flags,
193 ImFileColorSpace &r_colorspace);
194
196
197/* -------------------------------------------------------------------- */
200
201bool imb_is_a_hdr(const unsigned char *mem, size_t size);
202ImBuf *imb_load_hdr(const unsigned char *mem,
203 size_t size,
204 int flags,
205 ImFileColorSpace &r_colorspace);
206bool imb_save_hdr(ImBuf *ibuf, const char *filepath, int flags);
207
209
210/* -------------------------------------------------------------------- */
213
214bool imb_is_a_tiff(const unsigned char *mem, size_t size);
224ImBuf *imb_load_tiff(const unsigned char *mem,
225 size_t size,
226 int flags,
227 ImFileColorSpace &r_colorspace);
242bool imb_save_tiff(ImBuf *ibuf, const char *filepath, int flags);
243
245
246/* -------------------------------------------------------------------- */
249
250bool imb_is_a_webp(const unsigned char *mem, size_t size);
251ImBuf *imb_loadwebp(const unsigned char *mem,
252 size_t size,
253 int flags,
254 ImFileColorSpace &r_colorspace);
255ImBuf *imb_load_filepath_thumbnail_webp(const char *filepath,
256 const int flags,
257 const size_t max_thumb_size,
258 ImFileColorSpace &r_colorspace,
259 size_t *r_width,
260 size_t *r_height);
261bool imb_savewebp(ImBuf *ibuf, const char *filepath, int flags);
262
264
265/* -------------------------------------------------------------------- */
268
269void imb_init_dds();
270
271bool imb_is_a_dds(const unsigned char *mem, size_t size);
272
273ImBuf *imb_load_dds(const unsigned char *mem,
274 size_t size,
275 int flags,
276 ImFileColorSpace &r_colorspace);
277
279
280/* -------------------------------------------------------------------- */
283
284bool imb_is_a_psd(const unsigned char *mem, size_t size);
285
286ImBuf *imb_load_psd(const unsigned char *mem,
287 size_t size,
288 int flags,
289 ImFileColorSpace &r_colorspace);
290
292
293/* -------------------------------------------------------------------- */
296
297ImBuf *imb_load_filepath_thumbnail_svg(const char *filepath,
298 const int flags,
299 const size_t max_thumb_size,
300 ImFileColorSpace &r_colorspace,
301 size_t *r_width,
302 size_t *r_height);
303
ImBuf * imb_load_hdr(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_hdr.cc:22
ImBuf * imb_load_cineon(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
bool imb_is_a_dds(const unsigned char *mem, size_t size)
Definition format_dds.cc:42
bool imb_is_a_bmp(const unsigned char *mem, size_t size)
Definition format_bmp.cc:17
bool imb_is_a_tga(const unsigned char *mem, size_t size)
bool imb_is_a_psd(const unsigned char *mem, size_t size)
Definition format_psd.cc:18
ImBuf * imb_load_png(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_png.cc:23
bool imb_is_a_dpx(const unsigned char *mem, size_t size)
Definition format_dpx.cc:18
ImBuf * imb_load_dpx(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_dpx.cc:23
ImBuf * imb_load_tiff(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
const ImFileType * IMB_file_type_from_ftype(int ftype)
Definition filetype.cc:222
ImBuf * imb_load_filepath_thumbnail_svg(const char *filepath, const int flags, const size_t max_thumb_size, ImFileColorSpace &r_colorspace, size_t *r_width, size_t *r_height)
Definition format_svg.cc:19
bool imb_savejpeg(ImBuf *ibuf, const char *filepath, int flags)
ImBuf * imb_load_tga(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
ImBuf * imb_load_filepath_thumbnail_webp(const char *filepath, const int flags, const size_t max_thumb_size, ImFileColorSpace &r_colorspace, size_t *r_width, size_t *r_height)
bool imb_save_hdr(ImBuf *ibuf, const char *filepath, int flags)
Definition format_hdr.cc:44
ImBuf * imb_load_jp2(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
bool imb_save_cineon(ImBuf *buf, const char *filepath, int flags)
ImBuf * imb_load_bmp(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_bmp.cc:22
ImBuf * imb_loadiris(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
bool imb_is_a_cineon(const unsigned char *mem, size_t size)
bool imb_savewebp(ImBuf *ibuf, const char *filepath, int flags)
bool imb_is_a_webp(const unsigned char *mem, size_t size)
ImBuf * imb_load_jp2_filepath(const char *filepath, int flags, ImFileColorSpace &r_colorspace)
ImBuf * imb_load_dds(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_dds.cc:47
bool imb_is_a_hdr(const unsigned char *mem, size_t size)
Definition format_hdr.cc:17
void imb_filetypes_init()
Definition filetype.cc:237
const ImFileType * IMB_file_type_from_ibuf(const ImBuf *ibuf)
Definition filetype.cc:232
bool imb_save_dpx(ImBuf *ibuf, const char *filepath, int flags)
Definition format_dpx.cc:41
void imb_filetypes_exit()
Definition filetype.cc:250
bool imb_save_tga(ImBuf *ibuf, const char *filepath, int flags)
void imb_init_dds()
Definition format_dds.cc:29
bool imb_save_png(ImBuf *ibuf, const char *filepath, int flags)
Definition format_png.cc:43
bool imb_is_a_jp2(const unsigned char *buf, size_t size)
Definition format_jp2.cc:76
ImBuf * imb_loadwebp(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
bool imb_saveiris(ImBuf *ibuf, const char *filepath, int flags)
bool imb_is_a_iris(const unsigned char *mem, size_t size)
bool imb_save_tiff(ImBuf *ibuf, const char *filepath, int flags)
ImBuf * imb_thumbnail_jpeg(const char *filepath, int flags, size_t max_thumb_size, ImFileColorSpace &r_colorspace, size_t *r_width, size_t *r_height)
bool imb_save_jp2(ImBuf *ibuf, const char *filepath, int flags)
bool imb_save_bmp(ImBuf *ibuf, const char *filepath, int flags)
Definition format_bmp.cc:33
bool imb_is_a_png(const unsigned char *mem, size_t size)
Definition format_png.cc:18
bool imb_is_a_jpeg(const unsigned char *mem, size_t size)
ImBuf * imb_load_jpeg(const unsigned char *buffer, size_t size, int flags, ImFileColorSpace &r_colorspace)
bool imb_is_a_tiff(const unsigned char *mem, size_t size)
ImBuf * imb_load_psd(const unsigned char *mem, size_t size, int flags, ImFileColorSpace &r_colorspace)
Definition format_psd.cc:23
#define IM_MAX_SPACE
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
const ImFileType IMB_FILE_TYPES[]
Definition filetype.cc:24
const ImFileType * IMB_FILE_TYPES_LAST
Definition filetype.cc:220
char metadata_colorspace[IM_MAX_SPACE]
bool(* save)(ImBuf *ibuf, const char *filepath, int flags)
bool(* is_a)(const unsigned char *buf, size_t size)
void(* exit)()
void(* init)()
int default_save_role