csgo-2018-source/public/resourcefile/resourcedictionary.h
2021-07-24 21:11:47 -07:00

94 lines
3.0 KiB
C

//===== Copyright c 1996-2008, Valve Corporation, All rights reserved. ======//
//
// Purpose: Describes our resource format. Resource files consist of two files:
// The first is a resource descriptor file containing various blocks of
// arbitrary data, including a resource dictionary describing raw data which
// is stored in a second, parallel file.
//
// $NoKeywords: $
//===========================================================================//
#ifndef RESOURCEDICTIONARY_H
#define RESOURCEDICTIONARY_H
#pragma once
#include "resourcefile/schema.h"
//-----------------------------------------------------------------------------
// Forward declarations
//-----------------------------------------------------------------------------
struct ResourceDictionary_t;
struct ResourceDictionaryGroup_t;
struct ResourceDescription_t;
//-----------------------------------------------------------------------------
// Type definitions
//-----------------------------------------------------------------------------
schema typedef uint32 ResourceId_t;
//-----------------------------------------------------------------------------
// Enum definitions
//-----------------------------------------------------------------------------
schema enum ResourceDictionaryVersion_t
{
RESOURCE_DICT_VERSION = 1,// (explicit)
};
schema enum ResourceCompressionType_t
{
RESOURCE_COMPRESSION_NONE = 0,
};
schema enum ResourceStandardIds_t
{
RESOURCE_ID_INVALID = 0,
};
//-----------------------------------------------------------------------------
// Structure definitions
//-----------------------------------------------------------------------------
//! resourceBlockType = "RESD"
schema struct ResourceDictionary_t
{
uint32 m_nCompressionType;
uint32 m_nUncompressedLength;
uint32 m_nPageSize;
uint32 m_nAlignment;
CResourceArray< ResourceDictionaryGroup_t > m_ResourceGroups;
};
DEFINE_RESOURCE_BLOCK_TYPE( ResourceDictionary_t, 'R', 'E', 'S', 'D' )
schema struct ResourceDictionaryGroup_t
{
uint32 m_nResourceType; // see ResourceType_t
uint16 m_nCompressionType;
uint16 m_nFlags;
CResourceArray< ResourceDescription_t > m_Resources;
};
schema struct ResourceDescription_t
{
uint32 m_nId;
uint32 m_nStartOffset;
uint32 m_nSize;
uint32 m_nUncompressedSize;
};
//-----------------------------------------------------------------------------
// Computes a resource id given a resource name
// NOTE: Most resource names are of the format:
// <relative file name under content>::<subresource name>
//-----------------------------------------------------------------------------
ResourceId_t ComputeResourceIdHash( const char *pResourceName );
ResourceId_t ComputeResourceIdHash( const char *pFileName, const char *pSubResourceName );
void GenerateResourceName( const char *pFileName, const char *pSubResourceName, char *pResourceName, size_t pBufLen );
void GenerateResourceFileName( const char *pFileName, char *pResourceFileName, size_t nBufLen );
#endif // RESOURCEDICTIONARY_H