Blender V4.3
packedFile.cc File Reference
#include <cstdio>
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
#include "MEM_guardedalloc.h"
#include <cstring>
#include "DNA_ID.h"
#include "DNA_image_types.h"
#include "DNA_modifier_types.h"
#include "DNA_packedFile_types.h"
#include "DNA_sound_types.h"
#include "DNA_vfont_types.h"
#include "DNA_volume_types.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "BKE_bake_geometry_nodes_modifier.hh"
#include "BKE_bake_geometry_nodes_modifier_pack.hh"
#include "BKE_image.hh"
#include "BKE_image_format.hh"
#include "BKE_main.hh"
#include "BKE_packedFile.hh"
#include "BKE_report.hh"
#include "BKE_sound.h"
#include "BKE_vfont.hh"
#include "BKE_volume.hh"
#include "DEG_depsgraph.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "MOD_nodes.hh"
#include "BLO_read_write.hh"
#include "CLG_log.h"

Go to the source code of this file.

Functions

int BKE_packedfile_seek (PackedFile *pf, int offset, int whence)
 
void BKE_packedfile_rewind (PackedFile *pf)
 
int BKE_packedfile_read (PackedFile *pf, void *data, int size)
 
PackedFileCount BKE_packedfile_count_all (Main *bmain)
 
void BKE_packedfile_free (PackedFile *pf)
 
PackedFileBKE_packedfile_duplicate (const PackedFile *pf_src)
 
PackedFileBKE_packedfile_new_from_memory (const void *mem, int memlen, const blender::ImplicitSharingInfo *sharing_info)
 
PackedFileBKE_packedfile_new (ReportList *reports, const char *filepath_rel, const char *basepath)
 
void BKE_packedfile_pack_all (Main *bmain, ReportList *reports, bool verbose)
 
int BKE_packedfile_write_to_file (ReportList *reports, const char *ref_file_name, const char *filepath_rel, PackedFile *pf)
 
enum ePF_FileCompare BKE_packedfile_compare_to_file (const char *ref_file_name, const char *filepath_rel, const PackedFile *pf)
 
char * BKE_packedfile_unpack_to_file (ReportList *reports, const char *ref_file_name, const char *abs_name, const char *local_name, PackedFile *pf, enum ePF_FileStatus how)
 
static void unpack_generate_paths (const char *filepath, ID *id, char *r_abspath, size_t abspath_maxncpy, char *r_relpath, size_t relpath_maxncpy)
 
char * BKE_packedfile_unpack (Main *bmain, ReportList *reports, ID *id, const char *orig_file_path, PackedFile *pf, enum ePF_FileStatus how)
 
int BKE_packedfile_unpack_vfont (Main *bmain, ReportList *reports, VFont *vfont, enum ePF_FileStatus how)
 
int BKE_packedfile_unpack_sound (Main *bmain, ReportList *reports, bSound *sound, enum ePF_FileStatus how)
 
int BKE_packedfile_unpack_image (Main *bmain, ReportList *reports, Image *ima, enum ePF_FileStatus how)
 
int BKE_packedfile_unpack_volume (Main *bmain, ReportList *reports, Volume *volume, enum ePF_FileStatus how)
 
int BKE_packedfile_unpack_all_libraries (Main *bmain, ReportList *reports)
 
void BKE_packedfile_pack_all_libraries (Main *bmain, ReportList *reports)
 
void BKE_packedfile_unpack_all (Main *bmain, ReportList *reports, enum ePF_FileStatus how)
 
bool BKE_packedfile_id_check (const ID *id)
 
void BKE_packedfile_id_unpack (Main *bmain, ID *id, ReportList *reports, enum ePF_FileStatus how)
 
void BKE_packedfile_blend_write (BlendWriter *writer, const PackedFile *pf)
 
void BKE_packedfile_blend_read (BlendDataReader *reader, PackedFile **pf_p, StringRefNull filepath)
 

Variables

static CLG_LogRef LOG = {"bke.packedfile"}
 

Function Documentation

◆ BKE_packedfile_blend_read()

◆ BKE_packedfile_blend_write()

void BKE_packedfile_blend_write ( BlendWriter * writer,
const PackedFile * pf )

◆ BKE_packedfile_compare_to_file()

enum ePF_FileCompare BKE_packedfile_compare_to_file ( const char * ref_file_name,
const char * filepath_rel,
const PackedFile * pf )

This function compares a packed file to a 'real' file. It returns an integer indicating if:

  • #PF_EQUAL: the packed file and original file are identical.
  • #PF_DIFFERENT: the packed file and original file differ.
  • #PF_NOFILE: the original file doesn't exist.

Definition at line 420 of file packedFile.cc.

References BLI_open(), BLI_path_abs(), BLI_read(), BLI_stat(), FILE_MAX, len, O_BINARY, pf, PF_CMP_DIFFERS, PF_CMP_EQUAL, PF_CMP_NOFILE, and STRNCPY.

Referenced by unpack_menu().

◆ BKE_packedfile_count_all()

◆ BKE_packedfile_duplicate()

◆ BKE_packedfile_free()

◆ BKE_packedfile_id_check()

bool BKE_packedfile_id_check ( const ID * id)

ID should be not NULL, return true if there's a packed file.

Definition at line 880 of file packedFile.cc.

References BKE_image_has_packedfile(), GS, ID_IM, ID_LI, ID_SO, ID_VF, ID_VO, bSound::packedfile, Library::packedfile, VFont::packedfile, and Volume::packedfile.

Referenced by template_ID().

◆ BKE_packedfile_id_unpack()

◆ BKE_packedfile_new()

◆ BKE_packedfile_new_from_memory()

◆ BKE_packedfile_pack_all()

◆ BKE_packedfile_pack_all_libraries()

void BKE_packedfile_pack_all_libraries ( Main * bmain,
ReportList * reports )

◆ BKE_packedfile_read()

int BKE_packedfile_read ( PackedFile * pf,
void * data,
int size )

Definition at line 95 of file packedFile.cc.

References pf, and size().

◆ BKE_packedfile_rewind()

void BKE_packedfile_rewind ( PackedFile * pf)

Definition at line 90 of file packedFile.cc.

References BKE_packedfile_seek(), and pf.

◆ BKE_packedfile_seek()

int BKE_packedfile_seek ( PackedFile * pf,
int offset,
int whence )

Definition at line 58 of file packedFile.cc.

References pf.

Referenced by BKE_packedfile_rewind().

◆ BKE_packedfile_unpack()

char * BKE_packedfile_unpack ( Main * bmain,
ReportList * reports,
ID * id,
const char * orig_file_path,
PackedFile * pf,
enum ePF_FileStatus how )

◆ BKE_packedfile_unpack_all()

◆ BKE_packedfile_unpack_all_libraries()

int BKE_packedfile_unpack_all_libraries ( Main * bmain,
ReportList * reports )

◆ BKE_packedfile_unpack_image()

◆ BKE_packedfile_unpack_sound()

int BKE_packedfile_unpack_sound ( Main * bmain,
ReportList * reports,
bSound * sound,
enum ePF_FileStatus how )

◆ BKE_packedfile_unpack_to_file()

char * BKE_packedfile_unpack_to_file ( ReportList * reports,
const char * ref_file_name,
const char * abs_name,
const char * local_name,
PackedFile * pf,
enum ePF_FileStatus how )

BKE_packedfile_unpack_to_file() looks at the existing files (abs_name, local_name) and a packed file.

It returns a char *to the existing file name / new file name or NULL when there was an error or when the user decides to cancel the operation.

Warning
'abs_name' may be relative still! (use a "//" prefix) be sure to run BLI_path_abs on it first.

Definition at line 473 of file packedFile.cc.

References ATTR_FALLTHROUGH, BKE_packedfile_write_to_file(), BKE_reportf(), BLI_exists(), BLI_path_abs(), BLI_strdup(), FILE_MAX, pf, PF_KEEP, PF_REMOVE, PF_USE_LOCAL, PF_USE_ORIGINAL, PF_WRITE_LOCAL, PF_WRITE_ORIGINAL, printf, RET_OK, RPT_INFO, and STRNCPY.

Referenced by BKE_packedfile_unpack(), BKE_packedfile_unpack_all_libraries(), and blender::io::hydra::cache_or_get_image_file().

◆ BKE_packedfile_unpack_vfont()

int BKE_packedfile_unpack_vfont ( Main * bmain,
ReportList * reports,
VFont * vfont,
enum ePF_FileStatus how )

◆ BKE_packedfile_unpack_volume()

int BKE_packedfile_unpack_volume ( Main * bmain,
ReportList * reports,
Volume * volume,
enum ePF_FileStatus how )

◆ BKE_packedfile_write_to_file()

int BKE_packedfile_write_to_file ( ReportList * reports,
const char * ref_file_name,
const char * filepath_rel,
PackedFile * pf )

◆ unpack_generate_paths()

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"bke.packedfile"}
static

Definition at line 54 of file packedFile.cc.

Referenced by BKE_packedfile_blend_read().