Blender V4.3
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
10#include "BLI_compiler_attrs.h"
11#include "BLI_utildefines.h"
12
13#include "BLI_rect.h"
14
15#include <optional>
16
17struct Depsgraph;
18struct GPUTexture;
19struct ID;
20struct ImBuf;
21struct ImBufAnim;
22struct Image;
23struct ImageFormatData;
24struct ImagePool;
25struct ImageTile;
26struct ImbFormatOptions;
27struct Library;
28struct ListBase;
29struct Main;
30struct Object;
31struct RenderResult;
32struct RenderSlot;
33struct ReportList;
34struct Scene;
35struct StampData;
36
37#define IMA_MAX_SPACE 64
38#define IMA_UDIM_MAX 2000
39
41void BKE_image_free_views(Image *image);
42void BKE_image_free_buffers(Image *image);
47void BKE_image_free_buffers_ex(Image *image, bool do_lock);
53void BKE_image_free_data(Image *image);
54
55typedef void(StampCallback)(void *data,
56 const char *propname,
57 char *propvalue,
58 int propvalue_maxncpy);
59
61 Object *camera,
62 RenderResult *rr,
63 bool allocate_only);
72bool BKE_stamp_is_known_field(const char *field_name);
73void BKE_imbuf_stamp_info(const RenderResult *rr, ImBuf *ibuf);
75void BKE_stamp_info_callback(void *data,
76 StampData *stamp_data,
78 bool noskip);
80 const Image &image,
82 bool noskip);
83void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value);
84StampData *BKE_stamp_data_copy(const StampData *stamp_data);
85void BKE_stamp_data_free(StampData *stamp_data);
86void BKE_image_stamp_buf(Scene *scene,
87 Object *camera,
88 const StampData *stamp_data_template,
89 unsigned char *rect,
90 float *rectf,
91 int width,
92 int height);
93bool BKE_imbuf_alpha_test(ImBuf *ibuf);
94bool BKE_imbuf_write_stamp(const Scene *scene,
95 const RenderResult *rr,
96 ImBuf *ibuf,
97 const char *filepath,
98 const ImageFormatData *imf);
102bool BKE_imbuf_write(ImBuf *ibuf, const char *filepath, const ImageFormatData *imf);
107bool BKE_imbuf_write_as(ImBuf *ibuf,
108 const char *filepath,
109 const ImageFormatData *imf,
110 bool save_copy);
111
115ImBufAnim *openanim(const char *filepath,
116 int flags,
117 int streamindex,
118 char colorspace[IMA_MAX_SPACE]);
119ImBufAnim *openanim_noload(const char *filepath,
120 int flags,
121 int streamindex,
122 char colorspace[IMA_MAX_SPACE]);
123
124void BKE_image_tag_time(Image *ima);
125
126/* ********************************** NEW IMAGE API *********************** */
127
128/* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
129/* should be used in conjunction with an ID * to Image. */
130struct ImageUser;
131struct RenderData;
132struct RenderPass;
133struct RenderResult;
134
135/* signals */
136/* reload only frees, doesn't read until image_get_ibuf() called */
137#define IMA_SIGNAL_RELOAD 0
138#define IMA_SIGNAL_FREE 1
139/* source changes, from image to sequence or movie, etc */
140#define IMA_SIGNAL_SRC_CHANGE 5
141/* image-user gets a new image, check settings */
142#define IMA_SIGNAL_USER_NEW_IMAGE 6
143#define IMA_SIGNAL_COLORMANAGE 7
144
148bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser);
149
157ImBuf *BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock);
158
172 Image &image,
173 const ImageUser &image_user,
174 const char *pass_name,
175 const char *view_name);
176
177void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock);
178
183ImBuf *BKE_image_preview(Image *ima, short max_size, short *r_width, short *r_height);
184
189
193char BKE_image_alpha_mode_from_extension_ex(const char *filepath);
195
203Image *BKE_image_load(Main *bmain, const char *filepath);
205 std::optional<Library *> owner_library,
206 const char *filepath);
217Image *BKE_image_load_exists(Main *bmain, const char *filepath, bool *r_exists = nullptr);
219 std::optional<Library *> owner_library,
220 const char *filepath,
221 bool *r_exists = nullptr);
222
227 unsigned int width,
228 unsigned int height,
229 const char *name,
230 int depth,
231 int floatbuf,
232 short gen_type,
233 const float color[4],
234 bool stereo3d,
235 bool is_data,
236 bool tiled);
241Image *BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name);
242
250
255void BKE_image_init_imageuser(Image *ima, ImageUser *iuser);
256void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal);
257
259 const Main *mainp,
260 void *customdata,
261 void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata));
262
269Image *BKE_image_ensure_viewer(Main *bmain, int type, const char *name);
274void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser);
275
279void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra);
280int BKE_image_user_frame_get(const ImageUser *iuser, int cfra, bool *r_is_in_range);
281void BKE_image_user_file_path(const ImageUser *iuser, const Image *ima, char *filepath);
282void BKE_image_user_file_path_ex(const Main *bmain,
283 const ImageUser *iuser,
284 const Image *ima,
285 char *filepath,
286 const bool resolve_udim,
287 const bool resolve_multiview);
288void BKE_image_editors_update_frame(const Main *bmain, int cfra);
289
294void BKE_image_user_id_eval_animation(Depsgraph *depsgraph, ID *id);
295
301
305void BKE_image_multiview_index(const Image *ima, ImageUser *iuser);
306
311bool BKE_image_is_multilayer(const Image *ima);
312bool BKE_image_is_multiview(const Image *ima);
313bool BKE_image_is_stereo(const Image *ima);
314
327void BKE_image_release_renderresult(Scene *scene, Image *ima, RenderResult *render_result);
328
332bool BKE_image_is_openexr(Image *ima);
333
337void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot);
338
343
348void BKE_image_free_anim_ibufs(Image *ima, int except_frame);
349
353void BKE_image_all_free_anim_ibufs(Main *bmain, int cfra);
354
361
365bool BKE_image_memorypack(Image *ima);
366void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath);
367void BKE_image_packfiles_from_mem(ReportList *reports, Image *ima, char *data, size_t data_len);
368
372void BKE_image_print_memlist(Main *bmain);
373
377void BKE_image_merge(Main *bmain, Image *dest, Image *source);
378
382bool BKE_image_scale(Image *image, int width, int height, ImageUser *iuser);
383
387bool BKE_image_has_alpha(Image *image);
388
393
398int BKE_image_get_tile_label(const Image *ima,
399 const ImageTile *tile,
400 char *label,
401 int label_maxncpy);
402
410bool BKE_image_get_tile_info(char *filepath,
412 int *r_tile_start,
413 int *r_tile_range);
414
415ImageTile *BKE_image_add_tile(Image *ima, int tile_number, const char *label);
417void BKE_image_reassign_tile(Image *ima, ImageTile *tile, int new_tile_number);
418void BKE_image_sort_tiles(Image *ima);
419
421
427
431bool BKE_image_is_filename_tokenized(char *filepath);
432
437void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy);
438void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy);
439
446bool BKE_image_tile_filepath_exists(const char *filepath);
447
453char *BKE_image_get_tile_strformat(const char *filepath, eUDIM_TILE_FORMAT *r_tile_format);
454bool BKE_image_get_tile_number_from_filepath(const char *filepath,
455 const char *pattern,
456 eUDIM_TILE_FORMAT tile_format,
457 int *r_tile_number);
459 const char *pattern,
460 eUDIM_TILE_FORMAT tile_format,
461 int tile_number);
462
463ImageTile *BKE_image_get_tile(Image *ima, int tile_number);
465
466int BKE_image_get_tile_from_pos(Image *ima, const float uv[2], float r_uv[2], float r_ofs[2]);
467void BKE_image_get_tile_uv(const Image *ima, const int tile_number, float r_uv[2]);
468
473 const float co[2],
474 float r_uv_offset[2]) ATTR_NONNULL(2, 3);
475int BKE_image_find_nearest_tile(const Image *image, const float co[2])
477
478void BKE_image_get_size(Image *image, ImageUser *iuser, int *r_width, int *r_height);
479void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2]);
480void BKE_image_get_aspect(Image *image, float *r_aspx, float *r_aspy);
481
482/* `image_gen.cc` */
483
485 unsigned char *rect, float *rect_float, int width, int height, const float color[4]);
486void BKE_image_buf_fill_checker(unsigned char *rect, float *rect_float, int width, int height);
487void BKE_image_buf_fill_checker_color(unsigned char *rect,
488 float *rect_float,
489 int width,
490 int height);
491
492/* Cycles hookup */
493
494unsigned char *BKE_image_get_pixels_for_frame(Image *image, int frame, int tile);
495float *BKE_image_get_float_pixels_for_frame(Image *image, int frame, int tile);
496
497/* Image modifications */
498
499bool BKE_image_is_dirty(Image *image);
500void BKE_image_mark_dirty(Image *image, ImBuf *ibuf);
502
503bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable);
504
509bool BKE_image_has_anim(Image *image);
510bool BKE_image_has_packedfile(const Image *image);
511bool BKE_image_has_filepath(const Image *ima);
515bool BKE_image_is_animated(Image *image);
520void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options);
526ImBuf *BKE_image_get_ibuf_with_name(Image *image, const char *filepath);
537
542
555void BKE_image_ensure_gpu_texture(Image *image, ImageUser *iuser);
556
571GPUTexture *BKE_image_get_gpu_texture(Image *image, ImageUser *iuser);
572
573/*
574 * Like BKE_image_get_gpu_texture, but can also get render or compositing result.
575 */
576GPUTexture *BKE_image_get_gpu_viewer_texture(Image *image, ImageUser *iuser);
577
578/*
579 * Like BKE_image_get_gpu_texture, but can also return array and tile mapping texture for UDIM
580 * tiles as used in material shaders.
581 */
583 GPUTexture *texture;
584 GPUTexture *tile_mapping;
585};
586
588 ImageUser *iuser,
589 const bool use_tile_mapping);
590
595
600void BKE_image_update_gputexture(Image *ima, ImageUser *iuser, int x, int y, int w, int h);
601
608 Image *ima, ImageTile *image_tile, ImBuf *ibuf, int x, int y, int w, int h);
609
615void BKE_image_paint_set_mipmap(Main *bmain, bool mipmap);
616
621
622RenderSlot *BKE_image_add_renderslot(Image *ima, const char *name);
623bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int slot);
625bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int slot);
626
627/* --- image_partial_update.cc --- */
629struct PartialUpdateUser;
630
634PartialUpdateUser *BKE_image_partial_update_create(const Image *image);
635
639void BKE_image_partial_update_free(PartialUpdateUser *user);
640
641/* --- partial updater (image side) --- */
642
646 const ImageTile *image_tile,
647 const ImBuf *image_buffer,
648 const rcti *updated_region);
eUDIM_TILE_FORMAT
Definition BKE_image.hh:422
@ UDIM_TILE_FORMAT_UVTILE
Definition BKE_image.hh:425
@ UDIM_TILE_FORMAT_NONE
Definition BKE_image.hh:423
@ UDIM_TILE_FORMAT_UDIM
Definition BKE_image.hh:424
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:55
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:882
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)
ImBufAnim * openanim_noload(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
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)
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)
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:570
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)
GPUTexture * BKE_image_get_gpu_viewer_texture(Image *image, ImageUser *iuser)
Definition image_gpu.cc:481
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:37
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:41
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:486
void BKE_image_free_unused_gpu_textures(void)
Definition image_gpu.cc:521
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:890
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)
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:447
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:200
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:336
void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy)
GPUTexture * BKE_image_create_gpu_texture_from_ibuf(Image *image, ImBuf *ibuf)
bool BKE_image_has_anim(Image *image)
void BKE_image_get_tile_uv(const Image *ima, const int tile_number, float r_uv[2])
bool BKE_imbuf_alpha_test(ImBuf *ibuf)
ImBufAnim * openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
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:556
void BKE_image_free_all_textures(Main *bmain)
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)
GPUTexture * BKE_image_get_gpu_texture(Image *image, ImageUser *iuser)
Definition image_gpu.cc:476
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:906
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)
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)
void BKE_image_replace_imbuf(Image *image, ImBuf *ibuf)
void BKE_image_init_imageuser(Image *ima, ImageUser *iuser)
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)
void BKE_image_stamp_buf(Scene *scene, Object *camera, const StampData *stamp_data_template, unsigned char *rect, float *rectf, int width, int height)
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:70
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:561
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.
ImagePool * BKE_image_pool_new(void)
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:581
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)
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
volatile int lock
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
CCL_NAMESPACE_BEGIN struct Options options
const char * label
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
ccl_gpu_kernel_postfix ccl_global KernelWorkTile * tiles
ccl_global const KernelWorkTile * tile
Definition DNA_ID.h:413
GPUTexture * tile_mapping
Definition BKE_image.hh:584
GPUTexture * texture
Definition BKE_image.hh:583
struct ImBuf * ibuf
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