Blender V4.3
IMB_imbuf.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
41#pragma once
42
43#include "../gpu/GPU_texture.hh"
44
45#include "BLI_utildefines.h"
46
47#include "IMB_imbuf_types.hh"
48
49#define IM_MAX_SPACE 64
50
51struct ImBuf;
52struct rctf;
53struct rcti;
54
55struct ImBufAnim;
56
58
59struct GSet;
60struct ImageFormatData;
61struct Stereo3dFormat;
62
63void IMB_init();
64void IMB_exit();
65
66ImBuf *IMB_ibImageFromMemory(const unsigned char *mem,
67 size_t size,
68 int flags,
69 char colorspace[IM_MAX_SPACE],
70 const char *descr);
71
72ImBuf *IMB_testiffname(const char *filepath, int flags);
73
74ImBuf *IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE]);
75
77 Zero = 0,
80 LoadLargeFiles = (1 << 0),
81};
83
84ImBuf *IMB_thumb_load_image(const char *filepath,
85 const size_t max_thumb_size,
86 char colorspace[IM_MAX_SPACE],
88
89void IMB_freeImBuf(ImBuf *ibuf);
90
91ImBuf *IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags);
92
98bool IMB_initImBuf(
99 ImBuf *ibuf, unsigned int x, unsigned int y, unsigned char planes, unsigned int flags);
100
106 float *float_buffer,
107 unsigned int w,
108 unsigned int h,
109 unsigned int channels);
110
114ImBuf *IMB_allocFromBuffer(const uint8_t *byte_buffer,
115 const float *float_buffer,
116 unsigned int w,
117 unsigned int h,
118 unsigned int channels);
119
127void IMB_assign_byte_buffer(ImBuf *ibuf, uint8_t *buffer_data, ImBufOwnership ownership);
128void IMB_assign_float_buffer(ImBuf *ibuf, float *buffer_data, ImBufOwnership ownership);
129
139void IMB_assign_byte_buffer(ImBuf *ibuf, const ImBufByteBuffer &buffer, ImBufOwnership ownership);
141 const ImBufFloatBuffer &buffer,
142 ImBufOwnership ownership);
143void IMB_assign_dds_data(ImBuf *ibuf, const DDSData &data, ImBufOwnership ownership);
144
151
158float *IMB_steal_float_buffer(ImBuf *ibuf);
160
167void IMB_refImBuf(ImBuf *ibuf);
169
170ImBuf *IMB_dupImBuf(const ImBuf *ibuf1);
171
175size_t IMB_get_size_in_memory(ImBuf *ibuf);
176
184size_t IMB_get_rect_len(const ImBuf *ibuf);
185
217
218void IMB_blend_color_byte(unsigned char dst[4],
219 const unsigned char src1[4],
220 const unsigned char src2[4],
221 IMB_BlendMode mode);
222void IMB_blend_color_float(float dst[4],
223 const float src1[4],
224 const float src2[4],
225 IMB_BlendMode mode);
226
230void IMB_rect_crop(ImBuf *ibuf, const rcti *crop);
231
235void IMB_rect_size_set(ImBuf *ibuf, const uint size[2]);
236
237void IMB_rectclip(ImBuf *dbuf,
238 const ImBuf *sbuf,
239 int *destx,
240 int *desty,
241 int *srcx,
242 int *srcy,
243 int *width,
244 int *height);
245void IMB_rectcpy(ImBuf *dbuf,
246 const ImBuf *sbuf,
247 int destx,
248 int desty,
249 int srcx,
250 int srcy,
251 int width,
252 int height);
253void IMB_rectblend(ImBuf *dbuf,
254 const ImBuf *obuf,
255 const ImBuf *sbuf,
256 unsigned short *dmask,
257 const unsigned short *curvemask,
258 const unsigned short *texmask,
259 float mask_max,
260 int destx,
261 int desty,
262 int origx,
263 int origy,
264 int srcx,
265 int srcy,
266 int width,
267 int height,
268 IMB_BlendMode mode,
269 bool accumulate);
271 const ImBuf *obuf,
272 const ImBuf *sbuf,
273 unsigned short *dmask,
274 const unsigned short *curvemask,
275 const unsigned short *texmask,
276 float mask_max,
277 int destx,
278 int desty,
279 int origx,
280 int origy,
281 int srcx,
282 int srcy,
283 int width,
284 int height,
285 IMB_BlendMode mode,
286 bool accumulate);
287
295
299void IMB_anim_set_index_dir(ImBufAnim *anim, const char *dir);
300void IMB_anim_get_filename(ImBufAnim *anim, char *filename, int filename_maxncpy);
301
303
305
306struct IndexBuildContext;
307
312 IMB_Timecode_Type tcs_in_use,
313 int proxy_sizes_in_use,
314 int quality,
315 const bool overwrite,
316 GSet *file_list,
317 bool build_only_on_bad_performance);
318
323 bool *stop,
324 bool *do_update,
325 float *progress);
326
330void IMB_anim_index_rebuild_finish(IndexBuildContext *context, bool stop);
331
336
340double IMD_anim_get_offset(ImBufAnim *anim);
341
346bool IMB_anim_get_fps(const ImBufAnim *anim,
347 bool no_av_base,
348 short *r_frs_sec,
349 float *r_frs_sec_base);
350
351ImBufAnim *IMB_open_anim(const char *filepath,
352 int ib_flags,
353 int streamindex,
354 char colorspace[IM_MAX_SPACE]);
355void IMB_suffix_anim(ImBufAnim *anim, const char *suffix);
356void IMB_close_anim(ImBufAnim *anim);
358bool IMB_anim_can_produce_frames(const ImBufAnim *anim);
359
363
365 int position,
366 IMB_Timecode_Type tc /* = 1 = IMB_TC_RECORD_RUN */,
367 IMB_Proxy_Size preview_size /* = 0 = IMB_PROXY_NONE */);
368
373
374void IMB_free_anim(ImBufAnim *anim);
375
376#define FILTER_MASK_NULL 0
377#define FILTER_MASK_MARGIN 1
378#define FILTER_MASK_USED 2
379
380void IMB_mask_filter_extend(char *mask, int width, int height);
381void IMB_mask_clear(ImBuf *ibuf, const char *mask, int val);
388void IMB_filter_extend(ImBuf *ibuf, char *mask, int filter);
392void IMB_makemipmap(ImBuf *ibuf, int use_filter);
396void IMB_remakemipmap(ImBuf *ibuf, int use_filter);
397ImBuf *IMB_getmipmap(ImBuf *ibuf, int level);
398
399void IMB_filtery(ImBuf *ibuf);
400
401ImBuf *IMB_onehalf(ImBuf *ibuf1);
402
404enum class IMBScaleFilter {
406 Nearest,
410 Bilinear,
415 Box,
416};
417
422bool IMB_scale(ImBuf *ibuf,
423 unsigned int newx,
424 unsigned int newy,
425 IMBScaleFilter filter,
426 bool threaded = true);
427
428bool IMB_saveiff(ImBuf *ibuf, const char *filepath, int flags);
429
430bool IMB_ispic(const char *filepath);
431bool IMB_ispic_type_matches(const char *filepath, int filetype);
432int IMB_ispic_type_from_memory(const unsigned char *buf, size_t buf_size);
433int IMB_ispic_type(const char *filepath);
434
439bool IMB_isanim(const char *filepath);
440
444bool IMB_alpha_affects_rgb(const ImBuf *ibuf);
445
449void IMB_rect_from_float(ImBuf *ibuf);
450void IMB_float_from_rect_ex(ImBuf *dst, const ImBuf *src, const rcti *region_to_update);
451void IMB_float_from_rect(ImBuf *ibuf);
455void IMB_color_to_bw(ImBuf *ibuf);
456void IMB_saturation(ImBuf *ibuf, float sat);
457
458/* Converting pixel buffers. */
459
463void IMB_buffer_byte_from_float(unsigned char *rect_to,
464 const float *rect_from,
465 int channels_from,
466 float dither,
467 int profile_to,
468 int profile_from,
469 bool predivide,
470 int width,
471 int height,
472 int stride_to,
473 int stride_from);
477void IMB_buffer_byte_from_float_mask(unsigned char *rect_to,
478 const float *rect_from,
479 int channels_from,
480 float dither,
481 bool predivide,
482 int width,
483 int height,
484 int stride_to,
485 int stride_from,
486 char *mask);
490void IMB_buffer_float_from_byte(float *rect_to,
491 const unsigned char *rect_from,
492 int profile_to,
493 int profile_from,
494 bool predivide,
495 int width,
496 int height,
497 int stride_to,
498 int stride_from);
502void IMB_buffer_float_from_float(float *rect_to,
503 const float *rect_from,
504 int channels_from,
505 int profile_to,
506 int profile_from,
507 bool predivide,
508 int width,
509 int height,
510 int stride_to,
511 int stride_from);
512void IMB_buffer_float_from_float_threaded(float *rect_to,
513 const float *rect_from,
514 int channels_from,
515 int profile_to,
516 int profile_from,
517 bool predivide,
518 int width,
519 int height,
520 int stride_to,
521 int stride_from);
525void IMB_buffer_float_from_float_mask(float *rect_to,
526 const float *rect_from,
527 int channels_from,
528 int width,
529 int height,
530 int stride_to,
531 int stride_from,
532 char *mask);
536void IMB_buffer_byte_from_byte(unsigned char *rect_to,
537 const unsigned char *rect_from,
538 int profile_to,
539 int profile_from,
540 bool predivide,
541 int width,
542 int height,
543 int stride_to,
544 int stride_from);
545
553
554void IMB_alpha_under_color_float(float *rect_float, int x, int y, float backcol[3]);
555void IMB_alpha_under_color_byte(unsigned char *rect, int x, int y, const float backcol[3]);
556
557ImBuf *IMB_loadifffile(int file, int flags, char colorspace[IM_MAX_SPACE], const char *descr);
558
559ImBuf *IMB_half_x(ImBuf *ibuf1);
560ImBuf *IMB_half_y(ImBuf *ibuf1);
561
562void IMB_flipx(ImBuf *ibuf);
563void IMB_flipy(ImBuf *ibuf);
564
565/* Rotate by 90 degree increments. Returns true if the ImBuf is altered. */
566bool IMB_rotate_orthogonal(ImBuf *ibuf, int degrees);
567
568/* Pre-multiply alpha. */
569
570void IMB_premultiply_alpha(ImBuf *ibuf);
572
578void IMB_rectfill(ImBuf *drect, const float col[4]);
595 ImBuf *ibuf, const float col[4], int x1, int y1, int x2, int y2, ColorManagedDisplay *display);
606 const ImBuf *ibuf, const float col[4], int x1, int y1, int x2, int y2);
607void IMB_rectfill_alpha(ImBuf *ibuf, float value);
608
613void buf_rectfill_area(unsigned char *rect,
614 float *rectf,
615 int width,
616 int height,
617 const float col[4],
618 ColorManagedDisplay *display,
619 int x1,
620 int y1,
621 int x2,
622 int y2);
623
627void *imb_alloc_pixels(unsigned int x,
628 unsigned int y,
629 unsigned int channels,
630 size_t typesize,
631 bool initialize_pixels,
632 const char *alloc_name);
633
634bool imb_addrectImBuf(ImBuf *ibuf, bool initialize_pixels = true);
638void imb_freerectImBuf(ImBuf *ibuf);
639
641 const unsigned int channels,
642 bool initialize_pixels = true);
646void imb_freerectfloatImBuf(ImBuf *ibuf);
647void imb_freemipmapImBuf(ImBuf *ibuf);
648
650void imb_freerectImbuf_all(ImBuf *ibuf);
651
652/* Free the GPU textures of the given image buffer, leaving the CPU buffers unchanged.
653 * The ibuf can be nullptr, in which case the function does nothing. */
654void IMB_free_gpu_textures(ImBuf *ibuf);
655
660 int buffer_lines,
661 int handle_size,
662 void *init_customdata,
663 void(init_handle)(void *handle, int start_line, int tot_line, void *customdata),
664 void *(do_thread)(void *));
665
666using ScanlineThreadFunc = void (*)(void *custom_data, int scanline);
667void IMB_processor_apply_threaded_scanlines(int total_scanlines,
668 ScanlineThreadFunc do_thread,
669 void *custom_data);
670
684
704void IMB_transform(const ImBuf *src,
705 ImBuf *dst,
708 const float transform_matrix[4][4],
709 const rctf *src_crop);
710
711/* FFMPEG */
712
715
716GPUTexture *IMB_create_gpu_texture(const char *name,
717 ImBuf *ibuf,
718 bool use_high_bitdepth,
719 bool use_premult);
720
722 bool high_bitdepth,
723 bool use_grayscale);
724
730void IMB_gpu_clamp_half_float(ImBuf *image_buffer);
731
736GPUTexture *IMB_touch_gpu_texture(const char *name,
737 ImBuf *ibuf,
738 int w,
739 int h,
740 int layers,
741 bool use_high_bitdepth,
742 bool use_grayscale);
743
749void IMB_update_gpu_texture_sub(GPUTexture *tex,
750 ImBuf *ibuf,
751 int x,
752 int y,
753 int z,
754 int w,
755 int h,
756 bool use_high_bitdepth,
757 bool use_grayscale,
758 bool use_premult);
759
761 char mode, bool is_squeezed, size_t width, size_t height, size_t *r_width, size_t *r_height);
763 char mode, bool is_squeezed, size_t width, size_t height, size_t *r_width, size_t *r_height);
764int *IMB_stereo3d_from_rect(const ImageFormatData *im_format,
765 size_t x,
766 size_t y,
767 size_t channels,
768 int *rect_left,
769 int *rect_right);
770float *IMB_stereo3d_from_rectf(const ImageFormatData *im_format,
771 size_t x,
772 size_t y,
773 size_t channels,
774 float *rectf_left,
775 float *rectf_right);
779ImBuf *IMB_stereo3d_ImBuf(const ImageFormatData *im_format, ImBuf *ibuf_left, ImBuf *ibuf_right);
784 ImBuf *ibuf_stereo3d,
785 ImBuf **r_ibuf_left,
786 ImBuf **r_ibuf_right);
struct GSet GSet
Definition BLI_ghash.h:341
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
eGPUTextureFormat
void IMB_flipy(ImBuf *ibuf)
ImBuf * IMB_loadifffile(int file, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
Definition readimage.cc:118
void IMB_exit()
Definition module.cc:26
bool IMB_anim_can_produce_frames(const ImBufAnim *anim)
void IMB_buffer_float_from_float_mask(float *rect_to, const float *rect_from, int channels_from, int width, int height, int stride_to, int stride_from, char *mask)
Definition divers.cc:572
void IMB_premultiply_alpha(ImBuf *ibuf)
Definition filter.cc:579
void imb_freerectImBuf(ImBuf *ibuf)
void IMB_free_gpu_textures(ImBuf *ibuf)
ImBuf * IMB_onehalf(ImBuf *ibuf1)
Definition scaling.cc:314
int IMB_anim_get_image_height(ImBufAnim *anim)
const char * IMB_ffmpeg_last_error()
void IMB_rectfill_alpha(ImBuf *ibuf, float value)
Definition rectop.cc:1259
void imb_freerectfloatImBuf(ImBuf *ibuf)
void IMB_anim_index_rebuild(IndexBuildContext *context, bool *stop, bool *do_update, float *progress)
Definition indexer.cc:1283
bool IMB_saveiff(ImBuf *ibuf, const char *filepath, int flags)
size_t IMB_get_rect_len(const ImBuf *ibuf)
Get the length of the rect of the given image buffer in terms of pixels.
float * IMB_steal_float_buffer(ImBuf *ibuf)
void IMB_flipx(ImBuf *ibuf)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
ImBuf * IMB_testiffname(const char *filepath, int flags)
Definition readimage.cc:227
void IMB_make_writable_byte_buffer(ImBuf *ibuf)
void IMB_mask_filter_extend(char *mask, int width, int height)
Definition filter.cc:219
uint8_t * IMB_steal_byte_buffer(ImBuf *ibuf)
int * IMB_stereo3d_from_rect(const ImageFormatData *im_format, size_t x, size_t y, size_t channels, int *rect_left, int *rect_right)
void IMB_assign_dds_data(ImBuf *ibuf, const DDSData &data, ImBufOwnership ownership)
ImBuf * IMB_anim_absolute(ImBufAnim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
void IMB_rect_from_float(ImBuf *ibuf)
Definition divers.cc:694
void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, const float col[4], ColorManagedDisplay *display, int x1, int y1, int x2, int y2)
Definition rectop.cc:1130
void IMB_float_from_rect_ex(ImBuf *dst, const ImBuf *src, const rcti *region_to_update)
Definition divers.cc:748
void IMB_rectblend_threaded(ImBuf *dbuf, const ImBuf *obuf, const ImBuf *sbuf, unsigned short *dmask, const unsigned short *curvemask, const unsigned short *texmask, float mask_max, int destx, int desty, int origx, int origy, int srcx, int srcy, int width, int height, IMB_BlendMode mode, bool accumulate)
Definition rectop.cc:992
ImBuf * IMB_allocFromBuffer(const uint8_t *byte_buffer, const float *float_buffer, unsigned int w, unsigned int h, unsigned int channels)
IMBScaleFilter
Definition IMB_imbuf.hh:404
double IMD_anim_get_offset(ImBufAnim *anim)
void IMB_anim_set_index_dir(ImBufAnim *anim, const char *dir)
Definition indexer.cc:1336
GPUTexture * IMB_touch_gpu_texture(const char *name, ImBuf *ibuf, int w, int h, int layers, bool use_high_bitdepth, bool use_grayscale)
Definition util_gpu.cc:255
ImBuf * IMB_half_x(ImBuf *ibuf1)
Definition scaling.cc:88
void IMB_processor_apply_threaded(int buffer_lines, int handle_size, void *init_customdata, void(init_handle)(void *handle, int start_line, int tot_line, void *customdata), void *(do_thread)(void *))
ImBuf * IMB_makeSingleUser(ImBuf *ibuf)
void imb_freerectImbuf_all(ImBuf *ibuf)
void IMB_assign_float_buffer(ImBuf *ibuf, float *buffer_data, ImBufOwnership ownership)
ImBuf * IMB_half_y(ImBuf *ibuf1)
Definition scaling.cc:180
int IMB_anim_index_get_frame_index(ImBufAnim *anim, IMB_Timecode_Type tc, int position)
Definition indexer.cc:1402
bool IMB_anim_get_fps(const ImBufAnim *anim, bool no_av_base, short *r_frs_sec, float *r_frs_sec_base)
void IMB_rectfill_area_replace(const ImBuf *ibuf, const float col[4], int x1, int y1, int x2, int y2)
Definition rectop.cc:1083
void IMB_makemipmap(ImBuf *ibuf, int use_filter)
Definition filter.cc:490
void IMB_ImBufFromStereo3d(const Stereo3dFormat *s3d, ImBuf *ibuf_stereo3d, ImBuf **r_ibuf_left, ImBuf **r_ibuf_right)
ImBuf * IMB_ibImageFromMemory(const unsigned char *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
eIMBTransformMode
Transform modes to use for IMB_transform function.
Definition IMB_imbuf.hh:676
@ IMB_TRANSFORM_MODE_WRAP_REPEAT
Wrap repeat the source buffer. Only supported in with nearest filtering.
Definition IMB_imbuf.hh:682
@ IMB_TRANSFORM_MODE_REGULAR
Do not crop or repeat.
Definition IMB_imbuf.hh:678
@ IMB_TRANSFORM_MODE_CROP_SRC
Crop the source buffer.
Definition IMB_imbuf.hh:680
void(*)(void *custom_data, int scanline) ScanlineThreadFunc
Definition IMB_imbuf.hh:666
void IMB_remakemipmap(ImBuf *ibuf, int use_filter)
Definition filter.cc:454
bool IMB_alpha_affects_rgb(const ImBuf *ibuf)
Definition divers.cc:91
void IMB_rectfill_area(ImBuf *ibuf, const float col[4], int x1, int y1, int x2, int y2, ColorManagedDisplay *display)
Definition rectop.cc:1241
void IMB_unpremultiply_alpha(ImBuf *ibuf)
Definition filter.cc:641
ImBuf * IMB_allocFromBufferOwn(uint8_t *byte_buffer, float *float_buffer, unsigned int w, unsigned int h, unsigned int channels)
void IMB_buffer_byte_from_byte(unsigned char *rect_to, const unsigned char *rect_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
Definition divers.cc:625
void IMB_buffer_float_from_byte(float *rect_to, const unsigned char *rect_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
Definition divers.cc:348
void IMB_buffer_float_from_float(float *rect_to, const float *rect_from, int channels_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
Definition divers.cc:407
int IMB_anim_get_image_width(ImBufAnim *anim)
void imb_freemipmapImBuf(ImBuf *ibuf)
void IMB_buffer_byte_from_float_mask(unsigned char *rect_to, const float *rect_from, int channels_from, float dither, bool predivide, int width, int height, int stride_to, int stride_from, char *mask)
Definition divers.cc:260
ImBuf * IMB_anim_previewframe(ImBufAnim *anim)
int IMB_ispic_type(const char *filepath)
void IMB_make_writable_float_buffer(ImBuf *ibuf)
void IMB_blend_color_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4], IMB_BlendMode mode)
Definition rectop.cc:27
void IMB_mask_clear(ImBuf *ibuf, const char *mask, int val)
Definition filter.cc:263
eGPUTextureFormat IMB_gpu_get_texture_format(const ImBuf *ibuf, bool high_bitdepth, bool use_grayscale)
Definition util_gpu.cc:395
void IMB_color_to_bw(ImBuf *ibuf)
Definition divers.cc:838
void IMB_rect_crop(ImBuf *ibuf, const rcti *crop)
Definition rectop.cc:240
ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
Definition readimage.cc:146
void IMB_ffmpeg_init()
int IMB_anim_proxy_get_existing(ImBufAnim *anim)
Definition indexer.cc:1413
void IMB_update_gpu_texture_sub(GPUTexture *tex, ImBuf *ibuf, int x, int y, int z, int w, int h, bool use_high_bitdepth, bool use_grayscale, bool use_premult)
Definition util_gpu.cc:281
void IMB_anim_index_rebuild_finish(IndexBuildContext *context, bool stop)
Definition indexer.cc:1301
void IMB_rectclip(ImBuf *dbuf, const ImBuf *sbuf, int *destx, int *desty, int *srcx, int *srcy, int *width, int *height)
Definition rectop.cc:306
void IMB_processor_apply_threaded_scanlines(int total_scanlines, ScanlineThreadFunc do_thread, void *custom_data)
void IMB_init()
Definition module.cc:18
void IMB_buffer_byte_from_float(unsigned char *rect_to, const float *rect_from, int channels_from, float dither, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
Definition divers.cc:96
void IMB_buffer_float_from_float_threaded(float *rect_to, const float *rect_from, int channels_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
Definition divers.cc:534
#define IM_MAX_SPACE
Definition IMB_imbuf.hh:49
void IMB_free_anim(ImBufAnim *anim)
Definition anim_movie.cc:60
IMB_BlendMode
Definition IMB_imbuf.hh:186
@ IMB_BLEND_EXCLUSION
Definition IMB_imbuf.hh:206
@ IMB_BLEND_DIFFERENCE
Definition IMB_imbuf.hh:205
@ IMB_BLEND_HARDLIGHT
Definition IMB_imbuf.hh:196
@ IMB_BLEND_COLORBURN
Definition IMB_imbuf.hh:197
@ IMB_BLEND_COLORDODGE
Definition IMB_imbuf.hh:199
@ IMB_BLEND_ERASE_ALPHA
Definition IMB_imbuf.hh:193
@ IMB_BLEND_SCREEN
Definition IMB_imbuf.hh:200
@ IMB_BLEND_HUE
Definition IMB_imbuf.hh:207
@ IMB_BLEND_MUL
Definition IMB_imbuf.hh:190
@ IMB_BLEND_ADD_ALPHA
Definition IMB_imbuf.hh:194
@ IMB_BLEND_DARKEN
Definition IMB_imbuf.hh:192
@ IMB_BLEND_OVERLAY
Definition IMB_imbuf.hh:195
@ IMB_BLEND_SATURATION
Definition IMB_imbuf.hh:208
@ IMB_BLEND_VIVIDLIGHT
Definition IMB_imbuf.hh:203
@ IMB_BLEND_LUMINOSITY
Definition IMB_imbuf.hh:209
@ IMB_BLEND_LIGHTEN
Definition IMB_imbuf.hh:191
@ IMB_BLEND_SOFTLIGHT
Definition IMB_imbuf.hh:201
@ IMB_BLEND_COPY_RGB
Definition IMB_imbuf.hh:214
@ IMB_BLEND_COLOR
Definition IMB_imbuf.hh:210
@ IMB_BLEND_LINEARLIGHT
Definition IMB_imbuf.hh:204
@ IMB_BLEND_COPY_ALPHA
Definition IMB_imbuf.hh:215
@ IMB_BLEND_PINLIGHT
Definition IMB_imbuf.hh:202
@ IMB_BLEND_MIX
Definition IMB_imbuf.hh:187
@ IMB_BLEND_COPY
Definition IMB_imbuf.hh:213
@ IMB_BLEND_INTERPOLATE
Definition IMB_imbuf.hh:211
@ IMB_BLEND_ADD
Definition IMB_imbuf.hh:188
@ IMB_BLEND_SUB
Definition IMB_imbuf.hh:189
@ IMB_BLEND_LINEARBURN
Definition IMB_imbuf.hh:198
void IMB_freeImBuf(ImBuf *ibuf)
void IMB_saturation(ImBuf *ibuf, float sat)
Definition divers.cc:865
void IMB_stereo3d_read_dimensions(char mode, bool is_squeezed, size_t width, size_t height, size_t *r_width, size_t *r_height)
void * imb_alloc_pixels(unsigned int x, unsigned int y, unsigned int channels, size_t typesize, bool initialize_pixels, const char *alloc_name)
bool IMB_rotate_orthogonal(ImBuf *ibuf, int degrees)
ImBuf * IMB_stereo3d_ImBuf(const ImageFormatData *im_format, ImBuf *ibuf_left, ImBuf *ibuf_right)
ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
void IMB_convert_rgba_to_abgr(ImBuf *ibuf)
bool IMB_isanim(const char *filepath)
void IMB_refImBuf(ImBuf *ibuf)
void IMB_rectblend(ImBuf *dbuf, const ImBuf *obuf, const ImBuf *sbuf, unsigned short *dmask, const unsigned short *curvemask, const unsigned short *texmask, float mask_max, int destx, int desty, int origx, int origy, int srcx, int srcy, int width, int height, IMB_BlendMode mode, bool accumulate)
Definition rectop.cc:494
int IMB_ispic_type_from_memory(const unsigned char *buf, size_t buf_size)
uint8_t * IMB_steal_encoded_buffer(ImBuf *ibuf)
bool imb_addrectImBuf(ImBuf *ibuf, bool initialize_pixels=true)
void IMB_filtery(ImBuf *ibuf)
Definition filter.cc:65
void IMB_blend_color_float(float dst[4], const float src1[4], const float src2[4], IMB_BlendMode mode)
Definition rectop.cc:115
void IMB_rectfill(ImBuf *drect, const float col[4])
Definition rectop.cc:1051
void IMB_rect_size_set(ImBuf *ibuf, const uint size[2])
Definition rectop.cc:287
IndexBuildContext * IMB_anim_index_rebuild_context(ImBufAnim *anim, IMB_Timecode_Type tcs_in_use, int proxy_sizes_in_use, int quality, const bool overwrite, GSet *file_list, bool build_only_on_bad_performance)
Definition indexer.cc:1212
ImBufAnim * IMB_open_anim(const char *filepath, int ib_flags, int streamindex, char colorspace[IM_MAX_SPACE])
float * IMB_stereo3d_from_rectf(const ImageFormatData *im_format, size_t x, size_t y, size_t channels, float *rectf_left, float *rectf_right)
IMBThumbLoadFlags
Definition IMB_imbuf.hh:76
void IMB_close_anim(ImBufAnim *anim)
Definition anim_movie.cc:76
void IMB_alpha_under_color_float(float *rect_float, int x, int y, float backcol[3])
void IMB_transform(const ImBuf *src, ImBuf *dst, eIMBTransformMode mode, eIMBInterpolationFilterMode filter, const float transform_matrix[4][4], const rctf *src_crop)
Transform source image buffer onto destination image buffer using a transform matrix.
void IMB_close_anim_proxies(ImBufAnim *anim)
Definition anim_movie.cc:85
bool IMB_get_gop_decode_time(ImBufAnim *anim)
bool IMB_initImBuf(ImBuf *ibuf, unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
bool IMB_ispic_type_matches(const char *filepath, int filetype)
void IMB_assign_byte_buffer(ImBuf *ibuf, uint8_t *buffer_data, ImBufOwnership ownership)
ImBuf * IMB_thumb_load_image(const char *filepath, const size_t max_thumb_size, char colorspace[IM_MAX_SPACE], IMBThumbLoadFlags load_flags=IMBThumbLoadFlags::Zero)
Definition readimage.cc:169
void IMB_rectcpy(ImBuf *dbuf, const ImBuf *sbuf, int destx, int desty, int srcx, int srcy, int width, int height)
Definition rectop.cc:463
void IMB_anim_get_filename(ImBufAnim *anim, char *filename, int filename_maxncpy)
Definition indexer.cc:381
void IMB_alpha_under_color_byte(unsigned char *rect, int x, int y, const float backcol[3])
bool IMB_ispic(const char *filepath)
size_t IMB_get_size_in_memory(ImBuf *ibuf)
void IMB_filter_extend(ImBuf *ibuf, char *mask, int filter)
Definition filter.cc:319
GPUTexture * IMB_create_gpu_texture(const char *name, ImBuf *ibuf, bool use_high_bitdepth, bool use_premult)
Definition util_gpu.cc:312
ImBuf * IMB_getmipmap(ImBuf *ibuf, int level)
Definition filter.cc:527
void IMB_float_from_rect(ImBuf *ibuf)
Definition divers.cc:802
void IMB_stereo3d_write_dimensions(char mode, bool is_squeezed, size_t width, size_t height, size_t *r_width, size_t *r_height)
int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc)
bool IMB_scale(ImBuf *ibuf, unsigned int newx, unsigned int newy, IMBScaleFilter filter, bool threaded=true)
Definition scaling.cc:779
void IMB_suffix_anim(ImBufAnim *anim, const char *suffix)
eIMBInterpolationFilterMode
Definition IMB_imbuf.hh:288
@ IMB_FILTER_NEAREST
Definition IMB_imbuf.hh:289
@ IMB_FILTER_CUBIC_BSPLINE
Definition IMB_imbuf.hh:291
@ IMB_FILTER_CUBIC_MITCHELL
Definition IMB_imbuf.hh:292
@ IMB_FILTER_BILINEAR
Definition IMB_imbuf.hh:290
@ IMB_FILTER_BOX
Definition IMB_imbuf.hh:293
bool imb_addrectfloatImBuf(ImBuf *ibuf, const unsigned int channels, bool initialize_pixels=true)
void IMB_gpu_clamp_half_float(ImBuf *image_buffer)
Definition util_gpu.cc:404
IMB_Proxy_Size
IMB_Timecode_Type
Contains defines and structs used throughout the imbuf module.
ImBufOwnership
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition btQuadWord.h:117
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
uint col
unsigned char uint8_t
Definition stdint.h:78