Blender V5.0
BKE_image.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#pragma once
5
9
10#include "BLI_compiler_attrs.h"
11#include "BLI_mutex.hh"
12
13#include <cstdint>
14#include <optional>
15
16namespace blender::gpu {
17class Texture;
18} // namespace blender::gpu
19
20namespace blender::ocio {
21class ColorSpace;
22} // namespace blender::ocio
24
25struct rcti;
26struct Depsgraph;
27struct ID;
28struct ImBuf;
29struct MovieReader;
30struct Image;
31struct ImageFormatData;
32struct ImagePool;
33struct ImageTile;
34struct ImbFormatOptions;
35struct Library;
36struct ListBase;
37struct Main;
38struct Object;
39struct PartialUpdateRegister;
40struct PartialUpdateUser;
41struct RenderResult;
42struct RenderSlot;
43struct ReportList;
44struct Scene;
45struct StampData;
46
47#define IMA_MAX_SPACE 64
48#define IMA_UDIM_MAX 2000
49
50namespace blender::bke {
51
53 /* Mutex used to guarantee thread-safe access to the cached ImBuf of the corresponding image ID.
54 */
56
58 PartialUpdateRegister *partial_update_register = nullptr;
60 PartialUpdateUser *partial_update_user = nullptr;
61
62 /* The image's current update count. See deg::set_id_update_count for more information. */
64
65 /* Compositor viewer might be translated, and that translation will be stored in this runtime
66 * vector by the compositor so that the editor draw code can draw the image translated. */
67 float backdrop_offset[2] = {};
68};
69
70} // namespace blender::bke
71
73void BKE_image_free_views(Image *image);
74void BKE_image_free_buffers(Image *image);
79void BKE_image_free_buffers_ex(Image *image, bool do_lock);
85void BKE_image_free_data(Image *image);
86
87typedef void(StampCallback)(void *data,
88 const char *propname,
89 char *propvalue,
90 int propvalue_maxncpy);
91
93 Object *camera,
94 RenderResult *rr,
95 bool allocate_only);
104bool BKE_stamp_is_known_field(const char *field_name);
105void BKE_imbuf_stamp_info(const RenderResult *rr, ImBuf *ibuf);
108 StampData *stamp_data,
109 StampCallback callback,
110 bool noskip);
112 const Image &image,
113 StampCallback callback,
114 bool noskip);
115void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value);
116StampData *BKE_stamp_data_copy(const StampData *stamp_data);
117void BKE_stamp_data_free(StampData *stamp_data);
118void BKE_image_stamp_buf(Scene *scene,
119 Object *camera,
120 const StampData *stamp_data_template,
121 ImBuf *ibuf);
122bool BKE_imbuf_alpha_test(ImBuf *ibuf);
123bool BKE_imbuf_write_stamp(const Scene *scene,
124 const RenderResult *rr,
125 ImBuf *ibuf,
126 const char *filepath,
127 const ImageFormatData *imf);
131bool BKE_imbuf_write(ImBuf *ibuf, const char *filepath, const ImageFormatData *imf);
136bool BKE_imbuf_write_as(ImBuf *ibuf,
137 const char *filepath,
138 const ImageFormatData *imf,
139 bool save_copy);
140
144MovieReader *openanim(const char *filepath,
145 int ibuf_flags,
146 int streamindex,
147 bool keep_original_colorspace,
148 char colorspace[IMA_MAX_SPACE]);
149MovieReader *openanim_noload(const char *filepath,
150 int flags,
151 int streamindex,
152 bool keep_original_colorspace,
153 char colorspace[IMA_MAX_SPACE]);
154
155void BKE_image_tag_time(Image *ima);
156
157/* ********************************** NEW IMAGE API *********************** */
158
159/* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
160/* should be used in conjunction with an ID * to Image. */
161struct ImageUser;
162struct RenderData;
163struct RenderPass;
164struct RenderResult;
165
166/* signals */
167/* reload only frees, doesn't read until image_get_ibuf() called */
168#define IMA_SIGNAL_RELOAD 0
169#define IMA_SIGNAL_FREE 1
170/* source changes, from image to sequence or movie, etc */
171#define IMA_SIGNAL_SRC_CHANGE 5
172/* image-user gets a new image, check settings */
173#define IMA_SIGNAL_USER_NEW_IMAGE 6
174#define IMA_SIGNAL_COLORMANAGE 7
175
179bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser);
180
188ImBuf *BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock);
189
203 Image &image,
204 const ImageUser &image_user,
205 const char *pass_name,
206 const char *view_name);
207
208void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock);
209
214ImBuf *BKE_image_preview(Image *ima, short max_size, short *r_width, short *r_height);
215
220
224char BKE_image_alpha_mode_from_extension_ex(const char *filepath);
226
234Image *BKE_image_load(Main *bmain, const char *filepath);
236 std::optional<Library *> owner_library,
237 const char *filepath);
248Image *BKE_image_load_exists(Main *bmain, const char *filepath, bool *r_exists = nullptr);
250 std::optional<Library *> owner_library,
251 const char *filepath,
252 bool *r_exists = nullptr);
253
258 unsigned int width,
259 unsigned int height,
260 const char *name,
261 int depth,
262 int floatbuf,
263 short gen_type,
264 const float color[4],
265 bool stereo3d,
266 bool is_data,
267 bool tiled);
272Image *BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name);
273
281
286void BKE_image_init_imageuser(Image *ima, ImageUser *iuser);
287void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal);
288
290 const Main *mainp,
291 void *customdata,
292 void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata));
293
300Image *BKE_image_ensure_viewer(Main *bmain, int type, const char *name);
305void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser);
306
310void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra);
311int BKE_image_user_frame_get(const ImageUser *iuser, int cfra, bool *r_is_in_range);
312void BKE_image_user_file_path(const ImageUser *iuser, const Image *ima, char *filepath);
313void BKE_image_user_file_path_ex(const Main *bmain,
314 const ImageUser *iuser,
315 const Image *ima,
316 char *filepath,
317 const bool resolve_udim,
318 const bool resolve_multiview);
319void BKE_image_editors_update_frame(const Main *bmain, int cfra);
320
325void BKE_image_user_id_eval_animation(Depsgraph *depsgraph, ID *id);
326
332
336void BKE_image_multiview_index(const Image *ima, ImageUser *iuser);
337
342bool BKE_image_is_multilayer(const Image *ima);
343bool BKE_image_is_multiview(const Image *ima);
344bool BKE_image_is_stereo(const Image *ima);
345
358void BKE_image_release_renderresult(Scene *scene, Image *ima, RenderResult *render_result);
359
363bool BKE_image_is_openexr(Image *ima);
364
368void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot);
369
374
379void BKE_image_free_anim_ibufs(Image *ima, int except_frame);
380
384void BKE_image_all_free_anim_ibufs(Main *bmain, int cfra);
385
392
396bool BKE_image_memorypack(Image *ima);
397void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath);
398void BKE_image_packfiles_from_mem(ReportList *reports, Image *ima, char *data, size_t data_len);
399
403void BKE_image_print_memlist(Main *bmain);
404
408void BKE_image_merge(Main *bmain, Image *dest, Image *source);
409
413bool BKE_image_scale(Image *image, int width, int height, ImageUser *iuser);
414
418bool BKE_image_has_alpha(Image *image);
419
424
429int BKE_image_get_tile_label(const Image *ima,
430 const ImageTile *tile,
431 char *label,
432 int label_maxncpy);
433
441bool BKE_image_get_tile_info(char *filepath,
443 int *r_tile_start,
444 int *r_tile_range);
445
446ImageTile *BKE_image_add_tile(Image *ima, int tile_number, const char *label);
448void BKE_image_reassign_tile(Image *ima, ImageTile *tile, int new_tile_number);
449void BKE_image_sort_tiles(Image *ima);
450
452
458
462bool BKE_image_is_filename_tokenized(char *filepath);
463
468void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy);
469void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy);
470
477bool BKE_image_tile_filepath_exists(const char *filepath);
478
484char *BKE_image_get_tile_strformat(const char *filepath, eUDIM_TILE_FORMAT *r_tile_format);
485bool BKE_image_get_tile_number_from_filepath(const char *filepath,
486 const char *pattern,
487 eUDIM_TILE_FORMAT tile_format,
488 int *r_tile_number);
490 const char *pattern,
491 eUDIM_TILE_FORMAT tile_format,
492 int tile_number);
493
494ImageTile *BKE_image_get_tile(Image *ima, int tile_number);
496
497int BKE_image_get_tile_from_pos(Image *ima, const float uv[2], float r_uv[2], float r_ofs[2]);
498void BKE_image_get_tile_uv(const Image *ima, const int tile_number, float r_uv[2]);
499
504 const float co[2],
505 float r_uv_offset[2]) ATTR_NONNULL(2, 3);
506int BKE_image_find_nearest_tile(const Image *image, const float co[2])
508
509void BKE_image_get_size(Image *image, ImageUser *iuser, int *r_width, int *r_height);
510void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2]);
511void BKE_image_get_aspect(Image *image, float *r_aspx, float *r_aspy);
512
513/* `image_gen.cc` */
514
516 unsigned char *rect, float *rect_float, int width, int height, const float color[4]);
517void BKE_image_buf_fill_checker(unsigned char *rect, float *rect_float, int width, int height);
518void BKE_image_buf_fill_checker_color(unsigned char *rect,
519 float *rect_float,
520 int width,
521 int height);
522
523/* Cycles hookup */
524
525unsigned char *BKE_image_get_pixels_for_frame(Image *image, int frame, int tile);
526float *BKE_image_get_float_pixels_for_frame(Image *image, int frame, int tile);
527
528/* Image modifications */
529
530bool BKE_image_is_dirty(Image *image);
531void BKE_image_mark_dirty(Image *image, ImBuf *ibuf);
533
534bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable);
535
540bool BKE_image_has_anim(Image *image);
541bool BKE_image_has_packedfile(const Image *image);
542bool BKE_image_has_filepath(const Image *ima);
546bool BKE_image_is_animated(Image *image);
551void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options);
557ImBuf *BKE_image_get_ibuf_with_name(Image *image, const char *filepath);
568
573
586void BKE_image_ensure_gpu_texture(Image *image, ImageUser *iuser);
587
602blender::gpu::Texture *BKE_image_get_gpu_texture(Image *image, ImageUser *iuser);
603
604/*
605 * Like BKE_image_get_gpu_texture, but can also get render or compositing result.
606 */
607blender::gpu::Texture *BKE_image_get_gpu_viewer_texture(Image *image, ImageUser *iuser);
608
609/*
610 * Like BKE_image_get_gpu_texture, but can also return array and tile mapping texture for UDIM
611 * tiles as used in material shaders.
612 */
617
619 ImageUser *iuser,
620 const bool use_tile_mapping);
621
622/* Same as BKE_image_get_gpu_material_texture but will not load the texture if it isn't already. */
624 ImageUser *iuser,
625 const bool use_tile_mapping);
626
631
636void BKE_image_update_gputexture(Image *ima, ImageUser *iuser, int x, int y, int w, int h);
637
645 Image *ima, ImageTile *image_tile, ImBuf *ibuf, int x, int y, int w, int h);
646
652void BKE_image_paint_set_mipmap(Main *bmain, bool mipmap);
653
658
660bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int slot);
662bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int slot);
663
664/* --- image_partial_update.cc --- */
666struct PartialUpdateUser;
667
671PartialUpdateUser *BKE_image_partial_update_create(const Image *image);
672
676void BKE_image_partial_update_free(PartialUpdateUser *user);
677
678/* --- partial updater (image side) --- */
679
683 const ImageTile *image_tile,
684 const ImBuf *image_buffer,
685 const rcti *updated_region);
eUDIM_TILE_FORMAT
Definition BKE_image.hh:453
@ UDIM_TILE_FORMAT_UVTILE
Definition BKE_image.hh:456
@ UDIM_TILE_FORMAT_NONE
Definition BKE_image.hh:454
@ UDIM_TILE_FORMAT_UDIM
Definition BKE_image.hh:455
void BKE_imbuf_stamp_info(const RenderResult *rr, ImBuf *ibuf)
int BKE_image_get_tile_from_pos(Image *ima, const float uv[2], float r_uv[2], float r_ofs[2])
RenderSlot * BKE_image_get_renderslot(Image *ima, int index)
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
bool BKE_image_is_multilayer(const Image *ima)
bool BKE_image_has_alpha(Image *image)
void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser)
void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra)
void StampCallback(void *data, const char *propname, char *propvalue, int propvalue_maxncpy)
Definition BKE_image.hh:87
char * BKE_image_get_tile_strformat(const char *filepath, eUDIM_TILE_FORMAT *r_tile_format)
Image * BKE_image_load(Main *bmain, const char *filepath)
void BKE_image_partial_update_mark_region(Image *image, const ImageTile *image_tile, const ImBuf *image_buffer, const rcti *updated_region)
Mark a region of the image to update.
void BKE_stamp_info_from_imbuf(RenderResult *rr, ImBuf *ibuf)
void BKE_image_alpha_mode_from_extension(Image *image)
bool BKE_image_scale(Image *image, int width, int height, ImageUser *iuser)
void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2])
bool BKE_image_user_id_has_animation(ID *id)
bool BKE_image_has_filepath(const Image *ima)
void BKE_image_update_gputexture(Image *ima, ImageUser *iuser, int x, int y, int w, int h)
Definition image_gpu.cc:913
void BKE_image_set_filepath_from_tile_number(char *filepath, const char *pattern, eUDIM_TILE_FORMAT tile_format, int tile_number)
void BKE_image_mark_dirty(Image *image, ImBuf *ibuf)
void BKE_image_multilayer_stamp_info_callback(void *data, const Image &image, StampCallback callback, bool noskip)
void BKE_image_get_aspect(Image *image, float *r_aspx, float *r_aspy)
StampData * BKE_stamp_data_copy(const StampData *stamp_data)
ImBuf * BKE_image_acquire_multilayer_view_ibuf(const RenderData &render_data, Image &image, const ImageUser &image_user, const char *pass_name, const char *view_name)
Image * BKE_image_load_exists_in_lib(Main *bmain, std::optional< Library * > owner_library, const char *filepath, bool *r_exists=nullptr)
bool BKE_image_is_openexr(Image *ima)
bool BKE_image_has_multiple_ibufs(Image *image)
Image * BKE_image_ensure_viewer(Main *bmain, int type, const char *name)
RenderPass * BKE_image_multilayer_index(RenderResult *rr, ImageUser *iuser)
bool BKE_image_fill_tile(Image *ima, ImageTile *tile)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
RenderSlot * BKE_image_add_renderslot(Image *ima, const char *name)
StampData * BKE_stamp_info_from_scene_static(const Scene *scene)
ImageGPUTextures BKE_image_get_gpu_material_texture_try(Image *image, ImageUser *iuser, const bool use_tile_mapping)
Definition image_gpu.cc:513
void BKE_image_user_file_path(const ImageUser *iuser, const Image *ima, char *filepath)
void BKE_image_tag_time(Image *ima)
void BKE_image_merge(Main *bmain, Image *dest, Image *source)
blender::gpu::Texture * BKE_image_create_gpu_texture_from_ibuf(Image *image, ImBuf *ibuf)
bool BKE_image_memorypack(Image *ima)
void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath)
void BKE_image_free_anim_gputextures(Main *bmain)
Definition image_gpu.cc:595
void BKE_image_free_buffers_ex(Image *image, bool do_lock)
int int BKE_image_find_nearest_tile(const Image *image, const float co[2]) ATTR_NONNULL(2) ATTR_WARN_UNUSED_RESULT
bool BKE_image_is_dirty(Image *image)
void BKE_stamp_data_free(StampData *stamp_data)
void BKE_image_free_anim_ibufs(Image *ima, int except_frame)
void BKE_image_release_renderresult(Scene *scene, Image *ima, RenderResult *render_result)
void BKE_image_pool_free(ImagePool *pool)
int BKE_image_user_frame_get(const ImageUser *iuser, int cfra, bool *r_is_in_range)
#define IMA_MAX_SPACE
Definition BKE_image.hh:47
void BKE_image_partial_update_free(PartialUpdateUser *user)
free a partial update user.
bool BKE_image_has_gpu_texture_premultiplied_alpha(Image *image, ImBuf *ibuf)
Definition image_gpu.cc:47
int BKE_image_find_nearest_tile_with_offset(const Image *image, const float co[2], float r_uv_offset[2]) ATTR_NONNULL(2
ImageGPUTextures BKE_image_get_gpu_material_texture(Image *image, ImageUser *iuser, const bool use_tile_mapping)
Definition image_gpu.cc:506
void BKE_image_update_gputexture_delayed(Image *ima, ImageTile *image_tile, ImBuf *ibuf, int x, int y, int w, int h)
Definition image_gpu.cc:921
ImBuf * BKE_image_pool_acquire_ibuf(Image *ima, ImageUser *iuser, ImagePool *pool)
Image * BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name)
blender::gpu::Texture * BKE_image_get_gpu_viewer_texture(Image *image, ImageUser *iuser)
Definition image_gpu.cc:501
Image * BKE_image_load_exists(Main *bmain, const char *filepath, bool *r_exists=nullptr)
void BKE_image_sort_tiles(Image *ima)
void BKE_image_buf_fill_checker_color(unsigned char *rect, float *rect_float, int width, int height)
Definition image_gen.cc:372
void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot)
void BKE_image_user_file_path_ex(const Main *bmain, const ImageUser *iuser, const Image *ima, char *filepath, const bool resolve_udim, const bool resolve_multiview)
void BKE_image_buf_fill_checker(unsigned char *rect, float *rect_float, int width, int height)
Definition image_gen.cc:151
bool BKE_image_get_tile_number_from_filepath(const char *filepath, const char *pattern, eUDIM_TILE_FORMAT tile_format, int *r_tile_number)
int BKE_image_get_tile_label(const Image *ima, const ImageTile *tile, char *label, int label_maxncpy)
bool BKE_image_has_opengl_texture(Image *ima)
void BKE_image_ensure_gpu_texture(Image *image, ImageUser *iuser)
Definition image_gpu.cc:348
void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy)
bool BKE_image_has_anim(Image *image)
void BKE_image_get_tile_uv(const Image *ima, const int tile_number, float r_uv[2])
ImagePool * BKE_image_pool_new()
bool BKE_imbuf_alpha_test(ImBuf *ibuf)
void BKE_imageuser_default(ImageUser *iuser)
Image * BKE_image_load_in_lib(Main *bmain, std::optional< Library * > owner_library, const char *filepath)
void BKE_render_result_stamp_info(Scene *scene, Object *camera, RenderResult *rr, bool allocate_only)
void BKE_image_free_gputextures(Image *ima)
Definition image_gpu.cc:581
void BKE_image_free_all_textures(Main *bmain)
MovieReader * openanim(const char *filepath, int ibuf_flags, int streamindex, bool keep_original_colorspace, char colorspace[IMA_MAX_SPACE])
void BKE_stamp_info_callback(void *data, StampData *stamp_data, StampCallback callback, bool noskip)
int BKE_image_sequence_guess_offset(Image *image)
void BKE_image_free_data(Image *image)
bool BKE_image_is_stereo(const Image *ima)
bool BKE_image_is_multiview(const Image *ima)
bool BKE_imbuf_write(ImBuf *ibuf, const char *filepath, const ImageFormatData *imf)
void BKE_image_get_size(Image *image, ImageUser *iuser, int *r_width, int *r_height)
void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy)
ImBuf * BKE_image_get_ibuf_with_name(Image *image, const char *filepath)
bool BKE_image_get_tile_info(char *filepath, ListBase *tiles, int *r_tile_start, int *r_tile_range)
char BKE_image_alpha_mode_from_extension_ex(const char *filepath)
void BKE_image_free_views(Image *image)
bool BKE_image_has_packedfile(const Image *image)
void BKE_image_all_free_anim_ibufs(Main *bmain, int cfra)
void BKE_image_walk_all_users(const Main *mainp, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int slot)
void BKE_image_paint_set_mipmap(Main *bmain, bool mipmap)
Definition image_gpu.cc:937
void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal)
void BKE_image_reassign_tile(Image *ima, ImageTile *tile, int new_tile_number)
void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value)
PartialUpdateUser * BKE_image_partial_update_create(const Image *image)
Create a new PartialUpdateUser. An Object that contains data to use partial updates.
bool BKE_image_is_animated(Image *image)
bool BKE_stamp_is_known_field(const char *field_name)
bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int slot)
bool BKE_image_is_filename_tokenized(char *filepath)
MovieReader * openanim_noload(const char *filepath, int flags, int streamindex, bool keep_original_colorspace, char colorspace[IMA_MAX_SPACE])
ImBuf * BKE_image_preview(Image *ima, short max_size, short *r_width, short *r_height)
void BKE_image_user_id_eval_animation(Depsgraph *depsgraph, ID *id)
bool BKE_imbuf_write_stamp(const Scene *scene, const RenderResult *rr, ImBuf *ibuf, const char *filepath, const ImageFormatData *imf)
void BKE_image_editors_update_frame(const Main *bmain, int cfra)
blender::gpu::Texture * BKE_image_get_gpu_texture(Image *image, ImageUser *iuser)
Definition image_gpu.cc:496
void BKE_image_replace_imbuf(Image *image, ImBuf *ibuf)
void BKE_image_init_imageuser(Image *ima, ImageUser *iuser)
void BKE_image_stamp_buf(Scene *scene, Object *camera, const StampData *stamp_data_template, ImBuf *ibuf)
void BKE_image_pool_release_ibuf(Image *ima, ImBuf *ibuf, ImagePool *pool)
bool BKE_imbuf_write_as(ImBuf *ibuf, const char *filepath, const ImageFormatData *imf, bool save_copy)
unsigned char * BKE_image_get_pixels_for_frame(Image *image, int frame, int tile)
void BKE_image_packfiles_from_mem(ReportList *reports, Image *ima, char *data, size_t data_len)
RenderResult * BKE_image_acquire_renderresult(Scene *scene, Image *ima)
ImageTile * BKE_image_add_tile(Image *ima, int tile_number, const char *label)
ImBuf * BKE_image_get_first_ibuf(Image *image)
void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options)
void BKE_image_buf_fill_color(unsigned char *rect, float *rect_float, int width, int height, const float color[4])
Definition image_gen.cc:26
bool BKE_image_remove_tile(Image *ima, ImageTile *tile)
bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser)
void BKE_image_free_all_gputextures(Main *bmain)
Definition image_gpu.cc:586
float * BKE_image_get_float_pixels_for_frame(Image *image, int frame, int tile)
void BKE_image_partial_update_mark_full_update(Image *image)
Mark the whole image to be updated.
void BKE_image_free_unused_gpu_textures()
Definition image_gpu.cc:547
void BKE_image_multiview_index(const Image *ima, ImageUser *iuser)
bool BKE_image_has_loaded_ibuf(Image *image)
void BKE_image_free_old_gputextures(Main *bmain)
Definition image_gpu.cc:606
bool BKE_image_tile_filepath_exists(const char *filepath)
void BKE_image_free_packedfiles(Image *image)
void BKE_image_print_memlist(Main *bmain)
bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable)
Image * BKE_image_add_generated(Main *bmain, unsigned int width, unsigned int height, const char *name, int depth, int floatbuf, short gen_type, const float color[4], bool stereo3d, bool is_data, bool tiled)
void BKE_image_partial_update_register_free(Image *image)
bool BKE_image_buffer_format_writable(ImBuf *ibuf)
blender::ocio::ColorSpace ColorSpace
Definition BLF_api.hh:38
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
volatile int lock
BMesh const char void * data
BPy_StructRNA * depsgraph
unsigned long long int uint64_t
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
CCL_NAMESPACE_BEGIN struct Options options
ccl_gpu_kernel_postfix ccl_global KernelWorkTile * tiles
const ccl_global KernelWorkTile * tile
std::mutex Mutex
Definition BLI_mutex.hh:47
const char * name
Definition DNA_ID.h:414
blender::gpu::Texture ** tile_mapping
Definition BKE_image.hh:615
blender::gpu::Texture ** texture
Definition BKE_image.hh:614
struct ImBuf * ibuf
PartialUpdateUser * partial_update_user
Definition BKE_image.hh:60
PartialUpdateRegister * partial_update_register
Definition BKE_image.hh:58
void * BKE_image_free_buffers
Definition stubs.c:35
void * BKE_image_get_tile_from_iuser
Definition stubs.c:37
void * BKE_image_get_tile
Definition stubs.c:36