Prevent doxygen attempting to interpret symbols withing the text. The `make check_spelling_*` target also skips this text.
158 lines
5.0 KiB
C++
158 lines
5.0 KiB
C++
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup bke
|
|
*/
|
|
|
|
#include "BLI_implicit_sharing.hh"
|
|
#include "BLI_string_ref.hh"
|
|
|
|
#define RET_OK 0
|
|
#define RET_ERROR 1
|
|
|
|
struct BlendDataReader;
|
|
struct BlendWriter;
|
|
struct ID;
|
|
struct Image;
|
|
struct Main;
|
|
struct PackedFile;
|
|
struct ReportList;
|
|
struct VFont;
|
|
struct Volume;
|
|
struct bSound;
|
|
|
|
enum ePF_FileCompare {
|
|
PF_CMP_EQUAL = 0,
|
|
PF_CMP_DIFFERS = 1,
|
|
PF_CMP_NOFILE = 2,
|
|
};
|
|
|
|
enum ePF_FileStatus {
|
|
PF_WRITE_ORIGINAL = 3,
|
|
PF_WRITE_LOCAL = 4,
|
|
PF_USE_LOCAL = 5,
|
|
PF_USE_ORIGINAL = 6,
|
|
PF_KEEP = 7,
|
|
PF_REMOVE = 8,
|
|
|
|
PF_ASK = 10,
|
|
};
|
|
|
|
/* Pack. */
|
|
|
|
PackedFile *BKE_packedfile_duplicate(const PackedFile *pf_src);
|
|
PackedFile *BKE_packedfile_new(ReportList *reports,
|
|
const char *filepath_rel,
|
|
const char *basepath);
|
|
PackedFile *BKE_packedfile_new_from_memory(
|
|
const void *mem, int memlen, const blender::ImplicitSharingInfo *sharing_info = nullptr);
|
|
|
|
/**
|
|
* No libraries for now.
|
|
*/
|
|
void BKE_packedfile_pack_all(Main *bmain, ReportList *reports, bool verbose);
|
|
void BKE_packedfile_pack_all_libraries(Main *bmain, ReportList *reports);
|
|
|
|
/* Unpack. */
|
|
|
|
/**
|
|
* #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.
|
|
*/
|
|
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);
|
|
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);
|
|
void BKE_packedfile_unpack_all(Main *bmain, ReportList *reports, enum ePF_FileStatus how);
|
|
int BKE_packedfile_unpack_all_libraries(Main *bmain, ReportList *reports);
|
|
|
|
int BKE_packedfile_write_to_file(ReportList *reports,
|
|
const char *ref_file_name,
|
|
const char *filepath_rel,
|
|
PackedFile *pf);
|
|
|
|
/* Free. */
|
|
|
|
void BKE_packedfile_free(PackedFile *pf);
|
|
|
|
/* Info. */
|
|
|
|
struct PackedFileCount {
|
|
/** Counts e.g. packed images and sounds. */
|
|
int individual_files = 0;
|
|
/** Counts bakes that may consist of multiple files. */
|
|
int bakes = 0;
|
|
|
|
int total() const
|
|
{
|
|
return this->individual_files + this->bakes;
|
|
}
|
|
};
|
|
|
|
PackedFileCount BKE_packedfile_count_all(Main *bmain);
|
|
|
|
/**
|
|
* 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.
|
|
*/
|
|
ePF_FileCompare BKE_packedfile_compare_to_file(const char *ref_file_name,
|
|
const char *filepath_rel,
|
|
const PackedFile *pf);
|
|
|
|
/* Read. */
|
|
|
|
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);
|
|
|
|
/**
|
|
* ID should be not NULL, return true if there's a packed file.
|
|
*/
|
|
bool BKE_packedfile_id_check(const ID *id);
|
|
/**
|
|
* ID should be not NULL, throws error when ID is Library.
|
|
*/
|
|
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,
|
|
blender::StringRefNull filepath);
|