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

📄 osddsply.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
        break;
    case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
        __bShowTimeType = MSG_REMAIN_ABSTIME;
        break;
#endif //#ifndef NO_VCD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_MODE_CDROM_AUDIO:
        __bShowTimeType = MSG_RELTIME;
        break;
    case OSDDSPLY_MODE_CDROM_MOTION_ELAPSED:
        __bShowTimeType = MSG_RELTIME;
        break;
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
    case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
        __bShowTimeType = MSG_REMAIN_RELTIME;
        break;
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
    default:
        break;
    }
}

//***************************************************************************
//  Function    :   _OSDDSPLY_LD_ShowTime
//  Abstract    :   This function will show time for one-line display
//  Arguments   :   bUpdate: OSDDSPLY_UPDATE_ITEM==>Update 
//  Return      :   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDDSPLY_LD_ShowTime(BYTE bUpdate)
{
    _wOSDDSPLYHPos = 0;

    //show type of the time.
    switch (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID)
    {
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_MODE_DVD_TITLE_ELAPSED:
        //output "Title Elapsed" string.
        __pOSDUTLOutputString = aDSPLYTitleElapsed;
        break;
    case OSDDSPLY_MODE_DVD_TITLE_REMAIN:
        //Output "Title Remain" string.
        __pOSDUTLOutputString = aDSPLYTitleRemain;
        break;
    case OSDDSPLY_MODE_DVD_CHAPTER_ELAPSED:
        //Output "Chapter Elapsed" string.
        __pOSDUTLOutputString = aDSPLYChapterElapsed;
        break;
    case OSDDSPLY_MODE_DVD_CHAPTER_REMAIN:
        //Output "Chapter Remain" string.
        __pOSDUTLOutputString = aDSPLYChapterRemain;
        break;
#endif //#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
#ifndef NO_VCD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_MODE_VCD_SINGLE_ELAPSED:
        //Output "Single Elapsed" string.
        __pOSDUTLOutputString = aDSPLYSingleElapsed;
        break;
    case OSDDSPLY_MODE_VCD_SINGLE_REMAIN:
        //Output "Single Remain" string.
        __pOSDUTLOutputString = aDSPLYSingleRemain;
        break;
    case OSDDSPLY_MODE_VCD_TOTAL_ELAPSED:
        //Output "Total Elapsed" string.
        __pOSDUTLOutputString = aDSPLYTotalElapsed;
        break;
    case OSDDSPLY_MODE_VCD_TOTAL_REMAIN:
        //Output "Total Remain" string.
        __pOSDUTLOutputString = aDSPLYTotalRemain;
        break;
#endif //#ifndef NO_VCD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_MODE_CDROM_AUDIO:
        break;
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
    case OSDDSPLY_MODE_CDROM_MOTION_REMAIN:
        __pOSDUTLOutputString = aNDRemain;
        break;
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
    default:
        break;
    }

    if (__wDiscType & CDROM_M1)
    {
        if (__bAttrPlay != ATTR_JPG)
        {
#ifdef OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX
            if (pOSDDSPTypeMode[_bOSDDSPLYMode].bDisplayModeID == OSDDSPLY_MODE_CDROM_MOTION_REMAIN)
            {
                _OSDDSPLY_LD_DrawRegion(OSDDSPLY_REGION_LD_CDROM_TIME, OSDDSPLY_UPDATE_ITEM, 0);
                _wOSDDSPLYHPos = GDI_GetStringWidth_909(__pOSDUTLOutputString);
            }
#endif //OSDDSPLY_SUPPORT_SHOW_REMAIN_TIME_FOR_DIVX

            OSDUTL_PrepareOutputString();
            OSDUTL_ShowHourMinSec();
            _OSDDSPLY_LD_DrawRegion(OSDDSPLY_REGION_LD_CDROM_TIME, OSDDSPLY_UPDATE_INFO, _wOSDDSPLYHPos);               
        }
    }
    else
    {
        if (bUpdate & OSDDSPLY_UPDATE_ITEM)
        {
            _OSDDSPLY_LD_DrawRegion(OSDDSPLY_REGION_LD_TIME, OSDDSPLY_UPDATE_ITEM, 0);
        }

#ifndef NO_DISC_MODE //CoCo2.37   

		//CoCo1.07, support title menu in one-line Display mode.
		if ((__wDiscType & BOOK_DVD) && ((__bDomain==VTSM_DOM) || (__bDomain==VMGM_DOM)))
			return;
       
#endif //#ifndef NO_DISC_MODE //CoCo2.37    

        _wOSDDSPLYHPos = GDI_GetStringWidth_909(__pOSDUTLOutputString);
        _wOSDDSPLYHPos += OSDDSPLY_LD_DISTANCE_TIME_TITLE_TIME;
        
        if (bUpdate & OSDDSPLY_UPDATE_INFO)
        {    
            //Show time.    
            if (gcShowStatus.bStill || (__bCountStop != 0))
            {
                __pOSDUTLOutputString = aDSPLYUnknownTime;
                
                _OSDDSPLY_LD_DrawRegion(OSDDSPLY_REGION_LD_TIME, OSDDSPLY_UPDATE_INFO, (BYTE)_wOSDDSPLYHPos);      
                
                return;
            }
                        
            OSDUTL_PrepareOutputString();
            
            OSDUTL_ShowHourMinSec();
            
            _OSDDSPLY_LD_DrawRegion(OSDDSPLY_REGION_LD_TIME, OSDDSPLY_UPDATE_INFO, (BYTE)_wOSDDSPLYHPos);       
        }
    }   
}


//***************************************************************************
//  Function    :   _OSDDSPLY_LD_DrawRegion
//  Abstract    :   This function will draw the region.
//  Arguments   :   bRegion: The region you want to draw.
//              :   bType: OSDLD_UPDATE_ITEM: You want to draw the item.
//              :          OSDDSPLY_UPDATE_INFO: You want to draw the info.
//              :   bPos: The relative position of the region.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDDSPLY_LD_DrawRegion(BYTE bRegion, BYTE bType, BYTE bPos)
{
    //clear all region except time region.
    if ((bRegion != OSDDSPLY_REGION_LD_TIME) && (bRegion != OSDDSPLY_REGION_TIME_LD_TIME) && (bRegion != OSDDSPLY_REGION_LD_CDROM_TIME))
        _OSDDSPLY_LD_ClearRegion(bRegion, bPos);

    _OSDDSPLYStringAttr.bBackground = OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND; //PAL_ENTRY_COLOR_TRANSPARENT; //Set the color of background is the same as color key.
    _OSDDSPLYStringAttr.bColorKey = 0;
    _OSDDSPLYStringAttr.bShadow1 = OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND; //Use OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND to prevent the "Open Folder" icon is wrong.
    _OSDDSPLYStringAttr.bShadow2 = OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND; //Use OSDDSPLY_LD_PALETTE_ENTRY_GENERAL_BACKGROUND to prevent the "Open Folder" icon is wrong.
    
    switch (bRegion)
    {
#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_REGION_LD_TITLE:
        if (bType == OSDDSPLY_UPDATE_INFO)
        {
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_TITLE_INFO_COLOR;
        }
        else
        {
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_TITLE_ITEM_COLOR;
        }
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_TITLE_START_H;
        break; 
    case OSDDSPLY_REGION_LD_CHAPTER:
        if (bType == OSDDSPLY_UPDATE_INFO)
        {
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_CHAPTER_INFO_COLOR;
        }
        else
        {
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_CHAPTER_ITEM_COLOR;
        }
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_CHAPTER_START_H;
        break; 
#endif //#ifndef NO_DVD_DISPLAY_UI //++CoCo2.37p
    case OSDDSPLY_REGION_LD_TIME:
        _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_TIME_INFO_COLOR;
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_TIME_START_H;
        break;
    case OSDDSPLY_REGION_LD_PROGRAM_STATUS:        
        _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_PROGRAM_STATUS_COLOR;
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_PROGRAM_STATUS_START_H;
        break;
    case OSDDSPLY_REGION_TIME_LD_TIME:
        _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_TIME_INFO_COLOR;
        //_OSDDSPLYStringAttr.wX = OSDDSPLY_LD_TIME_SHOW_TIME_START_H;
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_TIME_START_H + ((OSDDSPLY_LD_TIME_WIDTH - GDI_GetStringWidth_909(__pOSDUTLOutputString)) >> 1);
        break;
    case OSDDSPLY_REGION_LD_FILE_NAME:
        if (bType == OSDDSPLY_UPDATE_INFO)
        {
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_FILE_NAME_INFO_COLOR;
        }
        else
        {
            //Draw the "folder" icon.
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_FILE_NAME_ITEM_TEXT_COLOR;
        }
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_FILE_NAME_START_H;
        break;
    case OSDDSPLY_REGION_LD_FILE_NUM:
        if (bType == OSDDSPLY_UPDATE_INFO)
        {           
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_FILE_NUM_INFO_COLOR;
        }
        else
        {
            //Draw the "file num" icon.
            _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_FILE_NUM_ITEM_TEXT_COLOR;
        }
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_FILE_NUM_START_H;
        break;
    case OSDDSPLY_REGION_LD_CDROM_TIME:
         _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_CDROM_TIME_COLOR;
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_CDROM_TIME_START_H;
        break;
	case OSDDSPLY_REGION_LD_MENU:
        _OSDDSPLYStringAttr.bTextColor = OSDDSPLY_LD_REGION_MENU_COLOR;
        _OSDDSPLYStringAttr.wX = OSDDSPLY_LD_REGION_MENU_START_H;
		break;
    default:
        break;
    }

    _OSDDSPLYStringAttr.wX += bPos;
    _OSDDSPLYStringAttr.wY = OSDDSPLY_LD_START_V + ((OSDDSPLY_LD_HEIGHT - GDI_GetStringHeight_909(__pOSDUTLOutputString)) >> 1);
    
    //GDI_DrawString_909(0, &_OSDDSPLYStringAttr, __pOSDUTLOutputString);
    _OSDDSPLY_DrawString();
}

