📄 osdvir.c
字号:
);
//GDI_SetTextColor(TEXT_FG_COLOR, COLOR_BLUE_TRANS);
GDI_SetTextColor(TEXT_FG_COLOR, COLOR_BLACK);
//__wDiscType = BOOK_DVD; //comment when DVD/VCD is in the loader
//show buttons
for (__bTemp=0; __bTemp<TOTAL_BUTTON_NUM_IN_VIR; __bTemp++)
{
_ShowButton(__bTemp, COLOR_LIGHTGRAY);
}
//Set default Highlight
_ShowButton(_bCurrentButton, COLOR_YELLOW);
__bOSDVIRMode = TRUE;
}
else //2nd KEY_PROGRAM will exit the Virtual IR mode
{
//clear current region
//GDI_ClearRegion(0);
//clear Virtual IR region
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
__bOSDVIRMode = FALSE;
}
__bKey= KEY_NO_KEY;
break;
/** Enter the following cases when ((bKey!=KEY_VIRTUALIR) && __bOSDVIRMode) holds ***/
case KEY_LEFT:
//Clear Highlight
_ShowButton(_bCurrentButton, COLOR_LIGHTGRAY);
//Clear Info Characters
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y1+1, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
if (_bCurrentButton!=0)
_bCurrentButton--;
else
_bCurrentButton=TOTAL_BUTTON_NUM_IN_VIR-1;
//Set Highlight
_ShowButton(_bCurrentButton, COLOR_YELLOW);
//Show Notes
if (_bCurrentButton>=BUTTON_SPST_CTL)
_ShowNotes(_bCurrentButton);
__bKey = KEY_NO_KEY;
break;
case KEY_RIGHT:
//Clear Highlight
_ShowButton(_bCurrentButton, COLOR_LIGHTGRAY);
//Clear Info Characters
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y1+1, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
if (_bCurrentButton<(TOTAL_BUTTON_NUM_IN_VIR-1))
_bCurrentButton++;
else
_bCurrentButton=0;
//Set Highlight
_ShowButton(_bCurrentButton, COLOR_YELLOW);
//Show Notes
if (_bCurrentButton>=BUTTON_SPST_CTL)
_ShowNotes(_bCurrentButton);
__bKey = KEY_NO_KEY;
break;
case KEY_ENTER:
case KEY_PLAY:
switch(_bCurrentButton)
{
case BUTTON_PREV:
__bKey=KEY_PREV;
break;
case BUTTON_PLAY:
__bKey=KEY_PLAY;
break;
case BUTTON_PAUSE:
__bKey=KEY_PAUSE;
break;
case BUTTON_STOP:
__bKey=KEY_STOP;
break;
case BUTTON_NEXT:
__bKey=KEY_NEXT;
break;
case BUTTON_SPST_CTL:
__bKey=KEY_SPST_CTL;
break;
case BUTTON_AST_CTL:
__bKey=KEY_AST_CTL;
break;
case BUTTON_ANGLE_CTL:
__bKey=KEY_ANGLE_CTL;
break;
case BUTTON_EXIT: //exit Virtual IR mode
__bKey=KEY_NO_KEY;
//clear Virtual IR region
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
__bOSDVIRMode = FALSE;
break;
default:
break;
}
break;
// not-supported keys, will not display any message
default:
//__bKey=KEY_NO_KEY;
break;
}
return __bKey;
} //end of OSDVIR_ProcessKey
// *********************************************************************************
// Function : _ShowButton
// Description : Show a Button in the VIR Frame
// Arguments : bButtonIndex: Button Index ( 0 ~ (TOTAL_BUTTON_NUM_IN_VIR-1) )
// bColor: Center Color & Text BG Color
// Return : None
// Side Effect : None
// *********************************************************************************
static void _ShowButton(BYTE bButtonIndex, BYTE bColor)
{
GDI_DRAW_FRAME(aButton[bButtonIndex].wX0, aButton[bButtonIndex].wY0, aButton[bButtonIndex].wX1, aButton[bButtonIndex].wY1,
COLOR_WHITE, // bColorBright
COLOR_GRAY, // bColorDark
bColor, // bColorCenter
FRAME_POP_SOLID, // bStyle
FRAME_THICKNESS // bThickness
);
GDI_SetTextColor(TEXT_FG_COLOR, COLOR_BLACK);
GDI_SetTextColor(TEXT_BG_COLOR, bColor);
GDI_OUTPUT_TEXT( aButton[bButtonIndex].wX0+5, aButton[bButtonIndex].wY0+2, aButton[bButtonIndex].wpOSDVIRFONT);
} //end of _ShowButton()
// *********************************************************************************
// Function : _ShowNotes
// Description : Show Notes corresponding to a Button
// Arguments : bButtonIndex: Button Index ( 0 ~ (TOTAL_BUTTON_NUM_IN_VIR-1) )
// Return : None
// Side Effect : None
// *********************************************************************************
static void _ShowNotes(BYTE bButtonIndex)
{
__dwTimeShowNotes = UTL_GetSysTimer();
switch (bButtonIndex)
{
case BUTTON_SPST_CTL:
__wpDataPointer = aSubtitle[_bOSDLang];
break;
case BUTTON_AST_CTL:
if (__wDiscType & BOOK_DVD)
__wpDataPointer = aLanguage[_bOSDLang];
else
__wpDataPointer = aAudio[_bOSDLang];
break;
case BUTTON_ANGLE_CTL:
__wpDataPointer = aAngle[_bOSDLang];
break;
case BUTTON_EXIT:
__wpDataPointer = aExit[_bOSDLang];
break;
default:
//add protection here
break;
}
GDI_OUTPUT_TEXT(aButton[bButtonIndex].wX0, VIR_FRAME_Y1+2, __wpDataPointer);
}
void OSDVIR_Trigger(void)
{
if (_bCurrentButton>=BUTTON_SPST_CTL)
{
if ((UTL_GetSysTimer() - __dwTimeShowNotes) > COUNT_3_SEC)
{
//Clear Info Characters
GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y1+1, VIR_FRAME_X1, VIR_FRAME_Y1+32,
COLOR_TRANSPARENT
);
}
}
}
#endif //#ifdef CT908_UI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -