Initial revision
This commit is contained in:
241
source/blender/blenloader/BLO_readfile.h
Normal file
241
source/blender/blenloader/BLO_readfile.h
Normal file
@@ -0,0 +1,241 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version. The Blender
|
||||
* Foundation also sells licenses for use in proprietary software under
|
||||
* the Blender License. See http://www.blender.org/BL/ for information
|
||||
* about this.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||
* external readfile function prototypes
|
||||
*/
|
||||
#ifndef BLO_READFILE_H
|
||||
#define BLO_READFILE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct SpaceFile;
|
||||
struct LinkNode;
|
||||
struct Main;
|
||||
struct UserDef;
|
||||
struct bScreen;
|
||||
struct Scene;
|
||||
|
||||
typedef struct BlendHandle BlendHandle;
|
||||
|
||||
typedef enum BlenFileType {
|
||||
BLENFILETYPE_BLEND= 1,
|
||||
BLENFILETYPE_PUB= 2,
|
||||
BLENFILETYPE_RUNTIME= 3
|
||||
} BlenFileType;
|
||||
|
||||
typedef enum {
|
||||
BRE_NONE,
|
||||
|
||||
BRE_UNABLE_TO_OPEN,
|
||||
BRE_UNABLE_TO_READ,
|
||||
|
||||
BRE_OUT_OF_MEMORY,
|
||||
BRE_INTERNAL_ERROR,
|
||||
|
||||
BRE_NOT_A_BLEND,
|
||||
BRE_NOT_A_PUBFILE,
|
||||
BRE_INCOMPLETE,
|
||||
BRE_CORRUPT,
|
||||
|
||||
BRE_TOO_NEW,
|
||||
BRE_NOT_ALLOWED,
|
||||
|
||||
BRE_NO_SCREEN,
|
||||
BRE_NO_SCENE,
|
||||
|
||||
BRE_INVALID
|
||||
} BlendReadError;
|
||||
|
||||
typedef struct BlendFileData {
|
||||
struct Main* main;
|
||||
struct UserDef* user;
|
||||
|
||||
int winpos;
|
||||
int fileflags;
|
||||
int displaymode;
|
||||
|
||||
struct bScreen* curscreen;
|
||||
struct Scene* curscene;
|
||||
|
||||
BlenFileType type;
|
||||
} BlendFileData;
|
||||
|
||||
/**
|
||||
* Open a blender file from a pathname. The function
|
||||
* returns NULL and sets the @a error_r argument if
|
||||
* it cannot open the file.
|
||||
*
|
||||
* @param file The path of the file to open.
|
||||
* @param error_r If the return value is NULL, an error
|
||||
* code indicating the cause of the failure.
|
||||
* @return The data of the file.
|
||||
*/
|
||||
BlendFileData* BLO_read_from_file (char *file, BlendReadError *error_r);
|
||||
|
||||
/**
|
||||
* Open a blender file from memory. The function
|
||||
* returns NULL and sets the @a error_r argument if
|
||||
* it cannot open the file.
|
||||
*
|
||||
* @param mem The file data.
|
||||
* @param memsize The length of @a mem.
|
||||
* @param error_r If the return value is NULL, an error
|
||||
* code indicating the cause of the failure.
|
||||
* @return The data of the file.
|
||||
*/
|
||||
BlendFileData* BLO_read_from_memory (void *mem, int memsize, BlendReadError *error_r);
|
||||
|
||||
|
||||
/**
|
||||
* Convert a BlendReadError to a human readable string.
|
||||
* The string is static and does not need to be free'd.
|
||||
*
|
||||
* @param error The error to return a string for.
|
||||
* @return A static human readable string representation
|
||||
* of @a error.
|
||||
*/
|
||||
char*
|
||||
BLO_bre_as_string(
|
||||
BlendReadError error);
|
||||
|
||||
/**
|
||||
* Free's a BlendFileData structure and _all_ the
|
||||
* data associated with it (the userdef data, and
|
||||
* the main libblock data).
|
||||
*
|
||||
* @param bfd The structure to free.
|
||||
*/
|
||||
void
|
||||
BLO_blendfiledata_free(
|
||||
BlendFileData *bfd);
|
||||
|
||||
/**
|
||||
* Convert an idcode into a name.
|
||||
*
|
||||
* @param code The code to convert.
|
||||
* @return A static string representing the name of
|
||||
* the code.
|
||||
*/
|
||||
char*
|
||||
BLO_idcode_to_name(
|
||||
int code);
|
||||
|
||||
/**
|
||||
* Convert a name into an idcode (ie. ID_SCE)
|
||||
*
|
||||
* @param name The name to convert.
|
||||
* @return The code for the name, or 0 if invalid.
|
||||
*/
|
||||
int
|
||||
BLO_idcode_from_name(
|
||||
char *name);
|
||||
|
||||
/**
|
||||
* Open a blendhandle from a file path.
|
||||
*
|
||||
* @param file The file path to open.
|
||||
* @return A handle on success, or NULL on failure.
|
||||
*/
|
||||
BlendHandle*
|
||||
BLO_blendhandle_from_file(
|
||||
char *file);
|
||||
|
||||
/**
|
||||
* Gets the names of all the datablocks in a file
|
||||
* of a certain type (ie. All the scene names in
|
||||
* a file).
|
||||
*
|
||||
* @param bh The blendhandle to access.
|
||||
* @param ofblocktype The type of names to get.
|
||||
* @return A BLI_linklist of strings. The string links
|
||||
* should be freed with malloc.
|
||||
*/
|
||||
struct LinkNode*
|
||||
BLO_blendhandle_get_datablock_names(
|
||||
BlendHandle *bh,
|
||||
int ofblocktype);
|
||||
|
||||
/**
|
||||
* Gets the names of all the datablock groups in a
|
||||
* file. (ie. file contains Scene, Mesh, and Lamp
|
||||
* datablocks).
|
||||
*
|
||||
* @param bh The blendhandle to access.
|
||||
* @return A BLI_linklist of strings. The string links
|
||||
* should be freed with malloc.
|
||||
*/
|
||||
struct LinkNode*
|
||||
BLO_blendhandle_get_linkable_groups(
|
||||
BlendHandle *bh);
|
||||
|
||||
/**
|
||||
* Close and free a blendhandle. The handle
|
||||
* becomes invalid after this call.
|
||||
*
|
||||
* @param bh The handle to close.
|
||||
*/
|
||||
void
|
||||
BLO_blendhandle_close(
|
||||
BlendHandle *bh);
|
||||
|
||||
/***/
|
||||
|
||||
char *BLO_gethome(void);
|
||||
int BLO_has_bfile_extension(char *str);
|
||||
|
||||
void BLO_library_append(struct SpaceFile *sfile, char *dir, int idcode);
|
||||
|
||||
|
||||
/* Ick ick ick, why are internal loader functions
|
||||
* being exported out of the loader? IMHO readstreamglue
|
||||
* should not need to know anything about the loader,
|
||||
* but this is a point of contention. - zr
|
||||
*/
|
||||
void*
|
||||
blo_readstreamfile_begin(
|
||||
void *endControl);
|
||||
|
||||
int
|
||||
blo_readstreamfile_process(
|
||||
void *filedataVoidPtr,
|
||||
unsigned char *data,
|
||||
unsigned int dataIn);
|
||||
|
||||
int
|
||||
blo_readstreamfile_end(
|
||||
void *filedataVoidPtr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user