You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef CLOSEDCAPTIONS_H
|
|
#define CLOSEDCAPTIONS_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "captioncompiler.h"
|
|
#include "tier1/utlsymbol.h"
|
|
#include "tier1/utlsortvector.h"
|
|
|
|
FORWARD_DECLARE_HANDLE( memhandle_t );
|
|
|
|
typedef CUtlSortVector< CaptionLookup_t, CCaptionLookupLess > CaptionDictionary_t;
|
|
struct AsyncCaption_t
|
|
{
|
|
AsyncCaption_t() :
|
|
m_DataBaseFile( UTL_INVAL_SYMBOL ),
|
|
m_RequestedBlocks( 0, 0, BlockInfo_t::Less )
|
|
{
|
|
Q_memset( &m_Header, 0, sizeof( m_Header ) );
|
|
}
|
|
|
|
struct BlockInfo_t
|
|
{
|
|
int fileindex;
|
|
int blocknum;
|
|
memhandle_t handle;
|
|
|
|
static bool Less( const BlockInfo_t& lhs, const BlockInfo_t& rhs )
|
|
{
|
|
if ( lhs.fileindex != rhs.fileindex )
|
|
return lhs.fileindex < rhs.fileindex;
|
|
|
|
return lhs.blocknum < rhs.blocknum;
|
|
}
|
|
};
|
|
|
|
AsyncCaption_t& operator =( const AsyncCaption_t& rhs )
|
|
{
|
|
if ( this == &rhs )
|
|
return *this;
|
|
|
|
m_CaptionDirectory = rhs.m_CaptionDirectory;
|
|
m_Header = rhs.m_Header;
|
|
m_DataBaseFile = rhs.m_DataBaseFile;
|
|
|
|
for ( int i = rhs.m_RequestedBlocks.FirstInorder(); i != rhs.m_RequestedBlocks.InvalidIndex(); i = rhs.m_RequestedBlocks.NextInorder( i ) )
|
|
{
|
|
m_RequestedBlocks.Insert( rhs.m_RequestedBlocks[ i ] );
|
|
}
|
|
|
|
return *this;
|
|
}
|
|
|
|
bool LoadFromFile( char const *pchFullPath );
|
|
|
|
CUtlRBTree< BlockInfo_t, unsigned short > m_RequestedBlocks;
|
|
|
|
CaptionDictionary_t m_CaptionDirectory;
|
|
CompiledCaptionHeader_t m_Header;
|
|
CUtlSymbol m_DataBaseFile;
|
|
};
|
|
|
|
#endif // CLOSEDCAPTIONS_H
|