- #include "user_init.h"
- #include "LanguageUtil.h"
- #ifdef SUPPORT_FONT_UTIL
- #ifndef DVDRELEASE
- #include "global.h"
- #define FONT_UTIL_DBG 1
- #endif
- #ifdef FONT_UTIL_DBG
- //#define FONT_UTIL_DBG_GENERAL
- #endif
- #include "memmap.h"
- #include "memmap0.h"
- #include "func.h"
- #include "LanguageUtil.inc"
- #ifndef FONT_UTIL_DBG
- #undef printf
- #undef print_block
- #define printf(f, a...) do {} while (0)
- #define print_block(x,y) do {} while (0)
- #endif
- // **************************************************************************************** //
- #define MAX_FONT_NUM ( sizeof(g_aFontEntryTable)/sizeof(FontEntryType) )
- // **************************************************************************************** //
- extern UINT32 GetCharacterBmp( const UINT8* pCode, const UINT8** pBmp )
- {
- return ftGetCharacterBmp( pCode, pBmp );
- }
- // **************************************************************************************** //
- extern UINT32 GetSupportedFontNum()
- {
- return MAX_FONT_NUM;
- }
- // **************************************************************************************** //
- extern UINT32 SetCurrentFontByType( ENUM_FONT_TYPE enFontType )
- {
- UINT32 i = 0;
- FontInfo* pFontInfo = NULL;
- for( ; i < MAX_FONT_NUM; i++ )
- {
- pFontInfo = (FontInfo*)g_aFontEntryTable[ i ].pFontInfo;
- if( pFontInfo && ( pFontInfo->enType == enFontType ) )
- return SetCurrentFont( i );
- }
- return FALSE;
- }
- // **************************************************************************************** //
- extern UINT32 SetCurrentFont( UINT32 uiFontIdx )
- {
- if( uiFontIdx >= MAX_FONT_NUM )
- return FALSE;
- BYTE* pFontData = NULL;
- #ifdef FONT_COMPRESSED
- if( g_aFontEntryTable[ uiFontIdx ].uiCompressed )
- {
- const BYTE* pCompressedBmp = g_aFontEntryTable[ uiFontIdx ].pFontData;
- if( !pCompressedBmp )
- {
- #ifdef FONT_UTIL_DBG_GENERAL
- printf( "pFontData is NULLn" )
- #endif
- return FALSE;
- }
- pFontData = (BYTE*)( SDRAM_BASE + ( FONT_DECOMPRESS_YA << 10 ) );
- int iRes = dsp3_decompress( pCompressedBmp, pFontData );
- if( iRes <= 0 || iRes > ( FONT_DECOMPRESS_SIZE << 10 ) )
- {
- #ifdef FONT_UTIL_DBG_GENERAL
- printf( "dsp3_decompress fail or font size too largen" )
- #endif
- return FALSE;
- }
- }
- else
- #endif
- {
- pFontData = (BYTE*)g_aFontEntryTable[ uiFontIdx ].pFontData;
- }
- if( !ftSetCurrentFont( g_aFontEntryTable[ uiFontIdx ].pFontInfo, pFontData ) )
- {
- #ifdef FONT_UTIL_DBG_GENERAL
- printf( "ftSetCurrentFont failn" )
- #endif
- return FALSE;
- }
- return TRUE;
- }
- // **************************************************************************************** //
- extern UINT32 IsInCharacterSet( const UINT8* pCode )
- {
- if( !pCode )
- return FALSE;
- return ftIsInCharacterSet( pCode );
- }
- // **************************************************************************************** //
- extern ENUM_FONT_TYPE GetFontType()
- {
- return ftGetFontType();
- }
- // **************************************************************************************** //
- #else
- extern UINT32 SetCurrentFont( UINT32 uiFontIdx ) { uiFontIdx = uiFontIdx; return FALSE; }
- extern UINT32 GetSupportedFontNum() { return 0; }
- extern UINT32 IsInCharacterSet( const UINT8* pCode ) { pCode = pCode; return FALSE; }
- extern UINT32 GetCharacterBmp( const UINT8* pCode, const UINT8** pBmp ) { pCode = pCode; pBmp = pBmp; return FONT_NOT_IN_RANGE; }
- extern ENUM_FONT_TYPE GetFontType() { return FONT_NONE; }
- // **************************************************************************************** //
- #endif