Blender V5.0
BLO_core_blend_header.hh File Reference
#include <variant>
#include "BLO_core_bhead.hh"

Go to the source code of this file.

Classes

struct  BlenderHeader
struct  BlenderHeaderUnknown
struct  BlenderHeaderInvalid

Macros

#define BLEND_FILE_FORMAT_VERSION_0   0
#define BLEND_FILE_FORMAT_VERSION_1   1
#define SYSTEM_SUPPORTS_WRITING_FILE_VERSION_1   (ENDIAN_ORDER == L_ENDIAN && sizeof(void *) == 8)
#define MIN_SIZEOFBLENDERHEADER   12
#define MAX_SIZEOFBLENDERHEADER   17
#define SIZEOFBLENDERHEADER_VERSION_0   12
#define SIZEOFBLENDERHEADER_VERSION_1   17

Typedefs

using BlenderHeaderVariant

Functions

BlenderHeaderVariant BLO_readfile_blender_header_decode (FileReader *file)

Macro Definition Documentation

◆ BLEND_FILE_FORMAT_VERSION_0

#define BLEND_FILE_FORMAT_VERSION_0   0

A low level blend file version number. Also see #decode_blender_header for how the first few bytes of a .blend file are structured.

0: Uses BHead4 or SmallBHead8 for block headers depending on a .blend file header byte. 1: Uses LargeBHead8 for block headers. Low level version 0: the header is 12 bytes long. 0-6: 'BLENDER' 7: '-' for 8-byte pointers (SmallBHead8) or '_' for 4-byte pointers (BHead4) 8: 'v' for little endian or 'V' for big endian 9-11: 3 ASCII digits encoding BLENDER_FILE_VERSION (e.g. '305' for Blender 3.5)

Definition at line 26 of file BLO_core_blend_header.hh.

Referenced by BlenderHeader::bhead_type().

◆ BLEND_FILE_FORMAT_VERSION_1

#define BLEND_FILE_FORMAT_VERSION_1   1

Lower level version 1: the header is 17 bytes long. 0-6: 'BLENDER' 7-8: size of the header in bytes encoded as ASCII digits (always '17' currently) 9: always '-' 10-11: File version format as ASCII digits (always '01' currently) 12: always 'v' 13-16: 4 ASCII digits encoding BLENDER_FILE_VERSION (e.g. '0405' for Blender 4.5)

With this header, LargeBHead8 is always used.

Definition at line 38 of file BLO_core_blend_header.hh.

Referenced by BlenderHeader::bhead_type(), and get_blend_file_header().

◆ MAX_SIZEOFBLENDERHEADER

#define MAX_SIZEOFBLENDERHEADER   17

Definition at line 47 of file BLO_core_blend_header.hh.

Referenced by BLO_readfile_blender_header_decode().

◆ MIN_SIZEOFBLENDERHEADER

#define MIN_SIZEOFBLENDERHEADER   12

◆ SIZEOFBLENDERHEADER_VERSION_0

#define SIZEOFBLENDERHEADER_VERSION_0   12

See BLEND_FILE_FORMAT_VERSION_0 for the structure.

Definition at line 50 of file BLO_core_blend_header.hh.

Referenced by get_blend_file_header().

◆ SIZEOFBLENDERHEADER_VERSION_1

#define SIZEOFBLENDERHEADER_VERSION_1   17

See BLEND_FILE_FORMAT_VERSION_1 for the structure.

Definition at line 52 of file BLO_core_blend_header.hh.

Referenced by get_blend_file_header().

◆ SYSTEM_SUPPORTS_WRITING_FILE_VERSION_1

#define SYSTEM_SUPPORTS_WRITING_FILE_VERSION_1   (ENDIAN_ORDER == L_ENDIAN && sizeof(void *) == 8)

Only "modern" systems support writing files with LargeBHead8 headers. Other systems are deprecated. This reduces the amount of variation we have to deal with when reading .blend files.

Definition at line 44 of file BLO_core_blend_header.hh.

Referenced by get_blend_file_header(), write_bhead(), writedata(), and writestruct_at_address_nr().

Typedef Documentation

◆ BlenderHeaderVariant

Initial value:
std::variant<BlenderHeaderInvalid, BlenderHeaderUnknown, BlenderHeader>

Definition at line 74 of file BLO_core_blend_header.hh.

Function Documentation

◆ BLO_readfile_blender_header_decode()