Blender  V2.93
Classes | Macros | Typedefs | Functions | Variables
image.c File Reference
#include <fcntl.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_metadata.h"
#include "IMB_moviecache.h"
#include "DNA_brush_types.h"
#include "DNA_camera_types.h"
#include "DNA_defaults.h"
#include "DNA_light_types.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_packedFile_types.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "DNA_simulation_types.h"
#include "DNA_world_types.h"
#include "BLI_blenlib.h"
#include "BLI_math_vector.h"
#include "BLI_mempool.h"
#include "BLI_system.h"
#include "BLI_threads.h"
#include "BLI_timecode.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_colortools.h"
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_idtype.h"
#include "BKE_image.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_packedFile.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_workspace.h"
#include "BLF_api.h"
#include "PIL_time.h"
#include "RE_pipeline.h"
#include "SEQ_utils.h"
#include "GPU_texture.h"
#include "BLI_sys_types.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "BLO_read_write.h"
#include "DNA_node_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"

Go to the source code of this file.

Classes

struct  ImageCacheKey
 
struct  StampDataCustomField
 
struct  StampData
 
struct  ImagePoolItem
 
struct  ImagePool
 

Macros

#define DNA_DEPRECATED_ALLOW
 
#define IMA_NO_INDEX   0x7FEFEFEF
 
#define IMA_MAKE_INDEX(entry, index)   (((entry) << 10) + (index))
 
#define IMA_INDEX_ENTRY(index)   ((index) >> 10)
 
#define STAMP_NAME_SIZE   ((MAX_ID_NAME - 2) + 16)
 
#define TEXT_SIZE_CHECK(str, w, h)    ((str[0]) && ((void)(h = h_fixed), (w = BLF_width(mono, str, sizeof(str)))))
 
#define TEXT_SIZE_CHECK_WORD_WRAP(str, w, h)
 
#define BUFF_MARGIN_X   2
 
#define BUFF_MARGIN_Y   1
 
#define CALL(member, value_str)
 

Typedefs

typedef struct ImageCacheKey ImageCacheKey
 
typedef struct StampDataCustomField StampDataCustomField
 
typedef struct StampData StampData
 
typedef struct ImagePoolItem ImagePoolItem
 
typedef struct ImagePool ImagePool
 

Functions

static void image_init (Image *ima, short source, short type)
 
static void image_free_packedfiles (Image *ima)
 
static void copy_image_packedfiles (ListBase *lb_dst, const ListBase *lb_src)
 
static void image_init_data (ID *id)
 
static void image_copy_data (Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
 
static void image_free_data (ID *id)
 
static void image_foreach_cache (ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
 
static void image_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
static void image_blend_read_data (BlendDataReader *reader, ID *id)
 
static void image_blend_read_lib (BlendLibReader *UNUSED(reader), ID *id)
 
static int image_num_files (struct Image *ima)
 
static ImBufimage_acquire_ibuf (Image *ima, ImageUser *iuser, void **r_lock)
 
static void image_update_views_format (Image *ima, ImageUser *iuser)
 
static void image_add_view (Image *ima, const char *viewname, const char *filepath)
 
static unsigned int imagecache_hashhash (const void *key_v)
 
static bool imagecache_hashcmp (const void *a_v, const void *b_v)
 
static void imagecache_keydata (void *userkey, int *framenr, int *proxy, int *render_flags)
 
static void imagecache_put (Image *image, int index, ImBuf *ibuf)
 
static void imagecache_remove (Image *image, int index)
 
static struct ImBufimagecache_get (Image *image, int index)
 
void BKE_images_init (void)
 
void BKE_images_exit (void)
 
static void image_free_cached_frames (Image *image)
 
void BKE_image_free_packedfiles (Image *ima)
 
void BKE_image_free_views (Image *image)
 
static void image_free_anims (Image *ima)
 
void BKE_image_free_buffers_ex (Image *ima, bool do_lock)
 
void BKE_image_free_buffers (Image *ima)
 
void BKE_image_free (Image *ima)
 
static Imageimage_alloc (Main *bmain, const char *name, short source, short type)
 
static ImBufimage_get_cached_ibuf_for_index_entry (Image *ima, int index, int entry)
 
static void image_assign_ibuf (Image *ima, ImBuf *ibuf, int index, int entry)
 
static void image_remove_ibuf (Image *ima, int index, int entry)
 
void BKE_image_merge (Main *bmain, Image *dest, Image *source)
 
bool BKE_image_scale (Image *image, int width, int height)
 
bool BKE_image_has_opengl_texture (Image *ima)
 
ImageTileBKE_image_get_tile (Image *ima, int tile_number)
 
ImageTileBKE_image_get_tile_from_iuser (Image *ima, const ImageUser *iuser)
 
int BKE_image_get_tile_from_pos (struct Image *ima, const float uv[2], float r_uv[2], float r_ofs[2])
 
int BKE_image_find_nearest_tile (const Image *image, const float co[2])
 
static void image_init_color_management (Image *ima)
 
char BKE_image_alpha_mode_from_extension_ex (const char *filepath)
 
void BKE_image_alpha_mode_from_extension (Image *image)
 
ImageBKE_image_load (Main *bmain, const char *filepath)
 
ImageBKE_image_load_exists_ex (Main *bmain, const char *filepath, bool *r_exists)
 
ImageBKE_image_load_exists (Main *bmain, const char *filepath)
 
static ImBufadd_ibuf_size (unsigned int width, unsigned int height, const char *name, int depth, int floatbuf, short gen_type, const float color[4], ColorManagedColorspaceSettings *colorspace_settings)
 
ImageBKE_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], const bool stereo3d, const bool is_data, const bool tiled)
 
ImageBKE_image_add_from_imbuf (Main *bmain, ImBuf *ibuf, const char *name)
 
static bool image_memorypack_imbuf (Image *ima, ImBuf *ibuf, const char *filepath)
 
bool BKE_image_memorypack (Image *ima)
 
void BKE_image_packfiles (ReportList *reports, Image *ima, const char *basepath)
 
void BKE_image_packfiles_from_mem (ReportList *reports, Image *ima, char *data, const size_t data_len)
 
void BKE_image_tag_time (Image *ima)
 
static uintptr_t image_mem_size (Image *image)
 
void BKE_image_print_memlist (Main *bmain)
 
static bool imagecache_check_dirty (ImBuf *ibuf, void *UNUSED(userkey), void *UNUSED(userdata))
 
void BKE_image_free_all_textures (Main *bmain)
 
static bool imagecache_check_free_anim (ImBuf *ibuf, void *UNUSED(userkey), void *userdata)
 
void BKE_image_free_anim_ibufs (Image *ima, int except_frame)
 
void BKE_image_all_free_anim_ibufs (Main *bmain, int cfra)
 
int BKE_image_imtype_to_ftype (const char imtype, ImbFormatOptions *r_options)
 
char BKE_image_ftype_to_imtype (const int ftype, const ImbFormatOptions *options)
 
bool BKE_imtype_is_movie (const char imtype)
 
bool BKE_imtype_supports_zbuf (const char imtype)
 
bool BKE_imtype_supports_compress (const char imtype)
 
bool BKE_imtype_supports_quality (const char imtype)
 
bool BKE_imtype_requires_linear_float (const char imtype)
 
char BKE_imtype_valid_channels (const char imtype, bool write_file)
 
char BKE_imtype_valid_depths (const char imtype)
 
char BKE_imtype_from_arg (const char *imtype_arg)
 
static bool do_add_image_extension (char *string, const char imtype, const ImageFormatData *im_format)
 
int BKE_image_path_ensure_ext_from_imformat (char *string, const ImageFormatData *im_format)
 
int BKE_image_path_ensure_ext_from_imtype (char *string, const char imtype)
 
void BKE_imformat_defaults (ImageFormatData *im_format)
 
void BKE_imbuf_to_image_format (struct ImageFormatData *im_format, const ImBuf *imbuf)
 
static void stampdata (const Scene *scene, Object *camera, StampData *stamp_data, int do_prefix, bool use_dynamic)
 
static void stampdata_from_template (StampData *stamp_data, const Scene *scene, const StampData *stamp_data_template, bool do_prefix)
 
void BKE_image_stamp_buf (Scene *scene, Object *camera, const StampData *stamp_data_template, unsigned char *rect, float *rectf, int width, int height, int channels)
 
void BKE_render_result_stamp_info (Scene *scene, Object *camera, struct RenderResult *rr, bool allocate_only)
 
struct StampDataBKE_stamp_info_from_scene_static (const Scene *scene)
 
bool BKE_stamp_is_known_field (const char *field_name)
 
void BKE_stamp_info_callback (void *data, struct StampData *stamp_data, StampCallback callback, bool noskip)
 
void BKE_render_result_stamp_data (RenderResult *rr, const char *key, const char *value)
 
StampDataBKE_stamp_data_copy (const StampData *stamp_data)
 
void BKE_stamp_data_free (StampData *stamp_data)
 
static void metadata_set_field (void *data, const char *propname, char *propvalue, int UNUSED(len))
 
static void metadata_get_field (void *data, const char *propname, char *propvalue, int len)
 
void BKE_imbuf_stamp_info (RenderResult *rr, struct ImBuf *ibuf)
 
static void metadata_copy_custom_fields (const char *field, const char *value, void *rr_v)
 
void BKE_stamp_info_from_imbuf (RenderResult *rr, struct ImBuf *ibuf)
 
bool BKE_imbuf_alpha_test (ImBuf *ibuf)
 
void BKE_imbuf_write_prepare (ImBuf *ibuf, const ImageFormatData *imf)
 
int BKE_imbuf_write (ImBuf *ibuf, const char *name, const ImageFormatData *imf)
 
int BKE_imbuf_write_as (ImBuf *ibuf, const char *name, ImageFormatData *imf, const bool save_copy)
 
int BKE_imbuf_write_stamp (Scene *scene, struct RenderResult *rr, ImBuf *ibuf, const char *name, const struct ImageFormatData *imf)
 
static void do_makepicstring (char *string, const char *base, const char *relbase, int frame, const char imtype, const ImageFormatData *im_format, const bool use_ext, const bool use_frames, const char *suffix)
 
void BKE_image_path_from_imformat (char *string, const char *base, const char *relbase, int frame, const ImageFormatData *im_format, const bool use_ext, const bool use_frames, const char *suffix)
 
void BKE_image_path_from_imtype (char *string, const char *base, const char *relbase, int frame, const char imtype, const bool use_ext, const bool use_frames, const char *suffix)
 
