- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
OledString.c
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:52k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- File: Lcd.c
- content: Dot-matrix lcd control/display functions
- History: Created by David Chiu 2004/3/29
- TNE 2004/6/1
- ==========================================================================*/
- #define _OLED_STRING_H_
- #include <DP8051XP.H>
- #include "TypeDef.h"
- #include "Const.h"
- #include "Reg5661.h"
- #include "Common.h"
- #include "OledString.h"
- #if(!(_PM_PHOTO_|_PM_VIDEO_))
- #include "Playback.h"
- #include "ImaAdpcm.h"
- #endif
- #include "DDM.h"
- #include "Idma.h"
- #include "SysStrDef.h"
- #include "OLED.h"
- #include "IconDefine.h"
- #include "UiCommon.h"
- // for impermanence
- XBYTE gxbUnicodeShowLen;
- /*
- #if( (_PM_PLAY_&!_PM_FLIST_&!_PM_CLIST_) |_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|USE_TITLE_NUM_DEBUG)
- CBYTE cbNumberChar[]={0xE0,0x10,0x10,0x10,0xE0,
- 0x7,0x8,0x8,0x8,0x7,
- 0x40,0x20,0xF0,0x0,0x0,
- 0x0,0x0,0xF,0x0,0x0,
- 0x20,0x10,0x10,0x10,0xE0,
- 0x8,0xC,0xA,0x9,0x8,
- 0x20,0x10,0x90,0x90,0x60,
- 0x4,0x8,0x8,0x8,0x7,
- 0x0,0xC0,0x20,0xF0,0x0,
- 0x3,0x2,0x2,0xF,0x2,
- 0xC0,0xB0,0x90,0x90,0x10,
- 0x4,0x8,0x8,0x8,0x7,
- 0xE0,0x90,0x90,0x90,0x20,
- 0x7,0x8,0x8,0x8,0x7,
- 0x10,0x10,0x90,0x50,0x30,
- 0x0,0xE,0x1,0x0,0x0,
- 0x60,0x90,0x90,0x90,0x60,
- 0x7,0x8,0x8,0x8,0x7,
- 0xE0,0x10,0x10,0x10,0xE0,
- 0x4,0x9,0x9,0x9,0x7};
- //6x16 font
- CBYTE cbNumberChar[]={0x0,0xE0,0x10,0x10,0x10,0xE0,
- 0x0,0x7,0x8,0x8,0x8,0x7,
- 0x0,0x40,0x20,0xF0,0x0,0x0,
- 0x0,0x0,0x0,0xF,0x0,0x0,
- 0x0,0x20,0x10,0x10,0x10,0xE0,
- 0x0,0x8,0xC,0xA,0x9,0x8,
- 0x0,0x20,0x10,0x90,0x90,0x60,
- 0x0,0x4,0x8,0x8,0x8,0x7,
- 0x0,0x0,0xC0,0x20,0xF0,0x0,
- 0x0,0x3,0x2,0x2,0xF,0x2,
- 0x0,0xC0,0xB0,0x90,0x90,0x10,
- 0x0,0x4,0x8,0x8,0x8,0x7,
- 0x0,0xE0,0x90,0x90,0x90,0x20,
- 0x0,0x7,0x8,0x8,0x8,0x7,
- 0x0,0x10,0x10,0x90,0x50,0x30,
- 0x0,0x0,0xE,0x1,0x0,0x0,
- 0x0,0x60,0x90,0x90,0x90,0x60,
- 0x0,0x7,0x8,0x8,0x8,0x7,
- 0x0,0xE0,0x10,0x10,0x10,0xE0,
- 0x0,0x4,0x9,0x9,0x9,0x7};
- #endif
- //Power off string
- #if(!PW_OFF_USE_ANIMATION)
- CBYTE cbIconPowerOff[]={227,228,229};
- #if(USE_SYS_STR_UNICODE)
- CWORD cwStringPowerOff[]={0x616,0x3BC,0x38E};
- CBYTE cbStringPowerOffLen[]={18,12,12};
- #else
- CWORD cwStringPowerOff[]={0x306,0x2E1,0x2D5};
- CBYTE cbStringPowerOffLen[]={9,9,9};
- #endif
- #if(_PM_PLAY_)
- #if(USE_SYS_STR_UNICODE)
- CWORD cwStringTagTitle[]={0x236,0x144,0x148};
- CBYTE cbStringTagTitleLen[]={12,6,6};
- CWORD cwStringTagArtist[]={0x242,0x14A,0x152};
- CBYTE cbStringTagArtistLen[]={14,8,8};
- CWORD cwStringTagAlbum[]={0x250,0x152,0x15E};
- CBYTE cbStringTagAlbumLen[]={12,6,6};
- CWORD cwStringFileName[]={0x25C,0x158,0x168};
- CBYTE cbStringFileNameLen[]={10,6,6};
- // this is for get the ASCII len in scroll
- CBYTE cbStringTagTitleAscLen[]={6,5,5};
- CBYTE cbStringTagArtistAscLen[]={7,7,7};
- CBYTE cbStringTagAlbumAscLen[]={6,5,5};
- CBYTE cbStringFileNameAscLen[]={5,5,5};
- #else
- CWORD cwStringTagTitle[]={0x11A,0xF8,0x10A};
- CBYTE cbStringTagTitleLen[]={6,5,5};
- CWORD cwStringTagArtist[]={0x120,0xFD,0x111};
- CBYTE cbStringTagArtistLen[]={7,7,7};
- CWORD cwStringTagAlbum[]={0x127,0x104,0x11A};
- CBYTE cbStringTagAlbumLen[]={6,5,5};
- CWORD cwStringFileName[]={0x12D,0x109,0x121};
- CBYTE cbStringFileNameLen[]={5,5,5};
- #endif
- #endif
- #if(_PM_INIT_&INIT_USE_BTY_LOW_FLAG)
- CBYTE cbStringAliCorp[][8]={ {'A','L','i',' ','C','o','r','p'},
- {0xB4,0xAD,0xB4,0xBC,0xAC,0xEC,0xA7,0xDE},
- {0xD1,0xEF,0xD6,0xC7,0xBF,0xC6,0xBC,0xBC},
- {'A','L','i',' ','C','o','r','p'},
- {'A','L','i',' ','C','o','r','p'},
- {'A','L','i',' ','C','o','r','p'},
- };
- CBYTE cbStringLowPower[][11]={ {'L','o','w',' ','B','a','t','t','e','r','y'},
- {' ',0xB9,0x71,0xA4,0x4F,0xA4,0xA3,0xA8,0xAC,' ',' '},
- {' ',0xB5,0xE7,0xC1,0xA6,0xB2,0xBB,0xD7,0xE3,' ',' '},
- {'L','o','w',' ','B','a','t','t','e','r','y'},
- {'L','o','w',' ','B','a','t','t','e','r','y'},
- {'L','o','w',' ','B','a','t','t','e','r','y'},
- };
- #endif
- */
- API WORD StrStrAnsiLen(PBYTE pbString,BYTE bLen); //Walace060310#2
- //tne 2005/11/25 #2
- #if((_PM_PLAY_&USE_TAG_DISPLAY)|_PM_PHOTO_|_PM_VIDEO_|_PM_FLIST_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|_PM_SAVE_)
- XBYTE gxbLcdShowFileName[14];
- #endif
- #if(_PM_PLAY_)
- void LcdTurnTag(void) ; //Walace061228#CodeSize
- #endif
- #if(USE_SYS_STR_SCROLL&(_PM_MENU_|_PM_SYS_|_PM_VD_MENU_))
- /*--------------------------------------------------------------------------
- Description:
- Scroll SysString on LCD
- You should call LcdShowTagTitle first
- If no Tag (gxbMusicType&M_SUB_TYPE is FALSE or GET_LCD_TAG_SUBTITLE is NO_SUBTITLE),
- you shouldn't call this function (file name not support to be scrolled)
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- void OLedScrollSysString() large
- {
- if(gxbSysStringScrollDelay) // Need More Delay
- {
- gxbSysStringScrollDelay--;
- return;
- }
- #if(LCD_STR_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=LCD_STR_END_COLUMN-1;
- #endif
- if((gxbLangueType!=LANGUAGE_TYPE_HEB)&&(gxbLangueType!=LANGUAGE_TYPE_ARA))
- OledCopyArea(gxbStringColStart+LCD_SCROLL_WIDTH, gxbStringRow, LCD_STR_WIDTH-LCD_SCROLL_WIDTH, LINE1, gxbStringColStart, gxbStringRow);
- else
- OledCopyArea(LCD_STR_START_COLUMN, gxbStringRow, LCD_STR_WIDTH-LCD_SCROLL_WIDTH, LINE1, LCD_STR_START_COLUMN+LCD_SCROLL_WIDTH, gxbStringRow);
- if(gxbStringPoint>=gxbStringLen)
- {
- gxfSourceUnicode=gxbStringUnicode;
- if((gxbLangueType!=LANGUAGE_TYPE_HEB)&&(gxbLangueType!=LANGUAGE_TYPE_ARA))
- {
- // OledClearArea(gxbStringColStart, gxbStringRow, LCD_STR_WIDTH,LINE1) ;
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- gxbStringPoint=StrShowString(gxbStringBuffer,gxbStringColStart,gxbStringRow,((LCD_STR_END_COLUMN-gxbStringColStart+1)/8)*(gxbStringUnicode+1));
- gxwBGColor=OLED_BG_COLOR;
- }
- else
- {
- //OledClearArea(LCD_STR_END_COLUMN-gxbStringColStart, gxbStringRow, LCD_STR_WIDTH,LINE1) ;
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- gxbStringPoint=StrShowString(gxbStringBuffer,gxbStringColStart,gxbStringRow,((gxbStringColStart-LCD_STR_START_COLUMN+1)/8)*(gxbStringUnicode+1));
- gxwBGColor=OLED_BG_COLOR;
- }
- gxbLcdStrScrollPix=0;
- gxbSysStringScrollDelay=LCD_STR_START_DELAY;
- }
- else
- {
- gxfSourceUnicode=gxbStringUnicode;
- if((gxbLangueType!=LANGUAGE_TYPE_HEB)&&(gxbLangueType!=LANGUAGE_TYPE_ARA))
- {
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- gxbStringPoint+=StrShowString(gxbStringBuffer+gxbStringPoint,(LCD_STR_END_COLUMN-gxbLcdStrScrollPix-LCD_SCROLL_WIDTH),gxbStringRow,1);
- gxwBGColor=OLED_BG_COLOR;
- }
- else
- {
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- gxbStringPoint+=StrShowString(gxbStringBuffer+gxbStringPoint,(LCD_STR_START_COLUMN+gxbLcdStrScrollPix+LCD_SCROLL_WIDTH),gxbStringRow,1);
- gxwBGColor=OLED_BG_COLOR;
- }
- if(gxbStringPoint>=gxbStringLen)
- {
- gxbSysStringScrollDelay=LCD_STR_END_DELAY;
- gxbLcdStrScrollPix=0;
- }
- else
- {
- #if(LCD_STR_NORMAL_DELAY)
- gxbSysStringScrollDelay=LCD_STR_NORMAL_DELAY;
- #endif
- }
- }
- #if(LCD_STR_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=LCD_STR_END_COLUMN-1;
- #endif
- gxbLcdStrScrollPix = gxbLcdDispLimPix;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- void SysStringScroll(void)
- {
- if(gxbSysStringScrollTag==1)
- {
- if(gxbLcdCounter>=UI_SCROLL_DELAY_TIME)
- {
- OLedScrollSysString();
- gxbLcdCounter=0;
- }
- }
- }
- #endif
- void LcdCopyShortFileName(PBYTE pbFileName) large;
- //EXTERN API void LcdScrollText(BYTE bPage1, BYTE bColNum1, BYTE bPage2, BYTE bColNum2) large;
- //#if(LCD_TYPE==TFT_ORISE)
- //#define OLED_SCROLL_TEXT(bColStart,bRowStart,bWidth,bHeight)
- // TftMoveLine(bColStart+LCD_SCROLL_WIDTH, bRowStart,bWidth-LCD_SCROLL_WIDTH, bColStart,bRowStart,FALSE) ; //050804
- //#else
- #define OLED_SCROLL_TEXT(bColStart,bRowStart,bWidth,bHeight)
- OledCopyArea(bColStart+LCD_SCROLL_WIDTH, bRowStart,bWidth-LCD_SCROLL_WIDTH,bHeight, bColStart,bRowStart) ; //050804
- //#endif
- //#if(_PM_VIDEO_|_PM_PHOTO_|_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|(_PM_SAVE_&UI_USE_MODE_KEY)|_PM_CUSTOM_|_PM_PLAY_DEL_|_PM_DIR_DEL_) //tne 2005/12/17 //TONY060515
- #if(_PM_VIDEO_|_PM_PHOTO_|_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|(_PM_SAVE_&UI_USE_MODE_KEY)|_PM_CUSTOM_) //tne 2005/12/17 //TONY060515 //tne 2007/01/24 #4
- /*--------------------------------------------------------------------------
- Description:
- let a string show in the center
- If you use Static Array, use marco "UI_CENTER_COLUMN" is better
- Arguments:
- bNum: string length
- Global arguments:
- Returns:
- This function return center number...
- --------------------------------------------------------------------------*/
- API BYTE LcdCenterColumn(BYTE bNum)
- {
- // WHH 070130
- #if(_PM_VD_PLAY_)
- return ((MAX_ROW+1-bNum)>>1);
- #else
- return ((MAX_COLNUM+1-bNum)>>1);
- #endif
- }
- #endif
- //Walace060213#3
- //#if((_PM_INIT_&INIT_USE_BTY_LOW_FLAG)|_PM_PHOTO_|_PM_VIDEO_|_PM_PLAY_ | _PM_REC_ | _PM_FM_ | _PM_SYS_ |(_PM_SAVE_&UI_USE_MODE_KEY)|_PM_HST_)
- //#if((_PM_INIT_&INIT_USE_BTY_LOW_FLAG)|_PM_PHOTO_|_PM_VIDEO_|_PM_PLAY_ | _PM_REC_ | _PM_FM_ | _PM_SYS_ |(_PM_SAVE_&UI_USE_MODE_KEY)|_PM_HST_|_PM_CUSTOM_)
- #if((_PM_INIT_&INIT_USE_BTY_LOW_FLAG)|_PM_PHOTO_|_PM_VIDEO_|_PM_PLAY_ | _PM_REC_ | _PM_FM_ | _PM_SYS_ |_PM_HST_|_PM_CUSTOM_|_PM_SAVE_) // WHH #4 301_061225 //tne 2007/01/24 #4
- API BYTE StrAsscii2Unicode(PBYTE pbHByte,PBYTE pbLByte)
- {
- #define bHByte (*pbHByte)
- #define bLByte (*pbLByte)
- WORD wFontOffset,wFontNum,wFontSec;
- BYTE bIncNum;
- bIncNum=1;
- if(bHByte<0x80) //Pure English
- {
- bLByte=0;
- return bIncNum;
- }
- wFontOffset=((WORD)bHByte<<1); //for code page 874, 1250-1258
- switch(gxbLangueType)
- {
- case LANGUAGE_TYPE_TW:
- //modify by TNE 2004/11/26 #3
- if( ((bHByte==0x81)&&(bLByte<0x40)) || (bHByte==0x80) ) // by pass illegal word
- {
- wFontNum=20261; // point to Big5 '?'
- }
- else
- {
- if(bLByte<=0x7E)
- wFontNum=(WORD)(bHByte-0x81)*157+(bLByte-0x40);
- else
- wFontNum=(WORD)(bHByte-0x81)*157+(bLByte-98);
- }
- bIncNum=2;
- break;
- case LANGUAGE_TYPE_CN:
- //modify by TNE 2004/11/26 #3
- if((bHByte<=0xA0)||(bLByte<0xA0)) // by pass illegal word
- {
- wFontNum=223; // point to GB '?'
- }
- else
- {
- if(bHByte>=0xB0) bHByte -= 10; //skip A6A0-AFFF
- wFontNum=(WORD)(bHByte-0xA1)*96+(bLByte-0xA0);
- }
- bIncNum=2;
- break;
- case LANGUAGE_TYPE_JP:
- if(bHByte>=0xEB)
- {
- wFontNum = 8831; //point to '?'
- break;
- }
- case LANGUAGE_TYPE_KS:
- wFontNum=(((WORD)bHByte<<8)|bLByte);
- if( (wFontNum<0x8140) || (wFontNum>=0xFE00) ) // by pass illegal word
- { wFontNum = 8831; } //A3BF //point to '?'
- else
- {
- wFontNum = wFontNum - 0x8140;
- }
- bIncNum=2;
- break;
- //CP0874
- case LANGUAGE_TYPE_THA:
- wFontSec=LCD_CP_0874_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1250
- case LANGUAGE_TYPE_ALB:
- case LANGUAGE_TYPE_CRO:
- case LANGUAGE_TYPE_CZE:
- case LANGUAGE_TYPE_HUN:
- case LANGUAGE_TYPE_POL:
- case LANGUAGE_TYPE_ROM:
- case LANGUAGE_TYPE_SVK:
- case LANGUAGE_TYPE_SVN:
- wFontSec=LCD_CP_1250_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1251
- case LANGUAGE_TYPE_AZE:
- case LANGUAGE_TYPE_BEL:
- case LANGUAGE_TYPE_BUL:
- case LANGUAGE_TYPE_KAZ:
- case LANGUAGE_TYPE_KYR:
- case LANGUAGE_TYPE_MAC:
- case LANGUAGE_TYPE_MGL:
- case LANGUAGE_TYPE_RS:
- case LANGUAGE_TYPE_SER:
- case LANGUAGE_TYPE_TAT:
- case LANGUAGE_TYPE_UKR:
- case LANGUAGE_TYPE_UZB:
- wFontSec=LCD_CP_1251_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1252
- //case LANGUAGE_TYPE_AFR:
- //case LANGUAGE_TYPE_BAQ:
- //case LANGUAGE_TYPE_CTL:
- //case LANGUAGE_TYPE_DAN:
- //case LANGUAGE_TYPE_DUT:
- //case LANGUAGE_TYPE_EN:
- //case LANGUAGE_TYPE_FRO:
- //case LANGUAGE_TYPE_FIN:
- //case LANGUAGE_TYPE_FR:
- //case LANGUAGE_TYPE_GAL:
- //case LANGUAGE_TYPE_GM:
- //case LANGUAGE_TYPE_ICE:
- //case LANGUAGE_TYPE_IDN:
- //case LANGUAGE_TYPE_ITL:
- //case LANGUAGE_TYPE_MAL:
- //case LANGUAGE_TYPE_NOW:
- //case LANGUAGE_TYPE_POR:
- //case LANGUAGE_TYPE_SP:
- //case LANGUAGE_TYPE_SWA:
- //case LANGUAGE_TYPE_SWE:
- default:
- wFontSec=LCD_CP_1252_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1253
- case LANGUAGE_TYPE_GRK:
- wFontSec=LCD_CP_1253_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1254
- case LANGUAGE_TYPE_TUR:
- wFontSec=LCD_CP_1254_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1255
- case LANGUAGE_TYPE_HEB:
- wFontSec=LCD_CP_1255_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1256
- case LANGUAGE_TYPE_ARA:
- case LANGUAGE_TYPE_FRI:
- case LANGUAGE_TYPE_URD:
- wFontSec=LCD_CP_1256_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1257
- case LANGUAGE_TYPE_EST:
- case LANGUAGE_TYPE_LAV:
- case LANGUAGE_TYPE_LTN:
- wFontSec=LCD_CP_1257_SECTOR;
- goto LOAD_TRAN_TABLE;
- //CP1258
- case LANGUAGE_TYPE_VIE:
- wFontSec=LCD_CP_1258_SECTOR;
- goto LOAD_TRAN_TABLE;
- }
- wFontSec=wFontNum>>8; //256 words every sector
- wFontOffset=(wFontNum&0xFF)<<1; //mod 256 and then mul 2(1 word = 2 bytes)
- LOAD_TRAN_TABLE:
- //Only keep current transfer table index
- NandReadPhySec(gxwFontTable[FONT_TRN_TABLE]+wFontSec,1,SRAM_FONT_ADDR);
- bHByte=gxbFontData[wFontOffset];
- bLByte=gxbFontData[wFontOffset+1];
- #undef bHByte
- #undef bLByte
- return bIncNum;
- }
- //#if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_)) //Walace060213#3
- #if(!(_PM_PLAY_DEL_|_PM_DIR_DEL_)) // WHH #4 301_061225 //tne 2007/01/24 #4
- /*--------------------------------------------------------------------------
- Description:
- Show String on LCD (16x16 for Big5 and 8x16 for ASCII)
- Arguments:
- pbShowStr: point to string you want to show, string format:
- bPage: show location page
- bColNum: show location column
- bLen: string length
- Global arguments:
- Returns:
- Next display string index (0 base and byte unit)
- EX. In standard mode, you want to show "ABCDE" in column 104,
- "ABC" will be shown, and "DE" will be skip (Over Lcd Screen)
- This function will return 3 (Point to D).
- If you show "ABCDE" in column 108, "AB" will be shown,
- Half of "C" will be shown, and "DE" will be skip
- This function will return 2 (Point to C)
- If you show "ABCDE" in column 0, all string would be shown.
- This function will return 5 (Point over the string)
- --------------------------------------------------------------------------*/
- //tne lcd scroll2
- //vicky061107#1 update the return Type
- #if(_PM_FM_|_PM_PHOTO_|_PM_VD_MENU_)
- API WORD StrShowString(PBYTE pbShowStr,BYTE bColStart,BYTE bRowStart,BYTE wLen) large //Walace060918#1
- #else
- API WORD StrShowString(PBYTE pbShowStr,BYTE bColStart,BYTE bRowStart,BYTE wLen) //Walace060918#1
- #endif
- //API BYTE LcdShowString(PBYTE pbShowStr,BYTE bPage,BYTE bColNum,BYTE wLen) large
- #if(USE_LCD_UNICODE)
- {
- WORD wI;
- BYTE bIncNum;
- BYTE bHByte,bLByte;
- WORD wFontNum,wFontSec,wFontOffset;
- wI=0;
- while(wI<wLen)
- {
- bHByte=pbShowStr[wI];
- bLByte=pbShowStr[wI+1];
- bIncNum=1;
- // transfer ANSI -> Unicode
- if(gxfSourceUnicode==STRING_TYPE_ASCII)
- {
- bIncNum=StrAsscii2Unicode(&bHByte,&bLByte);
- } //ASCII Code
- else //Unicode alaways use 2 bytes
- { bIncNum=2; }
- //UNICODE_KERNEL:
- ///////////////// Unicode String Program Kernel /////////////////
- if(bLByte==0) // English Word
- {
- //add by tne 2004/11/26 #3
- //by pass illegal word
- //if((bHByte>=127)||(bHByte<32)) bHByte='?'; // point to '?'
- if(bHByte<32) bHByte='?'; // point to '?'
- //Japen Special Yen Sign
- if(gxbLangueType==LANGUAGE_TYPE_JP)
- {
- if(bHByte==0x5C)
- bHByte=0xA5;
- }
- wFontNum=bHByte-0x20;
- wFontSec=wFontNum>>5; //32 words every sector
- wFontOffset=(WORD)(bHByte&0x1F)<<4; //mod 32 and then mul 16(1 word = 16 bytes)
- NandReadPhySec(gxwFontTable[FONT_EN]+wFontSec,1,SRAM_FONT_ADDR);
- OledShowBitsIcon(gxbFontData+wFontOffset,bColStart,bRowStart,SEG1,2);
- bColStart += LCD_SMALL_FONT_WIDTH;
- }
- else
- {
- //add by tne 2004/11/26 #3
- //by pass illegal word
- #if(!UNICODE_USE_ALL)
- if(bLByte<0x30)
- {
- bLByte=0xFF;
- bHByte=0x1F; //point to unicode '?'
- }
- #endif
- // Unicode Hight Low byte is reversed, so LByte sub HByte start code
- bLByte -= UNICODE_START_CODE;
- wFontNum=(((WORD)bLByte)<<8)+bHByte;
- #if(UNICODE_SKIP_D800)
- // skip D800-F8FF , 8448 words
- if(bLByte>=(0xD8-UNICODE_START_CODE))
- wFontNum -= 8448;
- #endif
- wFontSec=wFontNum>>4;
- wFontOffset=(wFontNum&0xF)<<5; //mod 16 and then mul 32(1 word = 32 bytes)
- //modify by tne 2004/12/01 unicode
- NandReadPhySec(gxwFontTable[FONT_UNI_00+(wFontSec>>9)]+(wFontSec&0x1FF),1,SRAM_FONT_ADDR);
- OledShowBitsIcon(gxbFontData+wFontOffset,bColStart,bRowStart,SEG2,2);
- //for Russia special
- if( (bLByte+UNICODE_START_CODE) == 0x04 )
- bColStart += LCD_SMALL_FONT_WIDTH;
- else
- bColStart += LCD_BIG_FONT_WIDTH;
- }
- //Display over limit
- if(bColStart>gxbLcdLimitCol)
- {
- //if(gxbLcdDispLimPix==0) //Just fit the max column, point to next word
- if(bColStart==gxbLcdLimitCol+1)
- {
- gxbLcdDispLimPix=0;
- wI += bIncNum;
- }
- break;
- }
- else
- { wI += bIncNum; }
- } //while(wI<wLen)
- gxbLcdLastStrPix=bColStart;
- return wI;
- }
- #else
- {
- WORD wI;
- BYTE bWordPos;
- BYTE bHByte,bLByte;
- WORD wFontNum,wFontSec,wFontOffset;
- wI=0;
- bWordPos=0;
- while(wI<wLen)
- {
- bHByte=pbShowStr[wI];
- bLByte=pbShowStr[wI+1];
- // transfer Unicode -> ANSI
- if(gxfSourceUnicode==STRING_TYPE_UNICODE)
- {
- if(bLByte!=0)
- {
- bLByte -= UNICODE_START_CODE; // Del Unicode start
- wFontNum=(((WORD)bLByte)<<8)+bHByte;
- wFontSec=wFontNum>>8; //256 words every sector
- wFontOffset=(wFontNum&0xFF)<<1; //mod 256 and then mul 2(1 word = 2 bytes)
- switch(gxbLangueType)
- {
- case LANGUAGE_TYPE_EN:
- case LANGUAGE_TYPE_TW:
- NandReadPhySec(gxwUniBig5Table+wFontSec,1,SRAM_FONT_ADDR);
- break;
- }
- bHByte=gxbFontData[wFontOffset+1];
- bLByte=gxbFontData[wFontOffset];
- }
- }
- switch(gxbLangueType)
- {
- case LANGUAGE_TYPE_EN:
- case LANGUAGE_TYPE_TW:
- ////////// Big5 String Program Kernel //////////
- if(bHByte>0x80)
- {
- #if(USE_ONLY_STD_FONT)
- if(bLByte<=0x7E)
- wFontNum=(WORD)(bHByte-0xA4)*157+(bLByte-0x40);
- else
- wFontNum=(WORD)(bHByte-0xA4)*157+(bLByte-98);
- #else
- if(bLByte<=0x7E)
- wFontNum=(WORD)(bHByte-0x81)*157+(bLByte-0x40);
- else
- wFontNum=(WORD)(bHByte-0x81)*157+(bLByte-98);
- #endif
- wFontSec=wFontNum>>4; //16 words every sector
- wFontOffset=(wFontNum&0xF)<<5; //mod 16 and then mul 32(1 word = 32 bytes)
- NandReadPhySec(gxwFontTable[FONT_TW]+wFontSec,1,SRAM_FONT_ADDR);
- OledShowBitsIcon(gxbFontData+wFontOffset,bColStart+SEG2PIXEL(bWordPos),bRowStart,SEG2,2);
- bWordPos+=2;
- wI+=2;
- }
- else
- {
- wFontNum=bHByte-0x20;
- wFontSec=wFontNum>>5; //32 words every sector
- wFontOffset=(wFontNum&0x1F)<<4; //mod 32 and then mul 16(1 word = 16 bytes)
- NandReadPhySec(gxwFontTable[FONT_EN]+wFontSec,1,SRAM_FONT_ADDR);
- OledShowBitsIcon(gxbFontData+wFontOffset,bColStart+SEG2PIXEL(bWordPos),bRowStart,SEG1,2);
- if(gxfSourceUnicode==STRING_TYPE_UNICODE)
- wI+=2;
- else
- wI++;
- bWordPos++;
- }
- break;
- case LANGUAGE_TYPE_CN:
- break;
- }
- }
- if(gxfSourceUnicode==STRING_TYPE_ASCII)
- {
- if(wI==wLen)
- return FULL_WORD;
- else
- return HALF_WORD;
- }
- else
- {
- if(bWordPos>gxbUnicodeShowLen)
- return HALF_WORD;
- else
- return FULL_WORD;
- }
- }
- #endif //USE_LCD_UNICODE endif
- #endif //Walace060213#3
- #endif //( _PM_PLAY_ | _PM_FM_ | _PM_SYS_ | (_PM_SAVE_&UI_USE_MODE_KEY) | _PM_HST_ | _PM_INIT_)
- //Walace051226#1
- #if(_PM_PLAY_MAIN_&USE_TAG_DISPLAY)
- /*--------------------------------------------------------------------------
- Description:
- Switch Tag on LCD (Title->Artist->Album)
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- //CWORD cwShowStrTag[]={SYS_STR_TAG,SYS_STR_ARTIST,SYS_STR_ALBUM,SYS_STR_GENRE,SYS_STR_FILE}; //tne 512 tag
- CWORD cwShowStrTag[]={SYS_STR_TAG,SYS_STR_ARTIST,SYS_STR_ALBUM,SYS_STR_FILE};
- void LcdTurnTag(void) //Walace061228#CodeSize
- {
- WORD wShowStrTag;
- //tne 512 tag start
- if(gxbLcdTagStatus!=LCD_TAG_TURN_FILEONLY)
- {
- while(1)
- {
- //if(gxbLcdTagStatus>=LCD_TAG_TURN_GENRE)
- if(gxbLcdTagStatus>=LCD_TAG_TURN_ALBUM) //tne 512 tag
- gxbLcdTagStatus=LCD_TAG_TURN_TITLE;
- else
- gxbLcdTagStatus++;
- if(gxwNameBufLen[gxbLcdTagStatus]>0)
- break;
- }
- gxbShowTagBase=gxbNameBuf;
- LoadNameBufStringFromNand(gxbLcdTagStatus); //tne 512 tag 061101
- }
- wShowStrTag=cwShowStrTag[gxbLcdTagStatus];
- //tne 512 tag end
- //OledClearArea(SEG0,LINE2,OLED_MAX_COL-SEG0,LINE1) ;
- //OledClearArea(OLED_TAG_COL,OLED_TAG_ROW,OLED_MAX_COL-OLED_TAG_COL,LINE1); //Tne060223#1
- OledShowIconNew(1,IM_TAG_CLEAR,OLED_TAG_COL,OLED_TAG_ROW); // tne 2007/01/24 #4
- gfTransparent=TRUE; // tne 2007/01/24 #4
- StrShowSysString(wShowStrTag,OLED_TAG_COL,OLED_TAG_ROW);
- gxfSourceUnicode=gxbNameBufStrType[gxbLcdTagStatus];
- #if(OLED_TAG_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_TAG_END_COLUMN;
- #endif
- gxwShowTagPoint=StrShowString(gxbShowTagBase,gxbLcdLastStrPix,OLED_TAG_ROW,gxwNameBufLen[gxbLcdTagStatus]); //vicky061107#1
- #if(OLED_TAG_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gfTransparent=FALSE; // tne 2007/01/24 #4
- gxbLcdTagScrollPix=gxbLcdDispLimPix;
- gxbTagScrollDelay=LCD_TAG_START_DELAY;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- /*--------------------------------------------------------------------------
- Description:
- Start to show Tag Title on LCD
- If Tag Title not exist, it would show file name
- You should call this function, and then call LcdScrollTag to scroll it
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- //fix by tne 2005/01/13 #1
- API void LcdShowTagTitle() //Walace061228#CodeSize
- {
- //BYTE bI,bJ;
- if(gxbMusicType&M_SUB_TYPE) // MP3 TAG Exist
- { gxbLcdTagStatus=LCD_TAG_TURN_DEFAULT; }
- else
- {
- gxbLcdTagStatus=LCD_TAG_TURN_FILEONLY;
- if(gxbLongFileName[1]==0) //no long file name
- {
- //copy short file name
- LcdCopyShortFileName(gxbFileName);
- gxbShowTagBase=gxbLcdShowFileName;
- }
- else
- {
- //tne 512 tag
- gxbNameBufStrType[TAG_FNAME_BUF_IDX]=STRING_TYPE_UNICODE;
- gxwNameBufLen[TAG_FNAME_BUF_IDX]=gxbLongFileName[1];
- gxbShowTagBase=gxbLongFileName+2;
- }
- }
- LcdTurnTag();
- }
- /*--------------------------------------------------------------------------
- Description:
- Scroll Tag on LCD
- You should call LcdShowTagTitle first
- If no Tag (gxbMusicType&M_SUB_TYPE is FALSE or GET_LCD_TAG_SUBTITLE is NO_SUBTITLE),
- you shouldn't call this function (file name not support to be scrolled)
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- API void LcdScrollTag(void) //Walace061228#CodeSize
- {
- if(gxbTagScrollDelay) // Need More Delay
- {
- gxbTagScrollDelay--;
- return;
- }
- if(gxwShowTagPoint>=gxwNameBufLen[gxbLcdTagStatus]) //tne 512 tag
- {
- LcdTurnTag();
- return;
- }
- OLED_SCROLL_TEXT(OLED_TAG_COL,OLED_TAG_ROW,OLED_TAG_END_COLUMN-OLED_TAG_COL+1,OLED_TAG_HEIGHT);
- gxfSourceUnicode=gxbNameBufStrType[gxbLcdTagStatus]; //tne 512 tag
- #if(OLED_TAG_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_TAG_END_COLUMN;
- #endif
- gxwBGColor=UI_TAG_BG_COLOR; //tne 2007/01/17 #2
- gxwShowTagPoint += StrShowString(gxbShowTagBase+gxwShowTagPoint,OLED_TAG_END_COLUMN-gxbLcdTagScrollPix-LCD_SCROLL_WIDTH+1,OLED_TAG_ROW,1);
- gxwBGColor=OLED_BG_COLOR; //tne 2007/01/17 #2
- #if(OLED_TAG_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix = gxbLcdDispLimPix;
- if(gxwShowTagPoint>=gxwNameBufLen[gxbLcdTagStatus]) // Scroll over... //tne 512 tag
- {
- gxbTagScrollDelay=LCD_TAG_END_DELAY; // Delay more time to see at least
- }
- else
- {
- #if(LCD_TAG_NORMAL_DELAY)
- gxbTagScrollDelay=LCD_TAG_NORMAL_DELAY;
- #endif
- }
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- #endif
- #if( (_PM_SLS_|(_PM_PLAY_&!_PM_PLAY_PRC_))& USE_LYRIC_DISPLAY)
- /*--------------------------------------------------------------------------
- Description:
- Set Lyric state when one line lyric display finish
- Arguments:
- Global arguments:
- gxbLrcState
- Returns:
- --------------------------------------------------------------------------*/
- API void LcdSetLyricDone() //Walace061228#CodeSize
- {
- gxbLcdLyricStatus = LCD_LYRIC_SCROLL_DONE; //tne lcd scroll2
- if(gfLastLrcStr)
- gxbLrcState=LRC_STS_ALL_FINISH;
- else
- gxbLrcState=LRC_STS_GET_STR;
- }
- #endif
- #if((_PM_PLAY_MAIN_|_PM_DVR_MAIN_)& USE_LYRIC_DISPLAY)
- // function modyfy by tne 2004/11/13 #1
- /*--------------------------------------------------------------------------
- Description:
- Show A new Lyrics
- You should call this function, and then call LcdScrollLyrics to scroll it
- PS.Lyrics isn't support unicode now
- Arguments:
- Global arguments:
- gxbLrcString
- Returns:
- --------------------------------------------------------------------------*/
- API void LcdShowLyrics() //Walace061228#CodeSize
- {
- // WHH #13 301_070106
- //OledClearArea(OLED_LYRIC_COL, OLED_LYRIC_ROW, OLED_MAX_COL-OLED_LYRIC_COL,LINE1) ;
- //tne 2006/02/24
- if(gxbLrcString[1]>=gcbLryicStrLen)
- {
- if(!LcdChkCjkCutWord(gxbLrcString+2,gcbLryicStrLen))
- gxbLrcString[gcbLryicStrLen+1]=' ';
- }
- #if(OLED_LYRIC_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_LYRIC_END_COLUMN;
- #endif
- gfTransparent=TRUE;
- #if(USE_LYRIC_TWO_LINE) //WHH #13 301_070106
- OledShowIconNew(1,IM_TAG_CLEAR,OLED_LYRIC_COL,OLED_LYRIC_ROW);
- OledShowIconNew(1,IM_TAG_CLEAR,OLED_LYRIC_COL,OLED_LYRIC_ROW+16);
- gxbShowLyricPoint=StrShowString(gxbLrcString+2,OLED_LYRIC_COL,OLED_LYRIC_ROW,gxbLrcString[1])+2;
- if(!(gxbShowLyricPoint>=gxbLrcString[1]+2))
- {
- gxbShowLyricPoint+=StrShowString(gxbLrcString+gxbShowLyricPoint,OLED_LYRIC_COL,OLED_LYRIC_ROW+16,gxbLrcString[1]-(gxbShowLyricPoint-2));
- }
- #else
- OledShowIconNew(1,IM_TAG_CLEAR,OLED_LYRIC_COL,OLED_LYRIC_ROW);
- gxbShowLyricPoint=StrShowString(gxbLrcString+2,OLED_LYRIC_COL,OLED_LYRIC_ROW,gxbLrcString[1])+2;
- #endif
- gfTransparent=FALSE;
- #if(OLED_LYRIC_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdLyricScrollPix=gxbLcdDispLimPix;
- if(gxbShowLyricPoint>=gxbLrcString[1]+2)
- { LcdSetLyricDone(); }
- else
- {
- gxbLcdLyricStatus=LCD_LYRIC_SCROLLING;
- gxbLyricScrollDelay=LCD_LYRIC_START_DELAY;
- }
- }
- // function modyfy by tne 2004/11/13 #1
- /*--------------------------------------------------------------------------
- Description:
- Scroll Lyrics on LCD
- You should call LcdShowLyrics first
- If gxbMusicType&M_LYRICS_FLAG is False, you should not call this function
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- API void LcdScrollLyric() //Walace061228#CodeSize
- {
- if(gxbLyricScrollDelay)
- {
- gxbLyricScrollDelay--;
- return;
- }
- //OLED_SCROLL_TEXT(OLED_LYRIC_COL,OLED_LYRIC_ROW,OLED_TAG_END_COLUMN-OLED_LYRIC_COL+1,OLED_LYRIC_HEIGHT); //Walace060907#3
- //WHH #13 301_070106
- #if(!USE_LYRIC_TWO_LINE)
- OLED_SCROLL_TEXT(OLED_LYRIC_COL,OLED_LYRIC_ROW,OLED_LYRIC_END_COLUMN-OLED_LYRIC_COL+1,OLED_LYRIC_HEIGHT); //Walace060907#3
- #endif
- #if(OLED_LYRIC_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_LYRIC_END_COLUMN;
- #endif
- #if(USE_LYRIC_TWO_LINE)//WHH #13 301_070106
- OledCopyArea(OLED_LYRIC_COL,OLED_LYRIC_ROW+16,OLED_LYRIC_END_COLUMN-OLED_LYRIC_COL,16,OLED_LYRIC_COL,OLED_LYRIC_ROW);
- OledShowIconNew(1,IM_TAG_CLEAR,OLED_LYRIC_COL,OLED_LYRIC_ROW+16);
- if(!(gxbShowLyricPoint>=gxbLrcString[1]+2)) //tne 2007/01/17 #2
- {
- gfTransparent=TRUE;
- gxbShowLyricPoint+=StrShowString(gxbLrcString+gxbShowLyricPoint,OLED_LYRIC_COL,OLED_LYRIC_ROW+16,gxbLrcString[1]-(gxbShowLyricPoint-2));
- gfTransparent=FALSE;
- }
- /*if(!(gxbShowLyricPoint>=gxbLrcString[1]+2))
- {
- OledShowIconNew(1,IM_LYRIC_CLEAR,OLED_LYRIC_COL,OLED_LYRIC_ROW+16);
- gxbShowLyricPoint+=StrShowString(gxbLrcString+gxbShowLyricPoint,OLED_LYRIC_COL,OLED_LYRIC_ROW+16,gxbLrcString[1]-(gxbShowLyricPoint-2)+1);
- }*/
- #else
- gxbShowLyricPoint += StrShowString(gxbLrcString+gxbShowLyricPoint,OLED_LYRIC_END_COLUMN-gxbLcdLyricScrollPix-LCD_SCROLL_WIDTH+1,OLED_LYRIC_ROW,1);
- #endif
- #if(OLED_LYRIC_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdLyricScrollPix = gxbLcdDispLimPix;
- if(gxbShowLyricPoint>=gxbLrcString[1]+2) // Scroll over...
- {
- LcdSetLyricDone();
- }
- else
- {
- #if(LCD_LYRIC_NORMAL_DELAY)
- gxbLyricScrollDelay=LCD_LYRIC_NORMAL_DELAY;
- #endif
- }
- //gxfSourceUnicode=STRING_TYPE_ASCII; //Lyric always use ASCII
- }
- #endif // USE_LYRIC_DISPLAY endif
- //tne 2005/11/25 #2
- #if( ((_PM_PLAY_MAIN_|_PM_FLIST_)&USE_TAG_DISPLAY)| (_PM_DVR_&!_PM_MENU_&UI_DISP_DIR_NAME) |_PM_SYS_|_PM_HST_|_PM_PHOTO_|(_PM_VIDEO_&!_PM_VD_MENU_))
- /*--------------------------------------------------------------------------
- Description:
- Copy short file name to gxbLcdShowFileName
- Arguments:
- pbFileName
- Global arguments:
- gxbLcdShowFileName
- Returns:
- --------------------------------------------------------------------------*/
- void LcdCopyShortFileName(PBYTE pbFileName) large
- {
- BYTE bI,bJ;
- //copy short file name
- //tne 512 tag
- #if(_PM_PLAY_MAIN_)
- bJ=0;
- gxbNameBufStrType[TAG_FNAME_BUF_IDX]=STRING_TYPE_ASCII;
- #else
- bJ=2;
- gxbLcdShowFileName[0]=STRING_TYPE_ASCII;
- #endif
- for(bI=0;bI<11;bI++)
- {
- if(bI==8)
- {
- if(pbFileName[bI]>32) // add by tne 2005/05/10
- {
- gxbLcdShowFileName[bJ]='.';
- bJ++;
- }
- else
- break;
- }
- if(pbFileName[bI]>32) //skip space or control code
- {
- gxbLcdShowFileName[bJ]=pbFileName[bI];
- bJ++;
- }
- }
- //tne 512 tag
- #if(_PM_PLAY_MAIN_)
- gxwNameBufLen[TAG_FNAME_BUF_IDX]=bJ;
- #else
- gxbLcdShowFileName[1]=bJ-2;
- #endif
- }
- #endif
- //#if(_PM_FLIST_|_PM_SYS_|_PM_PHOTO_|(_PM_VIDEO_&!_PM_VD_MENU_)) //tne 2005/11/25 #2
- #if(_PM_FLIST_|_PM_SYS_|_PM_PHOTO_|(_PM_VIDEO_&_PM_VD_LIST_))
- /*--------------------------------------------------------------------------
- Description:
- Display a file name in file list
- Arguments:
- Global arguments:o
- Returns:
- --------------------------------------------------------------------------*/
- //tne lcd scroll2 //Walace051227#1
- API void LcdShowFileList(struct FILE_INF_DATA xdata * pFileStruct,BYTE bPage) large
- {
- //WHH #8 301_061226
- //OledClearArea(SEG2,PAGE2PIXEL(bPage), OLED_MAX_COL-SEG2,LINE1); // OK
- //if(pbLongFileName[1]==0) //short file name //Walace051227#1
- bPage=bPage; // for uncall warning // Jeff070125#3
- //tne 2006/11/07 #1
- #if(!_PM_DVR_)
- if(pFileStruct->pbLongFileName[1]==0) //short file name //Walace051227#1
- #endif
- {
- //LcdCopyShortFileName(pbFileName); //Walace051227#1
- LcdCopyShortFileName(pFileStruct->pbFileName);
- gxfSourceUnicode=STRING_TYPE_ASCII;
- gxbShowTagBase=gxbLcdShowFileName;
- }
- #if(!_PM_DVR_)
- else
- {
- gxfSourceUnicode=STRING_TYPE_UNICODE;
- //gxbShowTagBase=pbLongFileName; //Walace051227#1
- pFileStruct->pbLongFileName[0]=STRING_TYPE_UNICODE;//Walace060213#3
- gxbShowTagBase=pFileStruct->pbLongFileName; //Walace051227#1
- }
- #endif
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- //WHH #8 301_061226(start)
- //gxwShowTagPoint=StrShowString(gxbShowTagBase+2,OLED_FLIST_COL,PAGE2PIXEL(bPage),gxbShowTagBase[1])+2;
- // WHH 070109
- #if(_PM_VD_PLAY_)
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,UI_FILST_STRING_START,199,gxbShowTagBase[1])+2;
- #else
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,UI_FILST_STRING_START,UI_FILST_ROOT_ROW+(UI_FILST_TREE_ROW)*(bPage),gxbShowTagBase[1])+2;
- #endif
- //WHH #8 301_061226(end)
- //Walace060213#3 start
- //WHH #8 301_061226
- //if((OLED_FLIST_COL+StrStrAnsiLen(gxbShowTagBase+2,gxbShowTagBase[1]))<=(OLED_FLIST_END_COLUMN+1))
- if((UI_FILST_STRING_START+StrStrAnsiLen(gxbShowTagBase+2,gxbShowTagBase[1]))<=(OLED_FLIST_END_COLUMN+1))
- gfScrollFlag=FALSE;
- else
- gfScrollFlag=TRUE;
- //Walace060213#3 end
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix=gxbLcdDispLimPix;
- gxbTagScrollDelay=LCD_FLIST_START_DELAY;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- #endif //(_PM_PLAY_|_PM_SYS_)
- //UI for class
- #if(_PM_CLIST_)
- API void LcdShowClassList(PBYTE pbClassName,BYTE bPage) large
- {
- // WHH #14 301_070106
- //OledClearArea(OLED_FLIST_COL,PAGE2PIXEL(bPage), OLED_FLIST_END_COLUMN-OLED_FLIST_COL+1,LINE1); // OK
- // if(pbClassName[1]==0) //Walace051227#1 Remove
- // return;
- gxfSourceUnicode=pbClassName[0];
- //gxbShowTagBase[0]=pbClassName[0]; //Walace060213#3 //tne 2006/03/25 #1
- gxbShowTagBase=pbClassName;
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- //WHH #13 301_070107
- //gxwShowTagPoint=StrShowString(gxbShowTagBase+2,OLED_FLIST_COL,PAGE2PIXEL(bPage),gxbShowTagBase[1])+2;
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,UI_CLASSLST_STRING_START,UI_CLASSLST_START_ROW+(UI_CLASSLST_TREE_ROW)*(bPage),gxbShowTagBase[1])+2;
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- //Walace060213#3 start
- //if((OLED_FLIST_COL+StrStrAnsiLen(gxbShowTagBase+2,gxbShowTagBase[1]))<=(OLED_FLIST_END_COLUMN+1))
- if((UI_CLASSLST_STRING_START+StrStrAnsiLen(gxbShowTagBase+2,gxbShowTagBase[1]))<=(OLED_FLIST_END_COLUMN+1)) //WHH #13 301_070107
- gfScrollFlag=FALSE;
- else
- gfScrollFlag=TRUE;
- //Walace060213#3 end
- gxbLcdTagScrollPix=gxbLcdDispLimPix;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- gxbTagScrollDelay=LCD_FLIST_START_DELAY;
- }
- #endif
- #if(_PM_HST_)
- /*--------------------------------------------------------------------------
- Description:
- Display a file name in file list in HOST module
- Arguments:
- bStartWord:Which word should file name start
- When select source file, this is 4
- When select target dir, this is 2
- When it set LCD_AUTO_CENTER_COL, it will adjust to center
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- //tne lcd scroll2
- API void LcdShowFileList(PBYTE pbFileName,BYTE bPage,BYTE bStartWord) large
- {
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- if(pbFileName[0]==0) //short file name
- {
- LcdCopyShortFileName(pbFileName+2); //050803
- if(bStartWord==LCD_AUTO_CENTER_COL)
- {
- bStartWord = (OLED_MAX_SEGS - gxbLcdShowFileName[1])>>1;
- OledClearArea(SEG0,PAGE2PIXEL(bPage),OLED_MAX_COL-SEG0,LINE1);
- }
- else
- {
- OledClearArea(SEG2PIXEL(bStartWord),PAGE2PIXEL(bPage),OLED_MAX_COL-SEG2PIXEL(bStartWord),LINE1); //OK
- }
- gxfSourceUnicode=STRING_TYPE_ASCII;
- gxbShowTagBase=gxbLcdShowFileName;
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,SEG2PIXEL(bStartWord),PAGE2PIXEL(bPage),gxbShowTagBase[1])+2;
- }
- else //050803: long file name
- {
- gxfSourceUnicode=STRING_TYPE_UNICODE;
- gxbShowTagBase=pbFileName;
- gxbShowTagBase[0]=STRING_TYPE_UNICODE; //Walace060213#3
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,OLED_FLIST_COL,PAGE2PIXEL(bPage),gxbShowTagBase[1])+2;
- }
- //Walace060213#3 start
- if((OLED_FLIST_COL+StrStrAnsiLen(gxbShowTagBase+2,gxbShowTagBase[1]))<=(OLED_FLIST_END_COLUMN+1))
- gfScrollFlag=FALSE;
- else
- gfScrollFlag=TRUE;
- //Walace060213#3 end
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- //gxbLcdLimitCol=OLED_FLIST_END_COLUMN; //Walace051227#1 Remove
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix=gxbLcdDispLimPix;
- gxbTagScrollDelay=LCD_FLIST_START_DELAY;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- #endif
- //#if(_PM_FLIST_|_PM_PHOTO_|_PM_SYS_|(_PM_VIDEO_&(!_PM_VD_MENU_)|_PM_CLIST_|_PM_HST_)
- #if(_PM_FLIST_|_PM_PHOTO_|_PM_SYS_|(_PM_VIDEO_&_PM_VD_LIST_)|_PM_CLIST_|_PM_HST_) // WHH 070128
- /*--------------------------------------------------------------------------
- Description:
- Scroll long file name in file list
- Arguments:
- pbFileName: display long file name array
- bPage: display lcd page
- Global arguments:
- This function use Tag global variable
- gxbTagScrollDelay
- gxwShowTagPoint
- gxbLcdTagScrollPix
- Returns:
- --------------------------------------------------------------------------*/
- //#if(_PM_FLIST_|_PM_PHOTO_|_PM_SYS_|_PM_VIDEO_) // Jeff070125#5
- #if(_PM_FLIST_|_PM_PHOTO_|_PM_SYS_|_PM_VD_LIST_)//|_PM_VD_MENU_) // WHH 070128
- //Walace051227#1
- API BOOL LcdScrollFileList(struct FILE_INF_DATA xdata * pFileStruct, BYTE bPage,BOOL fReverse) large
- //#else //#if(_PM_CLIST_|_PM_HST_|)
- #else
- API BOOL LcdScrollFileList(PBYTE pbFileName, BYTE bPage,BOOL fReverse) large
- #endif
- {
- BYTE bWidth;
- fReverse=fReverse; // for uncall warning // Jeff07125#3
- if(gxbTagScrollDelay) // Need More Delay
- {
- gxbTagScrollDelay--;
- return FALSE;
- }
- //Walace051227#1 Remove start
- /*
- #if(_PM_HST_) //Walace051027 #2
- if(pbFileName[0]==0) //short file name
- return;
- #elif(_PM_CLIST_)
- #else
- if(pbFileName[1]==0) //short file name
- return;
- #endif
- */
- //Walace051227#1 Remove end
- //No more scroll... display again
- //if((gxwShowTagPoint>=pbFileName[1]+2))
- if((gxwShowTagPoint>=gxbShowTagBase[1]+2))
- {
- #if(_PM_HST_) //050804
- /* Walace051027 #2
- if(pbFileName[0]==0)
- return;
- */
- // WHH #8 301_061226
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- LcdShowFileList(pbFileName,bPage,2);
- gxwBGColor=OLED_BG_COLOR;
- // WHH #8 301_061226(end)
- #elif(_PM_CLIST_)
- // WHH #8 301_061226
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- LcdShowClassList(pbFileName,bPage);
- gxwBGColor=OLED_BG_COLOR;
- // WHH #8 301_061226(end)
- #else
- //LcdShowFileList(NULL,pbFileName,bPage); //Walace051227#1
- // WHH #8 301_061226(start)
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- LcdShowFileList(pFileStruct,bPage);
- gxwBGColor=OLED_BG_COLOR;
- // WHH #8 301_061226(end)
- #endif
- //if(fReverse) //Walace051227#1
- //OledReverse(OLED_FLIST_COL,PAGE2PIXEL(bPage),OLED_FLIST_END_COLUMN-OLED_FLIST_COL+1,OLED_FLIST_HEIGHT);
- // WHH #8 301_061226(end)
- return TRUE;
- }
- // WHH #8 301_061226(start)
- //OLED_SCROLL_TEXT(OLED_FLIST_COL,PAGE2PIXEL(bPage),OLED_TAG_END_COLUMN-OLED_FLIST_COL+1,OLED_FLIST_HEIGHT); //Walace060907#3
- //OLED_SCROLL_TEXT(OLED_FLIST_COL,PAGE2PIXEL(bPage),OLED_FLIST_END_COLUMN-OLED_FLIST_COL+1,OLED_FLIST_HEIGHT); //Walace060907#3
- // WHH 07019
- #if(_PM_VD_PLAY_)
- OLED_SCROLL_TEXT(UI_FILST_STRING_START,199,OLED_FLIST_END_COLUMN-UI_FILST_STRING_START+1,UI_FILST_ROW);
- #else
- OLED_SCROLL_TEXT(UI_FILST_STRING_START,UI_FILST_ROOT_ROW+(UI_FILST_TREE_ROW)*(bPage),OLED_FLIST_END_COLUMN-UI_FILST_STRING_START+1,UI_FILST_ROW); //Walace060907#3
- #endif
- // WHH #8 301_061226(end)
- //gxfSourceUnicode=pbFileName[0]; //Walace051226#1 mark
- gxfSourceUnicode=gxbShowTagBase[0]; //Walace051226#1 add
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- bWidth=OLED_FLIST_END_COLUMN-gxbLcdTagScrollPix-LCD_SCROLL_WIDTH+1;
- //WHH #8 301_061226(start)
- //gxwShowTagPoint+= StrShowString(gxbShowTagBase+gxwShowTagPoint,bWidth,PAGE2PIXEL(bPage),1);
- // WHH 07019
- #if(_PM_VD_PLAY_)
- gxwShowTagPoint+= StrShowString(gxbShowTagBase+gxwShowTagPoint,bWidth,199,1);
- #else
- gxwBGColor=UI_FILST_LIGHT_COLOT;
- gxwShowTagPoint+= StrShowString(gxbShowTagBase+gxwShowTagPoint,bWidth,UI_FILST_ROOT_ROW+(UI_FILST_TREE_ROW)*(bPage),1);
- gxwBGColor=OLED_BG_COLOR;
- #endif
- //if(fReverse) //Walace051227#1
- // OledReverse(bWidth,PAGE2PIXEL(bPage),OLED_FLIST_END_COLUMN-bWidth+1,OLED_FLIST_HEIGHT);
- //WHH #8 301_061226(end)
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix = gxbLcdDispLimPix;
- gxfSourceUnicode=STRING_TYPE_ASCII; //Walace051227#1
- //if((gxwShowTagPoint>=pbFileName[1]+2)) //Walace051227#1
- if(gxwShowTagPoint>=gxbShowTagBase[1]+2) // Scroll over...
- {
- gxbTagScrollDelay=LCD_FLIST_END_DELAY; // Delay more time to see at least
- return TRUE; //Walace051227#1
- }
- else
- {
- #if(LCD_FLIST_NORMAL_DELAY)
- gxbTagScrollDelay=LCD_FLIST_NORMAL_DELAY;
- #endif
- return FALSE; //Walace051227#1
- }
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- Display a file name in file list
- Arguments:
- Global arguments:o
- Returns:
- --------------------------------------------------------------------------*/
- /*
- //tne lcd scroll2
- API void LcdShowFileList(struct FILE_INF_DATA xdata * pFileStruct,BYTE bPage) large
- {
- OledClearArea(SEG2,PAGE2PIXEL(bPage), OLED_MAX_COL-SEG2,LINE1); // OK
- if(pFileStruct->pbLongFileName[1]==0) //short file name
- {
- LcdCopyShortFileName(pFileStruct->pbFileName);
- gxfSourceUnicode=STRING_TYPE_ASCII;
- gxbShowTagBase=gxbLcdShowFileName;
- }
- else
- {
- gxfSourceUnicode=STRING_TYPE_UNICODE;
- gxbShowTagBase=pFileStruct->pbLongFileName;
- }
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- gxwShowTagPoint=StrShowString(gxbShowTagBase+2,OLED_FLIST_COL,PAGE2PIXEL(bPage),gxbShowTagBase[1])+2;
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix=gxbLcdDispLimPix;
- gxbTagScrollDelay=LCD_FLIST_START_DELAY;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- }
- */
- //#if(_PM_VIDEO_)
- /*--------------------------------------------------------------------------
- Description:
- Scroll long file name in file list
- Arguments:
- pbFileName: display long file name array
- bPage: display lcd page
- Global arguments:
- This function use Tag global variable
- gxbTagScrollDelay
- gxwShowTagPoint
- gxbLcdTagScrollPix
- Returns:
- --------------------------------------------------------------------------*/
- /*
- API BOOL LcdScrollFileList(struct FILE_INF_DATA xdata * pFileStruct, BYTE bPage,BOOL fReverse) large
- {
- BYTE bWidth;
- if(gxbTagScrollDelay) // Need More Delay
- {
- gxbTagScrollDelay--;
- return FALSE;
- }
- //Walace051226#1 Remove
- //if(pbFileName[1]==0) //short file name
- //return;
- //No more scroll... display again
- if((gxwShowTagPoint>=gxbShowTagBase[1]+2))
- {
- LcdShowFileList(pFileStruct,bPage);
- if(fReverse)
- OledReverse(OLED_FLIST_COL,PAGE2PIXEL(bPage),OLED_FLIST_END_COLUMN-OLED_FLIST_COL+1,OLED_FLIST_HEIGHT);
- return FALSE;
- }
- OLED_SCROLL_TEXT(OLED_FLIST_COL,PAGE2PIXEL(bPage),OLED_TAG_END_COLUMN-OLED_FLIST_COL+1,OLED_FLIST_HEIGHT);
- //Walace051226#1 //gxbShowTagBase[0]
- gxfSourceUnicode=gxbShowTagBase[0];
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=OLED_FLIST_END_COLUMN;
- #endif
- bWidth=OLED_FLIST_END_COLUMN-gxbLcdTagScrollPix-LCD_SCROLL_WIDTH+1;
- gxwShowTagPoint += StrShowString(gxbShowTagBase+gxwShowTagPoint,bWidth,PAGE2PIXEL(bPage),1);
- if(fReverse)
- OledReverse(bWidth,PAGE2PIXEL(bPage),OLED_FLIST_END_COLUMN-bWidth+1,OLED_FLIST_HEIGHT);
- #if(OLED_FLIST_END_COLUMN!=MAX_COLNUM)
- gxbLcdLimitCol=MAX_COLNUM;
- #endif
- gxbLcdTagScrollPix = gxbLcdDispLimPix;
- gxfSourceUnicode=STRING_TYPE_ASCII;
- ////Walace051226#1 //gxbShowTagBase[0]
- if(gxwShowTagPoint>=gxbShowTagBase[1]+2) // Scroll over...
- {
- gxbTagScrollDelay=LCD_FLIST_END_DELAY; // Delay more time to see at least
- return TRUE;
- }
- else
- {
- #if(LCD_FLIST_NORMAL_DELAY)
- gxbTagScrollDelay=LCD_FLIST_NORMAL_DELAY;
- #endif
- return FALSE;
- }
- }
- */
- //#endif
- //#if(_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_|((_PM_SAVE_)&UI_USE_MODE_KEY)|_PM_HST_|_PM_VIDEO_|_PM_PHOTO_) //tne 2005/12/17
- //#if(_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|_PM_VIDEO_|_PM_PHOTO_|_PM_CUSTOM_|_PM_PLAY_DEL_|_PM_DIR_DEL_) //WHH #4 301_061225
- #if(_PM_PLAY_|_PM_REC_|_PM_FM_|_PM_SYS_|_PM_HST_|_PM_VIDEO_|_PM_PHOTO_|_PM_CUSTOM_|_PM_SAVE_) //WHH #4 301_061225 //tne 2007/01/24 #4
- /*--------------------------------------------------------------------------
- Description:
- Get a Unicode String Length at Ansi mode.
- For example, a string include 2 chinese words & 1 english word
- The unicode string length is 6, and ansi string length is 5.
- Arguments:
- pbString: Unicode string
- bLen: String Length in Unicode mode
- Global arguments:
- Returns:
- String Length in Ansi mode
- --------------------------------------------------------------------------*/
- API WORD StrStrAnsiLen(PBYTE pbString,BYTE bLen) //Walace060310#2
- {
- BYTE bI;
- WORD wTotalLen; //Walace060310#2
- wTotalLen=0;
- if(gxfSourceUnicode==STRING_TYPE_UNICODE)
- {
- for(bI=1;bI<bLen;bI+=2)
- {
- if( (pbString[bI]==0) || (pbString[bI]==0x04) )
- wTotalLen+=LCD_SMALL_FONT_WIDTH;
- else
- wTotalLen+=LCD_BIG_FONT_WIDTH;
- }
- }
- else
- {
- //count CJK string len
- if( (gxbLangueType==LANGUAGE_TYPE_TW) ||
- (gxbLangueType==LANGUAGE_TYPE_CN) ||
- (gxbLangueType==LANGUAGE_TYPE_JP) ||
- (gxbLangueType==LANGUAGE_TYPE_KS) )
- {
- for(bI=0;bI<bLen;bI++)
- {
- if(pbString[bI]<0x80)
- { wTotalLen=wTotalLen+LCD_SMALL_FONT_WIDTH; }
- else
- {
- wTotalLen=wTotalLen+LCD_BIG_FONT_WIDTH;
- bI++;
- }
- }
- }
- else
- {
- wTotalLen=bLen*LCD_SMALL_FONT_WIDTH;
- }
- }
- return wTotalLen; //Walace060310#2
- }
- /*--------------------------------------------------------------------------
- Description:
- Show system string form flash
- Note. can't across 2 segment!!
- Arguments:
- wStrNum: String number
- bPage: show locate page
- bColNum: show locate col(Note.If use LCD_AUTO_CENTER_COL, will auto center)
- bLen: string len
- Global arguments:
- gxbStringBuffer String buffer
- gxbLangueType Use language type
- Returns:
- BYTE: System string length pixel
- --------------------------------------------------------------------------*/
- #if(_PM_FM_|_PM_PHOTO_|_PM_VD_MENU_)
- API BYTE StrShowSysString(WORD wStrNum,BYTE bColStart,BYTE bRowStart) large //Walace060918#1
- #else
- API BYTE StrShowSysString(WORD wStrNum,BYTE bColStart,BYTE bRowStart) //Walace060918#1
- #endif
- #if(USE_SYS_STR_SCROLL&(_PM_MENU_|_PM_SYS_|_PM_FM_|_PM_VD_MENU_))
- {
- BYTE bI;
- WORD wSector;
- WORD wTemp;
- #if(_PM_PLAY_MAIN_)
- // XBYTE xbgxbbuf[16];
- #else
- #define xbgxbbuf gxbStrBase
- #endif
- #define wOffset wStrNum
- #define bLen gxbFontData[wOffset]
- wSector = wStrNum/SYS_STR_NUM_PER_SEC;
- wOffset = (wStrNum%SYS_STR_NUM_PER_SEC)*(SYS_STR_MAX_WORDS+1);
- // bSector=(wOffset>>9);
- // wOffset=(wOffset&0x1FF);
- NandReadPhySec(gxwStringTable+wSector,1,SRAM_FONT_ADDR);
- for(bI=0;bI<bLen;bI++)
- gxbStringBuffer[bI]=gxbFontData[bI+wOffset+1];
- if((gxbLangueType==LANGUAGE_TYPE_HEB)||(gxbLangueType==LANGUAGE_TYPE_ARA))
- {
- ;
- }
- //tne 2005/08/03
- //System string code type (Unicode or ASCII)
- switch(gxbLangueType)
- {
- default:
- gxfSourceUnicode=STRING_TYPE_ASCII;
- break;
- //case ??
- // gxfSourceUnicode=STRING_TYPE_UNICODE;
- }
- //gxfSourceUnicode = cbSysStrCodeType[gxbLangueType];
- //use bSector to keep string len for return
- wSector=StrStrAnsiLen(gxbStringBuffer,bLen);
- if((wSector)>LCD_STR_WIDTH)
- {
- gxbSysStringScrollTag=1;
- gxbStringUnicode=gxfSourceUnicode;
- gxbStringLen=bLen;
- gxbStringRow=bRowStart;
- if(((gxbLangueType!=LANGUAGE_TYPE_HEB)&&(gxbLangueType!=LANGUAGE_TYPE_ARA))||((gxbLangueType==LANGUAGE_TYPE_HEB)&&(!gxbHebExistFlag))
- ||((gxbLangueType==LANGUAGE_TYPE_ARA)&&(!gxbHebExistFlag)))
- {
- if(bColStart==LCD_AUTO_CENTER_COL)
- {
- gxbStringColStart=LCD_STR_START_COLUMN;
- }
- else
- {
- gxbStringColStart=bColStart;
- }
- gxbStringPoint=StrShowString(gxbStringBuffer,gxbStringColStart,gxbStringRow,((LCD_STR_END_COLUMN-gxbStringColStart+1)/8)*(gxbStringUnicode+1));
- gxbLcdStrScrollPix=0;
- gxbSysStringScrollDelay=LCD_STR_START_DELAY;
- }
- else
- {
- if(bColStart==LCD_AUTO_CENTER_COL)
- {
- gxbStringColStart=LCD_STR_END_COLUMN;
- bColStart=LCD_STR_END_COLUMN;
- }
- else
- {
- gxbStringColStart=LCD_STR_END_COLUMN-bColStart;
- }
- gxbStringPoint=StrShowString(gxbStringBuffer,gxbStringColStart,gxbStringRow,((gxbStringColStart-LCD_STR_START_COLUMN+1)/8)*(gxbStringUnicode+1));
- gxbLcdStrScrollPix=0;
- gxbSysStringScrollDelay=LCD_STR_START_DELAY;
- }
- }
- else
- {
- gxbSysStringScrollTag=0;
- if(((gxbLangueType!=LANGUAGE_TYPE_HEB)&&(gxbLangueType!=LANGUAGE_TYPE_ARA))||((gxbLangueType==LANGUAGE_TYPE_HEB)&&(!gxbHebExistFlag))
- ||((gxbLangueType==LANGUAGE_TYPE_ARA)&&(!gxbHebExistFlag)))
- {
- if(bColStart==LCD_AUTO_CENTER_COL)
- StrShowString(gxbStringBuffer,LcdCenterColumn((BYTE)wSector),bRowStart,bLen);
- else
- StrShowString(gxbStringBuffer,bColStart,bRowStart,bLen);
- }
- else
- {
- if(bColStart==LCD_AUTO_CENTER_COL)
- StrShowString(gxbStringBuffer,MAX_COLNUM-LcdCenterColumn((BYTE)wSector),bRowStart,bLen);
- else
- {
- if (wTemp == SYS_STR_TAG||wTemp == SYS_STR_ARTIST||wTemp==SYS_STR_ALBUM||wTemp==SYS_STR_FILE)
- StrShowString(gxbStringBuffer,OLED_TAG_END_COLUMN,bRowStart,bLen);
- else
- StrShowString(gxbStringBuffer,LCD_STR_END_COLUMN,bRowStart,bLen);
- }
- }
- }
- gxfSourceUnicode = STRING_TYPE_ASCII;
- return wSector;
- #undef wOffset
- #undef bLen
- }
- #else
- {
- BYTE bI;
- WORD wSector;
- //WORD wTemp;
- #if(_PM_PLAY_MAIN_)
- // XBYTE xbgxbbuf[16];
- #else
- #define xbgxbbuf gxbStrBase
- #endif
- #define wOffset wStrNum
- #define bLen gxbFontData[wOffset]
- wSector = wStrNum/SYS_STR_NUM_PER_SEC;
- wOffset = (wStrNum%SYS_STR_NUM_PER_SEC)*(SYS_STR_MAX_WORDS+1);
- // bSector=(wOffset>>9);
- // wOffset=(wOffset&0x1FF);
- NandReadPhySec(gxwStringTable+wSector,1,SRAM_FONT_ADDR);
- for(bI=0;bI<bLen;bI++)
- gxbStringBuffer[bI]=gxbFontData[bI+wOffset+1];
- if((gxbLangueType==LANGUAGE_TYPE_HEB)||(gxbLangueType==LANGUAGE_TYPE_ARA))
- {
- ;
- }
- //tne 2005/08/03
- //System string code type (Unicode or ASCII)
- switch(gxbLangueType)
- {
- default:
- gxfSourceUnicode=STRING_TYPE_ASCII;
- break;
- //case ??
- // gxfSourceUnicode=STRING_TYPE_UNICODE;
- }
- //gxfSourceUnicode = cbSysStrCodeType[gxbLangueType];
- //use bSector to keep string len for return
- wSector=StrStrAnsiLen(gxbStringBuffer,bLen);
- if(bColStart==LCD_AUTO_CENTER_COL)
- StrShowString(gxbStringBuffer,LcdCenterColumn(wSector),bRowStart,bLen);
- else
- StrShowString(gxbStringBuffer,bColStart,bRowStart,bLen);
- gxfSourceUnicode = STRING_TYPE_ASCII;
- return wSector;
- #undef wOffset
- #undef bLen
- }
- #endif
- #endif
- #if((_PM_PLAY_|_PM_SLS_)&!_PM_PLAY_PRC_) //tne 2006/02/24
- //Check last cut word for CJK (Big5,GB,JIS...), If a CJK word was cut, return FALSE
- BOOL LcdChkCjkCutWord(PBYTE pbString, BYTE bLen)
- {
- BYTE bI;
- if( (gxbLangueType==LANGUAGE_TYPE_TW) ||
- (gxbLangueType==LANGUAGE_TYPE_CN) ||
- (gxbLangueType==LANGUAGE_TYPE_JP) ||
- (gxbLangueType==LANGUAGE_TYPE_KS) )
- {
- bI=0;
- while(bI<bLen)
- {
- if(pbString[bI]<0x80)
- bI++;
- else
- bI+=2;
- }
- if(bI>=(bLen+1)) //last word was cut
- return FALSE;
- //pbString[bLen-1]=' ';
- }
- return TRUE;
- }
- #endif
- #if(_PM_PLAY_&UI_DISP_DIR_NAME&!_PM_MENU_)
- /*--------------------------------------------------------------------------
- Description:
- Display dir-name
- Arguments:
- Global arguments:
- gxbDispDirNameBuf
- Returns:
- --------------------------------------------------------------------------*/
- //CWORD cwIconDispDir[]={ICON_ROOT_DIR};
- API void LcdShowDirName(void) large
- {
- //LcdCopyShortFileName
- /*
- LcdClearBlock(6,0,2,MAX_COLNUM+1);
- LcdShowSysFont(cwIconDispDir,6,0,1);
- if(gxbDispDirNameBuf[1]==0) //Root
- { LcdShowSysString(SYS_STR_ROOT_DIR,6,16); }
- else
- {
- gxfSourceUnicode=gxbDispDirNameBuf[0];
- if(gxfSourceUnicode==STRING_TYPE_ASCII) //short file name
- {
- LcdCopyShortFileName(gxbDispDirNameBuf+2);
- LcdShowString(gxbLcdShowFileName+2,6,16,gxbLcdShowFileName[1]);
- }
- else
- { LcdShowString(gxbDispDirNameBuf+2,6,16,gxbDispDirNameBuf[1]); }
- }
- */
- ;
- }
- #endif