Blender V4.3
preview_image.cc File Reference
#include <iostream>
#include <string>
#include "DNA_ID.h"
#include "DNA_brush_types.h"
#include "DNA_collection_types.h"
#include "DNA_light_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_texture_types.h"
#include "DNA_world_types.h"
#include "BKE_icons.h"
#include "BLI_ghash.h"
#include "BLI_string.h"
#include "BLI_string_ref.hh"
#include "BLI_threads.h"
#include "BLO_read_write.hh"
#include "GPU_texture.hh"
#include "IMB_imbuf.hh"
#include "IMB_thumbs.hh"
#include "atomic_ops.h"
#include "BKE_preview_image.hh"

Go to the source code of this file.

Classes

struct  blender::bke::PreviewDeferredLoadingData
 

Namespaces

namespace  blender
 
namespace  blender::bke
 

Macros

#define ID_PRV_CASE(id_code, id_struct)
 

Functions

static PreviewImagepreviewimg_deferred_create (const char *filepath, ThumbSource source)
 
PreviewImageBKE_previewimg_create ()
 
void BKE_previewimg_free (PreviewImage **prv)
 
void BKE_preview_images_init ()
 
void BKE_preview_images_free ()
 
void BKE_previewimg_freefunc (void *link)
 
void BKE_previewimg_clear_single (PreviewImage *prv, enum eIconSizes size)
 
void BKE_previewimg_clear (PreviewImage *prv)
 
PreviewImageBKE_previewimg_copy (const PreviewImage *prv)
 
void BKE_previewimg_id_copy (ID *new_id, const ID *old_id)
 
PreviewImage ** BKE_previewimg_id_get_p (const ID *id)
 
PreviewImageBKE_previewimg_id_get (const ID *id)
 
void BKE_previewimg_id_free (ID *id)
 
PreviewImageBKE_previewimg_id_ensure (ID *id)
 
void BKE_previewimg_id_custom_set (ID *id, const char *filepath)
 
bool BKE_previewimg_id_supports_jobs (const ID *id)
 
void BKE_previewimg_deferred_release (PreviewImage *prv)
 
PreviewImageBKE_previewimg_cached_get (const char *name)
 
PreviewImageBKE_previewimg_cached_ensure (const char *name)
 
PreviewImageBKE_previewimg_cached_thumbnail_read (const char *name, const char *filepath, const int source, bool force_update)
 
void BKE_previewimg_cached_release (const char *name)
 
void BKE_previewimg_ensure (PreviewImage *prv, const int size)
 
const char * BKE_previewimg_deferred_filepath_get (const PreviewImage *prv)
 
std::optional< intBKE_previewimg_deferred_thumb_source_get (const PreviewImage *prv)
 
ImBufBKE_previewimg_to_imbuf (PreviewImage *prv, const int size)
 
void BKE_previewimg_finish (PreviewImage *prv, const int size)
 
bool BKE_previewimg_is_finished (const PreviewImage *prv, const int size)
 
void BKE_previewimg_blend_write (BlendWriter *writer, const PreviewImage *prv)
 
void BKE_previewimg_blend_read (BlendDataReader *reader, PreviewImage *prv)
 

Variables

static GHashgCachedPreviews = nullptr
 

Macro Definition Documentation

◆ ID_PRV_CASE

#define ID_PRV_CASE ( id_code,
id_struct )
Value:
case id_code: { \
return &((id_struct *)id)->preview; \
} \
((void)0)

Referenced by BKE_previewimg_id_get_p().

Function Documentation

◆ BKE_preview_images_free()

void BKE_preview_images_free ( )

Definition at line 114 of file preview_image.cc.

References BKE_previewimg_freefunc(), BLI_ghash_free(), gCachedPreviews, and MEM_freeN().

Referenced by UI_icons_free().

◆ BKE_preview_images_init()

void BKE_preview_images_init ( )

Definition at line 107 of file preview_image.cc.

References BLI_ghash_str_new(), and gCachedPreviews.

Referenced by WM_init().

◆ BKE_previewimg_blend_read()

◆ BKE_previewimg_blend_write()

◆ BKE_previewimg_cached_ensure()

PreviewImage * BKE_previewimg_cached_ensure ( const char * name)

Generate an empty PreviewImage, if not yet existing.

Definition at line 291 of file preview_image.cc.

References BKE_previewimg_create(), BLI_assert, BLI_ghash_ensure_p_ex(), BLI_strdup(), BLI_thread_is_main(), and gCachedPreviews.

Referenced by bpy_utils_previews_new().

◆ BKE_previewimg_cached_get()

PreviewImage * BKE_previewimg_cached_get ( const char * name)

◆ BKE_previewimg_cached_release()

void BKE_previewimg_cached_release ( const char * name)

◆ BKE_previewimg_cached_thumbnail_read()

PreviewImage * BKE_previewimg_cached_thumbnail_read ( const char * name,
const char * filepath,
int source,
bool force_update )

Generate a PreviewImage from given filepath, using thumbnails management, if not yet existing. Does not actually generate the preview, BKE_previewimg_ensure() must be called for that.

Definition at line 308 of file preview_image.cc.

References BKE_previewimg_clear(), BKE_previewimg_free(), BLI_assert, BLI_ghash_insert(), BLI_ghash_lookup_p(), BLI_strdup(), BLI_thread_is_main(), gCachedPreviews, previewimg_deferred_create(), and PreviewImage::runtime.

Referenced by bpy_utils_previews_load().

◆ BKE_previewimg_clear()

void BKE_previewimg_clear ( PreviewImage * prv)

Clear the preview image or icon, but does not free it.

Definition at line 143 of file preview_image.cc.

References BKE_previewimg_clear_single(), and NUM_ICON_SIZES.

Referenced by BKE_previewimg_cached_thumbnail_read(), blender::ed::asset::generate_preview(), lib_id_generate_preview_exec(), and previews_clear_exec().

◆ BKE_previewimg_clear_single()

void BKE_previewimg_clear_single ( PreviewImage * prv,
enum eIconSizes size )

◆ BKE_previewimg_copy()

PreviewImage * BKE_previewimg_copy ( const PreviewImage * prv)

Create a copy of the preview image.

Definition at line 150 of file preview_image.cc.

References MEM_dupallocN, MEM_mallocN, NUM_ICON_SIZES, PreviewImage::rect, and PreviewImage::runtime.

Referenced by BKE_previewimg_id_copy(), and UI_icon_to_preview().

◆ BKE_previewimg_create()

◆ BKE_previewimg_deferred_filepath_get()

const char * BKE_previewimg_deferred_filepath_get ( const PreviewImage * prv)

Definition at line 419 of file preview_image.cc.

References PreviewImage::runtime.

◆ BKE_previewimg_deferred_release()

◆ BKE_previewimg_deferred_thumb_source_get()

std::optional< int > BKE_previewimg_deferred_thumb_source_get ( const PreviewImage * prv)

Definition at line 428 of file preview_image.cc.

References PreviewImage::runtime.

◆ BKE_previewimg_ensure()

◆ BKE_previewimg_finish()

void BKE_previewimg_finish ( PreviewImage * prv,
const int size )

◆ BKE_previewimg_free()

◆ BKE_previewimg_freefunc()

void BKE_previewimg_freefunc ( void * link)

Free the preview image for use in list.

Definition at line 122 of file preview_image.cc.

References BKE_previewimg_free().

Referenced by BKE_preview_images_free(), and imb_thumb_load_from_blend_id().

◆ BKE_previewimg_id_copy()

void BKE_previewimg_id_copy ( ID * new_id,
const ID * old_id )

◆ BKE_previewimg_id_custom_set()

void BKE_previewimg_id_custom_set ( ID * id,
const char * filepath )

◆ BKE_previewimg_id_ensure()

◆ BKE_previewimg_id_free()

void BKE_previewimg_id_free ( ID * id)

Free the preview image belonging to the id.

Definition at line 221 of file preview_image.cc.

References BKE_previewimg_free(), and BKE_previewimg_id_get_p().

Referenced by lib_id_generate_preview_from_object_exec().

◆ BKE_previewimg_id_get()

◆ BKE_previewimg_id_get_p()

◆ BKE_previewimg_id_supports_jobs()

bool BKE_previewimg_id_supports_jobs ( const ID * id)

Definition at line 263 of file preview_image.cc.

References ELEM, GS, ID_BR, ID_GR, ID_IM, ID_LA, ID_MA, ID_OB, ID_TE, and ID_WO.

Referenced by duplicate_ids(), ED_preview_shader_job(), and icon_set_image().

◆ BKE_previewimg_is_finished()

bool BKE_previewimg_is_finished ( const PreviewImage * prv,
const int size )

◆ BKE_previewimg_to_imbuf()

ImBuf * BKE_previewimg_to_imbuf ( PreviewImage * prv,
int size )

Create an ImBuf holding a copy of the preview image buffer in prv.

Note
The returned image buffer has to be freed (IMB_freeImBuf()).

Definition at line 437 of file preview_image.cc.

References ImBuf::byte_buffer, ImBufByteBuffer::data, PreviewImage::h, IB_rect, IMB_allocImBuf(), PreviewImage::rect, size(), PreviewImage::w, and w().

Referenced by filelist_cache_previews_push(), filelist_file_create_entry(), and imb_thumb_load_from_blend_id().

◆ previewimg_deferred_create()

static PreviewImage * previewimg_deferred_create ( const char * filepath,
ThumbSource source )
static

Variable Documentation

◆ gCachedPreviews