Blender  V2.93
Functions
main.c File Reference
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_mempool.h"
#include "BLI_threads.h"
#include "DNA_ID.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"

Go to the source code of this file.

Functions

MainBKE_main_new (void)
 
void BKE_main_free (Main *mainvar)
 
void BKE_main_lock (struct Main *bmain)
 
void BKE_main_unlock (struct Main *bmain)
 
static int main_relations_create_idlink_cb (LibraryIDLinkCallbackData *cb_data)
 
void BKE_main_relations_create (Main *bmain, const short flag)
 
void BKE_main_relations_free (Main *bmain)
 
void BKE_main_relations_tag_set (struct Main *bmain, const MainIDRelationsEntryTags tag, const bool value)
 
GSetBKE_main_gset_create (Main *bmain, GSet *gset)
 
BlendThumbnailBKE_main_thumbnail_from_imbuf (Main *bmain, ImBuf *img)
 
ImBufBKE_main_thumbnail_to_imbuf (Main *bmain, BlendThumbnail *data)
 
void BKE_main_thumbnail_create (struct Main *bmain)
 
const char * BKE_main_blendfile_path (const Main *bmain)
 
const char * BKE_main_blendfile_path_from_global (void)
 
ListBasewhich_libbase (Main *bmain, short type)
 
int set_listbasepointers (Main *bmain, ListBase *lb[INDEX_ID_MAX])
 

Detailed Description

Contains management of Main database itself.

Definition in file main.c.

Function Documentation

◆ BKE_main_blendfile_path()

const char* BKE_main_blendfile_path ( const Main bmain)

Return filepath of given main.

Definition at line 428 of file main.c.

References Main::name.

Referenced by BKE_main_blendfile_path_from_global().

◆ BKE_main_blendfile_path_from_global()

const char* BKE_main_blendfile_path_from_global ( void  )

◆ BKE_main_free()

void BKE_main_free ( Main mainvar)

◆ BKE_main_gset_create()

GSet* BKE_main_gset_create ( Main bmain,
GSet gset 
)

Create a GSet storing all IDs present in given bmain, by their pointers.

Parameters
gsetIf not NULL, given GSet will be extended with IDs from given bmain, instead of creating a new one.

Definition at line 342 of file main.c.

References BLI_ghashutil_ptrcmp(), BLI_ghashutil_ptrhash(), BLI_gset_add(), BLI_gset_new(), FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, id, and NULL.

Referenced by BKE_main_idmap_create().

◆ BKE_main_lock()

void BKE_main_lock ( struct Main bmain)

◆ BKE_main_new()

Main* BKE_main_new ( void  )

◆ BKE_main_relations_create()

void BKE_main_relations_create ( Main bmain,
const short  flag 
)

◆ BKE_main_relations_free()

void BKE_main_relations_free ( Main bmain)

◆ BKE_main_relations_tag_set()

void BKE_main_relations_tag_set ( struct Main bmain,
const MainIDRelationsEntryTags  tag,
const bool  value 
)

◆ BKE_main_thumbnail_create()

void BKE_main_thumbnail_create ( struct Main bmain)

Generates an empty (black) thumbnail for given Main.

Definition at line 416 of file main.c.

References Main::blen_thumb, BLEN_THUMB_MEMSIZE, BLEN_THUMB_SIZE, BlendThumbnail::height, MEM_callocN, MEM_SAFE_FREE, and BlendThumbnail::width.

◆ BKE_main_thumbnail_from_imbuf()

BlendThumbnail* BKE_main_thumbnail_from_imbuf ( Main bmain,
ImBuf img 
)

Generates a raw .blend file thumbnail data from given image.

Parameters
bmainIf not NULL, also store generated data in this Main.
imgImBuf image to generate thumbnail data from.
Returns
The generated .blend file raw thumbnail data.

Definition at line 363 of file main.c.

References Main::blen_thumb, BLEN_THUMB_MEMSIZE, data, IMB_rect_from_float(), MEM_mallocN, MEM_SAFE_FREE, NULL, ImBuf::rect, ImBuf::x, and ImBuf::y.

Referenced by blend_file_thumb().

◆ BKE_main_thumbnail_to_imbuf()

ImBuf* BKE_main_thumbnail_to_imbuf ( Main bmain,
BlendThumbnail data 
)

Generates an image from raw .blend file thumbnail data.

Parameters
bmainUse this bmain->blen_thumb data if given data is NULL.
dataRaw .blend file thumbnail data.
Returns
An ImBuf from given data, or NULL if invalid.

Definition at line 394 of file main.c.

References Main::blen_thumb, BLEN_THUMB_MEMSIZE, data, IB_metadata, IB_rect, IMB_allocImBuf(), NULL, and ImBuf::rect.

Referenced by blend_file_thumb(), and IMB_thumb_load_blend().

◆ BKE_main_unlock()

void BKE_main_unlock ( struct Main bmain)

◆ main_relations_create_idlink_cb()

static int main_relations_create_idlink_cb ( LibraryIDLinkCallbackData cb_data)
static

◆ set_listbasepointers()

int set_listbasepointers ( Main bmain,
ListBase lb[INDEX_ID_MAX] 
)

