📄 osdss.c
字号:
// Arguments : bType: OSD_TRIGGER_CONTROL/OSD_TRIGGER_TIME
// : wTime: It's valid only when OSD_TRIGGER_TIME
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
// LLY2.53, expand time value unit from WORD to DWORD
// Since, we will use [23:16]:hour, [15:8]: min, [7:0]: sec
//void OSDSS_Trigger(BYTE bType, WORD wTime)
void OSDSS_Trigger(BYTE bType, DWORD dwTime)
{
#ifndef NO_SCREEN_SAVER
_OSDSS_Move();
#endif
}
//CoCo2.60
void OSDSS_InternalExit(void)
{
#ifndef NO_SCREEN_SAVER
_bOSDSSScreenSaverMode = FALSE;
GDI_DeactivateRegion();
GDI_InitialRegion(0); //Use region 0
GDI_ClearRegion(0); //clear region 0
GDI_ActivateRegion(0);
OSD_AdjustOSDPos();
//Enable the main video.
DISP_DisplayCtrl(DISP_MAINVIDEO, TRUE);
HAL_Display(HAL_DISPLAY_SPST_DEC, TRUE);
//Tell OSD that Media Manager exits.
OSD_ChangeUI(OSD_UI_SCREEN_SAVER, OSD_EXIT_UI);
#ifdef SUPPORT_ENCODE_JPG_PICTURE
// LLY2.55, Switch source to previous source index
__SF_SourceGBL[0].bSourceIndex = __bOldSrcIdx;
#endif // #ifdef SUPPORT_ENCODE_JPG_PICTURE
#endif
}
//********************************************************************************************************
// Function : OSDSS_Exit
// Abstract : Call this function to exit screen saver.
// Arguments : bExitMode: OSD_UI_EXIT_ALL/OSD_UI_EXIT_CONTROL_ONLY.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void OSDSS_Exit(BYTE bExitMode) //CoCo2.60
{
#ifndef NO_SCREEN_SAVER
_bOSDSSScreenSaverMode = FALSE;
if (bExitMode == OSD_UI_EXIT_ALL)
{
GDI_DeactivateRegion();
GDI_InitialRegion(0); //Use region 0
GDI_ClearRegion(0); //clear region 0
GDI_ActivateRegion(0);
OSD_AdjustOSDPos();
//Enable the main video.
DISP_DisplayCtrl(DISP_MAINVIDEO, TRUE);
HAL_Display(HAL_DISPLAY_SPST_DEC, TRUE);
}
#ifdef SUPPORT_ENCODE_JPG_PICTURE
// LLY2.55, Switch source to previous source index
__SF_SourceGBL[0].bSourceIndex = __bOldSrcIdx;
#endif // #ifdef SUPPORT_ENCODE_JPG_PICTURE
#endif
}
//********************************************************************************************************
// Function : OSDSS_Reset
// Abstract : Reset the time for wakeing up screen saver. This function will be called when receiving
// : IR key.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void OSDSS_Reset(void)
{
#ifndef NO_SCREEN_SAVER
__dwOSDSSCheckTime = OS_GetSysTimer();
#endif
__dwOSDServoCheckTime = OS_GetSysTimer();
#ifndef NO_SCREEN_SAVER
if (_bOSDSSScreenSaverMode)
{
#ifdef OSDSS_JPEG_SCREEN_SAVER //CoCo2.38
CC_KeyCommand(KEY_STOP);
// LLY2.51, don't clear __bLOGO as nono by yourself, since it will be clear while non-show LOGO
// And, remove __bLOGOIndex since nobody reference it.
//__bLOGO = 0;
if (__bKey != KEY_FUNCTION)
{
if (_bOSDSSBackupCurrentUI == OSD_UI_NONE)
{
__bKey = KEY_FUNCTION;
}
else
{
__bKey = KEY_NO_KEY;
}
}
//__bLOGOIndex = 0;
UTL_ShowLogo();
OSDSS_InternalExit(); //CoCo2.60
#else
if (__SetupInfo.bSCRControl == SETUP_SCREEN_SAVER_ON)
{
OSDSS_InternalExit(); //CoCo2.60
}
#endif //OSDSS_JPEG_SCREEN_SAVER
// wyc1.06-909, don't spin SERVO when exit screen saver
//UTL_PreStartServo( __dwTimeNow);
}
#endif //NO_SCREEN_SAVER
}
//********************************************************************************************************
// Function : _OSDSS_Move
// Abstract : This function will move DVD LOGO.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _OSDSS_Move(void)
{
#ifndef NO_SCREEN_SAVER
#ifndef OSDSS_JPEG_SCREEN_SAVER
WORD wDownBoundary;
#endif //OSDSS_JPEG_SCREEN_SAVER
#ifdef OSDSS_JPEG_SCREEN_SAVER
if ((OS_GetSysTimer() - _dwOSDSSMoveTime) < COUNT_5_SEC)
return;
_dwOSDSSMoveTime = OS_GetSysTimer();
#ifndef SUPPORT_ENCODE_JPG_PICTURE
if (__bOSDSSPicIdx == (OSDSS_MAX_PICTURE_NUM-1))
#else
if (__bOSDSSPicIdx == (__bMMJPGEncodeNum-1))
#endif //SUPPORT_ENCODE_JPG_PICTURE
{
__bOSDSSPicIdx = 0;
}
else
{
__bOSDSSPicIdx++;
}
//To prevent the screen saver will flash for the same picture.
#ifdef SUPPORT_ENCODE_JPG_PICTURE
if (__bMMJPGEncodeNum > 1)
#endif //SUPPORT_ENCODE_JPG_PICTURE
{
_OSDSS_PictureUpdate(__bOSDSSPicIdx);
}
#else
if ((OS_GetSysTimer() - _dwOSDSSMoveTime) < OSDSS_DVDLOGO_MOVE_SPEED)
return;
_dwOSDSSMoveTime = OS_GetSysTimer();
if ((OS_GetSysTimer() - _dwOSDSSColorChangeTime) > OSDSS_DVDLOGO_COLOR_CHANGE_SPEED)
{
_OSDSS_ColorChange();
_dwOSDSSColorChangeTime = OS_GetSysTimer();
}
if ((OS_GetSysTimer() - _dwOSDSSMixRatioChangeTime) > OSDSS_DVDLOGO_MIX_RATIO_CHANGE_SPEED)
{
_OSDSS_MixRatioChange();
_dwOSDSSMixRatioChangeTime = OS_GetSysTimer();
}
if (_bOSDSSInvertH)
{
if (_bOSDSSCurrentPos.nHPos < OSDSS_DVDLOGO_BOUNDARY_LEFT)
{
_bOSDSSCurrentPos.nHPos = OSDSS_DVDLOGO_BOUNDARY_LEFT;
_bOSDSSInvertH = FALSE;
}
else
_bOSDSSCurrentPos.nHPos -= OSDSS_DVDLOGO_POS_UPDATE_H;
}
else
{
if ((_bOSDSSCurrentPos.nHPos + OSDSS_DVDLOGO_POS_UPDATE_H+OSDSS_DVDLOGO_BITMAP_WIDTH) >= OSDSS_DVDLOGO_BOUNDARY_RIGHT)
{
_bOSDSSCurrentPos.nHPos = OSDSS_DVDLOGO_BOUNDARY_RIGHT-OSDSS_DVDLOGO_BITMAP_WIDTH;
_bOSDSSInvertH = TRUE;
}
else
_bOSDSSCurrentPos.nHPos += OSDSS_DVDLOGO_POS_UPDATE_H;
}
if (_bOSDSSInvertV)
{
if (_bOSDSSCurrentPos.nVPos < OSDSS_DVDLOGO_BOUNDARY_UP)
{
_bOSDSSCurrentPos.nVPos = OSDSS_DVDLOGO_BOUNDARY_UP;
_bOSDSSInvertV = FALSE;
}
else
_bOSDSSCurrentPos.nVPos -= OSDSS_DVDLOGO_POS_UPDATE_V;
}
else
{
if ((__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) || (__bTVType == SETUP_SCREEN_TV_SYSTEM_PAL_M))
wDownBoundary = OSDSS_DVDLOGO_BOUNDARY_DOWN_NTSC;
else
wDownBoundary = OSDSS_DVDLOGO_BOUNDARY_DOWN_PAL;
if ((_bOSDSSCurrentPos.nVPos + OSDSS_DVDLOGO_POS_UPDATE_V+OSDSS_DVDLOGO_BITMAP_HEIGHT) >= wDownBoundary)
{
_bOSDSSCurrentPos.nVPos = wDownBoundary-OSDSS_DVDLOGO_BITMAP_HEIGHT;
_bOSDSSInvertV = TRUE;
}
else
_bOSDSSCurrentPos.nVPos += OSDSS_DVDLOGO_POS_UPDATE_V;
}
if ((__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) || (__bTVType == SETUP_SCREEN_TV_SYSTEM_PAL_M))
GDI_MoveRegion(1, REGION_X_NTSC+_bOSDSSCurrentPos.nHPos, REGION_Y_NTSC+_bOSDSSCurrentPos.nVPos);
else
GDI_MoveRegion(1, REGION_X_PAL+_bOSDSSCurrentPos.nHPos, REGION_Y_PAL+_bOSDSSCurrentPos.nVPos);
#endif //#ifdef OSDSS_JPEG_SCREEN_SAVER
#endif
}
//********************************************************************************************************
// Function : _OSDSS_DVDLOGO_Initial
// Abstract : This function will initialize the action of DVD LOGO.
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _OSDSS_DVDLOGO_Initial(void)
{
#ifndef NO_SCREEN_SAVER
_bOSDSSCurrentPos.nHPos = OSDSS_DVDLOGO_BITMAP_START_H;
_bOSDSSCurrentPos.nVPos = OSDSS_DVDLOGO_BITMAP_START_V;
//Initialize the time to move the DVD LOGO
_dwOSDSSMoveTime = OS_GetSysTimer();
_dwOSDSSColorChangeTime = OS_GetSysTimer();
_dwOSDSSMixRatioChangeTime = OS_GetSysTimer();
_bOSDSSInvertH = FALSE;
_bOSDSSInvertV = FALSE;
_bOSDSSMixRatioInvert = FALSE;
_bSDSSColorChange = 0;
_bOSDSSMixRatio = OSDSS_DVDLOGO_DEFAULT_MIX_RATIO;
GDI_ClearRegion(1); //clear region 1
GDI_ChangePALEntry(OSDSS_PALETTE_ENTRY_DVD_LOGO, aOSDSSDVDLOGOPalette[_bSDSSColorChange], TRUE);
GDI_SetMixRatio(_bOSDSSMixRatio); //The mix ration just effects the background
if ((__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) || (__bTVType == SETUP_SCREEN_TV_SYSTEM_PAL_M))
GDI_MoveRegion(1, REGION_X_NTSC, REGION_Y_NTSC);
else
GDI_MoveRegion(1, REGION_X_PAL, REGION_Y_PAL);
GDI_ActivateRegion(1); //open GDI
/*
_OSDSSStringAttr.bBackground = PAL_ENTRY_COLOR_TRANSPARENT;
_OSDSSStringAttr.bShadow1 = PAL_ENTRY_COLOR_TRANSPARENT;
_OSDSSStringAttr.bShadow2 = PAL_ENTRY_COLOR_TRANSPARENT;
_OSDSSStringAttr.bTextColor = OSDSS_PALETTE_ENTRY_DVD_LOGO;
_OSDSSStringAttr.bColorKey = 0;
_OSDSSStringAttr.wX = _bOSDSSCurrentPos.nHPos;
_OSDSSStringAttr.wY = _bOSDSSCurrentPos.nVPos;
GDI_DrawString_909(1, &_OSDSSStringAttr, aSSDVDLOGOTest);
*/
_OSDSSDrawBitmap.bBitmapID = OSDSS_BMP_SCREEN_SAVER;
_OSDSSDrawBitmap.wDestX = _bOSDSSCurrentPos.nHPos;
_OSDSSDrawBitmap.wDestY = _bOSDSSCurrentPos.nVPos;
_OSDSSDrawBitmap.bDestRegion = 1;
/*
GDI_LoadPalette(GDI_PAL_SCREEN_SAVER);
GDI_LoadBMP(GDI_OSD_BMP); // load other BMP used by Display mode (this including screen saver BMP)
GDI_DrawBitmap(&_OSDSSDrawBitmap);
*/
//CoCo1.06, for new GDI libray
GDI_LoadPalette(&__PaletteInfo_ScreenSaver);
GDI_LoadBMP(_aScrrenSaverBMPArray, 1); // load other BMP used by Display mode (this including screen saver BMP)
GDI_DrawBitmap(&_OSDSSDrawBitmap, _aScrrenSaverBMPArray);
#endif
}
//********************************************************************************************************
// Function : _OSDSS_ColorChange
// Abstract : This function will change the color and mix ratio of the DVD LOGO
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _OSDSS_ColorChange(void)
{
#ifndef NO_SCREEN_SAVER
_bSDSSColorChange++;
if (_bSDSSColorChange >= (sizeof(aOSDSSDVDLOGOPalette)/4))
_bSDSSColorChange = 0;
GDI_ChangePALEntry(OSDSS_PALETTE_ENTRY_DVD_LOGO, aOSDSSDVDLOGOPalette[_bSDSSColorChange], TRUE);
GDI_ActivateRegion(1); //open GDI
#endif
}
//********************************************************************************************************
// Function : _OSDSS_MixRatioChange
// Abstract : This function will change the mix ratio of the DVD LOGO
// Arguments : none.
// Return : none.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _OSDSS_MixRatioChange(void)
{
#ifndef NO_SCREEN_SAVER
if (_bOSDSSMixRatioInvert)
{
if ((_bOSDSSMixRatio-OSDSS_DVDLOGO_MIX_RATIO_UPDATE) < OSDSS_DVDLOGO_MIN_MIX_RATIO)
{
_bOSDSSMixRatioInvert = FALSE;
_bOSDSSMixRatio = OSDSS_DVDLOGO_MIN_MIX_RATIO;
}
else
{
_bOSDSSMixRatio -= OSDSS_DVDLOGO_MIX_RATIO_UPDATE;
}
}
else
{
_bOSDSSMixRatio += OSDSS_DVDLOGO_MIX_RATIO_UPDATE;
if ((_bOSDSSMixRatio+OSDSS_DVDLOGO_MIX_RATIO_UPDATE) > OSDSS_DVDLOGO_MAX_MIX_RATIO)
{
_bOSDSSMixRatioInvert = TRUE;
_bOSDSSMixRatio = OSDSS_DVDLOGO_MAX_MIX_RATIO;
}
}
GDI_SetMixRatio(_bOSDSSMixRatio);
GDI_ActivateRegion(1); //open GDI
#endif
}
void OSDSS_ResetTime(void)
{
__dwOSDSSCheckNOData = __dwTimeNow;
__dwOSDSSCheckTime=OS_GetSysTimer();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -