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

📄 osdld.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    {
    case OSDLD_REGION_TITLE:
        GDI_DRAW_STRING((OSDLD_REGION_TITLE_START_H+bPos), _wOSDVPTemp);
        break; 
    case OSDLD_REGION_CHAPTER:
        GDI_DRAW_STRING((OSDLD_REGION_CHAPTER_START_H+bPos), _wOSDVPTemp);
        break; 
    case OSDLD_REGION_TIME:
        GDI_DRAW_STRING((OSDLD_REGION_TIME_START_H+bPos), _wOSDVPTemp);
        break;
    case OSDLD_REGION_PROGRAM: //CoCo1.07, add program icon 
        GDI_DRAW_STRING((OSDLD_REGION_PROGRAM_START_H+bPos), _wOSDVPTemp);
        break;
    case OSDLD_REGION_FOLDER:
#ifdef SUPPORT_UNICODE //CoCo2.36, support UNICODE string.
        GDI_DRAW_UNICODE_STRING((OSDLD_REGION_FOLDER_START_H+bPos), _wOSDVPTemp, _wOSDFMMaxStringSpace);
#else
        GDI_DRAW_STRING((OSDLD_REGION_FOLDER_START_H+bPos), _wOSDVPTemp);
#endif
        break;
    case OSDLD_REGION_TRACK:
        GDI_DRAW_STRING((OSDLD_REGION_TRACK_START_H+bPos), _wOSDVPTemp);
        break;
        //CoCo2.37
    case OSDLD_REGION_TITLE_MENU:
        GDI_DRAW_STRING((OSDLD_REGION_TITLE_MENU_START_H+bPos), _wOSDVPTemp);
        break;
    default:
        break;
    }
}

#else // #ifndef SUPPORT_COLORFUL_DISPLAY_MODE

void _OSDLD_DrawRegion(BYTE bRegion, BYTE bType, BYTE bPos)
{
    //clear all region except time region.
    if (bRegion != OSDLD_REGION_TIME)
        _OSDLD_ClearRegion(bRegion, bPos);

    GDI_SetTextColor(TEXT_BG_COLOR, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
    _wOSDVPTemp = OSDLD_START_V + ((OSDLD_HEIGHT - GDI_GetStringHeight()) >> 1);
    
    switch (bRegion)
    {
    case OSDLD_REGION_TITLE:
        if (bType == OSDLD_UPDATE_INFO)
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TITLE_INFO_COLOR);
        }
        else
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TITLE_ITEM_COLOR);
        }
        GDI_DRAW_STRING((OSDLD_REGION_TITLE_START_H+bPos), _wOSDVPTemp);
        break; 
    case OSDLD_REGION_CHAPTER:
        if (bType == OSDLD_UPDATE_INFO)
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_CHAPTER_INFO_COLOR);
        }
        else
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_CHAPTER_ITEM_COLOR);
        }
        GDI_DRAW_STRING((OSDLD_REGION_CHAPTER_START_H+bPos), _wOSDVPTemp);
        break; 
    case OSDLD_REGION_TIME:
        GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TIME_COLOR);
        GDI_DRAW_STRING((OSDLD_REGION_TIME_START_H+bPos), _wOSDVPTemp);
        break;
    case OSDLD_REGION_PROGRAM: //CoCo1.07, add program icon 
        GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_PROGRAM_COLOR);
        GDI_DRAW_STRING((OSDLD_REGION_PROGRAM_START_H+bPos), _wOSDVPTemp);
        break;
    case OSDLD_REGION_FOLDER:
        if (bType == OSDLD_UPDATE_INFO)
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_FOLDER_INFO_COLOR);
        }
        else if (bType == OSDLD_UPDATE_ITEM)
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_FOLDER_ITEM_COLOR);
        }
#ifdef SUPPORT_UNICODE //CoCo2.36, support UNICODE string.
        GDI_DRAW_UNICODE_STRING((OSDLD_REGION_FOLDER_START_H+bPos), _wOSDVPTemp, _wOSDFMMaxStringSpace);
#else
        GDI_DRAW_STRING((OSDLD_REGION_FOLDER_START_H+bPos), _wOSDVPTemp);
#endif
        break;
    case OSDLD_REGION_TRACK:
        if (bType == OSDLD_UPDATE_INFO)
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TRACK_INFO_COLOR);
        }
        else
        {
            GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TRACK_ITEM_COLOR);
        }
        GDI_DRAW_STRING((OSDLD_REGION_TRACK_START_H+bPos), _wOSDVPTemp);
        break;
        //CoCo2.37
    case OSDLD_REGION_TITLE_MENU:
        GDI_SetTextColor(TEXT_FG_COLOR, OSDLD_REGION_TITLE_MENU_COLOR);
        GDI_DRAW_STRING((SDLD_REGION_TITLE_MENU_START_H+bPos), _wOSDVPTemp);
        break;
    default:
        break;
    }
}

#endif // #ifndef SUPPORT_COLORFUL_DISPLAY_MODE

//***************************************************************************
//  Function    :   _OSDLD_GetInfoPos
//  Abstract    :   Call this function to get the position of the info.
//  Arguments   :   bMessage: the message.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_GetInfoPos(BYTE bMessage)
{
    _wOSDVPHPos = 0;

    //Get the width of the items.
    switch (bMessage)
    {
    case MSG_TITLE:
        GDI_CopyCodeString(aLDTitle[_bOSDLang]);
        break;
    case MSG_CHAPTER:
        GDI_CopyCodeString(aLDChapter[_bOSDLang]);
        break;
    case MSG_TRACK:
        GDI_CopyCodeString(aLDTrack[_bOSDLang]);
        break;
    case MSG_FOLDER:
        GDI_CopyCodeString(aLDOpenFolderIcon);
        _wOSDVPHPos += GDI_GetStringWidth();
        GDI_CopyCodeString(aLDFolderItem);
        break;
    default:        
        _wOSDVPHPos = 0;
        return;
    }

    _wOSDVPHPos += GDI_GetStringWidth();
}


//***************************************************************************
//  Function    :   _OSDLD_ShowTime
//  Abstract    :   This function will show the time.
//  Arguments   :   bMessage: the message.
//              :   wTime: The time you want to display.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_ShowTime(void)
{
    _wOSDVPHPos = 0;

    if (gcShowStatus.bStill)
    {
        _OSDLD_ShowUnknownTime();
        return;
    }
    
    switch (_bOSDMsg)
    {
    case    MSG_REMAIN_ABSTIME:
    case    MSG_REMAIN_RELTIME:
    case    MSG_REMAIN_TITLE_TIME:
    case    MSG_REMAIN_CHAPTER_TIME:
        GDI_CopyCodeString(aLDRemain[OSDLD_REGION_TIME_NUMBER_INDEX]);
        break;
    case    MSG_ABSTIME:
    case    MSG_RELTIME:
    case    MSG_TITLE_TIME:
    case    MSG_CHAPTER_TIME:
    default:
        GDI_CopyCodeString(aLDTimeSpace[OSDLD_REGION_TIME_NUMBER_INDEX]);
        break;
    }

    _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
    _wOSDVPHPos += GDI_GetStringWidth();

#ifdef SUPPORT_SHOW_TIME_ONCE
    OSD_ShowHourMinSec(OSDLD_REGION_TIME_NUMBER_INDEX);
    _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
#else
    if (_wOSDVPShowTime != gcShowStatus.wCurrentTime)
    {
        if (_wOSDVPShowTime > gcShowStatus.wCurrentTime)
        {
            if ((_wOSDVPShowTime - gcShowStatus.wCurrentTime) > 1)
                _bOSDVPShowAllTime = TRUE;
        }
        else if (gcShowStatus.wCurrentTime > _wOSDVPShowTime)
        {
            if ((gcShowStatus.wCurrentTime - _wOSDVPShowTime) > 1)
                _bOSDVPShowAllTime = TRUE;
        }

//jyliu.temp
if(__bNextOSD)
{
	__bNextOSD = FALSE;
	_bOSDVPShowAllTime = TRUE;

}

        _bOSDIndex = 1;    
        //show "hour"
        _OSD_ShowTimeNum((BYTE)(HIBYTE(gcShowStatus.wCurrentTime)/60), OSDLD_REGION_TIME_NUMBER_INDEX);    
        //show ":"
        __wGDIString[_bOSDIndex] = aMouhow[OSDLD_REGION_TIME_NUMBER_INDEX];
        __wGDIString[0] = _bOSDIndex;
        if (_bOSDVPShowAllTime || ((HIBYTE(gcShowStatus.wCurrentTime)/60) != (HIBYTE(_wOSDVPShowTime)/60)))
        {
            _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
            Service_420();
        }
        _wOSDVPHPos += GDI_GetStringWidth();                
        
        //show "Minute"
        _bOSDIndex = 1;
        _OSD_ShowTimeNum((BYTE)(HIBYTE(gcShowStatus.wCurrentTime)%60), OSDLD_REGION_TIME_NUMBER_INDEX);
        //show ":"
        __wGDIString[_bOSDIndex] = aMouhow[OSDLD_REGION_TIME_NUMBER_INDEX];
        __wGDIString[0] = _bOSDIndex;
        if (_bOSDVPShowAllTime || ((HIBYTE(gcShowStatus.wCurrentTime)%60) != (HIBYTE(_wOSDVPShowTime)%60)))
        {
            _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
            Service_420();
        }
        _wOSDVPHPos += GDI_GetStringWidth();
       
        //show "second"
        _bOSDIndex = 1;
        if (_bOSDVPShowAllTime || ((LOBYTE(gcShowStatus.wCurrentTime)) != (LOBYTE(_wOSDVPShowTime))))
        {
            _OSD_ShowTimeNum((BYTE)(LOBYTE(gcShowStatus.wCurrentTime)), OSDLD_REGION_TIME_NUMBER_INDEX); 
            _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
        }
    }
#endif
   
    _wOSDVPShowTime = gcShowStatus.wCurrentTime;
    _bOSDVPShowAllTime = FALSE;
}

//***************************************************************************
//  Function    :   _OSDLD_Initial
//  Abstract    :   This function will do initialization for one-line display.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_Initial(void)
{
    _bSpecialMode = FALSE;
    _wOSDVPShowTime = 0xFFFF;
    _bOSDVPShowAllTime = TRUE;

    GDI_SetMixRatio(OSDLD_MIX_RATIO_BACKGROUND); //The mix ration just effects the background
    GDI_SetCurrentRegion(0); //use region 0
    _OSDLD_ClearRegion(OSDLD_REGION_ALL, 0);
    GDI_ActivateRegion(); //open GDI

    //No shadow
    GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
    GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDLD_PALETTE_ENTRY_GENERAL_BACKGROUND);
}

//***************************************************************************
//  Function    :   _OSDLD_ShowUnknownTrack
//  Abstract    :   This function will show unknown track.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_ShowUnknownTrack(void)
{
    _OSDLD_GetInfoPos(MSG_TRACK);
#ifdef SHOW_UNKNOWN_STATE_WHEN_STOP
    GDI_CopyCodeString(aLDUnknownTitlChapter[OSDLD_REGION_TRACK_NUMBER_INDEX]);
#else
    GDI_CopyCodeString(aLDStopTrack);
    _bOSDIndex = __wGDIString[0]+1;
    __wGDIString[_bOSDIndex++] = aLDSlash[OSDLD_REGION_TRACK_NUMBER_INDEX][1]; //to be modified to "/"
    
    if (gcShowStatus.wTotalTracks != 0)
        OSD_OutputNumFromIndex(gcShowStatus.wTotalTracks, OSDLD_REGION_TRACK_NUMBER_INDEX);
    else
        GDI_CopyCodeString(aLDUnknownTrack);
#endif

    _OSDLD_DrawRegion(OSDLD_REGION_TRACK, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos);
}

//***************************************************************************
//  Function    :   _OSDLD_ShowUnknownTime
//  Abstract    :   This function will show unknown time.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_ShowUnknownTime(void)
{
    _bOSDVPShowAllTime = TRUE;
    _wOSDVPShowTime = 0xFFFF;

    GDI_CopyCodeString(aLDUnknownTime);
    _OSDLD_DrawRegion(OSDLD_REGION_TIME, OSDLD_UPDATE_INFO, 0);
}

//***************************************************************************
//  Function    :   _OSDLD_ShowUnknownTitle
//  Abstract    :   This function will show unknown title.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_ShowUnknownTitle(void)
{
    _OSDLD_GetInfoPos(MSG_TITLE);
    GDI_CopyCodeString(aLDUnknownTitlChapter[OSDLD_REGION_TITLE_NUMBER_INDEX]);
    _OSDLD_DrawRegion(OSDLD_REGION_TITLE, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos); 
}


//***************************************************************************
//  Function    :   _OSDLD_ShowUnknownChapter
//  Abstract    :   This function will show unknown chapter.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDLD_ShowUnknownChapter(void)
{
    _OSDLD_GetInfoPos(MSG_CHAPTER);
    GDI_CopyCodeString(aLDUnknownTitlChapter[OSDLD_REGION_CHAPTER_NUMBER_INDEX]);
    _OSDLD_DrawRegion(OSDLD_REGION_CHAPTER, OSDLD_UPDATE_INFO, (BYTE)_wOSDVPHPos); 
}

⌨️ 快捷键说明

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