Put the pointers to all the ListBase structs in given bmain into the *lb[INDEX_ID_MAX] array, and return the number of those for convenience.

This is useful for generic traversal of all the blocks in a Main (by traversing all the lists in turn), without worrying about block types.

Note
The order of each ID type ListBase in the array is determined by the INDEX_ID_<IDTYPE> enum definitions in DNA_ID.h. See also the FOREACH_MAIN_ID_BEGIN macro in BKE_main.h

Definition at line 544 of file main.c.

References Main::actions, Main::armatures, Main::brushes, Main::cachefiles, Main::cameras, Main::collections, Main::curves, Main::fonts, Main::gpencils, Main::hairs, Main::images, INDEX_ID_AC, INDEX_ID_AR, INDEX_ID_BR, INDEX_ID_CA, INDEX_ID_CF, INDEX_ID_CU, INDEX_ID_GD, INDEX_ID_GR, INDEX_ID_HA, INDEX_ID_IM, INDEX_ID_IP, INDEX_ID_KE, INDEX_ID_LA, INDEX_ID_LI, INDEX_ID_LP, INDEX_ID_LS, INDEX_ID_LT, INDEX_ID_MA, INDEX_ID_MAX, INDEX_ID_MB, INDEX_ID_MC, INDEX_ID_ME, INDEX_ID_MSK, INDEX_ID_NT, INDEX_ID_NULL, INDEX_ID_OB, INDEX_ID_PA, INDEX_ID_PAL, INDEX_ID_PC, INDEX_ID_PT, INDEX_ID_SCE, INDEX_ID_SCR, INDEX_ID_SIM, INDEX_ID_SO, INDEX_ID_SPK, INDEX_ID_TE, INDEX_ID_TXT, INDEX_ID_VF, INDEX_ID_VO, INDEX_ID_WM, INDEX_ID_WO, INDEX_ID_WS, Main::ipo, Main::lattices, Main::libraries, Main::lightprobes, Main::lights, Main::linestyles, Main::masks, Main::materials, Main::meshes, Main::metaballs, Main::movieclips, Main::nodetrees, NULL, Main::objects, Main::paintcurves, Main::palettes, Main::particles, Main::pointclouds, Main::scenes, Main::screens, Main::shapekeys, Main::simulations, Main::sounds, Main::speakers, Main::texts, Main::textures, Main::volumes, Main::wm, Main::workspaces, and Main::worlds.

Referenced by BKE_main_free().

◆ which_libbase()

ListBase* which_libbase ( Main bmain,
short  type 
)
Returns
A pointer to the ListBase of given bmain for requested type ID type.

Definition at line 447 of file main.c.

References Main::actions, Main::armatures, Main::brushes, Main::cachefiles, Main::cameras, Main::collections, Main::curves, Main::fonts, Main::gpencils, Main::hairs, ID_AC, ID_AR, ID_BR, ID_CA, ID_CF, ID_CU, ID_GD, ID_GR, ID_HA, ID_IM, ID_IP, ID_KE, ID_LA, ID_LI, ID_LP, ID_LS, ID_LT, ID_MA, ID_MB, ID_MC, ID_ME, ID_MSK, ID_NT, ID_OB, ID_PA, ID_PAL, ID_PC, ID_PT, ID_SCE, ID_SCR, ID_SIM, ID_SO, ID_SPK, ID_TE, ID_TXT, ID_VF, ID_VO, ID_WM, ID_WO, ID_WS, Main::images, Main::ipo, Main::lattices, Main::libraries, Main::lightprobes, Main::lights, Main::linestyles, Main::masks, Main::materials, Main::meshes, Main::metaballs, Main::movieclips, Main::nodetrees, NULL, Main::objects, Main::paintcurves, Main::palettes, Main::particles, Main::pointclouds, Main::scenes, Main::screens, Main::shapekeys, Main::simulations, Main::sounds, Main::speakers, Main::texts, Main::textures, type, Main::volumes, Main::wm, Main::workspaces, and Main::worlds.

Referenced by BKE_id_free_ex(), BKE_id_is_in_global_main(), BKE_libblock_alloc(), BKE_libblock_find_name(), BKE_libblock_management_main_add(), BKE_libblock_management_main_remove(), BKE_libblock_rename(), BKE_main_id_tag_idcode(), BKE_main_idmap_lookup_name(), BKE_mask_clipboard_paste_to_layer(), BKE_node_clipboard_validate(), BLI_libblock_ensure_unique_name(), blo_do_versions_280(), blo_do_versions_290(), BLO_library_link_copypaste(), blender::ed::outliner::TreeDisplayIDOrphans::buildTree(), create_placeholder(), is_yet_read(), lib_id_clear_library_data_ex(), lib_relocate_do(), lib_relocate_do_remap(), link_named_part(), outliner_id_itemf(), outliner_id_remap_exec(), pastebuf_match_path_property(), read_libblock(), read_libblock_undo_restore_at_old_address(), read_libblock_undo_restore_identical(), rename_id_for_versioning(), seqclipboard_ptr_restore(), split_libdata(), ui_template_id(), and undosys_id_ref_resolve().