//***************************************************************************
//  Function    :   _OSDDSPLY_LD_ShowItem
//  Abstract    :   This function will show the item according to bMessage.
//  Arguments   :   bMessage: The message.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDDSPLY_LD_ShowItem(BYTE bMessage)
{    
    _OSDDSPLY_OutputString(bMessage);
        
    _OSDDSPLY_LD_DrawRegion(_OSDDSPLY_LD_GetRegion(bMessage), OSDDSPLY_UPDATE_ITEM, 0);
}

//***************************************************************************
//  Function    :   _OSDDSPLY_LD_GetRegion
//  Abstract    :   This function will get the message's region.
//  Arguments   :   bMessage: The message.
//  Return		:   The region that the message want to output.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
BYTE _OSDDSPLY_LD_GetRegion(BYTE bMessage)
{
    switch (bMessage)
    {
    case MSG_TITLE:
    case MSG_TRACK:
        _bOSDDSPLYTemp = OSDDSPLY_REGION_LD_TITLE;
        break;
    case MSG_CHAPTER:
        _bOSDDSPLYTemp = OSDDSPLY_REGION_LD_CHAPTER;
        break;
    case MSG_PROGRAM:
        _bOSDDSPLYTemp = OSDDSPLY_REGION_LD_PROGRAM_STATUS;
        break;
    case MSG_FILE_NAME:
        _bOSDDSPLYTemp = OSDDSPLY_REGION_LD_FILE_NAME;
        break;
    case MSG_FILE_NUM:
        _bOSDDSPLYTemp = OSDDSPLY_REGION_LD_FILE_NUM;
        break;
    default:
        break;
    }

    return _bOSDDSPLYTemp;
}


//***************************************************************************
//  Function    :   _OSDDSPLY_OutputString
//  Abstract    :   This function will output the string of the item according to bMessage.
//  Arguments   :   bMessage: The message.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//******************************************

⌨️ 快捷键说明

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