LanguageUtil.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:4k
源码类别:

DVD

开发平台:

C/C++

  1. #include "user_init.h"
  2. #include "LanguageUtil.h"
  3. #ifdef SUPPORT_FONT_UTIL
  4. #ifndef DVDRELEASE
  5. #include "global.h"
  6. #define FONT_UTIL_DBG     1
  7. #endif
  8. #ifdef FONT_UTIL_DBG
  9.     //#define FONT_UTIL_DBG_GENERAL
  10. #endif
  11. #include "memmap.h"
  12. #include "memmap0.h"
  13. #include "func.h"
  14. #include "LanguageUtil.inc"
  15. #ifndef FONT_UTIL_DBG
  16. #undef printf
  17. #undef print_block
  18. #define printf(f, a...) do {} while (0)
  19. #define print_block(x,y) do {} while (0)
  20. #endif
  21. // **************************************************************************************** //
  22. #define MAX_FONT_NUM        ( sizeof(g_aFontEntryTable)/sizeof(FontEntryType) )
  23. // **************************************************************************************** //
  24. extern UINT32   GetCharacterBmp( const UINT8* pCode, const UINT8** pBmp )
  25. {
  26.     return ftGetCharacterBmp( pCode, pBmp );
  27. }
  28. // **************************************************************************************** //
  29. extern UINT32   GetSupportedFontNum()
  30. {
  31.     return MAX_FONT_NUM;
  32. }
  33. // **************************************************************************************** //
  34. extern UINT32 SetCurrentFontByType( ENUM_FONT_TYPE enFontType )
  35. {
  36.     UINT32 i = 0;
  37.     FontInfo* pFontInfo = NULL;
  38.     for( ; i < MAX_FONT_NUM; i++ )
  39.     {
  40.         pFontInfo = (FontInfo*)g_aFontEntryTable[ i ].pFontInfo;
  41.         if( pFontInfo && ( pFontInfo->enType == enFontType ) )
  42.             return SetCurrentFont( i );
  43.     }
  44.     return FALSE;
  45. }
  46. // **************************************************************************************** //
  47. extern UINT32 SetCurrentFont( UINT32 uiFontIdx )
  48. {
  49.     if( uiFontIdx >= MAX_FONT_NUM )
  50.         return FALSE;
  51.     BYTE* pFontData = NULL;
  52. #ifdef FONT_COMPRESSED
  53.     if( g_aFontEntryTable[ uiFontIdx ].uiCompressed )
  54.     {
  55.         const BYTE* pCompressedBmp  = g_aFontEntryTable[ uiFontIdx ].pFontData;
  56.         if( !pCompressedBmp )
  57.         {
  58.     #ifdef FONT_UTIL_DBG_GENERAL
  59.             printf( "pFontData is NULLn" )
  60.     #endif
  61.             return FALSE;
  62.         }
  63.         pFontData   =  (BYTE*)( SDRAM_BASE + ( FONT_DECOMPRESS_YA << 10 ) );
  64.         int iRes    = dsp3_decompress( pCompressedBmp, pFontData );
  65.        
  66.         if( iRes <= 0 || iRes > ( FONT_DECOMPRESS_SIZE << 10 ) )
  67.         {
  68.     #ifdef FONT_UTIL_DBG_GENERAL
  69.             printf( "dsp3_decompress fail or font size too largen" )
  70.     #endif
  71.             return FALSE;
  72.         }
  73.     }
  74.     else
  75. #endif
  76.     {
  77.         pFontData   = (BYTE*)g_aFontEntryTable[ uiFontIdx ].pFontData;
  78.     }
  79.     if( !ftSetCurrentFont( g_aFontEntryTable[ uiFontIdx ].pFontInfo, pFontData ) )
  80.     {
  81. #ifdef FONT_UTIL_DBG_GENERAL
  82.         printf( "ftSetCurrentFont failn" )
  83. #endif
  84.         return FALSE;
  85.     }
  86.     return TRUE;
  87. }
  88. // **************************************************************************************** //
  89. extern UINT32   IsInCharacterSet( const UINT8* pCode )
  90. {
  91.     if( !pCode )
  92.         return FALSE;
  93.     return ftIsInCharacterSet( pCode );
  94. }
  95. // **************************************************************************************** //
  96. extern ENUM_FONT_TYPE   GetFontType()
  97.     return ftGetFontType(); 
  98. }
  99. // **************************************************************************************** //
  100. #else
  101. extern UINT32           SetCurrentFont( UINT32 uiFontIdx ) { uiFontIdx = uiFontIdx; return FALSE; }
  102. extern UINT32           GetSupportedFontNum() { return 0; }
  103. extern UINT32           IsInCharacterSet( const UINT8* pCode ) { pCode = pCode; return FALSE; }
  104. extern UINT32           GetCharacterBmp( const UINT8* pCode, const UINT8** pBmp ) { pCode = pCode; pBmp = pBmp; return FONT_NOT_IN_RANGE; }
  105. extern ENUM_FONT_TYPE   GetFontType() { return FONT_NONE; }
  106. // **************************************************************************************** //
  107. #endif