Beispiel #1
0
static void win_tpsrch_mode_init(void)
{
	CONTAINER* win = &g_win_tpsrch_set;
	CONTAINER* mode_item = &tpsrch_item0;
	CONTAINER* item1 = &tpsrch_item1;
	CONTAINER* item2 = &tpsrch_item2;
	CONTAINER* item3 = &tpsrch_item3;
	TEXT_FIELD* title = &tpsrch_title;
	TEXT_FIELD* ok_btn = &tpsrch_btntxt_ok;
	TEXT_FIELD* cancel_btn = &tpsrch_btntxt_cancel;

#ifdef PID_SEARCH_SUPPORT
	OSD_SetObjpNext(title,mode_item);
	item1->head.bUpID = mode_item->head.bID;
#else
	OSD_SetMultiselSel(&tpsrch_sel0, NORMAL_SRCH);
	OSD_SetObjpNext(title,item1);
	item1->head.bUpID = mode_item->head.bUpID;
/*
	OSD_MoveObject(item1,0, -(CON_H + CON_GAP)/2, TRUE);
	OSD_MoveObject(item2,0, -(CON_H + CON_GAP)/2, TRUE);
	OSD_MoveObject(item3,0, -(CON_H + CON_GAP)/2, TRUE);
*/
	OSD_MoveObject(item1,0, -(CON_H + CON_GAP), TRUE);
	OSD_MoveObject(item2,0, -(CON_H + CON_GAP), TRUE);
	OSD_MoveObject(item3,0, -(CON_H + CON_GAP), TRUE);
    OSD_MoveObject(ok_btn,0, -(CON_H + CON_GAP), TRUE);
    OSD_MoveObject(cancel_btn,0, -(CON_H + CON_GAP), TRUE); 
	ok_btn->head.bDownID = item1->head.bID;
	cancel_btn->head.bDownID = item1->head.bID;
#endif

}
static void win_atnsetm_load_tuner_configuration(void)
{
	CONTAINER* tuner_item= &atnsetm_item1;
	CONTAINER* win =&g_win_antenna_set_motor;
	CONTAINER* lnb_item = &atnsetm_item2;
	MULTISEL* msel;
	POBJECT_HEAD pObj;

	UINT32 i,tuner_cnt;
	UINT8 action;
	static BOOL bFirstTime = 1;

#ifdef SUPPORT_TWO_TUNER


	msel = anesetm_msels[TUNER_ID - 1];
	tuner_cnt = get_tuner_cnt();

	msel->nCount = tuner_cnt;
	if(antset_cur_tuner >= tuner_cnt)
		antset_cur_tuner = tuner_cnt - 1;
	msel->nSel = antset_cur_tuner;
	
	action = (tuner_cnt == 1)? C_ATTR_INACTIVE : C_ATTR_ACTIVE;
	OSD_SetAttr(tuner_item, action);
	pObj = OSD_GetContainerNextObj(tuner_item);
	while(pObj)
	{
		OSD_SetAttr(pObj , action);
		pObj = OSD_GetObjpNext(pObj);				
	}
	if((C_ATTR_INACTIVE == action)&&(TUNER_ID == OSD_GetContainerFocus(win)))
 		OSD_SetContainerFocus(win, LNB_ID);

	tuner_type_ids[0] = get_tuner_strid(0);
	tuner_type_ids[1] = get_tuner_strid(1);
#else
	if(bFirstTime)
	{
		OSD_SetContainerNextObj(win,lnb_item);
		lnb_item->head.bUpID = tuner_item->head.bUpID;

		pObj = (POBJECT_HEAD)lnb_item;
		OSD_MoveObject(pObj,0, -(CON_H + CON_GAP), TRUE);
		while(pObj->pNext)
		{
			pObj = pObj->pNext;
			OSD_MoveObject(pObj,0, -(CON_H + CON_GAP), TRUE);
		}
		pObj->bDownID = lnb_item->head.bID;
    	OSD_SetContainerFocus(win, LNB_ID);
	}
	bFirstTime = 0;
	
#endif
}
Beispiel #3
0
/*******************************************************************************
*	Local functions
*******************************************************************************/
static void win_input_draw_chars(void)
{
	TEXT_FIELD* txt;
	char str[10];
	INT32 i;
	UINT32 win_width=0;
	UINT32 win_left=0;
	UINT32 char_left=0;

	win_width = (CHAR_W+CHAR_GAP)*input_length+CHAR_GAP + 10;
	win_left = (OSD_MAX_WIDTH - win_width)/2 ;
	
	char_left = (win_left + 20);


	txt = &win_input_char;

	for(i=0;i<input_length;i++)
	{
		OSD_MoveObject( (POBJECT_HEAD)txt, char_left + (CHAR_W + CHAR_GAP)*i, CHAR_T, FALSE);
		if(i<input_char_cnt)
			sprintf(str,"%c",input_mask[0]);
		else
			sprintf(str,"%c",input_mask[1]);
		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);
		if(i==input_char_cnt)
			OSD_TrackObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
		else
			OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
	}	
}
Beispiel #4
0
static void sudoku_draw_cursor(UINT8 row, UINT8 col)
{
	UINT8 pos;
	UINT8 WStyle;
	
	pos = row*BOARD_COLS+col;
	WStyle = WSTL_GAMESUDOKU_CURSOR_HD;
	drawSquare(BK_X_OFFSET+col*GRID_WIDTH-2, BK_Y_OFFSET+row*GRID_WIDTH-2,\
							GRID_WIDTH+4, GRID_WIDTH+4, WStyle);
	if(pboard[pos]!=' ')
	{
		OSD_MoveObject((POBJECT_HEAD)&txt_Grid,BK_X_OFFSET+col*GRID_WIDTH,BK_Y_OFFSET+row*GRID_WIDTH,FALSE);
		OSD_SetTextFieldContent(&txt_Grid,STRING_NUMBER, (UINT32)(pboard[pos]-'0'));
		OSD_DrawObject((POBJECT_HEAD)&txt_Grid,C_UPDATE_ALL);
	}
}
Beispiel #5
0
static void win_antcnt_load_setting(void)
{
	CONTAINER* win = &g_win_antenna_connect;
	
	SYSTEM_DATA* sys_data;
	MULTISEL* msel;
	static BOOL bFirstTime = 1;

	sys_data = sys_data_get();

	/* Antenna connect */
	msel = antcnt_msels[0];
	if(sys_data->antenna_connect_type >= msel->nCount)
		sys_data->antenna_connect_type  = ANTENNA_CONNECT_SINGLE;
	msel->nSel = sys_data->antenna_connect_type;		
	
	/* LNB1 */
	msel = antcnt_msels[1];	
	if(sys_data->tuner_lnb_type[0] >= msel->nCount)
		sys_data->tuner_lnb_type[0] = LNB_FIXED;
	msel->nSel = sys_data->tuner_lnb_type[0];
		
	/* LNB2 */
	msel = antcnt_msels[2];
	if(sys_data->tuner_lnb_type[1] >= msel->nCount)
		sys_data->tuner_lnb_type[1] = LNB_FIXED;
	msel->nSel = sys_data->tuner_lnb_type[1];	

#ifdef SUPPORT_TWO_TUNER
	win_antcnt_update_lnb12_action(0);
	OSD_SetContainerFocus(win, ANTENNA_CONNECT_ID);
#else
	if(bFirstTime)
	{
		POBJECT_HEAD pObj = (POBJECT_HEAD)&antcnt_item2;
		OSD_MoveObject(pObj,0, -(CON_H + CON_GAP), TRUE);
		
		pObj->bUpID = pObj->bDownID = pObj->bID;
		pObj->pNext = NULL;
		OSD_SetContainerNextObj(win, pObj);
	}
	OSD_SetContainerFocus(win, LNB1_TYPE_ID);
	bFirstTime = 0;
	
#endif

}
Beispiel #6
0
static void show_loadinglogo(UINT8 firstpos)
{
	UINT8 i;
	UINT16 Col,Row;
	UINT16 top, left;
	PBITMAP pbitmap;
	
	for(i=firstpos; i<image_cnt_inpage; i++)
	{
		OSD_GetMtrxBoxCellLocation(&imgpreview_mbx_img, i, &Col, &Row);
		left =  MBX_IMG_L + (MBX_IMG_WIDTH+MBX_IMG_GAP)*Col;
        top = MBX_IMG_T + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row;

		pbitmap = &imgpreview_bmp_load;
		OSD_MoveObject((POBJECT_HEAD)pbitmap,left+LOAD_OFFSET_L,top+LOAD_OFFSET_T,FALSE);
		OSD_DrawObject((POBJECT_HEAD)pbitmap,C_UPDATE_ALL);
	}
}
Beispiel #7
0
static void catch_up_draw_week()
{
	TEXT_FIELD* txt;
	char str[10];
	INT32 i;

	txt = &txt_catch_up_week;

	for(i=0;i<7;i++)
	{
		OSD_MoveObject( (POBJECT_HEAD)txt, WEEK_L + WEEK_W*i, WEEK_T, FALSE);
		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)week_str[i]);
		
		if(i == cur_weekday)
			OSD_TrackObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
		else
			OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
	}	
}
Beispiel #8
0
void win_minisignal_restore()
{
	POBJECT_HEAD pObj;

	pObj = (POBJECT_HEAD)&g_win_signal;
	OSD_SetColor(pObj, WIN_SH_IDX, WIN_SH_IDX, WIN_SH_IDX, WIN_SH_IDX);
	OSD_MoveObject(pObj,W_L, W_T,FALSE);

	pObj = (POBJECT_HEAD)&sig_txt_level;
	OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);

	pObj = (POBJECT_HEAD)&sig_txt_quality;
	OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);

	pObj = (POBJECT_HEAD)&sig_txt_level_per;
	OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);

	pObj = (POBJECT_HEAD)&sig_txt_quality_per;
	OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);
}
Beispiel #9
0
/*******************************************************************************
*	Local functions
*******************************************************************************/
static void win_pin_draw_chars(void)
{
	TEXT_FIELD* txt;
	char str[10];
	INT32 i;

	txt = &g_win_pin_char;

	for(i=0;i<PIN_LENGTH;i++)
	{
		OSD_MoveObject( (POBJECT_HEAD)txt, CHAR_L + (CHAR_W + CHAR_GAP)*i, CHAR_T, FALSE);
		if(i<input_pin_char_cnt)
			sprintf(str,"%c",pin_mask[0]);
		else
			sprintf(str,"%c",pin_mask[1]);
		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);
		if(i==input_pin_char_cnt)
			OSD_TrackObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
		else
			OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
	}	
}
Beispiel #10
0
static void sudoku_draw_grid(UINT8 row, UINT8 col)
{
    UINT8 pos;
    UINT8 WStyle;

    pos = row*BOARD_COLS+col;
    if(IS_FIXED(pos))
        WStyle = WSTL_GAME_BG_FIX;
    else if((row%6<3&&col%6<3)||(row%6>=3&&col%6>=3))
        WStyle = WSTL_GAMESUDOKU_NORMAL1_HD;
    else
        WStyle = WSTL_GAMESUDOKU_NORMAL2_HD;

    drawSquare(BK_X_OFFSET+col*GRID_WIDTH-2, BK_Y_OFFSET+row*GRID_WIDTH-2,\
               GRID_WIDTH+4, GRID_WIDTH+4, WStyle);

    if(pboard[pos]!=' ')
    {
        OSD_MoveObject((POBJECT_HEAD)&txt_Grid,BK_X_OFFSET+col*GRID_WIDTH,BK_Y_OFFSET+row*GRID_WIDTH,FALSE);
        OSD_SetTextFieldContent(&txt_Grid,STRING_NUMBER, (UINT32)(pboard[pos]-'0'));
        OSD_DrawObject((POBJECT_HEAD)&txt_Grid,C_UPDATE_ALL);
    }
}
Beispiel #11
0
void win_minisignal_open_ex(POBJECT_HEAD w,UINT32 x, UINT32 y)
{
	POBJECT_HEAD pObj;
    PPROGRESS_BAR pBar;
	UINT8 level,quality,lock;
	struct nim_device* nim_dev;
  	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;	

	if(w->bType != OT_CONTAINER)
		return ;
	
	pObj = (POBJECT_HEAD)&g_win_signal;
	pObj->pRoot = w;
    //OSD_SetColor(pObj,WIN_SH_IDX,WIN_SH_IDX,WIN_SH_IDX,WIN_SH_IDX);
    
	pObj = (POBJECT_HEAD)&sig_bar_level;
	//pObj->frame.uLeft = W_L + B_L_OF;
	pObj->frame.uWidth = B_W;
    OSD_SetColor(pObj,B_BG_SH_IDX,B_BG_SH_IDX,B_BG_SH_IDX,B_BG_SH_IDX);
    pBar = (PPROGRESS_BAR)&sig_bar_level;
    pBar->wTickBg = B_MID_SH_IDX;

    
	pObj = (POBJECT_HEAD)& sig_bar_quality;
	//pObj->frame.uLeft = W_L + B_L_OF;
	pObj->frame.uWidth = B_W;
    OSD_SetColor(pObj,B_BG_SH_IDX,B_BG_SH_IDX,B_BG_SH_IDX,B_BG_SH_IDX);
    pBar = (PPROGRESS_BAR)&sig_bar_quality;
    pBar->wTickBg = B_MID_SH_IDX;

    
	pObj = (POBJECT_HEAD)&sig_txt_level;
	//pObj->frame.uLeft = W_L + TXTL_L_OF;
    OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);
    
	pObj = (POBJECT_HEAD)&sig_txt_quality;
	//pObj->frame.uLeft = W_L + TXTL_L_OF;
    OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);
    
	pObj = (POBJECT_HEAD)&sig_txt_level_per;
    OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);
    
	pObj = (POBJECT_HEAD)&sig_txt_quality_per;
    OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);
    
	pObj = (POBJECT_HEAD)&g_win_signal;
	//pObj->frame.uLeft = W_L;
	//pObj->frame.uWidth = W_W;
	OSD_SetColor(pObj, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX, TXT_SH_IDX);

    
	//OSD_MoveObject(pObj,MINI_SIGNAL_L, MINI_SIGNAL_T,FALSE);
    OSD_MoveObject(pObj,x,y,FALSE);
   	nim_get_lock(nim_dev, &lock);
	nim_get_AGC(nim_dev, &level);
	nim_get_SNR(nim_dev, &quality);
	api_Signal_Lock_LED_OnOff(lock);//-a by wangyang for Signal Lock LED onoff 2011-10-25

	dem_signal_to_display(lock,&level,&quality);	
	win_signal_set_level_quality(level,quality,lock);	
}
Beispiel #12
0
void win_signal_open_ex(POBJECT_HEAD w , UINT32 x, UINT32 y)
{
	POBJECT_HEAD pObj;
    PPROGRESS_BAR pBar;
	UINT8 level,quality,lock;
	struct nim_device* nim_dev;
  	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;	

	if(w->bType != OT_CONTAINER)
		return ;
	
	pObj = (POBJECT_HEAD)&g_win_signal;
	pObj->pRoot = w;    
    OSD_SetColor(pObj,WIN_SH_IDX_HD,WIN_SH_IDX_HD,WIN_SH_IDX_HD,WIN_SH_IDX_HD);
    
	pObj = (POBJECT_HEAD)&sig_bar_level;
	//pObj->frame.uLeft = x+B_L_OF;//W_L + B_L_OF;
	pObj->frame.uWidth = B_W;
    OSD_SetColor(pObj,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD);
    pBar = (PPROGRESS_BAR)&sig_bar_level;
    pBar->wTickBg = B_MID_SH_IDX_HD;
    //libc_printf("bar:%d,%d\n",B_BG_SH_IDX_HD,B_MID_SH_IDX_HD);
    
	pObj = (POBJECT_HEAD)& sig_bar_quality;
	//pObj->frame.uLeft = x+ B_L_OF;//W_L + B_L_OF;
	pObj->frame.uWidth = B_W;
    OSD_SetColor(pObj,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD,B_BG_SH_IDX_HD);
    pBar = (PPROGRESS_BAR)&sig_bar_quality;
    pBar->wTickBg = B_MID_SH_IDX_HD;
    
	pObj = (POBJECT_HEAD)&sig_txt_level;
	//pObj->frame.uLeft = x+TXTL_L_OF;//W_L + TXTL_L_OF;
    OSD_SetColor(pObj,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD);
    //libc_printf("txt:%d\n",TXT_SH_IDX_HD);
       
	pObj = (POBJECT_HEAD)&sig_txt_quality;
	//pObj->frame.uLeft = x + TXTL_L_OF;//W_L + TXTL_L_OF;
	OSD_SetColor(pObj,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD);

    pObj = (POBJECT_HEAD)&sig_txt_level_per;
    //pObj->frame.uLeft = x + TXTR_L_OF;//W_L + TXTL_L_OF;
    //pObj->frame.uTop = y + TXTRL_T_OF;
	OSD_SetColor(pObj,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD);

    pObj = (POBJECT_HEAD)&sig_txt_quality_per;
    //pObj->frame.uLeft = x + TXTR_L_OF;//W_L + TXTL_L_OF;
    //pObj->frame.uTop = y + TXTRQ_T_OF;
	OSD_SetColor(pObj,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD,TXT_SH_IDX_HD);
    
    
	pObj = (POBJECT_HEAD)&g_win_signal;
	//pObj->frame.uLeft = W_L;
    //pObj->frame.uTop = W_T;
	//pObj->frame.uTop = y;
	pObj->frame.uWidth = W_W;
	OSD_MoveObject(pObj,x,y,0);
   	nim_get_lock(nim_dev, &lock);
	nim_get_AGC(nim_dev, &level);
	nim_get_SNR(nim_dev, &quality);

	dem_signal_to_display(lock,&level,&quality);	
	win_signal_set_level_quality(level,quality,lock);	    
}
Beispiel #13
0
static void ci_info_init()
{
	char * tmp;
	UINT8 *tmp_buf;
	
	// init
	MEMSET(&ci_info, 0, sizeof(ci_info));
	// get menu string
	tmp_buf = (void*)(win_ci_get_tmp_buf());
	
	tmp = api_ci_get_menu_string(tmp_buf, CI_DATA_BUFFER_LEN, ci_slot);

	if(tmp != NULL)
	{
		ci_info_set_string(ci_info.name, CI_MENU_TXT_LENGTH, tmp);
	}
	else
	{
		ci_info.name[0] = '\0';
	}


	//set the window style as the difference show modal
	win_ci_info_set_colorstyle();
	if(win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL)
	{
        OSD_SetColor((POBJECT_HEAD)&g_win_ci_info,WIN_SH_IDX_SD,WIN_HL_IDX_SD,WIN_SL_IDX_SD,WIN_GRY_IDX_SD);
        OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L_SD,W_T_SD, 0);//62, 55, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, W_L_SD + 10, SPLIT_1_T_SD, 0); //62, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, W_L_SD + 10, SPLIT_2_T_SD, 0);//62, SPLIT_2_T - 1, 0);
	}
	else
	{
		OSD_SetColor((POBJECT_HEAD)&g_win_ci_info, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME);//guop
		OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L,W_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, SPLIT_1_L, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, SPLIT_1_L, SPLIT_2_T, 0);
	}
	

	/////////////////////////////////////////////////////////////////////////	
	//clear the menu
	//1. CI Title
	OSD_SetTextFieldContent(&txt_ci_info_title, STRING_UNICODE, (UINT32)"");
	//2. sub title
	ci_info_subtitle_content[0].text.pString = NULL;
	
	//3. bottom 
	OSD_SetTextFieldContent(&txt_ci_info_bottom, STRING_UNICODE, (UINT32)"");
	//4. list
	OSD_SetObjListCount(&olst_ci_info, 0);
	
	OSD_SetAttr(&sb_ci_info, C_ATTR_HIDDEN);

	//show the ci enquiry dialog
	OSD_SetObjpNext(&txt_ci_info_bottom, NULL);
	//the the windows focus to the dialog
	g_win_ci_info.FocusObjectID = 1;


}
Beispiel #14
0
static void preview_image(UINT8 mbx_idx, UINT16 image_idx)
{
	UINT16 Col, Row;
    UINT8 tv_mode;
	RECT rect_info;
	RET_CODE ret=RET_SUCCESS;
	UINT16 left, top;
	FileInfo file_node;
	char full_name[FULL_PATH_SIZE];

    UINT16  img_top, img_height, img_gap_w, img_gap_h, img_left, img_width;

    struct OSDRect osd_rect;
    OSD_GetRectOnScreen(&osd_rect);

    img_left = (MBX_IMG_L + osd_rect.uLeft) * 720/1280;
    img_width = (MBX_IMG_WIDTH)*720/1280;//+2;
    img_gap_w = MBX_IMG_GAP*720/1280;
    img_gap_h = MBX_IMG_GAP*576/720;

	OSD_GetMtrxBoxCellLocation(&imgpreview_mbx_img, mbx_idx, &Col, &Row);

	left =  MBX_IMG_L + (MBX_IMG_WIDTH+MBX_IMG_GAP)*Col;
    top = MBX_IMG_T + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row;
	OSD_MoveObject((POBJECT_HEAD)&imgpreview_bmp_load,left+LOAD_OFFSET_L,top+LOAD_OFFSET_T,FALSE);
	OSD_ClearObject((POBJECT_HEAD)&imgpreview_bmp_load,C_UPDATE_ALL);

	OSD_MoveObject((POBJECT_HEAD)&imgpreview_txt_decode,left+DEC_OFFSET_L,top+DEC_OFFSET_T,FALSE);

    tv_mode = api_video_get_tvout(); 
    
    if(TV_MODE_PAL == tv_mode || TV_MODE_720P_50 == tv_mode || TV_MODE_1080I_25 == tv_mode)
    {
    //    rect_info.top = MBX_IMG_T + OSD_STARTROW_P + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row +4;
    //    rect_info.bottom = rect_info.top + MBX_IMG_HEIGHT-8;
          
          img_top = (MBX_IMG_T + osd_rect.uTop)*576/720;
          img_height = MBX_IMG_H*576/720;
          rect_info.top = img_top + (img_height+img_gap_h)*Row + 4;
          rect_info.bottom = rect_info.top + img_height - 8;
    }
    else 
    {
    //    rect_info.top = (MBX_IMG_T + OSD_STARTROW_N + (MBX_IMG_HEIGHT+MBX_IMG_GAP)*Row)*576/480+4;
	//    rect_info.bottom = rect_info.top + MBX_IMG_HEIGHT*576/480-8;  

          img_top = (MBX_IMG_T + osd_rect.uTop)*480/720;
          img_height = MBX_IMG_H*480/720;
          rect_info.top = (img_top + (img_height + img_gap_h) * Row) * 576/480 + 4;
          rect_info.bottom = rect_info.top + img_height * 576/480 - 8;         
    }
//	rect_info.left =  OSD_STARTCOL + MBX_IMG_L + (MBX_IMG_WIDTH+MBX_IMG_GAP)*Col+4;
//	rect_info.right = rect_info.left + MBX_IMG_WIDTH-8;
    rect_info.left = img_left + (img_width + img_gap_w) * Col + 4;
    rect_info.right = rect_info.left + img_width - 8;

	get_file_from_play_list(cur_playlist_image,image_idx,&file_node);
	win_get_fullname(full_name, file_node.path, file_node.name);
	win_image_file_preview(full_name, rect_info, IMAGEDEC_MULTI_PIC);
//    api_set_vpo_dit(TRUE);
}