⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osddsply.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
            //Clear Display mode UI.
            _OSDDSPLY_ClearDisplayModeUI();

            _bOSDDSPLYMode = OSDDSPLY_MODE_NONE;
            
            //Tell OSD that the Display mode UI exits.
            OSD_ChangeUI(OSD_UI_DISPLAY, OSD_EXIT_UI);
        }
        else if (wParam == OSD_CHANGE_UI)
        {
            _OSDDSPLY_SwitchDisplayModeUI();
        }
    }
    else if (bMessage == MSG_INITIAL_PALETTE)
    {
        _OSDDSPLY_InitializeGDI();
    }
    else //Call each Display mode UI's entry to show the message.
    {
        if (_bOSDDSPLYEnterTimeMode)
            return _OSDDSPLY_LD_SpecialTimeModeUpdate(bMessage);
        
        switch (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID)
        {
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
        case OSDDSPLY_MODE_DVD_TITLE_ELAPSED:
        case OSDDSPLY_MODE_DVD_TITLE_REMAIN:
        case OSDDSPLY_MODE_DVD_CHAPTER_ELAPSED:
        case OSDDSPLY_MODE_DVD_CHAPTER_REMAIN:
#endif //NO_DVD_DISPLAY_UI
#ifndef NO_VCD_DISPLAY_UI //++CoCo2.37p
        case OSDDSPLY_MODE_VCD_SINGLE_ELAPSED:
        case OSDDSPLY_MODE_VCD_SINGLE_REMAIN:
        case OSDDSPLY_MODE_VCD_TOTAL_ELAPSED:
        case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
#endif //NO_VCD_DISPLAY_UI
        case OSDDSPLY_MODE_JPEG_LD:
        case OSDDSPLY_MODE_CDROM_MOTION_ELAPSED:
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
        case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
        case OSDDSPLY_MODE_CDROM_AUDIO:
            //Update the message in one-line Display mode.
            return _OSDDSPLY_LD_Update(bMessage);
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
        case OSDDSPLY_MODE_DVD_VIRTUAL_PANEL:
#endif //NO_DVD_DISPLAY_UI
        case OSDDSPLY_MODE_JPEG_VIRTUAL_PANEL:
        case OSDDSPLY_MODE_DIVX_VIRTUAL_PANEL:
            //Update the message in the virtual panel.
            return _OSDDSPLY_VP_Update(bMessage);
#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
        case OSDDSPLY_MODE_DVD_NAVIGATOR:
            //Navigator doesn't receive the message to show information. It just process key.
            //But when Navgator receives MSG_TITLE/MSG_CHAPTER, it needs to clear some menu for navigation.
            OSDDSPLY_NAVIGATOR_ClearMenuForNVChange(bMessage);
            return FALSE;
#endif //#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
        default:
            return FALSE;
        }        
    }
    
    return TRUE;
}

//***************************************************************************
//  Function    :   _OSDDSPLY_InitializeGDI
//  Abstract    :   
//  Arguments   :   none.
//  Return      :   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDDSPLY_InitializeGDI(void)
{
    _bOSDDSPLYTemp = __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN;

    //Initialize the palette for Line Display.
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDDSPLYLDBackground[_bOSDDSPLYTemp], TRUE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TITLE_ITEM, OSDDSPLYLDTitleItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDDSPLYLDChapterItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_PROGRAM_STATUS, OSDDSPLYLDProgramStatus[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NAME_ITEM_TEXT, OSDDSPLYLDFileNameItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NUM_ITEM_TEXT, OSDDSPLYLDFileNumItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TITLE_INFO, OSDDSPLYLDTitleInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDDSPLYLDChapterInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_TIME_INFO, OSDDSPLYLDTimeInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NAME_INFO, OSDDSPLYLDFileNameInfo[_bOSDDSPLYTemp], FALSE);   
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_FILE_NUM_INFO, OSDDSPLYLDFileNumInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_REGION_MENU, OSDDSPLYLDMenu[_bOSDDSPLYTemp], FALSE);
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
    GDI_ChangePALEntry(OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND_FRAME, OSDDSPLYLDBackgroundFrame[_bOSDDSPLYTemp], TRUE);
#endif //SUPPORT_SIMPLE_DISPLAY_MODE

    //Initialize the palette for virtual panel.
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDDSPLYVPBackground[_bOSDDSPLYTemp], TRUE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTTRY_REGION_TITLE_ITEM, OSDDSPLYVPTitleItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDDSPLYVPChapterItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_SUBTITLE_ITEM, OSDDSPLYVPSubtitleItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_AST_ITEM, OSDDSPLYVPASTItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TV_ITEM, OSDDSPLYVPTVItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_ANGLE_ITEM, OSDDSPLYVPAngleItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NAME_ITEM, OSDDSPLYVPFileNameItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NUM_ITEM, OSDDSPLYVPFileNumItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_RESOLUTION_ITEM, OSDDSPLYVPResolutionItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_DATE_ITEM, OSDDSPLYVPDateItem[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_PROGRAM_STATUS, OSDDSPLYVPProgramStatus[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_PLAY_STATUS, OSDDSPLYVPPlayStatus[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_REPEAT_STATUS, OSDDSPLYVPRepeatStatus[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TITLE_INFO, OSDDSPLYVPTitleInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDDSPLYVPChapterInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TIME, OSDDSPLYVPTime[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_SUBTITLE_INFO, OSDDSPLYVPSubtitleInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_AST_INFO, OSDDSPLYVPASTInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_TV_INFO, OSDDSPLYVPTVInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_ANGLE_INFO, OSDDSPLYVPAngleInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_MENU, OSDDSPLYVPMenu[_bOSDDSPLYTemp], FALSE);    
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NAME_INFO, OSDDSPLYVPFileNameInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_FILE_NUM_INFO, OSDDSPLYVPFileNumInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_RESOLUTION_INFO, OSDDSPLYVPResolutionInfo[_bOSDDSPLYTemp], FALSE);
    GDI_ChangePALEntry(OSDDSPLY_VP_PALETTE_ENTRY_REGION_DATE_INFO, OSDDSPLYVPDateInfo[_bOSDDSPLYTemp], FALSE);

    GDI_WaitPaletteComplete();
}

//***************************************************************************
//  Function    :   OSDDSPLY_Trigger
//  Abstract    :   This function will be called by OSD_Trigger() to update UI.
//  Arguments   :   none.
//  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 OSDDSPLY_Trigger(BYTE bType, WORD wTime)
void OSDDSPLY_Trigger(BYTE bType, DWORD dwTime)
{    
    if (_bOSDDSPLYEnterTimeMode)
    {
        if (bType == OSD_TRIGGER_TIME)
        {
            _OSDDSPLY_LD_ShowSpecialTimeMode();
        }

        return;
    }

    switch (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID)
    {
    case OSDDSPLY_MODE_DVD_TITLE_ELAPSED:
    case OSDDSPLY_MODE_DVD_TITLE_REMAIN:
    case OSDDSPLY_MODE_DVD_CHAPTER_ELAPSED:
    case OSDDSPLY_MODE_DVD_CHAPTER_REMAIN:
    case OSDDSPLY_MODE_VCD_SINGLE_ELAPSED:
    case OSDDSPLY_MODE_VCD_SINGLE_REMAIN:
    case OSDDSPLY_MODE_VCD_TOTAL_ELAPSED:
    case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
    case OSDDSPLY_MODE_CDROM_AUDIO:
    case OSDDSPLY_MODE_CDROM_MOTION_ELAPSED:
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
    case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
        if (bType == OSD_TRIGGER_CONTROL)
        {
#ifdef OSDDSPLY_SUPPORT_ENTER_TIME_MODE
            if ((OS_GetSysTimer()-_dwOSDDSPLYDisplayStartTime) > OSDDSPLY_LD_ENTER_SPECIAL_TIME_MODE)
            {
#ifndef NO_DISC_MODE //CoCo2.37
				if ((__wDiscType & BOOK_DVD ) && ((__bDomain==VTSM_DOM) || (__bDomain==VMGM_DOM))) // Root Menu
				{
					_dwOSDDSPLYDisplayStartTime = OS_GetSysTimer();
					return;
				}
#endif //#ifndef NO_DISC_MODE //CoCo2.37

                _bOSDDSPLYEnterTimeMode = TRUE;
                
                //clear the line display region.
                _OSDDSPLY_ClearBackground(pOSDDSPTypeMode[_bOSDDSPLYMode].bBackgroundType);
                
                //Draw the background of special time mode
                _OSDDSPLY_DrawBackground(OSDDSPLY_BACKGROUND_LD_TIME);
                
                //Show time.
                _OSDDSPLY_LD_ShowSpecialTimeMode();
            }
#endif
        }                
        else if (bType == OSD_TRIGGER_TIME)
        {
            _OSDDSPLY_LD_ShowTime(OSDDSPLY_UPDATE_INFO);
        }
        break;
    case OSDDSPLY_MODE_DVD_VIRTUAL_PANEL:
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
        if (bType == OSD_TRIGGER_TIME)
            _OSDDSPLY_VP_ShowTime();
#endif //SUPPORT_SIMPLE_DISPLAY_MODE
        break;
    case OSDDSPLY_MODE_DIVX_VIRTUAL_PANEL:
#ifndef SUPPORT_SIMPLE_DISPLAY_MODE
        if (bType == OSD_TRIGGER_TIME)
            _OSDDSPLY_VP_MOTION_ShowTime();
#endif //SUPPORT_SIMPLE_DISPLAY_MODE
        break;
#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
    case OSDDSPLY_MODE_DVD_NAVIGATOR:
        //Clear the "hint"?
        if (bType == OSD_TRIGGER_CONTROL)
        {
            if (_bOSDDSPLYTipDisplayed)
            {
                if ((OS_GetSysTimer()-_dwOSDDSPLYDisplayStartTime) > OSDDSPLY_NAVIGATOR_SHOW_TIP_TIME)
                    _OSDDSPLY_NAVIGATOR_ClearTip();
            }
        }
        break;
#endif //#ifdef SUPPORT_NAVIGATOR //++CoCo2.37p
    default:
        break;
    }
}

//***************************************************************************
//  Function    :   OSDDSPLY_Recover
//  Abstract    :   This function will be called by OSD kernel to recover Display mode UI.
//  Arguments   :   bRecoverRegion: OSD_RECOVER_UPPER_REGION/OSD_RECOVER_BOTTOM_REGION/OSD_RECOVER_ALL.
//  Return      :   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
BYTE OSDDSPLY_Recover(BYTE bRecoverRegion)
{
    if (bRecoverRegion == OSD_RECOVER_ALL)
    {
        //Initialize GDI
        _OSDDSPLY_InitializeGDI();      

        if (_bOSDDSPLYEnterTimeMode)
        {
            //Draw the background of special time mode
            _OSDDSPLY_DrawBackground(OSDDSPLY_BACKGROUND_LD_TIME);

            _OSDDSPLY_LD_ShowSpecialTimeMode();
        }
        else
        {            
            //Draw current Display mode background.
            _OSDDSPLY_DrawBackground(pOSDDSPTypeMode[_bOSDDSPLYMode].bBackgroundType);

            _OSDDSPLY_ShowDisplayModeUI(TRUE);
        }
        
        return TRUE;
    }
    else
        return FALSE;
}

//***************************************************************************
//  Function    :   _OSDDSPLY_LD_SpecialTimeModeUpdate
//  Abstract    :   
//  Arguments   :   bMessage: the message.
//  Return      :   TRUE: the message has been processed by one-line display.
//              :   FALSE: the message doesn't be processed by one-line display.
//  Side Effect :   
//  Notes       :   
//***************************************************************************
BYTE _OSDDSPLY_LD_SpecialTimeModeUpdate(BYTE bMessage)
{
    switch (bMessage)
    {
    case MSG_ABSTIME:
    case MSG_RELTIME:
    case MSG_TITLE_TIME:
    case MSG_CHAPTER_TIME:
    case MSG_REMAIN_ABSTIME:
    case MSG_REMAIN_RELTIME:
    case MSG_REMAIN_TITLE_TIME:
    case MSG_REMAIN_CHAPTER_TIME:
        _OSDDSPLY_LD_ShowSpecialTimeMode();
        return TRUE;
    default:
        return FALSE;
    }
}

//***************************************************************************
//  Function    :   _OSDDSPLY_LD_Update
//  Abstract    :   This is the entry to update the message to one-line display.
//  Arguments   :   bMessage: the message.
//  Return      :   TRUE: the message has been processed by one-line display.
//              :   FALSE: the message doesn't be processed by one-line display.
//  Side Effect :   
//  Notes       :   
//***************************************************************************
BYTE _OSDDSPLY_LD_Update(BYTE bMessage)
{
    switch (bMessage)
    {
    case MSG_TITLE:
    case MSG_CHAPTER:    
	case MSG_PROGRAM:
        _OSDDSPLY_LD_ShowInfo(bMessage);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -