www.pudn.com > 8202S.rar > disp.c
/*****************************************************\
Creater: Kenny
Date : 2001/5/15 02:39PM
Description: Display menu using
\*****************************************************/
#include "global.h"
#include "osd.h"
#include "func.h"
#include "cfont.h"
#include "navdata.h"
#include "user_if.h"
#include "osdfont.h"
#include "auddrv.h" //2004AUDDRV oliver 20041004 for using audio driver purpose
//#include "audif.h"
#include "setup.h"
#include "user_init.h" // alan added : for OSD_FONT_COMPRESS
#include "stdlib.h"
#ifdef OSD_BMP
#include "osd_BmpUI.h"
#endif
#ifndef DVDRELEASE
//#define DISP_DBG 1
#endif
#ifndef DISP_DBG
#undef printf
#undef print_block
#define printf(f, a...) do {} while (0)
#define print_block(x,y) do {} while (0)
#endif
#define DISP_SLOW_DOWN 0
#define DISP_HOLD_COUNT 20
//OSD disp color definition(the color index are defined in palette_16color_setup[])
#ifdef GREY_OSD_DISP // ych 2-7-8 17:39
#define DISP_WHITE 2
#define DISP_GRAY 3
#define DISP_GBLUE 4
#define DISP_GREEN 2//8
#define DISP_YGREEN 2//9
#define DISP_ORANGE 2//10 //2-7-6 15:29
#define DISP_SHADOW 0
#elif defined(OSD_BMP_DISPLAY)
#define DISP_SHADOW 7
#ifdef DISP_REGION_BOTTOM
#define DISP_SHADOW_CDROM 0
#endif
#define DISP_FONT_GRAY 10
#define DISP_FONT_YELLOW 11
#define DISP_GBLUE 9
#define DISP_GREEN 8
#define DISP_YGREEN 11
#define DISP_ORANGE 8
#define DISP_GRAY 10
#define DISP_WHITE 10
#define DISP_LITTLE_CHAR_WIDTH 8
#elif defined(SETUP_COLOR_TYPE2) //zhangyu
#define DISP_WHITE 2
#define DISP_GRAY 3
#define DISP_GBLUE 4
#define DISP_GREEN 10// 8zhangyu
#define DISP_YGREEN 1//9
#define DISP_ORANGE 12//5
#define DISP_SHADOW 0
#else
#define DISP_WHITE 2
#define DISP_GRAY 3
#define DISP_GBLUE 4
#define DISP_GREEN 8
#define DISP_YGREEN 9
#ifdef NOSHOW_CDROM_WHEN_DISP
#define DISP_ORANGE 2
#else
#define DISP_ORANGE 5
#endif
#define DISP_SHADOW 0
#endif //GREY_OSD_DISP
#ifndef OSD_BMP_DISPLAY
//page 1
//SVCD,VCD,CDDA
#define COOK_CD 0
#if defined(SYBER_DVD)||defined(SHOW_VCD_VER_INFO) //yaowh add 04-12-17//xulf 2003-11-18
#define COOK_TRK COOK_CD+7 //6
#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_TRK COOK_CD+5+1 //5
#else
#define COOK_TRK COOK_CD+5 //5
#endif
#define COOK_TRK_VAL COOK_TRK+4 //9
#define COOK_SPK COOK_TRK_VAL+6 //15
#define COOK_PBC COOK_SPK+3 //18
#define COOK_REP COOK_PBC+4 //22
#ifdef FUSS_DVD
#define COOK_CLOCK COOK_REP+3+1+1 //27//25
#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_CLOCK COOK_REP+3-1 //25
#else
#define COOK_CLOCK COOK_REP+3 //25
#endif
#if defined(USE_COOK_TRK_6) || defined(NINTAUS_DVD)//20040210
#define COOK_CLOCK_VAL COOK_CLOCK+2+2 //27
#else//#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_CLOCK_VAL COOK_CLOCK+2 //27
#endif//#elif defined(USE_COOK_TRK_6)//20040210
//DVD
#ifdef FUSS_DVD
#define COOK_CHP COOK_TRK_VAL+5+1 //15//14
#else
//yw020909 #define COOK_CHP COOK_TRK_VAL+5 //14
#ifdef NEW_SEARCH_OSD
// YW ------- osd ---------- [Top]
// Modify 020725
#define COOK_CHP COOK_TRK_VAL+6 //14
// YW ------- osd ---------- [Bottom]
#else
#define COOK_CHP COOK_TRK_VAL+5
#endif
#endif
#define COOK_CHP_VAL COOK_CHP+4 //18
//CDROM(MP3,JPEG)
//#define COOK_SPK_MP3 COOK_TRK_VAL+8 //17
#define COOK_SPK_MP3 COOK_TRK_VAL+9 //17 TRK_VAL=xxxx/xxxx Jeff 20020503
//page 2
//#define COOK_AUDIO 0
//#define COOK_AUDIO_VAL COOK_AUDIO+3 //3
//#define COOK_AUDIO_LANG COOK_AUDIO_VAL+4 //7
//#define COOK_AUDIO_TYPE COOK_AUDIO_LANG+5 //12
//#define COOK_SUBTITLE COOK_AUDIO_TYPE+7 //19
//#define COOK_SUBTITLE_VAL COOK_SUBTITLE+3 //22
//#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+5 //26
//#define COOK_ANGLE COOK_SUBTITLE_LANG+6 //32
//#define COOK_ANGLE_VAL COOK_ANGLE+3 //35
#ifdef FUSS_DVD
#define COOK_AUDIO 0
#define COOK_AUDIO_VAL COOK_AUDIO+2 //2
#define COOK_AUDIO_TYPE COOK_AUDIO_VAL+3 //5
#define COOK_AUDIO_LANG COOK_AUDIO_TYPE+6+3 //14
#define COOK_SUBTITLE COOK_AUDIO_LANG+9-3 //20
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+2 //22
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+5 //27
#define COOK_ANGLE COOK_SUBTITLE_LANG+6 //33
#define COOK_ANGLE_VAL COOK_ANGLE+2 //35
#else
#ifdef NEW_SEARCH_OSD
#define COOK_ANGLE 14
#define COOK_ANGLE_VAL 16
#define COOK_AUDIO 5
#define COOK_AUDIO_VAL COOK_AUDIO+2
#define COOK_AUDIO_LANG COOK_AUDIO_VAL+3
#define COOK_AUDIO_TYPE COOK_AUDIO_LANG+4
#define COOK_SUBTITLE COOK_AUDIO_TYPE+9
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+2
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+5
#else // NEW_SEARCH_OSD
#define COOK_AUDIO 0
#define COOK_AUDIO_VAL COOK_AUDIO+2 //2
#define COOK_AUDIO_LANG COOK_AUDIO_VAL+3 //5
#define COOK_AUDIO_TYPE COOK_AUDIO_LANG+6 //11
#define COOK_SUBTITLE COOK_AUDIO_TYPE+9 //20
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+2 //22
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+5 //27
#define COOK_ANGLE COOK_SUBTITLE_LANG+6 //33
#define COOK_ANGLE_VAL COOK_ANGLE+2 //35
#endif
#endif
//special define
#define COOK_S_TIMER 0x1<<16
#define COOK_S_LANG 0x1<<17
#define COOK_S_MODE 0x1<<18
//Jeff 20020411
//page 3
#define COOK_MARK 0
#define COOK_MARK_VAL COOK_MARK+5 //5
//#define COOK_MARK_VAL COOK_MARK+4 //4 Jeff 20020621
#else//OSD_BMP_DISPLAY
//page 1
//SVCD,VCD,CDDA
#define COOK_CD 53
#define COOK_CDROM 77
#if defined(SYBER_DVD)
#define COOK_TRK COOK_CD+68+22
#define COOK_TRK_CDROM COOK_CDROM+68+22
#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_TRK COOK_CD+68+22
#define COOK_TRK_CDROM COOK_CDROM+68+22
#else
#define COOK_TRK COOK_CD+68+22 //COOK_CD+68+22+24-2//libing2004-11-24 12:46
//zhuyanfeng modified 02/12/2004 14:40 //to avoid the bug "dis"or"hdcd"cover with rep icon.
#define COOK_TRK_CDROM COOK_CDROM+68+22
#endif//SYBER_DVD
#define COOK_TRK_VAL COOK_TRK+2*16+6+26//libing2004-11-24 12:46
#define COOK_TRK_VAL_CDROM COOK_TRK_CDROM+2*16+6
#define COOK_SPK 404
#define COOK_SPK_CDROM 410
#define COOK_PBC COOK_REP-12-48
#define COOK_REP 350-22//350 //zhuyanfeng modified 02/12/2004 14:40 //to avoid the bug "dis"or"hdcd"cover with rep icon.
#define COOK_REP_CDROM 356
#ifdef FUSS_DVD
#define COOK_CLOCK 458
#define COOK_CLOCK_CDROM 464
#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_CLOCK 458
#define COOK_CLOCK_CDROM 464
#else
#define COOK_CLOCK 458// 458
#define COOK_CLOCK_CDROM 464
#endif//FUSS_DVD
#if defined(USE_COOK_TRK_6) || defined(NINTAUS_DVD)//20040210
#define COOK_CLOCK_VAL COOK_CLOCK+16+6
#define COOK_CLOCK_VAL_CDROM COOK_CLOCK_CDROM+16+6
#else//#elif defined(USE_COOK_TRK_6)//20040210
#define COOK_CLOCK_VAL COOK_CLOCK+16+6
#define COOK_CLOCK_VAL_CDROM COOK_CLOCK_CDROM+16+6
#endif//#elif defined(USE_COOK_TRK_6)//20040210
//DVD
#ifdef FUSS_DVD
#define COOK_CHP COOK_TRK_VAL+40+26
#else
#ifdef NEW_SEARCH_OSD
// YW ------- osd ---------- [Top]
// Modify 020725
#define COOK_CHP COOK_TRK_VAL+40+26
// YW ------- osd ---------- [Bottom]
#else
#define COOK_CHP COOK_TRK_VAL+40+26-2//libing2004-11-24 12:46
#endif
#endif
#define COOK_CHP_VAL COOK_CHP+2*16+6+28//libing2004-11-24 12:46
#define COOK_SPK_MP3 COOK_TRK_VAL+9*8 //17 TRK_VAL=xxxx/xxxx Jeff 20020503
//page 2
#ifdef FUSS_DVD
#define COOK_AUDIO COOK_CD+68+22
#define COOK_AUDIO_VAL COOK_AUDIO+30+6
#define COOK_AUDIO_TYPE 381+38+6
#define COOK_AUDIO_LANG COOK_AUDIO_VAL+6*8
#define COOK_SUBTITLE COOK_AUDIO_VAL+4*8+3*8+26
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+32+6
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+6*8
#define COOK_ANGLE COOK_AUDIO_TYPE+7*8+26
#define COOK_ANGLE_VAL COOK_ANGLE+32+6
#else
#ifdef NEW_SEARCH_OSD
#define COOK_ANGLE 507
#define COOK_ANGLE_VAL COOK_ANGLE+32+6
#define COOK_AUDIO COOK_CD+68+22
#define COOK_AUDIO_VAL COOK_AUDIO+30+6
#define COOK_AUDIO_LANG COOK_AUDIO_VAL+6*8
#define COOK_AUDIO_TYPE 381+38+6
#define COOK_SUBTITLE COOK_AUDIO_VAL+4*8+3*8+26
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+32+6
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+6*8
#else // NEW_SEARCH_OSD
#define COOK_AUDIO COOK_CD+68+22
#define COOK_AUDIO_VAL COOK_AUDIO+30+6
#define COOK_AUDIO_TYPE 381+38+6
#define COOK_AUDIO_LANG COOK_AUDIO_VAL+6*8
#define COOK_SUBTITLE COOK_AUDIO_VAL+4*8+3*8+26
#define COOK_SUBTITLE_VAL COOK_SUBTITLE+32+6
#define COOK_SUBTITLE_LANG COOK_SUBTITLE_VAL+6*8
#define COOK_ANGLE 507
#define COOK_ANGLE_VAL COOK_ANGLE+32+6
#endif
#endif
//special define
#define COOK_S_TIMER 0x1<<16
#define COOK_S_LANG 0x1<<17
#define COOK_S_MODE 0x1<<18
//Jeff 20020411
//page 3
#define COOK_MARK 0
#define COOK_MARK_VAL COOK_MARK+5 //5
//#define COOK_MARK_VAL COOK_MARK+4 //4 Jeff 20020621
#endif //OSD_BMP_DISPLAY
extern int getCDDAType();
extern void mark_UpdateOSD();
extern UINT8 DVD_check_state(void);
extern void osd_Move2OSD0(BYTE iLine);
extern void osd_ClearOSD0(BYTE iSLine, BYTE iELine);
extern UINT16 mp3_file_count(void);
extern UINT16 Is_JPEG_STATE(void);
extern void FSGUI_JpgUpdateOSD(void);
extern const UINT8 osd_cd_id[];
#ifdef REMAIN_TIME//nono 2-7-13 11:28 for fuss
extern BYTE polling_clock;//2-7-13 9:12
#endif
extern UINT32 coding_mode_now;
#ifdef DVD_AUDIO
extern UINT32 dAMG_LSN; // alan, 2002/11/13 02:12¤U¤È
#endif
UINT8 *get_lang_name(int mode);
void DispPolling(BYTE bReset);
enum {
OSD0_STATE_INIT=0,
OSD0_STATE_HIDE,
OSD0_STATE_FADE_IN,
OSD0_STATE_FULL_SHOW,
OSD0_STATE_FADE_OUT,
};
BYTE osd0_state=OSD0_STATE_INIT; //OSD0 state
BYTE osd0_show_line=0; //OSD0 show length for fade-in and fade-out(0~24)
UINT32 osd0_hold_count=0; //OSD0 hold count between fade-in and fade-out
//UINT32 osd0_slow_down=0; //OSD0 slow down factor: for fade-in and fade-out effect,
//DispPolling will increase osd0_slow_down every call
BYTE cddaType=0; //0->CDDA, 1->HDCD
#ifdef SDRAM_16Mb_Mode
UINT32 *pTopLine;
UINT32 *pBtmLine;
UINT32 *pOSD;
#define OSD_16b_BUG
#define ALIGN_32B(x) ((x+31)/32)
extern const UINT8 osd_header_offset[8];
/* =
{
ALIGN_32B(16 + 2*4),
#ifdef OSD_16b_BUG
ALIGN_32B(16 + 4*16),
#else
ALIGN_32B(16 + 2*16),
#endif
ALIGN_32B(16 + 2*256),
ALIGN_32B(16),
ALIGN_32B(16),
ALIGN_32B(16),
ALIGN_32B(16),
ALIGN_32B(16)
};*/
#define OSD_DATA_OFFSET(f) (osd_header_offset[(f)&OSD_FORMAT_MASK])
#define OBV_BASE (SDRAM_BASE + regs0->osd_base_addr*1024)
#define get_osdbuf_baseptr() ((void *)OBV_BASE)
#endif
extern UINT8 osd_temp_buf[];
#ifdef SDRAM_16Mb_Mode
void do_DispOSD0String(BYTE xStart, BYTE yStart, BYTE *pStr, BYTE fgColor, BYTE bgColor)
{
// UINT32 *buf;
UINT32 i, j, k;
BYTE *pFont, c;
UINT32 iStrLoc=0;
UINT32 iFontWidth, iFontHigh;
pTopLine = (UINT32 *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[0]+OSD_DATA_OFFSET(region[0].osd_format))*32 );
pBtmLine = (UINT32 *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[1]+OSD_DATA_OFFSET(region[0].osd_format))*32 );
//process each charactor until string ending('\0')
while ( (c = ((BYTE *)pStr)[iStrLoc]) != '\0' ) {
UINT16 curByte;
UINT32 pixel_16;
UINT32 pos;
iStrLoc++;
if (c == '\r') { //prefix characher:to use font_table2
if ( (c = ((BYTE *)pStr)[iStrLoc])=='\0' )
break;
iStrLoc++;
if ((pFont = get_font_entry(1,c))==NULL) continue;
} else {
//get current char entry
pFont = get_font_entry(0,c);
}
//start to process
pos = 2;
//get font information
iFontWidth = (int)pFont[0];
iFontHigh = (int)pFont[1];
//start to draw
for (j=0; j>12) | ((curByte & 0x0F00)>>4) | ((curByte & 0x00F0)<<4) | ((curByte & 0x000F)<<12);
pixel_16 = 0;
for (k=0; k<16; k++) {
if ( (1<>4 | (ch & 0x0F)<<4 ) ;
pixel_16 = 0;
for (k=0; k<8; k++) {
if ( (1< the string x start position, it ranges between 0 ~ 360,and the screen ranges between 0~720 pixel
* yStart --> the string y start position, it must be the even number
* *pStr --> the string
* fgColor --> the string font color
* bgColor --> the background color the string
*
* Creator : feeling
* Date : 2004-8-25
*
*/
void do_DispOSD0LittleString(UINT32 xStart, UINT32 yStart, BYTE *pStr, BYTE fgColor, BYTE bgColor)
{
#ifdef OSD_VARIABLE_TEMP_DISPLAY_BUF
osd_Draw_Bmp_Little_RegionString(xStart, yStart, pStr, fgColor, bgColor, temp_region);
return;
#endif
BYTE *buf;
BYTE *pFont, c,div=4;
UINT32 iDispLoc, iStrLoc;
int i, j, k;
int iFontWidth, iFontHigh;
#ifdef DISP_REGION_BOTTOM
UINT8 uiRegion = disp_region;
#else
UINT8 uiRegion = 0;
#endif
int iRegionWidth = region[uiRegion].osd_w;
//osd_tog_region(0, OSD_ON);
iStrLoc = 0;
buf = (BYTE *)osd_temp_buf;
iDispLoc = (yStart*iRegionWidth+xStart/2) *2;
//process each charactor until string ending('\0')
while ( (c = ((BYTE *)pStr)[iStrLoc]) != '\0' ) {
BYTE curByte;
UINT32 pixel2;
UINT32 pos;
iStrLoc++;
if (c == '\r') { //prefix characher:to use font_table2
if ( (c = ((BYTE *)pStr)[iStrLoc])=='\0' )
break;
iStrLoc++;
if ((pFont = get_font_entry(1,c))==NULL) continue;
}
else if(c>='a' && c<='z')
{
pFont=get_font_entry(0,c-'a'+0xc0);
//printf("c=%c,c=%x\n",c,c);
}
else {
//get current char entry
pFont = get_font_entry(0,c);
}
//start to process
pos = 3;
//get font information
iFontWidth = (int)pFont[0];
iFontHigh = (int)pFont[1];
//start to draw
for (j=0; j>6;
break;
case 1:
curByte=(c&0x30)>>4;
break;
case 2:
curByte=(c&0x0c)>>2;
break;
case 3:
curByte=(c&0x03);
break;
}
for (k=0; k<2; k++) //two pixel every time
{
if ( (1< one dot
buf[(iDispLoc+i)/2] = pixel2;
// printf("pTopLine=%x,pTopLine[%x]=%x\n",pTopLine+iDispLoc+i,iDispLoc+i,pTopLine[iDispLoc+i]);
}
iDispLoc += iRegionWidth;
if(iFontWidth%8)
pos=pos+iFontWidth/8+1;
else
pos=pos+iFontWidth/8;
}//for charactor heigh
//move to next character and move up to first line of this string
iDispLoc = iDispLoc + (iFontWidth/2) - (iRegionWidth*iFontHigh);
} // end of while ( (c=((BYTE *)str)[unFontLoc])!='\0' )
}//end do_DispOSD0LittleString()
/*
* Description;
* Draw a 16* 24 font size string in display osd0
*
* INPUT:
* xStart --> the string x start position, it ranges between 0 ~ 720
* yStart --> the string y start position, it must be the even number
* *pStr --> the string
* fgColor --> the string font color
* bgColor --> the background color the string
*
* Creator : feeling
* Date : 2004-8-19
*
*/
void do_DispOSD0String(UINT32 xStart, UINT32 yStart, BYTE *pStr, BYTE fgColor, BYTE bgColor)
{
#ifdef OSD_VARIABLE_TEMP_DISPLAY_BUF
osd_Draw_Bmp_RegionString(xStart, yStart, pStr, fgColor, bgColor, temp_region);
return;
#endif
BYTE *buf;
BYTE *pFont, c,div=4;
UINT32 iDispLoc, iStrLoc;
int i, j, k;
int iFontWidth, iFontHigh;
#ifdef DISP_REGION_BOTTOM
UINT8 uiRegion = disp_region;
#else
UINT8 uiRegion = 0;
#endif
int iRegionWidth = region[uiRegion].osd_w;
//osd_tog_region(0, OSD_ON);
iStrLoc = 0;
buf = (BYTE *)osd_temp_buf;
iDispLoc = (yStart*iRegionWidth+xStart/2);
//process each charactor until string ending('\0')
while ( (c = ((BYTE *)pStr)[iStrLoc]) != '\0' ) {
BYTE curByte;
UINT32 pixel2;
UINT32 pos;
iStrLoc++;
if (c == '\r') { //prefix characher:to use font_table2
if ( (c = ((BYTE *)pStr)[iStrLoc])=='\0' )
break;
iStrLoc++;
if ((pFont = get_font_entry(1,c))==NULL) continue;
}
else if(c>='a' && c<='z')
{
pFont=get_font_entry(0,c-'a'+0xc0);
//printf("c=%c,c=%x\n",c,c);
}
else {
//get current char entry
pFont = get_font_entry(0,c);
}
//start to process
pos = 3;
//get font information
iFontWidth = (int)pFont[0];
iFontHigh = (int)pFont[1];
//start to draw
for (j=0; j>6;
break;
case 1:
curByte=(c&0x30)>>4;
break;
case 2:
curByte=(c&0x0c)>>2;
break;
case 3:
curByte=(c&0x03);
break;
}
for (k=0; k<2; k++) //two pixel every time
{
if ( (1<>6) | ((ch & 0x30)>>2);
pixel4 = 0;
for (k=0; k<4; k++) {
if ( (1<>6) | ((ch & 0x30)>>2) | ((ch & 0x0c)<<2) | ((ch & 0x03)<<6);
pixel8 = 0;
for (k=0; k<8; k++) {
if ( (1< force osd0_state to INIT state
//
void DispPolling(BYTE bReset)
{
#define down_offset 4
#define up_offset 2
#ifdef DISP_REGION_BOTTOM
UINT8 uiRegion = OSD_GetTrueDispRegion();
#ifdef OSD_VARIABLE_TEMP_DISPLAY_BUF
osd_tog_region(temp_region,OSD_OFF);
#endif
#else
UINT8 uiRegion = 0;
#endif//DISP_REGION_BOTTOM
// printf("osd0_state=%d\n",osd0_state);
if(bReset==2)
{
if( (osd0_state!=OSD0_STATE_FADE_IN)&&(osd0_state!=OSD0_STATE_FADE_OUT) )
return;
}
if (bReset==1) {
osd0_state = OSD0_STATE_INIT;
}
#ifdef SDRAM_16Mb_Mode
if (bReset==3)
{
osd0_state = OSD0_STATE_FADE_IN;
osd0_show_line = region[uiRegion].osd_h;
osd0_hold_count = 0;
}
#endif
switch (osd0_state) {
case OSD0_STATE_INIT:
osd0_show_line = 0;
DispCookOSD0(1);
//DispCookOSD0(1.. will change osd0_state to OSD0_STATE_HIDE
break;
case OSD0_STATE_HIDE:
osd0_show_line = 0;
osd0_state = OSD0_STATE_FADE_IN;
break;
case OSD0_STATE_FADE_IN:
// osd0_slow_down++;
// if (osd0_slow_down > DISP_SLOW_DOWN)
{
// osd0_slow_down = 0;
if (osd0_show_line < region[uiRegion].osd_h) {
osd0_show_line += down_offset;
} else {
osd0_show_line = region[uiRegion].osd_h;
osd0_hold_count = 0;
osd0_state = OSD0_STATE_FULL_SHOW;
}
osd_Move2OSD0(osd0_show_line);
}
break;
case OSD0_STATE_FULL_SHOW:
osd_Move2OSD0(osd0_show_line);
break;
case OSD0_STATE_FADE_OUT:
{
//osd0_slow_down = 0;
if (osd0_show_line > 1) {
osd0_show_line -= up_offset;
} else {
osd0_show_line = 0;
osd0_hold_count = 0;
osd0_state = OSD0_STATE_HIDE;
//t_disp = 0;
}
//osd_ClearOSD0(osd0_show_line, osd0_show_line+up_offset);
osd_Move2OSD0(osd0_show_line);
#ifdef SDRAM_16Mb_Mode
osd_tog_region(0,OSD_OFF);
#endif
}
break;
} //switch (osd0_state)
}
void DispFadeIn()
{
//printf("DispFadeIn:osd0_state=%d\n", osd0_state);
if(Is_JPEG_STATE())//for jpeg fadeIn
{
#ifdef OSD_BMP_DISPLAY
osd0_show_line = region[disp_region].osd_h;
#else
osd0_show_line = region[0].osd_h;
#endif
osd0_state =OSD0_STATE_FULL_SHOW;
FSGUI_JpgUpdateOSD();
}
else
if( (osd0_state==OSD0_STATE_INIT)||(osd0_state==OSD0_STATE_HIDE) )
{
DispPolling(1);
osd0_state = OSD0_STATE_FADE_IN;
}
}
void DispFadeOut()
{
#ifdef MP3_NO_DISPLAY //2004-4-22 04:42ÕÅÓîP
if(Is_MP3_STATE())
{
FSGUI_FillFrameBuf(25,256,160,20,BK_GROUNDY, BK_GROUNDCRCB );
FSGUI_FillFrameBuf(260,256,12,12,BK_GROUNDY, BK_GROUNDCRCB );// caohui 2004-4-22 21:00
}
#endif
//printf("DispFadeOut:osd0_state=%d\n", osd0_state);
t_disp = 0;
if(Is_JPEG_STATE())//for jpeg fadeOut
{
osd0_show_line = 0;
osd0_state =OSD0_STATE_FADE_OUT;
DispPolling(0);
}
else
if(osd0_state==OSD0_STATE_FULL_SHOW)
{
// osd0_slow_down = 0;
osd0_state = OSD0_STATE_FADE_OUT;
}
//maoyong for avoid bar twinkle when KEYBOARD show out. 2004.02.25
#ifdef VIRTUAL_KEYBOARD
osd_tog_region(0,OSD_OFF);
#endif
//feeling for avoid bar twinkle when Thumbnail
#ifdef OSD_BMP_DISPLAY
osd_tog_region(disp_region,OSD_OFF);
#endif
}