struct animopenanim_noload (const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
 
struct animopenanim (const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
 
ImageBKE_image_ensure_viewer (Main *bmain, int type, const char *name)
 
static void image_viewer_create_views (const RenderData *rd, Image *ima)
 
void BKE_image_ensure_viewer_views (const RenderData *rd, Image *ima, ImageUser *iuser)
 
static void image_walk_ntree_all_users (bNodeTree *ntree, ID *id, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
 
static void image_walk_id_all_users (ID *id, bool skip_nested_nodes, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
 
void BKE_image_walk_all_users (const Main *mainp, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
 
static void image_tag_frame_recalc (Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata)
 
static void image_tag_reload (Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata)
 
void BKE_imageuser_default (ImageUser *iuser)
 
void BKE_image_init_imageuser (Image *ima, ImageUser *iuser)
 
static void image_free_tile (Image *ima, ImageTile *tile)
 
void BKE_image_signal (Main *bmain, Image *ima, ImageUser *iuser, int signal)
 
static RenderPassimage_render_pass_get (RenderLayer *rl, const int pass, const int view, int *r_passindex)
 
void BKE_image_get_tile_label (Image *ima, ImageTile *tile, char *label, int len_label)
 
ImageTileBKE_image_add_tile (struct Image *ima, int tile_number, const char *label)
 
bool BKE_image_remove_tile (struct Image *ima, ImageTile *tile)
 
bool BKE_image_fill_tile (struct Image *ima, ImageTile *tile, int width, int height, const float color[4], int gen_type, int planes, bool is_float)
 
RenderPassBKE_image_multilayer_index (RenderResult *rr, ImageUser *iuser)
 
void BKE_image_multiview_index (Image *ima, ImageUser *iuser)
 
bool BKE_image_is_multilayer (Image *ima)
 
bool BKE_image_is_multiview (Image *ima)
 
bool BKE_image_is_stereo (Image *ima)
 
static void image_init_multilayer_multiview (Image *ima, RenderResult *rr)
 
RenderResultBKE_image_acquire_renderresult (Scene *scene, Image *ima)
 
void BKE_image_release_renderresult (Scene *scene, Image *ima)
 
bool BKE_image_is_openexr (struct Image *ima)
 
void BKE_image_backup_render (Scene *scene, Image *ima, bool free_current_slot)
 
static void image_init_after_load (Image *ima, ImageUser *iuser, ImBuf *UNUSED(ibuf))
 
static int imbuf_alpha_flags_for_image (Image *ima)
 
static ImBufload_sequence_single (Image *ima, ImageUser *iuser, int frame, const int view_id, bool *r_assign)
 
static ImBufimage_load_sequence_file (Image *ima, ImageUser *iuser, int entry, int frame)
 
static ImBufimage_load_sequence_multilayer (Image *ima, ImageUser *iuser, int entry, int frame)
 
static ImBufload_movie_single (Image *ima, ImageUser *iuser, int frame, const int view_id)
 
static ImBufimage_load_movie_file (Image *ima, ImageUser *iuser, int frame)
 
static ImBufload_image_single (Image *ima, ImageUser *iuser, int cfra, const int view_id, const bool has_packed, bool *r_assign)
 
static ImBufimage_load_image_file (Image *ima, ImageUser *iuser, int cfra)
 
static ImBufimage_get_ibuf_multilayer (Image *ima, ImageUser *iuser)
 
static ImBufimage_get_render_result (Image *ima, ImageUser *iuser, void **r_lock)
 
static int image_get_multiview_index (Image *ima, ImageUser *iuser)
 
static void image_get_entry_and_index (Image *ima, ImageUser *iuser, int *r_entry, int *r_index)
 
static ImBufimage_get_cached_ibuf (Image *ima, ImageUser *iuser, int *r_entry, int *r_index)
 
BLI_INLINE bool image_quick_test (Image *ima, const ImageUser *iuser)
 
ImBufBKE_image_acquire_ibuf (Image *ima, ImageUser *iuser, void **r_lock)
 
void BKE_image_release_ibuf (Image *ima, ImBuf *ibuf, void *lock)
 
bool BKE_image_has_ibuf (Image *ima, ImageUser *iuser)
 
ImagePoolBKE_image_pool_new (void)
 
void BKE_image_pool_free (ImagePool *pool)
 
BLI_INLINE ImBufimage_pool_find_item (ImagePool *pool, Image *image, int entry, int index, bool *found)
 
ImBufBKE_image_pool_acquire_ibuf (Image *ima, ImageUser *iuser, ImagePool *pool)
 
void BKE_image_pool_release_ibuf (Image *ima, ImBuf *ibuf, ImagePool *pool)
 
int BKE_image_user_frame_get (const ImageUser *iuser, int cfra, bool *r_is_in_range)
 
void BKE_image_user_frame_calc (Image *ima, ImageUser *iuser, int cfra)
 
static void image_editors_update_frame (Image *ima, ID *UNUSED(iuser_id), ImageUser *iuser, void *customdata)
 
void BKE_image_editors_update_frame (const Main *bmain, int cfra)
 
static void image_user_id_has_animation (Image *ima, ID *UNUSED(iuser_id), ImageUser *UNUSED(iuser), void *customdata)
 
bool BKE_image_user_id_has_animation (ID *id)
 
static void image_user_id_eval_animation (Image *ima, ID *UNUSED(iduser_id), ImageUser *iuser, void *customdata)
 
void BKE_image_user_id_eval_animation (Depsgraph *depsgraph, ID *id)
 
void BKE_image_user_file_path (ImageUser *iuser, Image *ima, char *filepath)
 
bool BKE_image_has_alpha (struct Image *image)
 
void BKE_image_get_size (Image *image, ImageUser *iuser, int *r_width, int *r_height)
 
void BKE_image_get_size_fl (Image *image, ImageUser *iuser, float r_size[2])
 
void BKE_image_get_aspect (Image *image, float *r_aspx, float *r_aspy)
 
unsigned char * BKE_image_get_pixels_for_frame (struct Image *image, int frame, int tile)
 
floatBKE_image_get_float_pixels_for_frame (struct Image *image, int frame, int tile)
 
int BKE_image_sequence_guess_offset (Image *image)
 
bool BKE_image_has_anim (Image *ima)
 
bool BKE_image_has_packedfile (Image *ima)
 
bool BKE_image_has_filepath (Image *ima)
 
bool BKE_image_is_animated (Image *image)
 
bool BKE_image_has_multiple_ibufs (Image *image)
 
bool BKE_image_is_dirty_writable (Image *image, bool *r_is_writable)
 
bool BKE_image_is_dirty (Image *image)
 
void BKE_image_mark_dirty (Image *UNUSED(image), ImBuf *ibuf)
 
bool BKE_image_buffer_format_writable (ImBuf *ibuf)
 
void BKE_image_file_format_set (Image *image, int ftype, const ImbFormatOptions *options)
 
bool BKE_image_has_loaded_ibuf (Image *image)
 
ImBufBKE_image_get_ibuf_with_name (Image *image, const char *name)
 
ImBufBKE_image_get_first_ibuf (Image *image)
 
RenderSlotBKE_image_add_renderslot (Image *ima, const char *name)
 
bool BKE_image_remove_renderslot (Image *ima, ImageUser *iuser, int index)
 
bool BKE_image_clear_renderslot (Image *ima, ImageUser *iuser, int index)
 
RenderSlotBKE_image_get_renderslot (Image *ima, int index)
 

Variables

static CLG_LogRef LOG = {"bke.image"}
 
static ThreadMuteximage_mutex
 
IDTypeInfo IDType_ID_IM
 
static const char * stamp_metadata_fields []
 

Macro Definition Documentation

◆ BUFF_MARGIN_X

#define BUFF_MARGIN_X   2

◆ BUFF_MARGIN_Y

#define BUFF_MARGIN_Y   1

◆ CALL

#define CALL (   member,
  value_str 
)
Value:
if (noskip || stamp_data->member[0]) { \
callback(data, value_str, stamp_data->member, sizeof(stamp_data->member)); \
} \
((void)0)

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 51 of file image.c.

◆ IMA_INDEX_ENTRY

#define IMA_INDEX_ENTRY (   index)    ((index) >> 10)

Definition at line 357 of file image.c.

◆ IMA_MAKE_INDEX

#define IMA_MAKE_INDEX (   entry,
  index 
)    (((entry) << 10) + (index))

Definition at line 356 of file image.c.

◆ IMA_NO_INDEX

#define IMA_NO_INDEX   0x7FEFEFEF

Definition at line 353 of file image.c.

◆ STAMP_NAME_SIZE

#define STAMP_NAME_SIZE   ((MAX_ID_NAME - 2) + 16)

Definition at line 1931 of file image.c.

◆ TEXT_SIZE_CHECK

#define TEXT_SIZE_CHECK (   str,
  w,
 
)     ((str[0]) && ((void)(h = h_fixed), (w = BLF_width(mono, str, sizeof(str)))))

◆ TEXT_SIZE_CHECK_WORD_WRAP

#define TEXT_SIZE_CHECK_WORD_WRAP (   str,
  w,
 
)
Value:
((str[0]) && (BLF_boundbox_ex(mono, str, sizeof(str), &wrap.rect, &wrap.info), \
(void)(h = h_fixed * wrap.info.lines), \
(w = BLI_rctf_size_x(&wrap.rect))))
void BLF_boundbox_ex(int fontid, const char *str, size_t len, struct rctf *box, struct ResultBLF *r_info) ATTR_NONNULL(2)
Definition: blf.c:676
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
Definition: BLI_rect.h:161
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
#define str(s)
static GPUContext * wrap(Context *ctx)

Typedef Documentation

◆ ImageCacheKey

typedef struct ImageCacheKey ImageCacheKey

◆ ImagePool

typedef struct ImagePool ImagePool

◆ ImagePoolItem

typedef struct ImagePoolItem ImagePoolItem

◆ StampData

typedef struct StampData StampData

◆ StampDataCustomField

Function Documentation

◆ add_ibuf_size()

static ImBuf* add_ibuf_size ( unsigned int  width,
unsigned int  height,
const char *  name,
int  depth,
int  floatbuf,
short  gen_type,
const float  color[4],
ColorManagedColorspaceSettings colorspace_settings 
)
static

◆ BKE_image_acquire_ibuf()

ImBuf* BKE_image_acquire_ibuf ( Image ima,
ImageUser iuser,
void **  r_lock 
)

Definition at line 5100 of file image.c.

References BLI_mutex_lock(), BLI_mutex_unlock(), image_acquire_ibuf(), and image_mutex.

Referenced by backimage_fit_exec(), bake_images(), bake_object_check(), bake_targets_init_internal(), BKE_gpencil_from_image(), BKE_image_get_float_pixels_for_frame(), BKE_image_get_pixels_for_frame(), BKE_image_get_size(), BKE_image_has_alpha(), BKE_image_pool_acquire_ibuf(), BKE_image_scale(), BKE_image_update_gputexture(), clear_single_image(), cmp_node_image_create_outputs(), colorfn(), blender::compositor::ImageNode::convertToOperations(), cryptomatte_init_from_node_image(), do_multires_bake(), draw_nodespace_back_pix(), draw_plane_marker_image(), ED_space_image_acquire_buffer(), ED_space_node_color_sample(), ED_space_node_get_position(), eyedropper_cryptomatte_sample_image_fl(), finish_images(), blender::compositor::BaseImageOperation::getImBuf(), gpencil_boundaryfill_area(), gpencil_erase_processed_area(), gpencil_get_outline_points(), gpencil_image_texture_get(), gpencil_invert_image(), gpencil_set_borders(), gpu_texture_create_tile_array(), icon_preview_startjob(), IMAGE_cache_init(), image_camera_background_texture_get(), image_file_format_writable(), image_flip_exec(), image_from_context_has_data_poll(), image_get_gpu_texture(), image_has_alpha(), image_invert_exec(), image_rect_update(), image_save_options_init(), image_save_single(), image_scale_exec(), image_scale_invoke(), image_undosys_step_encode(), init_heights_data(), metadata_panel_context_draw(), multiresbake_check(), OVERLAY_edit_uv_cache_init(), paint_2d_bucket_fill(), paint_2d_canvas_set(), paint_2d_ensure_tile_canvas(), paint_2d_gradient_fill(), paint_2d_new_stroke(), paint_2d_redraw(), paint_sample_color(), palette_extract_img_exec(), project_paint_build_proj_ima(), project_paint_PickColor(), project_paint_uvpixel_init(), project_paint_uvpixel_mask(), ptile_restore_runtime_list(), RE_bake_ibuf_clear(), render_endjob(), sample_apply(), screen_opengl_render_apply(), snode_bg_viewmove_invoke(), texture_paint_camera_project_exec(), tile_fill_init(), trace_start_job(), uhandle_restore_list(), uiTemplateImage(), uiTemplateImageInfo(), viewer_border_exec(), WIDGETGROUP_node_corner_pin_refresh(), WIDGETGROUP_node_crop_refresh(), WIDGETGROUP_node_sbeam_refresh(), WIDGETGROUP_node_transform_refresh(), and write_internal_bake_pixels().

◆ BKE_image_acquire_renderresult()

RenderResult* BKE_image_acquire_renderresult ( Scene scene,
Image ima 
)

◆ BKE_image_add_from_imbuf()

Image* BKE_image_add_from_imbuf ( Main bmain,
ImBuf ibuf,
const char *  name 
)

◆ BKE_image_add_generated()

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],
const bool  stereo3d,
const bool  is_data,
const bool  tiled 
)

◆ BKE_image_add_renderslot()

RenderSlot* BKE_image_add_renderslot ( Image ima,
const char *  name 
)

◆ BKE_image_add_tile()

ImageTile* BKE_image_add_tile ( struct Image ima,
int  tile_number,
const char *  label 
)

◆ BKE_image_all_free_anim_ibufs()

void BKE_image_all_free_anim_ibufs ( Main bmain,
int  cfra 
)

◆ BKE_image_alpha_mode_from_extension()

void BKE_image_alpha_mode_from_extension ( Image image)

◆ BKE_image_alpha_mode_from_extension_ex()

char BKE_image_alpha_mode_from_extension_ex ( const char *  filepath)

◆ BKE_image_backup_render()

void BKE_image_backup_render ( Scene scene,
Image ima,
bool  free_current_slot 
)

◆ BKE_image_buffer_format_writable()

bool BKE_image_buffer_format_writable ( ImBuf ibuf)

◆ BKE_image_clear_renderslot()

bool BKE_image_clear_renderslot ( Image ima,
ImageUser iuser,
int  index 
)

◆ BKE_image_editors_update_frame()

void BKE_image_editors_update_frame ( const Main bmain,
int  cfra 
)

◆ BKE_image_ensure_viewer()

Image* BKE_image_ensure_viewer ( Main bmain,
int  type,
const char *  name 
)

◆ BKE_image_ensure_viewer_views()

void BKE_image_ensure_viewer_views ( const RenderData rd,
Image ima,
ImageUser iuser 
)

◆ BKE_image_file_format_set()

void BKE_image_file_format_set ( Image image,
int  ftype,
const ImbFormatOptions options 
)

◆ BKE_image_fill_tile()

bool BKE_image_fill_tile ( struct Image ima,
ImageTile tile,
int  width,
int  height,
const float  color[4],
int  gen_type,
int  planes,
bool  is_float 
)

◆ BKE_image_find_nearest_tile()

int BKE_image_find_nearest_tile ( const Image image,
const float  co[2] 
)

Return the tile_number for the closest UDIM tile.

Definition at line 741 of file image.c.

References equals_v2v2(), floorf, len_squared_v2v2(), LISTBASE_FOREACH, and Image::tiles.

◆ BKE_image_free()

void BKE_image_free ( Image ima)

Free (or release) any data used by this image (does not free the image itself).

Definition at line 521 of file image.c.

References Image::id, and image_free_data().

◆ BKE_image_free_all_textures()

void BKE_image_free_all_textures ( Main bmain)

◆ BKE_image_free_anim_ibufs()

void BKE_image_free_anim_ibufs ( Image ima,
int  except_frame 
)

◆ BKE_image_free_buffers()

void BKE_image_free_buffers ( Image ima)

◆ BKE_image_free_buffers_ex()

void BKE_image_free_buffers_ex ( Image ima,
bool  do_lock 
)

Simply free the image data from memory, on display the image can load again (except for render buffers).

Definition at line 490 of file image.c.

References BKE_image_free_gputextures(), BLI_mutex_lock(), BLI_mutex_unlock(), IMA_OK, image_free_anims(), image_free_cached_frames(), image_mutex, LISTBASE_FOREACH, NULL, RE_FreeRenderResult(), Image::rr, and Image::tiles.

Referenced by BKE_image_free_buffers().

◆ BKE_image_free_packedfiles()

void BKE_image_free_packedfiles ( Image ima)

Definition at line 463 of file image.c.

References image_free_packedfiles().

Referenced by image_save_as_exec().

◆ BKE_image_free_views()

void BKE_image_free_views ( Image image)

◆ BKE_image_ftype_to_imtype()

char BKE_image_ftype_to_imtype ( const int  ftype,
const ImbFormatOptions options 
)

◆ BKE_image_get_aspect()

void BKE_image_get_aspect ( Image image,
float r_aspx,
float r_aspy 
)

◆ BKE_image_get_first_ibuf()

ImBuf* BKE_image_get_first_ibuf ( Image image)

References the result, BKE_image_release_ibuf is to be called to de-reference. Use lock=NULL when calling BKE_image_release_ibuf().

TODO(sergey): This is actually "get first item from the cache", which is not so much predictable. But using first loaded image buffer was also malicious logic and all the areas which uses this function are to be re-considered.

Definition at line 5772 of file image.c.

References BLI_mutex_lock(), BLI_mutex_unlock(), Image::cache, image_mutex, IMB_moviecacheIter_done(), IMB_moviecacheIter_free(), IMB_moviecacheIter_getImBuf(), IMB_moviecacheIter_new(), IMB_refImBuf(), and NULL.

◆ BKE_image_get_float_pixels_for_frame()

float* BKE_image_get_float_pixels_for_frame ( struct Image image,
int  frame,
int  tile 
)

◆ BKE_image_get_ibuf_with_name()

ImBuf* BKE_image_get_ibuf_with_name ( Image image,
const char *  name 
)

◆ BKE_image_get_pixels_for_frame()

unsigned char* BKE_image_get_pixels_for_frame ( struct Image image,
int  frame,
int  tile 
)

◆ BKE_image_get_renderslot()

RenderSlot* BKE_image_get_renderslot ( Image ima,
int  index 
)

◆ BKE_image_get_size()

void BKE_image_get_size ( Image image,
ImageUser iuser,
int *  r_width,
int *  r_height 
)

◆ BKE_image_get_size_fl()

void BKE_image_get_size_fl ( Image image,
ImageUser iuser,
float  r_size[2] 
)

◆ BKE_image_get_tile()

ImageTile* BKE_image_get_tile ( Image ima,
int  tile_number 
)

◆ BKE_image_get_tile_from_iuser()

ImageTile* BKE_image_get_tile_from_iuser ( Image ima,
const ImageUser iuser 
)

◆ BKE_image_get_tile_from_pos()

int BKE_image_get_tile_from_pos ( struct Image ima,
const float  uv[2],
float  r_uv[2],
float  r_ofs[2] 
)

◆ BKE_image_get_tile_label()

void BKE_image_get_tile_label ( Image ima,
ImageTile tile,
char *  label,
int  len_label 
)

Definition at line 3697 of file image.c.

References BLI_snprintf(), BLI_strncpy(), label, ImageTile::label, NULL, and ImageTile::tile_number.

Referenced by draw_image_main().

◆ BKE_image_has_alpha()

bool BKE_image_has_alpha ( struct Image image)

Definition at line 5485 of file image.c.

References BKE_image_acquire_ibuf(), BKE_image_release_ibuf(), NULL, and ImBuf::planes.

◆ BKE_image_has_anim()

bool BKE_image_has_anim ( Image ima)

◆ BKE_image_has_filepath()

bool BKE_image_has_filepath ( Image ima)

Definition at line 5632 of file image.c.

References Image::filepath.

Referenced by image_save_invoke(), and uiTemplateImage().

◆ BKE_image_has_ibuf()

bool BKE_image_has_ibuf ( Image ima,
ImageUser iuser 
)

◆ BKE_image_has_loaded_ibuf()

bool BKE_image_has_loaded_ibuf ( Image image)

◆ BKE_image_has_multiple_ibufs()

bool BKE_image_has_multiple_ibufs ( Image image)

◆ BKE_image_has_opengl_texture()

bool BKE_image_has_opengl_texture ( Image ima)

Definition at line 660 of file image.c.

References Image::gputexture, NULL, and TEXTARGET_COUNT.

Referenced by BKE_image_free_old_gputextures(), and BKE_image_paint_set_mipmap().

◆ BKE_image_has_packedfile()

bool BKE_image_has_packedfile ( Image ima)

◆ BKE_image_imtype_to_ftype()

int BKE_image_imtype_to_ftype ( const char  imtype,
ImbFormatOptions r_options 
)

◆ BKE_image_init_imageuser()

void BKE_image_init_imageuser ( Image ima,
ImageUser iuser 
)

◆ BKE_image_is_animated()

bool BKE_image_is_animated ( Image image)

◆ BKE_image_is_dirty()

bool BKE_image_is_dirty ( Image image)

◆ BKE_image_is_dirty_writable()

bool BKE_image_is_dirty_writable ( Image image,
bool *  r_is_writable 
)

◆ BKE_image_is_multilayer()

bool BKE_image_is_multilayer ( Image ima)

