📄 slideosd.c
字号:
#include "MediaPlayerOutlook.h"
#include "MediaPlayerOutlookDef.h"
#include "newres.h"
#include "ui_sub.h" // UI_CORE_STOP, ...
#include "fileopen.h" // C_DIR, C_MP3FILE, ...
#ifdef _MPLAY_ENABLE_
/***************************MPA_LowLevel.c****************************
*
* Copyright (C) 2003 by ALi Corporation. All Rights Reserved.
*
* File: MPA_LowLevel.c
*
* Contents:
* To draw auxiliary part of Media Player's Outlook -- Implementation
* mainly, it is for slide show
*
* History:
* Date By Reason Ver.
* ====================================
* 2003/10 Gordon J.H. CHEN Create v2.6
*
***********************************************************************/
/*********************************************************************
*********************************************************************/
//Media Player Auxiliary Attribute
//private:
HDC gAUXdc;
static DEVMODE gAUXdevMode;
extern tPEOprParam PEOprParam; // used to identify pal or ntsc
/*********************************************************************
*********************************************************************/
//Media Player Auxiliary Operation
//public: shared as interface to friends
// DC ...
void InitAUXDC();
void CloseAUXDC();
// Draw ...
void DrawProgressBar(tHighlightType iHighlight);
void DrawProgressItem(int iItemNo, tHighlightType iHighlight);
void DrawSlideShowHelp(BOOL bNeedDirectIcon, tHighlightType iHightlight);
void DrawSlideShowBar(tHighlightType iHightlight);
void DrawSlideShowNum(WORD iCurPic, WORD iTotalPic, tHighlightType iHightlight);
void DrawPlayModeOSD(WORD guiMode, tHighlightType iHighlight);
/*********************************************************************
*********************************************************************/
// And now, implementation begins ...
/********************************************************************/
// DC ...
void InitAUXDC()
{
if( OSD_Setup_Parameter.bTVOutPut==C_PAL
||(OSD_Setup_Parameter.bTVOutPut==C_AUTO && PEOprParam.TVSys_Src == C_PAL) )
GUI_SetDevMode(&gAUXdevMode, CANVAS_WIDTH, CANVAS_HEIGHT+CANVAS_PAL_ADJUST);
else //NTSC
GUI_SetDevMode(&gAUXdevMode, CANVAS_WIDTH, CANVAS_HEIGHT);
GUI_InitializeDC(&gAUXdc, &gAUXdevMode, 8); // mix ration range from 0 to 16; LA spec is 65%.
}
/********************************************************************/
// DC ...
void CloseAUXDC()
{
GUI_TerminizeDC(&gAUXdc);
}
/********************************************************************/
// Draw/Clear Progress Bar for Slide Show and Mix Play
void DrawProgressBar(tHighlightType iHighlight)
{
RECT rectProgress={PROGRESS_LEFT, PROGRESS_TOP, PROGRESS_RIGHT, PROGRESS_BOTTOM};
COLORREF clBk, clClear;
switch(iHighlight)
{
case HIGHLIGHT_FOCUS:
// break;
case HIGHLIGHT_NORMAL:
clBk=GetColorInDef256Palette(PROGRESS_CLR_INDEX);
GUI_CreateButtonControl(gAUXdc, &rectProgress, clBk, clBk, clBk, clBk, "", NORMAL_STRING, DT_LEFT, 0);
break;
case HIGHLIGHT_UNFOCUS:
// break;
case HIGHLIGHT_GRAY:
// break;
default:
clClear=GetColorInDef256Palette(255);
GUI_CreateButtonControl2(gAUXdc, &rectProgress, clClear, clClear, clClear, clClear, "", NORMAL_STRING, DT_LEFT, 0);
break;
}
}
/********************************************************************/
// Draw/Clear Progress Item for Slide Show and Mix Play
void DrawProgressItem(int iItemNo, tHighlightType iHighlight)
{
RECT rectProgressItem={PROGRESSITEM_LEFT, PROGRESSITEM_TOP, PROGRESSITEM_RIGHT, PROGRESSITEM_BOTTOM};
COLORREF clBk, clText;
clBk=GetColorInDef256Palette(PROGRESS_CLR_INDEX);
rectProgressItem.left=PROGRESSITEM_LEFT+((PROGRESSITEM_RIGHT-PROGRESSITEM_LEFT)/PROGRESS_MAX_ITEM_COUNT)*iItemNo;
rectProgressItem.right=rectProgressItem.left+PROGRESSITEM_WIDTH;
switch(iHighlight)
{
case HIGHLIGHT_FOCUS:
// break;
case HIGHLIGHT_NORMAL:
clText=GetColorInDef256Palette(PROGRESSITEM_CLR_INDEX);
// GUI_CreateCycle(gAUXdc, clText, clText, (rectProgressItem.left+rectProgressItem.right)/2, (rectProgressItem.top+rectProgressItem.bottom)/2, PROGRESSITEM_RADIUS);
GUI_CreateButtonControl(gAUXdc, &rectProgressItem, clText, clText, clText, clText, "", NORMAL_STRING, DT_LEFT, 0);
break;
case HIGHLIGHT_UNFOCUS:
// break;
case HIGHLIGHT_GRAY:
// break;
default:
GUI_CreateButtonControl(gAUXdc, &rectProgressItem, clBk, clBk, clBk, clBk, "", NORMAL_STRING, DT_LEFT, 0);
break;
}
}
/********************************************************************/
// Draw Slide Show Bar (Static)
void DrawSlideShowBar(tHighlightType iHighlight)
{
static BOOL bCleared=FALSE;
RECT rectSlideHelp={SLIDEHELP_LEFT, SLIDEHELP_TOP, SLIDEHELP_RIGHT, SLIDEHELP_BOTTOM};
COLORREF clBk, clBkTop, clBkBot, clClear;
if( OSD_Setup_Parameter.bTVOutPut==C_PAL
||(OSD_Setup_Parameter.bTVOutPut==C_AUTO && GetDefSetupPara(GETCMD_TVOUTPUT)) )
{
rectSlideHelp.top+=CANVAS_PAL_ADJUST;
rectSlideHelp.bottom+=CANVAS_PAL_ADJUST;
}
switch(iHighlight)
{
case HIGHLIGHT_FOCUS:
// break;
case HIGHLIGHT_NORMAL:
bCleared=FALSE;
clBk=GetColorInDef256Palette(SLIDEHELP_CLR_INDEX);
clBkTop=GetColorInDef256Palette(249);
clBkBot=GetColorInDef256Palette(231);
// can not using memory dc, size too big
GUI_CreateButtonControl2(gAUXdc, &rectSlideHelp, clBk, clBkTop, clBkBot, clBk, "", NORMAL_STRING, DT_LEFT, 0);
break;
case HIGHLIGHT_UNFOCUS:
// break;
case HIGHLIGHT_GRAY:
// break;
default:
if(!bCleared)
{
clClear=GetColorInDef256Palette(255);
GUI_CreateButtonControl2(gAUXdc, &rectSlideHelp, clClear, clClear, clClear, clClear, "", NORMAL_STRING, DT_LEFT, 0);
bCleared=TRUE;
}
break;
}
}
/********************************************************************/
// Draw Slide Show Hint (Dynamic)
char SLIDE_SHOW_HELP_HINT[3][BUF_MAX]=
{
{
#if( _JPG_ROTATION_MODE==_JPG_ROTATION_ENABLE)
0xe0, 0x15, // C
0x00, 0x20, // blank
0xe0, 0x37, 0x00, 0x39, 0x00, 0x30, 0xe0, 0x39, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
0xe0, 0x16, // D
0x00, 0x20, // blank
0xe0, 0x38, 0x00, 0x39, 0x00, 0x30, 0xe0, 0x39, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
#else
0x00, 0x20, // C
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
0x00, 0x20, // D
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
#endif
0xe0, 0x35, // ^
0x00, 0x20, // blank
0x00, 0x50, 0x00, 0x72, 0x00, 0x65, 0x00, 0x76, // prev
0x00, 0x20, 0x00, 0x20, // blank blank
0xe0, 0x36, // V
0x00, 0x20, // blank
0x00, 0x4e, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, // next
0x00, 0x00 // \0
},
{
0x00, 0x20, // C
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
0x00, 0x20, // D
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 90
0x00, 0x20, 0x00, 0x20, // blank blank
0x00, 0x20, // ^
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // prev
0x00, 0x20, 0x00, 0x20, // blank blank
0x00, 0x20, // V
0x00, 0x20, // blank
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // next
0x00, 0x00 // \0
},
{
0x00, 0x20, 0x00, 0x20, // blank blank
0xe0, 0x03, // []
0x00, 0x20, // blank
0x00, 0x53, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x70, // stop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -