📄 osd_draw_program.c
字号:
/******************************************************************************
* Filename : OSD_draw_program_BASIC.c
* Start : 2003. 8. 25
* By : Hongsik Park
* Contact : hongsik7.park@samsung.com
* Description :
* For another scheme of OSD resource manageent.
*
******************************************************************************
*/
#ifndef _OSD_DRAW_PROGRAM_BASIC_C_
#define _OSD_DRAW_PROGRAM_BASIC_C_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Basic_typedefs.h"
#include "CUSTOM/Custom_option.h"
#include "OS/OS_abstract.h"
#include "API/SH_types.h"
#include "API/SH_api.h"
#include "COMMON/Common.h"
#include "MAIN/Global_state.h"
#include "DRIVER/FS/Fs_api.h"
#include "CUSTOM/Osd_types.h"
#include "CUSTOM/Key_handler_setup.h"
#include "MAIN/Appl_types.h"
#include "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"
#include "MAIN/Uop_msg.h"
#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"
#include "CUSTOM/Firm_update.h"
#include "MAIN/MMP/Mmp_common.h"
#include "MAIN/MMP/Mmp_predef.h"
#include "DRIVER/FS/Fs_api.h"
#include "Osd_util.h"
#include "Osd_draw.h"
#include "Osd_data.h"
#include "CUSTOM/Strings_ext.h"
#include "Osd_draw_program.h"
extern CHAR PgmSetMediaTypeDispStrNum(BOOL child);
/******************************************************************************
* Function name : SetNumberString
* Arguments :
* IN CHAR num,CHAR *array
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID SetNumberString(CHAR num,CHAR *array)
{
CHAR str[5],str1[5];
strcpy(str,"%0");
sprintf(str1,"%01d",num);
strcat(str,str1);
strcat(str,"d");
strcpy(array,str);
}
AttachedFuncExt PgmFuncExtension = NULL;
PgmCtrlEdit_st edit_func[] = {
{OwGfxPgmDrawParentNum,OwGfxPgmDrawParentDummy,OwGfxPgmHLParentItem,OwGfxPgmUnHLParentItem},
{OwGfxPgmDrawChildNum,OwGfxPgmDrawChildDummy,OwGfxPgmHLChildItem,OwGfxPgmUnHLChildItem}
};
PgmCtrlArea_st area_func[] = {
{OwGfxPgmHLBtn,OwGfxPgmUnHLBtn},
{OwGfxPgmHL,OwGfxPgmUnHL},
};
/******************************************************************************
* Function name : OwDrawProgram
* Arguments :
* IN VOID
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwDrawProgram(VOID)
{
BYTE2 i = 0 ;
CHAR *str[][3] = {{"DVD","Tt","Chp"},
{"VCD","Trk","No."},
{"MMN","Dir","File"},
};
CHAR str_temp[20];
BYTE2 x_offset,y_offset;
S5H_App_t app_type = S5H_GetAppType() ;
BYTE2 tmp_value,y,x;
y = PGM_Y;
x = PGM_X;
OwGetOsdCenterPosition( &x,&y, PGM_W, PGM_H );
SH_GfxSetCanvas(SH_CANV1, x, y, PGM_W, PGM_H);
SH_GfxDrawRec( SH_CANV1, 0 , 0 , PGM_W, PGM_H, OSD_COLOR_BORDER );
SH_GfxDrawRec( SH_CANV1, 3, 51 , PGM_W-6, PGM_H-6-48, OSD_COLOR_TRANS_BG );
SH_GfxDrawRec( SH_CANV1, 3, 3, PGM_W-6, PGM_TOP_H, OSD_COLOR_TRANS_BG );
SH_GfxDrawRec( SH_CANV1, PGM_FILL2_X-PGM_X, PGM_SEL_Y-PGM_Y, PGM_FILL_W/2,34, COLOR_BLUE );
SH_GfxDrawRec( SH_CANV1, PGM_FILL2_X+PGM_FILL_W/2-PGM_X, PGM_SEL_Y-PGM_Y, PGM_FILL_W/2,34, COLOR_GRAY_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_SEL_X-PGM_X, PGM_SEL_Y-PGM_Y, PGM_SEL_W, PGM_SEL_H, COLOR_BLUE_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_SEL_X+PGM_SEL_W+PGM_SEL_GAP-PGM_X, PGM_SEL_Y-PGM_Y, PGM_SEL_W, PGM_SEL_H, COLOR_BLUE_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_LINE1_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_LINE2_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_LINE3_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
SH_GfxDrawRec( SH_CANV1, PGM_LINE4_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
SH_GfxDrawImage( SH_CANV1, GetDiscImgID() , 5, 8 );
SH_GfxDrawImage( SH_CANV1, IMG_EXT_BOOK , 5, 23 );
if (GetDiscState() == CD_DA && GetMixedCdState() == FALSE)
{
sprintf(str_temp, "%s - %s ", "CD" ,gpProgramList[MENU_LANG]);
}
else
{
sprintf(str_temp, "%s - %s ", str[app_type-1][0],gpProgramList[MENU_LANG]);
}
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_TOP_FIX_TXT_X-PGM_X , PGM_TOP_TXT_Y-PGM_Y, OSD_COLOR_CURSOR_HIGHLIGHT );
strcpy(str_temp, str[app_type-1][1]);
OwGetStrCenterPos(str_temp , PGM_FILL_W/2 , 34 , &x_offset , &y_offset );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL2_X-PGM_X+x_offset, PGM_SEL_Y+2-PGM_Y , NULL );
strcpy(str_temp, str[app_type-1][2]);
OwGetStrCenterPos(str_temp , PGM_FILL_W/2 , 34 , &x_offset , &y_offset );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL2_X+PGM_FILL_W/2-PGM_X+x_offset, PGM_SEL_Y+2-PGM_Y , NULL );
strcpy(str_temp, "Play");
OwGetStrCenterPos(str_temp , PGM_SEL_W-40, 30 , &x_offset , &y_offset );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_SEL_X+20-PGM_X+x_offset, PGM_SEL_Y+3-PGM_Y , NULL );
strcpy(str_temp, "Clear All");
OwGetStrCenterPos(str_temp , PGM_SEL_W-20, 30 , &x_offset , &y_offset );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_SEL_X+PGM_SEL_W+PGM_SEL_GAP+10-PGM_X+ x_offset, PGM_SEL_Y+3-PGM_Y , NULL );
strcpy( str_temp , gpMax[MENU_LANG] );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL1_X+MAX_POS-PGM_X, PGM_TOP_TXT_Y+1-PGM_Y , NULL );
strcpy( str_temp , gpTotal[MENU_LANG] );
SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL1_X+10-PGM_X, PGM_SEL_Y+2-PGM_Y , NULL );
for(i = 0 ; i < 20/*MAX_PROGRAM_NUM*/; i++)
{
tmp_value = GetPgmInputValue( i, PGM_EDIT_PARENT);
if(app_type == APP_VCD)
tmp_value = i + 1;
if (tmp_value == 0xFFFF)
OwGfxPgmDrawParentDummy(i,NULL);
else
OwGfxPgmDrawParentNum(i, tmp_value);
tmp_value = GetPgmInputValue(i, PGM_EDIT_CHILD);
if (tmp_value == 0xFFFF)
OwGfxPgmDrawChildDummy(i,NULL);
else
OwGfxPgmDrawChildNum(i, tmp_value);
}
OwGfxPgmHLChange();
OwGfxPgmDrawMaxNum();
OwGfxPgmDrawTotalNum();
SH_GfxShowCanvas(SH_CANV1, TRUE);
}
/******************************************************************************
* Function name : OwGfxPgmHLorUnHLItemDraw
* Arguments :
* IN OSD_WndHandlerComm_st *wnd,BOOL hl
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmHLorUnHLItemDraw(BYTE2 x_pos, BYTE2 y_pos,BYTE2 width,BYTE2 height , BOOL hl )
{
BYTE1 key_color,color,font_key_color,font_color;
if(hl)
{
color = OSD_SETUP_COLOR_FONT_HIGHLIGHT;
key_color = COLOR_BLUE_NORM;
font_key_color= OSD_SETUP_COLOR_FONT_DEFAULT;
font_color = OSD_SETUP_COLOR_FONT_HIGHLIGHT;
}
else
{
color = COLOR_BLUE_NORM;
key_color = OSD_SETUP_COLOR_FONT_HIGHLIGHT;
font_key_color= OSD_SETUP_COLOR_FONT_HIGHLIGHT;
font_color = OSD_SETUP_COLOR_FONT_DEFAULT;
}
SH_GfxChgAreaColor( SH_CANV1 , x_pos , y_pos ,width , height , font_key_color ,font_color );
SH_GfxChgAreaColor( SH_CANV1 , x_pos-3 , y_pos-3 ,width+6 , height+6 , key_color , color );
}
/******************************************************************************
* Function name : OwGfxPgmHLItem
* Arguments :
* IN OSD_WndHandlerComm_st *wnd
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmHLItem(BYTE2 x_pos, BYTE2 y_pos,BYTE2 width,BYTE2 height )
{
OwGfxPgmHLorUnHLItemDraw(x_pos, y_pos , width , height ,TRUE );
}
/******************************************************************************
* Function name : OwGfxPgmUnHLItem
* Arguments :
* IN OSD_WndHandlerComm_st *wnd
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmUnHLItem(BYTE2 x_pos, BYTE2 y_pos,BYTE2 width,BYTE2 height )
{
OwGfxPgmHLorUnHLItemDraw(x_pos, y_pos , width , height,FALSE);
}
/******************************************************************************
* Function name : OwGfxPgmDrawSetSelItemTrk
* Arguments :
* IN BYTE1 num,char *str
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmDrawSetSelItemTrk(BYTE1 num,char *str)
{
OSD_Rectangle_st winrect_bg,winrect_str ;
CHAR str_temp[5];
BYTE2 x_offset,y_offset;
winrect_bg.x_pos = PGM_ITEM_GAP+PGM_COLUME_GAP+(PGM_COLUME_GAP + PGM_COLUME_W)*(num/5) ;
winrect_bg.y_pos = PGM_FILL_Y+19+(PGM_ITEM_H+17)*(num%5)-PGM_Y;
winrect_str.x_pos = winrect_bg.x_pos;
winrect_str.y_pos = winrect_bg.y_pos;
if(*str != NULL)
{
strcpy(str_temp , str);
OwGetStrCenterPos(str_temp , PGM_ITEM_TRK_W, PGM_ITEM_H , &x_offset , &y_offset );
SH_GfxDrawRec(SH_CANV1, winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_TRK_W, PGM_ITEM_H , COLOR_BLUE );
SH_GfxDrawStr( SH_CANV1 , str_temp , winrect_str.x_pos + x_offset , winrect_str.y_pos , NULL );
}
else
{
if(PgmFuncExtension != NULL)
PgmFuncExtension(winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_TRK_W, PGM_ITEM_H );
}
}
/******************************************************************************
* Function name : OwGfxPgmDrawSetSelItemChp
* Arguments :
* IN BYTE1 num,char *str
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmDrawSetSelItemChp(BYTE1 num,char *str)
{
OSD_Rectangle_st winrect_bg,winrect_str ;
CHAR str_temp[5];
BYTE2 x_offset,y_offset;
winrect_bg.x_pos = PGM_ITEM_GAP + PGM_ITEM_TRK_W + PGM_TRK_CHP_GAP +PGM_COLUME_GAP+(PGM_COLUME_GAP + PGM_COLUME_W)*(num/5) ;
winrect_bg.y_pos = PGM_FILL_Y+19+(PGM_ITEM_H+17)*(num%5)-PGM_Y;
winrect_str.x_pos = winrect_bg.x_pos;
winrect_str.y_pos = winrect_bg.y_pos;
if(*str != NULL)
{
strcpy(str_temp , str);
OwGetStrCenterPos(str_temp , PGM_ITEM_CHP_W, PGM_ITEM_H , &x_offset , &y_offset );
SH_GfxDrawRec(SH_CANV1 , winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_CHP_W, PGM_ITEM_H , COLOR_BLUE );
SH_GfxDrawStr( SH_CANV1 , str_temp , winrect_str.x_pos + x_offset , winrect_str.y_pos , NULL );
}
else
{
if( PgmFuncExtension != NULL )
PgmFuncExtension(winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_CHP_W, PGM_ITEM_H );
}
}
/******************************************************************************
* Function name : OwGfxPgmDrawParentDummy
* Arguments :
* IN BYTE1 index,BYTE2 num
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
* Revision : 1.0
******************************************************************************
*/
VOID OwGfxPgmDrawParentDummy(BYTE1 index,BYTE2 num)
{
char str[5];
UCHAR i = PgmSetMediaTypeDispStrNum(FALSE);
strcpy((char*)str, "");
while(i--)
{
strcat((char*)str, "-");
}
OwGfxPgmDrawSetSelItemTrk(index,str);
}
/******************************************************************************
* Function name : OwGfxPgmDrawChildDummy
* Arguments :
* IN BYTE1 index,BYTE2 num
*
* OUT
* I/O
* Return : VOID
*
* By : QQ
* Description :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -