//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef CLOSECAPTIONTOOL_H #define CLOSECAPTIONTOOL_H #ifdef _WIN32 #pragma once #endif #include #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