Blender V4.5
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
16struct rcti;
17struct Depsgraph;
18struct GPUTexture;
19struct ID;
20struct ImBuf;
21struct MovieReader;
22struct Image;
23struct ImageFormatData;
24struct ImagePool;
25struct ImageTile;
26struct ImbFormatOptions;
27struct Library;
28struct ListBase;
29struct Main;
30struct Object;
31struct PartialUpdateRegister;
32struct PartialUpdateUser;
33struct RenderResult;
34struct RenderSlot;
35struct ReportList;
36struct Scene;
37struct StampData;
38
39#define IMA_MAX_SPACE 64
40#define IMA_UDIM_MAX 2000
41
42namespace blender::bke {
43
45 /* Mutex used to guarantee thread-safe access to the cached ImBuf of the corresponding image ID.
46 */
48
50 PartialUpdateRegister *partial_update_register = nullptr;
52 PartialUpdateUser *partial_update_user = nullptr;
53
54 /* The image's current update count. See deg::set_id_update_count for more information. */
56
57 /* Compositor viewer might be translated, and that translation will be stored in this runtime
58 * vector by the compositor so that the editor draw code can draw the image translated. */
59 float backdrop_offset[2] = {};
60};
61
62} // namespace blender::bke
63
65void BKE_image_free_views(Image *image);
66void BKE_image_free_buffers(Image *image);
71void BKE_image_free_buffers_ex(Image *image, bool do_lock);
77void BKE_image_free_data(Image *image);
78
79typedef void(StampCallback)(void *data,
80 const char *propname,
81 char *propvalue,
82 int propvalue_maxncpy);
83
85 Object *camera,
86 RenderResult *rr,
87 bool allocate_only);
96bool BKE_stamp_is_known_field(const char *field_name);
97void BKE_imbuf_stamp_info(const RenderResult *rr, ImBuf *ibuf);
100 StampData *stamp_data,
101 StampCallback callback,
102 bool noskip);
104 const Image &image,
105 StampCallback callback,
106 bool noskip);
107void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value);
108StampData *BKE_stamp_data_copy(const StampData *stamp_data);
109void BKE_stamp_data_free(StampData *stamp_data);
110void BKE_image_stamp_buf(Scene *scene,
111 Object *camera,
112 const StampData *stamp_data_template,
113 unsigned char *rect,
114 float *rectf,
115 int width,
116 int height);
117bool BKE_imbuf_alpha_test(ImBuf *ibuf);
118bool BKE_imbuf_write_stamp(const Scene *scene,
119 const RenderResult *rr,
120 ImBuf *ibuf,
121 const char *filepath,
122 const ImageFormatData *imf);
126bool BKE_imbuf_write(ImBuf *ibuf, const char *filepath, const ImageFormatData *imf);
131bool BKE_imbuf_write_as(ImBuf *ibuf,
132 const char *filepath,
133 const ImageFormatData *imf,
134 bool save_copy);
135
139MovieReader *openanim(const char *filepath,
140 int flags,
141 int streamindex,
142 char colorspace[IMA_MAX_SPACE]);
143MovieReader *openanim_noload(const char *filepath,
144 int flags,
145 int streamindex,
146 char colorspace[IMA_MAX_SPACE]);
147
148void BKE_image_tag_time(Image *ima);
149
150/* ********************************** NEW IMAGE API *********************** */
151
152/* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
153/* should be used in conjunction with an ID * to Image. */
154struct ImageUser;
155struct RenderData;
156struct RenderPass;
157struct RenderResult;
158
159/* signals */
160/* reload only frees, doesn't read until image_get_ibuf() called */
161#define IMA_SIGNAL_RELOAD 0
162#define IMA_SIGNAL_FREE 1
163/* source changes, from image to sequence or movie, etc */
164#define IMA_SIGNAL_SRC_CHANGE 5
165/* image-user gets a new image, check settings */
166#define IMA_SIGNAL_USER_NEW_IMAGE 6
167#define IMA_SIGNAL_COLORMANAGE 7
168
172bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser);
173
181ImBuf *BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock);
182
196 Image &image,
197 const ImageUser &image_user,
198 const char *pass_name,
199 const char *view_name);
200
201void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock);
202
207ImBuf *BKE_image_preview(Image *ima, short max_size, short *r_width, short *r_height);
208
213
217char BKE_image_alpha_mode_from_extension_ex(const char *filepath);
219
227Image *BKE_image_load(Main *bmain, const char *filepath);
229 std::optional<Library *> owner_library,
230 const char *filepath);
241Image *BKE_image_load_exists(Main *bmain, const char *filepath, bool *r_exists = nullptr);
243 std::optional<Library *> owner_library,
244 const char *filepath,
245 bool *r_exists = nullptr);
246
251 unsigned int width,
252 unsigned int height,
253 const char *name,
254 int depth,
255 int floatbuf,
256 short gen_type,
257 const float color[4],
258 bool stereo3d,
259 bool is_data,
260 bool tiled);
265Image *BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name);
266
274
279void BKE_image_init_imageuser(Image *ima, ImageUser *iuser);
280void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal);
281
283 const Main *mainp,
284 void *customdata,
285 void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata));
286
293Image *BKE_image_ensure_viewer(Main *bmain, int type, const char *name);
298void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser);
299
303void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra);
304int BKE_image_user_frame_get(const ImageUser *iuser, int cfra, bool *r_is_in_range);
305void BKE_image_user_file_path(const ImageUser *iuser, const Image *ima, char *filepath);
306void BKE_image_user_file_path_ex(const Main *bmain,
307 const ImageUser *iuser,
308 const Image *ima,
309 char *filepath,
310 const bool resolve_udim,
311 const bool resolve_multiview);
312void BKE_image_editors_update_frame(const Main *bmain, int cfra);
313
318void BKE_image_user_id_eval_animation(Depsgraph *depsgraph, ID *id);
319
325
329void BKE_image_multiview_index(const Image *ima, ImageUser *iuser);
330
335bool BKE_image_is_multilayer(const Image *ima);
336bool BKE_image_is_multiview(const Image *ima);
337bool BKE_image_is_stereo(const Image *ima);
338
351void BKE_image_release_renderresult(Scene *scene, Image *ima, RenderResult *render_result);
352
356bool BKE_image_is_openexr(Image *ima);
357
361void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot);
362
367
372void BKE_image_free_anim_ibufs(Image *ima, int except_frame);
373
377void BKE_image_all_free_anim_ibufs(Main *bmain, int cfra);
378
385
389bool BKE_image_memorypack(Image *ima);
390void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath);
391void BKE_image_packfiles_from_mem(ReportList *reports, Image *ima, char *data, size_t data_len);
392
396void BKE_image_print_memlist(Main *bmain);
397
401void BKE_image_merge(Main *bmain, Image *dest, Image *source);
402
406bool BKE_image_scale(Image *image, int width, int height, ImageUser *iuser);
407
411bool BKE_image_has_alpha(Image *image);
412
417
422int BKE_image_get_tile_label(const Image *ima,
423 const ImageTile *tile,
424 char *label,
425 int label_maxncpy);
426
434bool BKE_image_get_tile_info(char *filepath,
436 int *r_tile_start,
437 int *r_tile_range);
438
439ImageTile *BKE_image_add_tile(Image *ima, int tile_number, const char *label);
441void BKE_image_reassign_tile(Image *ima, ImageTile *tile, int new_tile_number);
442void BKE_image_sort_tiles(Image *ima);
443
445
451
455bool BKE_image_is_filename_tokenized(char *filepath);
456
461void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy);
462void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy);
463
470bool BKE_image_tile_filepath_exists(const char *filepath);
471
477char *BKE_image_get_tile_strformat(const char *filepath, eUDIM_TILE_FORMAT *r_tile_format);
478bool BKE_image_get_tile_number_from_filepath(const char *filepath,
479 const char *pattern,
480 eUDIM_TILE_FORMAT tile_format,
481 int *r_tile_number);
483 const char *pattern,
484 eUDIM_TILE_FORMAT tile_format,
485 int tile_number);
486
487ImageTile *BKE_image_get_tile(Image *ima, int tile_number);
489
490int BKE_image_get_tile_from_pos(Image *ima, const float uv[2], float r_uv[2], float r_ofs[2]);
491void BKE_image_get_tile_uv(const Image *ima, const int tile_number, float r_uv[2]);
492
497 const float co[2],
498 float r_uv_offset[2]) ATTR_NONNULL(2, 3);
499int BKE_image_find_nearest_tile(const Image *image, const float co[2])
501
502void BKE_image_get_size(Image *image, ImageUser *iuser, int *r_width, int *r_height);
503void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2]);
504void BKE_image_get_aspect(Image *image, float *r_aspx, float *r_aspy);
505
506/* `image_gen.cc` */
507
509 unsigned char *rect, float *rect_float, int width, int height, const float color[4]);
510void BKE_image_buf_fill_checker(unsigned char *rect, float *rect_float, int width, int height);
511void BKE_image_buf_fill_checker_color(unsigned char *rect,
512 float *rect_float,
513 int width,
514 int height);
515
516/* Cycles hookup */
517
518unsigned char *BKE_image_get_pixels_for_frame(Image *image, int frame, int tile);
519float *BKE_image_get_float_pixels_for_frame(Image *image, int frame, int tile);
520
521/* Image modifications */
522
523bool BKE_image_is_dirty(Image *image);
524void BKE_image_mark_dirty(Image *image, ImBuf *ibuf);
526
527bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable);
528
533bool BKE_image_has_anim(Image *image);
534bool BKE_image_has_packedfile(const Image *image);
535bool BKE_image_has_filepath(const Image *ima);
539bool BKE_image_is_animated(Image *image);
544void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options);
550ImBuf *BKE_image_get_ibuf_with_name(Image *image, const char *filepath);
561
566
579void BKE_image_ensure_gpu_texture(Image *image, ImageUser *iuser);
580
595GPUTexture *BKE_image_get_gpu_texture(Image *image, ImageUser *iuser);
596
597/*
598 * Like BKE_image_get_gpu_texture, but can also get render or compositing result.
599 */
600GPUTexture *BKE_image_get_gpu_viewer_texture(Image *image, ImageUser *iuser);
601
602/*
603 * Like BKE_image_get_gpu_texture, but can also return array and tile mapping texture for UDIM
604 * tiles as used in material shaders.
605 */
607 GPUTexture **texture;
608 GPUTexture **tile_mapping;
609};
610
612 ImageUser *iuser,
613 const bool use_tile_mapping);
614
615/* Same as BKE_image_get_gpu_material_texture but will not load the texture if it isn't already. */
617 ImageUser *iuser,
618 const bool use_tile_mapping);
619
624
629void BKE_image_update_gputexture(Image *ima, ImageUser *iuser, int x, int y, int w, int h);
630
637 Image *ima, ImageTile *image_tile, ImBuf *ibuf, int x, int y, int w, int h);
638
644void BKE_image_paint_set_mipmap(Main *bmain, bool mipmap);
645
650
651RenderSlot *BKE_image_add_renderslot(Image *ima, const char *name);
652bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int slot);
654bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int slot);
655
656/* --- image_partial_update.cc --- */
658struct PartialUpdateUser;
659
663PartialUpdateUser *BKE_image_partial_update_create(const Image *image);
664
668void BKE_image_partial_update_free(PartialUpdateUser *user);
669
670/* --- partial updater (image side) --- */
671
675 const ImageTile *image_tile,
676 const ImBuf *image_buffer,
677 const rcti *updated_region);
eUDIM_TILE_FORMAT
Definition BKE_image.hh:446
@ UDIM_TILE_FORMAT_UVTILE
Definition BKE_image.hh:449
@ UDIM_TILE_FORMAT_NONE
Definition BKE_image.hh:447
@ UDIM_TILE_FORMAT_UDIM
Definition BKE_image.hh:448
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:79
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:896
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:503
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)
MovieReader * openanim_noload(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
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:584
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:491
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:39
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:43
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:496
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:904
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:375
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:150
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:338
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])
ImagePool * BKE_image_pool_new()
bool BKE_imbuf_alpha_test(ImBuf *ibuf)
void BKE_imageuser_default(ImageUser *iuser)
MovieReader * openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
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:570
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:486
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:920
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:25
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:575
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:536
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:595
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(...)
ReportList * reports
Definition WM_types.hh:1025
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
Definition DNA_ID.h:404
GPUTexture ** texture
Definition BKE_image.hh:607
GPUTexture ** tile_mapping
Definition BKE_image.hh:608
struct ImBuf * ibuf
PartialUpdateUser * partial_update_user
Definition BKE_image.hh:52
PartialUpdateRegister * partial_update_register
Definition BKE_image.hh:50
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