◆ BKE_image_is_multiview()

bool BKE_image_is_multiview ( Image ima)

◆ BKE_image_is_openexr()

bool BKE_image_is_openexr ( struct Image ima)

◆ BKE_image_is_stereo()

bool BKE_image_is_stereo ( Image ima)

◆ BKE_image_load()

Image* BKE_image_load ( Main bmain,
const char *  filepath 
)

◆ BKE_image_load_exists()

Image* BKE_image_load_exists ( Main bmain,
const char *  filepath 
)

Definition at line 880 of file image.c.

References BKE_image_load_exists_ex(), and NULL.

Referenced by DocumentImporter::writeImage().

◆ BKE_image_load_exists_ex()

Image* BKE_image_load_exists_ex ( Main bmain,
const char *  filepath,
bool *  r_exists 
)

◆ BKE_image_mark_dirty()

void BKE_image_mark_dirty ( Image UNUSEDimage,
ImBuf ibuf 
)

Definition at line 5686 of file image.c.

References IB_BITMAPDIRTY, and ImBuf::userflags.

Referenced by BKE_image_scale().

◆ BKE_image_memorypack()

bool BKE_image_memorypack ( Image ima)

◆ BKE_image_merge()

void BKE_image_merge ( Main bmain,
Image dest,
Image source 
)

◆ BKE_image_multilayer_index()

RenderPass* BKE_image_multilayer_index ( RenderResult rr,
ImageUser iuser 
)

◆ BKE_image_multiview_index()

void BKE_image_multiview_index ( Image ima,
ImageUser iuser 
)

◆ BKE_image_packfiles()

void BKE_image_packfiles ( ReportList reports,
Image ima,
const char *  basepath 
)

◆ BKE_image_packfiles_from_mem()

void BKE_image_packfiles_from_mem ( ReportList reports,
Image ima,
char *  data,
const size_t  data_len 
)

◆ BKE_image_path_ensure_ext_from_imformat()

int BKE_image_path_ensure_ext_from_imformat ( char *  string,
const ImageFormatData im_format 
)

Definition at line 1775 of file image.c.

References do_add_image_extension(), and ImageFormatData::imtype.

◆ BKE_image_path_ensure_ext_from_imtype()

int BKE_image_path_ensure_ext_from_imtype ( char *  string,
const char  imtype 
)

Definition at line 1780 of file image.c.

References do_add_image_extension(), and NULL.

Referenced by dynamicPaint_outputSurfaceImage(), and unpack_generate_paths().

◆ BKE_image_path_from_imformat()

void BKE_image_path_from_imformat ( char *  string,
const char *  base,
const char *  relbase,
int  frame,
const ImageFormatData im_format,
const bool  use_ext,
const bool  use_frames,
const char *  suffix 
)

Definition at line 3078 of file image.c.

References do_makepicstring(), StampData::frame, and ImageFormatData::imtype.

◆ BKE_image_path_from_imtype()

void BKE_image_path_from_imtype ( char *  string,
const char *  base,
const char *  relbase,
int  frame,
const char  imtype,
const bool  use_ext,
const bool  use_frames,
const char *  suffix 
)

◆ BKE_image_pool_acquire_ibuf()

ImBuf* BKE_image_pool_acquire_ibuf ( Image ima,
ImageUser iuser,
ImagePool pool 
)

◆ BKE_image_pool_free()

void BKE_image_pool_free ( ImagePool pool)

◆ BKE_image_pool_new()

ImagePool* BKE_image_pool_new ( void  )

◆ BKE_image_pool_release_ibuf()

void BKE_image_pool_release_ibuf ( Image ima,
ImBuf ibuf,
ImagePool pool 
)

◆ BKE_image_print_memlist()

void BKE_image_print_memlist ( Main bmain)

Definition at line 1235 of file image.c.

References ListBase::first, Image::id, image_mem_size(), Main::images, ID::name, ID::next, and size().

◆ BKE_image_release_ibuf()

void BKE_image_release_ibuf ( Image ima,
ImBuf ibuf,
void *  lock 
)

Definition at line 5113 of file image.c.

References BLI_mutex_lock(), BLI_mutex_unlock(), BLI_thread_unlock(), image_mutex, IMB_freeImBuf(), LOCK_VIEWER, NULL, and RE_ReleaseResultImage().

Referenced by backimage_fit_exec(), bake_images(), bake_object_check(), bake_targets_init_internal(), BKE_gpencil_from_image(), BKE_image_fill_tile(), BKE_image_get_float_pixels_for_frame(), BKE_image_get_pixels_for_frame(), BKE_image_get_size(), BKE_image_has_alpha(), BKE_image_pool_release_ibuf(), BKE_image_scale(), BKE_image_update_gputexture(), clear_single_image(), cmp_node_image_create_outputs(), colorfn(), blender::compositor::ImageNode::convertToOperations(), cryptomatte_init_from_node_image(), blender::compositor::BaseImageOperation::deinitExecution(), blender::compositor::BaseImageOperation::determineResolution(), do_multires_bake(), draw_nodespace_back_pix(), draw_plane_marker_image(), ED_space_image_acquire_buffer(), ED_space_image_release_buffer(), ED_space_node_color_sample(), ED_space_node_get_position(), eyedropper_cryptomatte_sample_image_fl(), finish_images(), blender::compositor::BaseImageOperation::getImBuf(), gpencil_boundaryfill_area(), gpencil_erase_processed_area(), gpencil_get_outline_points(), gpencil_image_texture_get(), gpencil_invert_image(), gpencil_render_offscreen(), gpencil_set_borders(), gpu_texture_create_tile_array(), icon_preview_startjob(), image_camera_background_texture_get(), image_draw_finish(), image_file_format_writable(), image_flip_exec(), image_from_context_has_data_poll(), image_get_gpu_texture(), image_has_alpha(), image_invert_exec(), image_rect_update(), image_save_options_init(), image_save_single(), image_scale_exec(), image_scale_invoke(), image_undosys_step_encode(), init_heights_data(), metadata_panel_context_draw(), multiresbake_check(), OVERLAY_edit_uv_draw_finish(), paint_2d_bucket_fill(), paint_2d_canvas_free(), paint_2d_canvas_set(), paint_2d_ensure_tile_canvas(), paint_2d_gradient_fill(), paint_2d_new_stroke(), paint_2d_redraw(), paint_sample_color(), palette_extract_img_exec(), project_paint_end(), project_paint_PickColor(), project_paint_uvpixel_init(), project_paint_uvpixel_mask(), ptile_restore_runtime_list(), RE_bake_ibuf_clear(), render_endjob(), sample_apply(), screen_opengl_render_apply(), snode_bg_viewmove_invoke(), tile_fill_init(), trace_start_job(), uhandle_restore_list(), uiTemplateImage(), uiTemplateImageInfo(), viewer_border_exec(), WIDGETGROUP_node_corner_pin_refresh(), WIDGETGROUP_node_crop_refresh(), WIDGETGROUP_node_sbeam_refresh(), WIDGETGROUP_node_transform_refresh(), and write_internal_bake_pixels().

◆ BKE_image_release_renderresult()

void BKE_image_release_renderresult ( Scene scene,
Image ima 
)

◆ BKE_image_remove_renderslot()

bool BKE_image_remove_renderslot ( Image ima,
ImageUser iuser,
int  index 
)

◆ BKE_image_remove_tile()

bool BKE_image_remove_tile ( struct Image ima,
ImageTile tile 
)

◆ BKE_image_scale()

bool BKE_image_scale ( Image image,
int  width,
int  height 
)

◆ BKE_image_sequence_guess_offset()

int BKE_image_sequence_guess_offset ( Image image)

Definition at line 5617 of file image.c.

References BLI_path_sequence_decode(), Image::filepath, and NULL.

Referenced by cmp_node_image_create_outputs().

◆ BKE_image_signal()

void BKE_image_signal ( Main bmain,
Image ima,
ImageUser iuser,
int  signal 
)

Definition at line 3499 of file image.c.

