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.
74 lines
1.9 KiB
74 lines
1.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef CLOSECAPTIONTOOL_H |
|
#define CLOSECAPTIONTOOL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <mxtk/mx.h> |
|
#include "utlvector.h" |
|
#include "faceposertoolwindow.h" |
|
#include "iclosecaptionmanager.h" |
|
|
|
class CCloseCaptionItem; |
|
struct WorkUnitParams; |
|
|
|
class CloseCaptionTool : public mxWindow, public IFacePoserToolWindow, public ICloseCaptionManager |
|
{ |
|
public: |
|
// Construction |
|
CloseCaptionTool( mxWindow *parent ); |
|
~CloseCaptionTool( void ); |
|
|
|
// ICloseCaptionManager |
|
virtual void Reset( void ); |
|
virtual void Process( char const *tokenname, float duration, int languageid ); |
|
virtual bool LookupUnicodeText( int languageId, char const *token, wchar_t *outbuf, size_t count ); |
|
virtual bool LookupStrippedUnicodeText( int languageId, char const *token, wchar_t *outbuf, size_t count ); |
|
|
|
// End ICloseCaptionManager |
|
|
|
virtual void Think( float dt ); |
|
|
|
virtual int handleEvent( mxEvent *event ); |
|
virtual void redraw( void ); |
|
virtual bool PaintBackground(); |
|
|
|
enum |
|
{ |
|
CCFONT_NORMAL = 0, |
|
CCFONT_ITALIC, |
|
CCFONT_BOLD, |
|
CCFONT_ITALICBOLD |
|
}; |
|
|
|
static int GetFontNumber( bool bold, bool italic ); |
|
|
|
private: |
|
void ComputeStreamWork( CChoreoWidgetDrawHelper &helper, int available_width, CCloseCaptionItem *item ); |
|
void DrawStream( CChoreoWidgetDrawHelper &helper, RECT &rcText, CCloseCaptionItem *item ); |
|
bool SplitCommand( const wchar_t **in, wchar_t *cmd, wchar_t *args ) const; |
|
|
|
void ParseCloseCaptionStream( const wchar_t *in, int available_width ); |
|
|
|
void DumpWork( CCloseCaptionItem *item ); |
|
|
|
void AddWorkUnit( |
|
CCloseCaptionItem *item, |
|
WorkUnitParams& params ); |
|
|
|
CUtlVector< CCloseCaptionItem * > m_Items; |
|
|
|
HFONT m_hFonts[ 4 ]; // normal, italic, bold, bold + italic |
|
|
|
int m_nLastItemCount; |
|
}; |
|
|
|
extern CloseCaptionTool *g_pCloseCaptionTool; |
|
|
|
#endif // CLOSECAPTIONTOOL_H
|
|
|