📄 osdvir.c
字号:
#include "winav.h"
#include "input.h"
#include "osd.h"
#include "hal.h"
#include "cc.h"
#include "gdi.h"
#include "dvdinfo.h"
#include "cdinfo.h"
#include "linear.h"
#include "utl.h"
#include "colordef.h"
#ifdef CT908_UI
WORD code aPrevIcon[] = {1, CHAR_N_PRE};
WORD code aPlayIcon[] = {1, CHAR_N_PLAY};
WORD code aPauseIcon[] = {1, CHAR_N_PAUSE};
WORD code aStopIcon[] = {1, CHAR_N_STOP};
WORD code aNextIcon[] = {1, CHAR_N_NEXT};
WORD code aSubtitleIcon[] = {1, CHAR_N_SPST};
WORD code aAudioIcon[] = {1, CHAR_N_AST};
WORD code aAngleIcon[] = {1, CHAR_N_ANGLE};
WORD code aExitIcon[] = {1, CHAR_N_ANGLE}; //TO DO: design icon later
//TO DO: change font & move to osdmsg.chi later on 908
WORD code aSubtitle[][9]={ {8, CHAR_S_26, CHAR_uu_26, CHAR_bb_26, CHAR_tt_26, CHAR_ii_26, CHAR_tt_26, CHAR_ll_26, CHAR_ee_26},
{8, CHAR_S_26, CHAR_uu_26, CHAR_bb_26, CHAR_tt_26, CHAR_ii_26, CHAR_tt_26, CHAR_ll_26, CHAR_ee_26} };
WORD code aLanguage[][9]={ {8, CHAR_L_26, CHAR_aa_26, CHAR_nn_26, CHAR_gg_26, CHAR_uu_26, CHAR_aa_26, CHAR_gg_26, CHAR_ee_26},
{8, CHAR_L_26, CHAR_aa_26, CHAR_nn_26, CHAR_gg_26, CHAR_uu_26, CHAR_aa_26, CHAR_gg_26, CHAR_ee_26} };
WORD code aAudio[][6]={ {5, CHAR_A_26, CHAR_uu_26, CHAR_dd_26, CHAR_ii_26, CHAR_oo_26},
{5, CHAR_A_26, CHAR_uu_26, CHAR_dd_26, CHAR_ii_26, CHAR_oo_26} };
WORD code aAngle[][6]={ {5, CHAR_A_26, CHAR_nn_26, CHAR_gg_26, CHAR_ll_26, CHAR_ee_26},
{5, CHAR_A_26, CHAR_nn_26, CHAR_gg_26, CHAR_ll_26, CHAR_ee_26} };
WORD code aExit[][5]={ {4, CHAR_E_26, CHAR_xx_26, CHAR_ii_26, CHAR_tt_26},
{4, CHAR_E_26, CHAR_xx_26, CHAR_ii_26, CHAR_tt_26} };
#define KEY_VIRTUALIR KEY_BOOKMARK //TO DO: for test use only
#define BUTTON_GAP 8
#define FRAME_THICKNESS 2
#define TOTAL_BUTTON_NUM_IN_VIR 9
#define TOTAL_SP_NUM_IN_VIR 2
#define VIR_FRAME_X0 40
#define VIR_FRAME_Y0 130//30
#define VIR_FRAME_X1 510
#define VIR_FRAME_Y1 182//82
#define VIR_SEPARATOR_WIDTH 2*BUTTON_GAP
#define VIR_BUTTON_WIDTH (VIR_FRAME_X1-VIR_FRAME_X0-(TOTAL_BUTTON_NUM_IN_VIR+1-TOTAL_SP_NUM_IN_VIR)*BUTTON_GAP-TOTAL_SP_NUM_IN_VIR*VIR_SEPARATOR_WIDTH)/TOTAL_BUTTON_NUM_IN_VIR
#define BUTTON_PREV 0
#define BUTTON_PLAY 1
#define BUTTON_PAUSE 2
#define BUTTON_STOP 3
#define BUTTON_NEXT 4
#define BUTTON_SPST_CTL 5
#define BUTTON_AST_CTL 6
#define BUTTON_AUDIO_LR BUTTON_AST_CTL
#define BUTTON_ANGLE_CTL 7
#define BUTTON_EXIT 8
#define BUTTON0_X0 VIR_FRAME_X0+BUTTON_GAP
#define BUTTON0_Y0 VIR_FRAME_Y0+BUTTON_GAP
#define BUTTON0_X1 BUTTON0_X0+VIR_BUTTON_WIDTH
#define BUTTON0_Y1 VIR_FRAME_Y1-BUTTON_GAP
#define BUTTON1_X0 BUTTON0_X1+BUTTON_GAP
#define BUTTON1_Y0 BUTTON0_Y0
#define BUTTON1_X1 BUTTON1_X0+VIR_BUTTON_WIDTH
#define BUTTON1_Y1 BUTTON0_Y1
#define BUTTON2_X0 BUTTON1_X1+BUTTON_GAP
#define BUTTON2_Y0 BUTTON0_Y0
#define BUTTON2_X1 BUTTON2_X0+VIR_BUTTON_WIDTH
#define BUTTON2_Y1 BUTTON0_Y1
#define BUTTON3_X0 BUTTON2_X1+BUTTON_GAP
#define BUTTON3_Y0 BUTTON0_Y0
#define BUTTON3_X1 BUTTON3_X0+VIR_BUTTON_WIDTH
#define BUTTON3_Y1 BUTTON0_Y1
#define BUTTON4_X0 BUTTON3_X1+BUTTON_GAP
#define BUTTON4_Y0 BUTTON0_Y0
#define BUTTON4_X1 BUTTON4_X0+VIR_BUTTON_WIDTH
#define BUTTON4_Y1 BUTTON0_Y1
#define BUTTON5_X0 BUTTON4_X1+VIR_SEPARATOR_WIDTH
#define BUTTON5_Y0 BUTTON0_Y0
#define BUTTON5_X1 BUTTON5_X0+VIR_BUTTON_WIDTH
#define BUTTON5_Y1 BUTTON0_Y1
#define BUTTON6_X0 BUTTON5_X1+BUTTON_GAP
#define BUTTON6_Y0 BUTTON0_Y0
#define BUTTON6_X1 BUTTON6_X0+VIR_BUTTON_WIDTH
#define BUTTON6_Y1 BUTTON0_Y1
#define BUTTON7_X0 BUTTON6_X1+BUTTON_GAP
#define BUTTON7_Y0 BUTTON0_Y0
#define BUTTON7_X1 BUTTON7_X0+VIR_BUTTON_WIDTH
#define BUTTON7_Y1 BUTTON0_Y1
#define BUTTON8_X0 BUTTON7_X1+VIR_SEPARATOR_WIDTH
#define BUTTON8_Y0 BUTTON0_Y0
#define BUTTON8_X1 BUTTON8_X0+VIR_BUTTON_WIDTH
#define BUTTON8_Y1 BUTTON0_Y1
typedef struct
{
WORD wX0;
WORD wY0;
WORD wX1;
WORD wY1;
WORD *wpOSDVIRFONT;
} BUTTON_INFO;
/* not work below
BUTTON_INFO code BUTTON1 ={BUTTON1_X0, BUTTON1_Y0, BUTTON1_X1, BUTTON1_Y1, aArrowUp};
BUTTON_INFO code BUTTON2 ={BUTTON2_X0, BUTTON2_Y0, BUTTON2_X1, BUTTON2_Y1, aArrowUp};
BUTTON_INFO code aButton[2] = { BUTTON1, BUTTON2};
*/
BUTTON_INFO code aButton[TOTAL_BUTTON_NUM_IN_VIR] =
{ {BUTTON0_X0, BUTTON0_Y0, BUTTON0_X1, BUTTON0_Y1, aPrevIcon},
{BUTTON1_X0, BUTTON1_Y0, BUTTON1_X1, BUTTON1_Y1, aPlayIcon},
{BUTTON2_X0, BUTTON2_Y0, BUTTON2_X1, BUTTON2_Y1, aPauseIcon},
{BUTTON3_X0, BUTTON3_Y0, BUTTON3_X1, BUTTON3_Y1, aStopIcon},
{BUTTON4_X0, BUTTON4_Y0, BUTTON4_X1, BUTTON4_Y1, aNextIcon},
{BUTTON5_X0, BUTTON5_Y0, BUTTON5_X1, BUTTON5_Y1, aSubtitleIcon},
{BUTTON6_X0, BUTTON6_Y0, BUTTON6_X1, BUTTON6_Y1, aAudioIcon},
{BUTTON7_X0, BUTTON7_Y0, BUTTON7_X1, BUTTON7_Y1, aAngleIcon},
{BUTTON8_X0, BUTTON8_Y0, BUTTON8_X1, BUTTON8_Y1, aExitIcon} };
#define COLOR_TRANSPARENT 255
#define COLOR_BLACK GDI_ENTRY_START+1
#define COLOR_WHITE GDI_ENTRY_START+2
#define COLOR_GRAY GDI_ENTRY_START+3
#define COLOR_LIGHTGRAY GDI_ENTRY_START+4
#define COLOR_YELLOW GDI_ENTRY_START+5
#define COLOR_BLUE_TRANS GDI_ENTRY_START+6
//Internal Functions
static void _ShowButton(BYTE bButtonIndex, BYTE bColor);
static void _ShowNotes(BYTE bButtonIndex);
//Global variables
static BYTE __bOSDVIRMode = FALSE;
static WORD code *__wpDataPointer; //the data pointed to by __wpDataPointer can not be changed. __wpDataPointer can be changed.
static DWORD __dwTimeShowNotes; // the time when showing OSDVIR notes
static BYTE _bCurrentButton;
extern BYTE IDATA __bTemp;
extern BYTE DATA _bOSDLang;
// *********************************************************************************
// Function : OSDVIR_ProcessKey
// Description : Process the input key while in Virtual IR mode
// Arguments : bKey, the input key
// Return : KEY_NO_KEY , the input key is processed
// : INVALID_KEY , the input key is not allowed under this mode
// : KEY_xxx , main program needs to do more processing for the key.
// Side Effect : __bKey may be changed
// *********************************************************************************
BYTE OSDVIR_ProcessKey(BYTE bKey)
{
if ( (bKey!=KEY_VIRTUALIR) && !__bOSDVIRMode)
{
return bKey;
}
if ((bKey == KEY_POWER) || (bKey == KEY_OPEN_CLOSE))
{
//clear Virtual IR region
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
__bOSDVIRMode = FALSE;
return bKey;
}
switch (bKey)
{
case KEY_VIRTUALIR:
if (!__bOSDVIRMode) //1st KEY_PROGRAM will enter the Virtual IR mode
{
//Initialization of Variables
_bCurrentButton = 0;
//move to other place later
//GDI_ChangePALEntry(COLOR_BLUE_TRANS, 0x0000FF, TRUE);
GDI_ChangePALEntry(COLOR_WHITE, 0xFFFFFF, FALSE);
GDI_ChangePALEntry(COLOR_BLACK, 0x0F0F0F, FALSE);
GDI_ChangePALEntry(COLOR_GRAY, 0x7F7F7F, FALSE);
GDI_ChangePALEntry(COLOR_LIGHTGRAY, 0xC0C0C0, FALSE);
GDI_ChangePALEntry(COLOR_YELLOW, 0xFFF200, FALSE);
GDI_ChangePALEntry(COLOR_BLUE_TRANS, 0x0000FF, TRUE);
GDI_SetMixRatio(7);
GDI_SetCurrentRegion(0);
GDI_ActivateRegion();
//VIR frame
GDI_DRAW_FRAME(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1,
COLOR_LIGHTGRAY, // bColorBright
COLOR_LIGHTGRAY, // bColorDark
COLOR_BLUE_TRANS, // bColorCenter
FRAME_POP_SOLID, // bStyle
FRAME_THICKNESS // bThickness
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -