72 lines
2.8 KiB
C
72 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup bke
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
struct Main;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** Forward declaration, defined in intern/asset_library.hh */
|
|
typedef struct AssetLibrary AssetLibrary;
|
|
|
|
/**
|
|
* Return the #AssetLibrary rooted at the given directory path.
|
|
*
|
|
* Will return the same pointer for repeated calls, until another blend file is loaded.
|
|
*
|
|
* To get the in-memory-only "current file" asset library, pass an empty path.
|
|
*/
|
|
struct AssetLibrary *BKE_asset_library_load(const char *library_path);
|
|
|
|
/**
|
|
* Try to find an appropriate location for an asset library root from a file or directory path.
|
|
* Does not check if \a input_path exists.
|
|
*
|
|
* The design is made to find an appropriate asset library path from a .blend file path, but
|
|
* technically works with any file or directory as \a input_path.
|
|
* Design is:
|
|
* * If \a input_path lies within a known asset library path (i.e. an asset library registered in
|
|
* the Preferences), return the asset library path.
|
|
* * Otherwise, if \a input_path has a parent path, return the parent path (e.g. to use the
|
|
* directory a .blend file is in as asset library root).
|
|
* * If \a input_path is empty or doesn't have a parent path (e.g. because a .blend wasn't saved
|
|
* yet), there is no suitable path. The caller has to decide how to handle this case.
|
|
*
|
|
* \param r_library_path: The returned asset library path with a trailing slash, or an empty string
|
|
* if no suitable path is found. Assumed to be a buffer of at least
|
|
* #FILE_MAXDIR bytes.
|
|
*
|
|
* \return True if the function could find a valid, that is, a non-empty path to return in \a
|
|
* r_library_path.
|
|
*/
|
|
bool BKE_asset_library_find_suitable_root_path_from_path(
|
|
const char *input_path, char r_library_path[768 /* FILE_MAXDIR */]);
|
|
/**
|
|
* Uses the current location on disk of the file represented by \a bmain as input to
|
|
* #BKE_asset_library_find_suitable_root_path_from_path(). Refer to it for a design
|
|
* description.
|
|
*
|
|
* \return True if the function could find a valid, that is, a non-empty path to return in \a
|
|
* r_library_path. If \a bmain wasn't saved into a file yet, the return value will be
|
|
* false.
|
|
*/
|
|
bool BKE_asset_library_find_suitable_root_path_from_main(
|
|
const struct Main *bmain, char r_library_path[768 /* FILE_MAXDIR */]);
|
|
|
|
/** Look up the asset's catalog and copy its simple name into #asset_data. */
|
|
void BKE_asset_library_refresh_catalog_simplename(struct AssetLibrary *asset_library,
|
|
struct AssetMetaData *asset_data);
|
|
|
|
/** Return whether any loaded AssetLibrary has unsaved changes to its catalogs. */
|
|
bool BKE_asset_library_has_any_unsaved_catalogs(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|