Add Chromium-only Blender WebEngine parity work
This commit is contained in:
85
blender-5.2.0/source/blender/blenloader/BLO_writefile.hh
Normal file
85
blender-5.2.0/source/blender/blenloader/BLO_writefile.hh
Normal file
@@ -0,0 +1,85 @@
|
||||
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
/** \file
|
||||
* \ingroup blenloader
|
||||
* \brief external `writefile.cc` function prototypes.
|
||||
*/
|
||||
|
||||
#include "BLI_sys_types.h"
|
||||
|
||||
namespace blender {
|
||||
|
||||
struct BlendThumbnail;
|
||||
struct Main;
|
||||
struct MemFile;
|
||||
struct ReportList;
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name BLO Write File API
|
||||
*
|
||||
* \see #BLO_read_from_file for file reading.
|
||||
* \{ */
|
||||
|
||||
/**
|
||||
* Adjust paths when saving (kept unless #BlendFileWriteParams.use_save_as_copy is set).
|
||||
*/
|
||||
enum eBLO_WritePathRemap {
|
||||
/** No path manipulation. */
|
||||
BLO_WRITE_PATH_REMAP_NONE = 0,
|
||||
/** Remap existing relative paths (default). */
|
||||
BLO_WRITE_PATH_REMAP_RELATIVE = 1,
|
||||
/** Remap paths making all paths relative to the new location. */
|
||||
BLO_WRITE_PATH_REMAP_RELATIVE_ALL = 2,
|
||||
/** Make all paths absolute. */
|
||||
BLO_WRITE_PATH_REMAP_ABSOLUTE = 3,
|
||||
};
|
||||
|
||||
/** Similar to #BlendFileReadParams. */
|
||||
struct BlendFileWriteParams {
|
||||
eBLO_WritePathRemap remap_mode = {};
|
||||
/** Save `.blend1`, `.blend2`... etc. */
|
||||
uint use_save_versions : 1 = false;
|
||||
/** On write, restore paths after editing them (see #BLO_WRITE_PATH_REMAP_RELATIVE). */
|
||||
uint use_save_as_copy : 1 = false;
|
||||
uint use_userdef : 1 = false;
|
||||
/** This is writing a copy/paste buffer, not a regular blendfile. */
|
||||
uint is_copypaste_buffer : 1 = false;
|
||||
const BlendThumbnail *thumb = nullptr;
|
||||
};
|
||||
|
||||
/**
|
||||
* \return Success.
|
||||
*/
|
||||
extern bool BLO_write_file(Main *mainvar,
|
||||
const char *filepath,
|
||||
int write_flags,
|
||||
const BlendFileWriteParams *params,
|
||||
ReportList *reports);
|
||||
|
||||
/**
|
||||
* \return Success.
|
||||
*/
|
||||
extern bool BLO_write_file_mem(Main *mainvar, MemFile *compare, MemFile *current, int write_flags);
|
||||
|
||||
using BLO_WriteFileCallback = bool (*)(const void *data, size_t size, void *user_data);
|
||||
|
||||
/**
|
||||
* Write a regular, non-undo blend file through a caller-provided byte sink.
|
||||
*
|
||||
* This keeps the same ID filtering and serialization semantics as #BLO_write_file without
|
||||
* requiring a temporary filesystem path.
|
||||
*
|
||||
* \return Success.
|
||||
*/
|
||||
extern bool BLO_write_file_to_callback(Main *mainvar,
|
||||
int write_flags,
|
||||
BLO_WriteFileCallback callback,
|
||||
void *user_data);
|
||||
|
||||
/** \} */
|
||||
|
||||
} // namespace blender
|
||||
Reference in New Issue
Block a user