References BKE_image_free_buffers(), BKE_image_get_tile(), BKE_image_has_packedfile(), BKE_image_init_imageuser(), BKE_image_packfiles(), BKE_image_walk_all_users(), BKE_packedfile_free(), BKE_packedfile_new(), BLI_assert, BLI_listbase_count_at_most(), BLI_mutex_lock(), BLI_mutex_unlock(), ELEM, ImagePackedFile::filepath, Image::filepath, ListBase::first, Image::gen_x, Image::gen_y, Image::id, Scene::id, ID_BLEND_PATH, IMA_NO_INDEX, IMA_SIGNAL_COLORMANAGE, IMA_SIGNAL_FREE, IMA_SIGNAL_RELOAD, IMA_SIGNAL_SRC_CHANGE, IMA_SIGNAL_USER_NEW_IMAGE, IMA_SRC_FILE, IMA_SRC_GENERATED, IMA_SRC_SEQUENCE, IMA_SRC_TILED, IMA_TYPE_IMAGE, IMA_TYPE_MULTILAYER, IMA_TYPE_UV_TEST, image_free_packedfiles(), image_free_tile(), image_get_cached_ibuf_for_index_entry(), image_mutex, image_num_files(), image_tag_frame_recalc(), image_tag_reload(), image_update_views_format(), IMB_freeImBuf(), ListBase::last, LISTBASE_FOREACH, MEM_freeN, ID::next, ImagePackedFile::next, ImageTile::next, Scene::nodetree, nodeUpdateID(), NULL, ImageUser::ok, ImagePackedFile::packedfile, Image::packedfiles, pf, scene, ImageUser::scene, Main::scenes, Image::source, Image::tiles, Image::type, ImBuf::x, and ImBuf::y.

Referenced by BKE_bpath_traverse_id(), BKE_image_save(), BKE_packedfile_unpack_image(), blender::compositor::CompositorOperation::deinitExecution(), ED_space_image_auto_set(), ED_space_image_set(), image_new_exec(), image_open_exec(), image_reload_exec(), image_replace_exec(), node_add_file_exec(), proj_paint_add_slot(), screen_opengl_render_init(), screen_render_exec(), and screen_render_invoke().

◆ BKE_image_stamp_buf()

void BKE_image_stamp_buf ( Scene scene,
Object camera,
const StampData stamp_data_template,
unsigned char *  rect,
float rectf,
int  width,
int  height,
int  channels 
)

◆ BKE_image_tag_time()

void BKE_image_tag_time ( Image ima)

◆ BKE_image_user_file_path()

void BKE_image_user_file_path ( ImageUser iuser,
Image ima,
char *  filepath 
)

◆ BKE_image_user_frame_calc()

void BKE_image_user_frame_calc ( Image ima,
ImageUser iuser,
int  cfra 
)

◆ BKE_image_user_frame_get()

int BKE_image_user_frame_get ( const ImageUser iuser,
int  cfra,
bool *  r_is_in_range 
)

Definition at line 5271 of file image.c.

References ImageUser::cycl, ImageUser::frames, len, ImageUser::offset, and ImageUser::sfra.

Referenced by BKE_image_user_frame_calc().

◆ BKE_image_user_id_eval_animation()

void BKE_image_user_id_eval_animation ( Depsgraph depsgraph,
ID id 
)

◆ BKE_image_user_id_has_animation()

bool BKE_image_user_id_has_animation ( ID id)

◆ BKE_image_walk_all_users()

void BKE_image_walk_all_users ( const Main mainp,
void *  customdata,
void   callbackImage *ima, ID *iuser_id, ImageUser *iuser, void *customdata 
)

◆ BKE_images_exit()

void BKE_images_exit ( void  )

Definition at line 436 of file image.c.

References BLI_mutex_free(), and image_mutex.

Referenced by BKE_blender_free(), and wm_main_playanim_intern().

◆ BKE_images_init()

void BKE_images_init ( void  )

Definition at line 431 of file image.c.

References BLI_mutex_alloc(), and image_mutex.

Referenced by main(), and BlendfileLoadingBaseTest::SetUpTestCase().

◆ BKE_imageuser_default()

void BKE_imageuser_default ( ImageUser iuser)

◆ BKE_imbuf_alpha_test()

bool BKE_imbuf_alpha_test ( ImBuf ibuf)

Definition at line 2812 of file image.c.

References ImBuf::rect, ImBuf::rect_float, ImBuf::x, and ImBuf::y.

Referenced by bake_ibuf_filter(), and image_save_single().

◆ BKE_imbuf_stamp_info()

void BKE_imbuf_stamp_info ( RenderResult rr,
struct ImBuf ibuf 
)

◆ BKE_imbuf_to_image_format()

void BKE_imbuf_to_image_format ( struct ImageFormatData im_format,
const ImBuf imbuf 
)

◆ BKE_imbuf_write()

int BKE_imbuf_write ( ImBuf ibuf,
const char *  name,
const ImageFormatData imf 
)

◆ BKE_imbuf_write_as()

int BKE_imbuf_write_as ( ImBuf ibuf,
const char *  name,
ImageFormatData imf,
const bool  save_copy 
)

◆ BKE_imbuf_write_prepare()

void BKE_imbuf_write_prepare ( ImBuf ibuf,
const ImageFormatData imf 
)

◆ BKE_imbuf_write_stamp()

int BKE_imbuf_write_stamp ( Scene scene,
struct RenderResult rr,
ImBuf ibuf,
const char *  name,
const struct ImageFormatData imf 
)

◆ BKE_imformat_defaults()

void BKE_imformat_defaults ( ImageFormatData im_format)

◆ BKE_imtype_from_arg()

char BKE_imtype_from_arg ( const char *  imtype_arg)

◆ BKE_imtype_is_movie()

bool BKE_imtype_is_movie ( const char  imtype)

◆ BKE_imtype_requires_linear_float()

bool BKE_imtype_requires_linear_float ( const char  imtype)

◆ BKE_imtype_supports_compress()

bool BKE_imtype_supports_compress ( const char  imtype)

Definition at line 1467 of file image.c.

References R_IMF_IMTYPE_PNG.

Referenced by uiTemplateImageSettings().

◆ BKE_imtype_supports_quality()

bool BKE_imtype_supports_quality ( const char  imtype)

Definition at line 1476 of file image.c.

References R_IMF_IMTYPE_AVIJPEG, R_IMF_IMTYPE_JP2, and R_IMF_IMTYPE_JPEG90.

Referenced by uiTemplateImageSettings().

◆ BKE_imtype_supports_zbuf()

bool BKE_imtype_supports_zbuf ( const char  imtype)

Definition at line 1457 of file image.c.

References R_IMF_IMTYPE_IRIZ, and R_IMF_IMTYPE_OPENEXR.

Referenced by uiTemplateImageSettings().

◆ BKE_imtype_valid_channels()

char BKE_imtype_valid_channels ( const char  imtype,
bool  write_file 
)

◆ BKE_imtype_valid_depths()

char BKE_imtype_valid_depths ( const char  imtype)

◆ BKE_render_result_stamp_data()

void BKE_render_result_stamp_data ( RenderResult rr,
const char *  key,
const char *  value 
)

◆ BKE_render_result_stamp_info()

void BKE_render_result_stamp_info ( Scene scene,
Object camera,
struct RenderResult rr,
bool  allocate_only 
)

◆ BKE_stamp_data_copy()

StampData* BKE_stamp_data_copy ( const StampData stamp_data)

◆ BKE_stamp_data_free()

void BKE_stamp_data_free ( StampData stamp_data)

◆ BKE_stamp_info_callback()

void BKE_stamp_info_callback ( void *  data,
struct StampData stamp_data,
StampCallback  callback,
bool  noskip 
)

◆ BKE_stamp_info_from_imbuf()

void BKE_stamp_info_from_imbuf ( RenderResult rr,
struct ImBuf ibuf 
)

◆ BKE_stamp_info_from_scene_static()

struct StampData* BKE_stamp_info_from_scene_static ( const Scene scene)

Definition at line 2638 of file image.c.

References MEM_callocN, NULL, Scene::r, R_STAMP_ALL, scene, RenderData::stamp, and stampdata().

◆ BKE_stamp_is_known_field()

bool BKE_stamp_is_known_field ( const char *  field_name)

Definition at line 2674 of file image.c.

References NULL, stamp_metadata_fields, and STREQ.

Referenced by metadata_copy_custom_fields(), and metadata_is_custom_drawable().

◆ copy_image_packedfiles()

static void copy_image_packedfiles ( ListBase lb_dst,
const ListBase lb_src 
)
static

◆ do_add_image_extension()

static bool do_add_image_extension ( char *  string,
const char  imtype,
const ImageFormatData im_format 
)
static

◆ do_makepicstring()

static void do_makepicstring ( char *  string,
const char *  base,
const char *  relbase,
int  frame,
const char  imtype,
const ImageFormatData im_format,
const bool  use_ext,
const bool  use_frames,
const char *  suffix 
)
static

◆ image_acquire_ibuf()

static ImBuf * image_acquire_ibuf ( Image ima,
ImageUser iuser,
void **  r_lock 
)
static

◆ image_add_view()

static void image_add_view ( Image ima,
const char *  viewname,
const char *  filepath 
)
static

◆ image_alloc()

static Image* image_alloc ( Main bmain,
const char *  name,
short  source,
short  type 
)
static

◆ image_assign_ibuf()

static void image_assign_ibuf ( Image ima,
ImBuf ibuf,
int  index,
int  entry 
)
static

◆ image_blend_read_data()

static void image_blend_read_data ( BlendDataReader reader,
ID id 
)
static

◆ image_blend_read_lib()

static void image_blend_read_lib ( BlendLibReader UNUSEDreader,
ID id 
)
static

Definition at line 306 of file image.c.

References BKE_image_free_buffers(), Image::cache, and NULL.

◆ image_blend_write()

static void image_blend_write ( BlendWriter writer,
ID id,
const void *  id_address 
)
static

◆ image_copy_data()

static void image_copy_data ( Main UNUSEDbmain,
ID id_dst,
const ID id_src,
const int  flag 
)
static

◆ image_editors_update_frame()

static void image_editors_update_frame ( Image ima,
ID UNUSEDiuser_id,
ImageUser iuser,
void *  customdata 
)
static

◆ image_foreach_cache()

static void image_foreach_cache ( ID id,
IDTypeForeachCacheFunctionCallback  function_callback,
void *  user_data 
)
static

◆ image_free_anims()

static void image_free_anims ( Image ima)
static

◆ image_free_cached_frames()

static void image_free_cached_frames ( Image image)
static

◆ image_free_data()

static void image_free_data ( ID id)
static

◆ image_free_packedfiles()

static void image_free_packedfiles ( Image ima)
static

◆ image_free_tile()

static void image_free_tile ( Image ima,
ImageTile tile 
)
static

◆ image_get_cached_ibuf()

static ImBuf* image_get_cached_ibuf ( Image ima,
ImageUser iuser,
int *  r_entry,
int *  r_index 
)
static

◆ image_get_cached_ibuf_for_index_entry()

static ImBuf* image_get_cached_ibuf_for_index_entry ( Image ima,
int  index,
int  entry 
)
static

◆ image_get_entry_and_index()

static void image_get_entry_and_index ( Image ima,
ImageUser iuser,
int *  r_entry,
int *  r_index 
)
static

◆ image_get_ibuf_multilayer()

static ImBuf* image_get_ibuf_multilayer ( Image ima,
ImageUser iuser 
)
static

◆ image_get_multiview_index()

static int image_get_multiview_index ( Image ima,
ImageUser iuser 
)
static

◆ image_get_render_result()

static ImBuf* image_get_render_result ( Image ima,
ImageUser iuser,
void **  r_lock 
)
static

Definition at line 4624 of file image.c.

References BKE_image_get_renderslot(), BKE_image_get_tile(), BKE_image_is_stereo(), BKE_imbuf_stamp_info(), BLI_findlink(), BLI_thread_lock(), BLI_thread_unlock(), ImBuf::channels, RenderPass::channels, COLOR_ROLE_DEFAULT_BYTE, ImBuf::dither, RenderData::dither_intensity, ListBase::first, ImageUser::flag, ImBuf::flags, RenderResult::have_combined, IB_DISPLAY_BUFFER_INVALID, IB_rect, IB_rectfloat, IB_zbuffloat, IMA_NO_INDEX, IMA_OK_LOADED, IMA_SHOW_STEREO, image_assign_ibuf(), image_get_cached_ibuf_for_index_entry(), image_render_pass_get(), IMB_allocImBuf(), IMB_colormanagement_assign_rect_colorspace(), IMB_colormanagement_role_colorspace_name_get(), imb_freerectImBuf(), IMB_metadata_free(), Image::last_render_slot, ImageUser::layer, RenderResult::layers, LOCK_COLORMANAGE, LOCK_VIEWER, ImBuf::mall, ImBuf::metadata, ImageUser::multiview_eye, RenderPass::name, RenderPass::next, NULL, ImageTile::ok, ImageUser::pass, RenderLayer::passes, Scene::r, RE_AcquireResultImage(), RE_GetSceneRender(), RE_PASSNAME_Z, RE_ReleaseResultImage(), ImBuf::rect, RenderPass::rect, RenderView::rect32, RenderResult::rect32, ImBuf::rect_float, RenderView::rectf, RenderResult::rectf, RenderResult::rectx, RenderResult::recty, RenderView::rectz, RenderResult::rectz, RenderSlot::render, Image::render_slot, ImageUser::scene, STREQ, ImBuf::userflags, ImageUser::view, RenderPass::view_id, RenderResult::views, ImBuf::x, ImBuf::y, and ImBuf::zbuf_float.

Referenced by image_acquire_ibuf().

◆ image_init()

static void image_init ( Image ima,
short  source,
short  type 
)
static

◆ image_init_after_load()

static void image_init_after_load ( Image ima,
ImageUser iuser,
ImBuf UNUSEDibuf 
)
static

◆ image_init_color_management()

static void image_init_color_management ( Image ima)
static

◆ image_init_data()

static void image_init_data ( ID id)
static

Definition at line 120 of file image.c.

References IMA_SRC_GENERATED, IMA_TYPE_UV_TEST, image_init(), and NULL.

◆ image_init_multilayer_multiview()

static void image_init_multilayer_multiview ( Image ima,
RenderResult rr 
)
static

◆ image_load_image_file()

static ImBuf* image_load_image_file ( Image ima,
ImageUser iuser,
int  cfra 
)
static

◆ image_load_movie_file()

static ImBuf* image_load_movie_file ( Image ima,
ImageUser iuser,
int  frame 
)
static

◆ image_load_sequence_file()

static ImBuf* image_load_sequence_file ( Image ima,
ImageUser iuser,
int  entry,
int  frame 
)
static

◆ image_load_sequence_multilayer()

static ImBuf* image_load_sequence_multilayer ( Image ima,
ImageUser iuser,
int  entry,
int  frame 
)
static

◆ image_mem_size()

static uintptr_t image_mem_size ( Image image)
static

◆ image_memorypack_imbuf()

static bool image_memorypack_imbuf ( Image ima,
ImBuf ibuf,
const char *  filepath 
)
static

◆ image_num_files()

static int image_num_files ( struct Image ima)
static

◆ image_pool_find_item()

BLI_INLINE ImBuf* image_pool_find_item ( ImagePool pool,
Image image,
int  entry,
int  index,
bool *  found 
)

◆ image_quick_test()

BLI_INLINE bool image_quick_test ( Image ima,
const ImageUser iuser 
)

◆ image_remove_ibuf()

static void image_remove_ibuf ( Image ima,
int  index,
int  entry 
)
static

Definition at line 595 of file image.c.

References IMA_MAKE_INDEX, IMA_NO_INDEX, imagecache_remove(), and ImBuf::index.

Referenced by image_free_tile().

◆ image_render_pass_get()

static RenderPass* image_render_pass_get ( RenderLayer rl,
const int  pass,
const int  view,
int *  r_passindex 
)
static

◆ image_tag_frame_recalc()

static void image_tag_frame_recalc ( Image ima,
ID iuser_id,
ImageUser iuser,
void *  customdata 
)
static

◆ image_tag_reload()

static void image_tag_reload ( Image ima,
ID iuser_id,
ImageUser iuser,
void *  customdata 
)
static

◆ image_update_views_format()

static void image_update_views_format ( Image ima,
ImageUser iuser 
)
static

◆ image_user_id_eval_animation()

static void image_user_id_eval_animation ( Image ima,
ID UNUSEDiduser_id,
ImageUser iuser,
void *  customdata 
)
static

◆ image_user_id_has_animation()

static void image_user_id_has_animation ( Image ima,
ID UNUSEDiuser_id,
ImageUser UNUSEDiuser,
void *  customdata 
)
static

Definition at line 5403 of file image.c.

References BKE_image_is_animated().

Referenced by BKE_image_user_id_has_animation().

◆ image_viewer_create_views()

static void image_viewer_create_views ( const RenderData rd,
Image ima 
)
static

◆ image_walk_id_all_users()

static void image_walk_id_all_users ( ID id,
bool  skip_nested_nodes,
void *  customdata,
void   callbackImage *ima, ID *iuser_id, ImageUser *iuser, void *customdata 
)
static

◆ image_walk_ntree_all_users()

static void image_walk_ntree_all_users ( bNodeTree ntree,
ID id,
void *  customdata,
void   callbackImage *ima, ID *iuser_id, ImageUser *iuser, void *customdata 
)
static

◆ imagecache_check_dirty()

static bool imagecache_check_dirty ( ImBuf ibuf,
void *  UNUSEDuserkey,
void *  UNUSEDuserdata 
)
static

Definition at line 1255 of file image.c.

References IB_BITMAPDIRTY, and ImBuf::userflags.

Referenced by BKE_image_free_all_textures().

◆ imagecache_check_free_anim()

static bool imagecache_check_free_anim ( ImBuf ibuf,
void *  UNUSEDuserkey,
void *  userdata 
)
static

Definition at line 1298 of file image.c.

References IB_BITMAPDIRTY, IMA_INDEX_ENTRY, IMA_NO_INDEX, ImBuf::index, and ImBuf::userflags.

Referenced by BKE_image_free_anim_ibufs().

◆ imagecache_get()

static struct ImBuf* imagecache_get ( Image image,
int  index 
)
static

◆ imagecache_hashcmp()

static bool imagecache_hashcmp ( const void *  a_v,
const void *  b_v 
)
static

Definition at line 374 of file image.c.

References Freestyle::a, and ImageCacheKey::index.

Referenced by imagecache_put().

◆ imagecache_hashhash()

static unsigned int imagecache_hashhash ( const void *  key_v)
static

Definition at line 368 of file image.c.

References ImageCacheKey::index.

Referenced by imagecache_put().

◆ imagecache_keydata()

static void imagecache_keydata ( void *  userkey,
int *  framenr,
int *  proxy,
int *  render_flags 
)
static

Definition at line 382 of file image.c.

References IMA_INDEX_ENTRY, IMB_PROXY_NONE, and ImageCacheKey::index.

Referenced by imagecache_put().

◆ imagecache_put()

static void imagecache_put ( Image image,
int  index,
ImBuf ibuf 
)
static

◆ imagecache_remove()

static void imagecache_remove ( Image image,
int  index 
)
static

Definition at line 409 of file image.c.

References Image::cache, IMB_moviecache_remove(), ImageCacheKey::index, and NULL.

Referenced by image_remove_ibuf().

◆ imbuf_alpha_flags_for_image()

static int imbuf_alpha_flags_for_image ( Image ima)
static

◆ load_image_single()

static ImBuf* load_image_single ( Image ima,
ImageUser iuser,
int  cfra,
const int  view_id,
const bool  has_packed,
bool *  r_assign 
)
static

◆ load_movie_single()

static ImBuf* load_movie_single ( Image ima,
ImageUser iuser,
int  frame,
const int  view_id 
)
static

◆ load_sequence_single()

static ImBuf* load_sequence_single ( Image ima,
ImageUser iuser,
int  frame,
const int  view_id,
bool *  r_assign 
)
static

◆ metadata_copy_custom_fields()

static void metadata_copy_custom_fields ( const char *  field,
const char *  value,
void *  rr_v 
)
static

Definition at line 2791 of file image.c.

References BKE_render_result_stamp_data(), and BKE_stamp_is_known_field().

Referenced by BKE_stamp_info_from_imbuf().

◆ metadata_get_field()

static void metadata_get_field ( void *  data,
const char *  propname,
char *  propvalue,
int  len 
)
static

Definition at line 2777 of file image.c.

References data, IMB_metadata_get_field(), len, and ImBuf::metadata.

Referenced by BKE_stamp_info_from_imbuf().

◆ metadata_set_field()

static void metadata_set_field ( void *  data,
const char *  propname,
char *  propvalue,
int   UNUSEDlen 
)
static

Definition at line 2770 of file image.c.

References data, IMB_metadata_set_field(), and ImBuf::metadata.

Referenced by BKE_imbuf_stamp_info().

◆ openanim()

struct anim* openanim ( const char *  name,
int  flags,
int  streamindex,
char  colorspace[IMA_MAX_SPACE] 
)

◆ openanim_noload()

struct anim* openanim_noload ( const char *  name,
int  flags,
int  streamindex,
char  colorspace[IMA_MAX_SPACE] 
)

Definition at line 3103 of file image.c.

References anim::colorspace, IMB_open_anim(), anim::name, and anim::streamindex.

Referenced by seq_open_anim_file().

◆ stampdata()

static void stampdata ( const Scene scene,
Object camera,
StampData stamp_data,
int  do_prefix,
bool  use_dynamic 
)
static

◆ stampdata_from_template()

static void stampdata_from_template ( StampData stamp_data,
const Scene scene,
const StampData stamp_data_template,
bool  do_prefix 
)
static

Variable Documentation

◆ IDType_ID_IM

IDTypeInfo IDType_ID_IM
Initial value:
= {
.id_code = ID_IM,
.id_filter = FILTER_ID_IM,
.main_listbase_index = INDEX_ID_IM,
.struct_size = sizeof(Image),
.name = "Image",
.name_plural = "images",
.translation_context = BLT_I18NCONTEXT_ID_IMAGE,
.copy_data = image_copy_data,
.free_data = image_free_data,
.make_local = NULL,
.foreach_id = NULL,
.foreach_cache = image_foreach_cache,
.owner_get = NULL,
.blend_write = image_blend_write,
.blend_read_data = image_blend_read_data,
.blend_read_lib = image_blend_read_lib,
.blend_read_expand = NULL,
.blend_read_undo_preserve = NULL,
.lib_override_apply_post = NULL,
}
@ IDTYPE_FLAGS_NO_ANIMDATA
Definition: BKE_idtype.h:51
#define BLT_I18NCONTEXT_ID_IMAGE
#define FILTER_ID_IM
Definition: DNA_ID.h:712
@ INDEX_ID_IM
Definition: DNA_ID.h:808
@ ID_IM
Definition: DNA_ID_enums.h:65
struct Image Image
static void init_data(ModifierData *md)
static void image_blend_read_lib(BlendLibReader *UNUSED(reader), ID *id)
Definition: image.c:306
static void image_init_data(ID *id)
Definition: image.c:120
static void image_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
Definition: image.c:196
static void image_free_data(ID *id)
Definition: image.c:169
static void image_blend_read_data(BlendDataReader *reader, ID *id)
Definition: image.c:271
static void image_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition: image.c:227
static void image_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
Definition: image.c:129

Definition at line 318 of file image.c.

◆ image_mutex

ThreadMutex* image_mutex
static

◆ LOG

CLG_LogRef LOG = {"bke.image"}
static

Definition at line 113 of file image.c.

Referenced by image_memorypack_imbuf().

◆ stamp_metadata_fields

const char* stamp_metadata_fields[]
static
Initial value:
= {
"File",
"Note",
"Date",
"Marker",
"Time",
"Frame",
"FrameRange",
"Camera",
"Lens",
"Scene",
"Strip",
"RenderTime",
"Memory",
"Hostname",
}

Definition at line 2654 of file image.c.

Referenced by BKE_stamp_is_known_field().