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

📄 osdnd.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
//  Arguments   :   bMessage: the message.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowBottomMessage(void)
{
    switch (_bOSDMsg)
    {
    case MSG_AUDIO:
        _OSDND_ShowAudio();
        break;
    case MSG_VOLUME:
        _OSDND_ShowVolume();
        break;
    case MSG_MUTE:
        if (_wOSDInfo)
            GDI_CopyCodeString(aNDMuteOn[_bOSDLang]);
        else
            GDI_CopyCodeString(aNDMuteOff[_bOSDLang]);
        break;
	case MSG_AUDIO_OUTPUT_CTL:
		_OSDND_ShowAudioOutput();
		break;
    case MSG_KEY: //CoCo1.00, OSD module just define one message for KEY_UP, KEY_DOWN and KEY_NORMAL
        _OSDND_ShowAudioKeyControl();
        break;
    case MSG_ECHO:
        _OSDND_ShowEcho();
        break;
    case MSG_SURROUND:
        _OSDND_ShowSurround();
        break;
#ifdef KARAOKE
    case MSG_3D:
        _OSDND_Show3D();
        break;
#endif
    case MSG_ANGLE_CTL:
        _OSDND_ShowAngle();
        break;        
    case MSG_AST_CTL:
        GDI_CopyCodeString(aNDLanguage[_bOSDLang]);
        _OSDND_OutputBottomString();
        _OSD_OutputAudioType();
        _OSDND_OutputBottomString();
        if (__wDiscType & BOOK_DVD)
        {
            GDI_CopyCodeString(aNDAudioDistance);
            _OSDND_OutputBottomString();
            _OSD_OutputAudioChannel();
            _OSDND_OutputBottomString();
        }
        GDI_CopyCodeString(aNDAudioDistance);
        _OSDND_OutputBottomString();
        if (__bASTNs) // AST exist
        {
            _OSDND_CodeToLanguage(__wA_LCD);
            _OSDND_OutputBottomString();
            GDI_CopyCodeString(aNDAudioDistance);
            _OSDND_OutputBottomString();
            _bOSDIndex = 1;
            OSD_OutputNumFromIndex((WORD)(__bASTNO+1), OSDND_FONT_INDEX);
            __wGDIString[_bOSDIndex++] = aNDSlash[1]; 
            OSD_OutputNumFromIndex(__bASTNs, OSDND_FONT_INDEX);
        }
        else            
            GDI_CopyCodeString(aNDPUnknownLanguage);        
        break;
    case MSG_SPST_CTL:
        if (__bSPSTNs) // exist SP
        {
            GDI_CopyCodeString(aNDSubtitle[_bOSDLang]);
            _OSDND_OutputBottomString();           
            // spst is on, ie. __bSP_Disp_OFF is 0 or 128 ~255
            if ((__bSP_Disp_OFF==0) || (__bSP_Disp_OFF&0x80))
            {
                _OSDND_CodeToLanguage(__wSP_LCD);
                _OSDND_OutputBottomString();
                GDI_CopyCodeString(aNDAudioDistance);
                _OSDND_OutputBottomString();
                _bOSDIndex = 1;
                OSD_OutputNumFromIndex((WORD)(__bSPSTNO+1), OSDND_FONT_INDEX);
                __wGDIString[_bOSDIndex++] = aNDSlash[1]; 
                OSD_OutputNumFromIndex(__bSPSTNs, OSDND_FONT_INDEX);
            }
            else // spst is off
                GDI_CopyCodeString(aNDOff[_bOSDLang]);
        }
        else
            return;
        break;
    default:
        break;
    }

    GDI_DRAW_STRING(_wOSDVPHPos, __wOSDBottomVPos);
}

//***************************************************************************
//  Function    :   _OSDND_ClearRegion
//  Abstract    :   This function will clear the region.
//  Arguments   :   bRegion: The region you want to clear.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ClearRegion(BYTE bRegion)
{
    switch (bRegion)
    {
    case OSDND_UPPER_RIGHT_REGION:
        if (_bCurrentUI == OSD_UI_FM)
        {
            //SET_RECT(__GDIParm.u.RectParm.rect, (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH), __wOSDUpVPos, OSDFM_DISPLAY_BACKGROUND_RIGHT, (OSDFM_DISPLAY_BIG_FRAME_V-1));
            _OSDFM_ClearRegion(OSDFM_CLEAR_RECOVER_UPPER_REGION);
        }
#ifdef SUPPORT_FM_BUTTONS 
		else if (_bCurrentUI == OSD_UI_PROGRAM_LIST)
		{
			_OSDPL_ClearRegion(OSDPL_CLEAR_RECOVER_UPPER_REGION); 
		}
#endif
        else if (_bCurrentUI == OSD_UI_THUMBNAIL)
        {
            _THUMBNAIL_ClearRegion(THUMBNAIL_CLEAR_RECOVER_UPPER_REGION);
        }
        else
        {
            SET_RECT(__GDIParm.u.RectParm.rect, OSDND_UPPER_BACKGROUND_START_H, OSDND_UPPER_BACKGROUND_START_V, OSDND_UPPER_BACKGROUND_RIGHT, OSDND_UPPER_BACKGROUND_BOTTOM);
        }
        break;
    case OSDND_BOTTOM_REGION:
        if (_bCurrentUI == OSD_UI_FM)
        {
			_OSDFM_ClearRegion(OSDFM_CLEAR_RECOVER_BOTTOM_REGION);
        }
#ifdef SUPPORT_FM_BUTTONS
		else if (_bCurrentUI == OSD_UI_PROGRAM_LIST)
		{
			_OSDPL_ClearRegion(OSDPL_CLEAR_RECOVER_BOTTOM_REGION); 
		}
#endif
        else
        {
            SET_RECT(__GDIParm.u.RectParm.rect, OSDND_BOTTOM_BACKGROUND_START_H, __wOSDBottomVPos, OSDND_BOTTOM_BACKGROUND_START_RIGHT, OSDND_BOTTOM_BACKGROUND_START_BOTTOM);
        }
        break;
    default:
        return;
    }

#ifdef SUPPORT_FM_BUTTONS
    if ((_bCurrentUI == OSD_UI_FM) || (_bCurrentUI == OSD_UI_PROGRAM_LIST))
#else
    if (_bCurrentUI == OSD_UI_FM)
#endif
        __GDIParm.u.RectParm.bColor = __bOSDBg;        
    else
        __GDIParm.u.RectParm.bColor = PAL_ENTRY_COLOR_TRANSPARENT;  

    GDI_FillRect((PPARM_RECT)&__GDIParm);        
}

//***************************************************************************
//  Function    :   _OSDND_ShowSlideTransitionTime
//  Abstract    :   Show the time of slide transition.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowSlideTransitionTime(void)
{
    if (_bOSDMsg == MSG_SLOW)
        return;

    OSD_OutputNum(_wOSDInfo, OSDND_FONT_INDEX); //time
    _OSDND_OutputUpString();
           
    _OSDND_OutputTextEx(aNDSlideTransitionTime);
}

//***************************************************************************
//  Function    :   _OSDND_ShowPlayAction
//  Abstract    :   none.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowPlayAction(void)
{    
    OSD_OutputNum(_bSpeedFactor, OSDND_FONT_INDEX);
    _OSDND_OutputUpString();
        
    if (_bOSDMsg == MSG_SLOW)
    {
        GDI_CopyCodeString(aNDSlash);
        _OSDND_OutputUpString();
        
        OSD_OutputNum(1, OSDND_FONT_INDEX);
        _OSDND_OutputUpString();
    }

    GDI_CopyCodeString(aNDSpeed);
    _OSDND_OutputUpString();

    switch (_bOSDMsg)
    {
    case MSG_SCANFORWARD:
        _OSDND_OutputTextEx(aNDScanF[_bOSDLang]);
        break;
    case MSG_SCANBACKWARD:
        _OSDND_OutputTextEx(aNDScanB[_bOSDLang]);
        break;
    case MSG_SLOW:
        _OSDND_OutputTextEx(aNDSlow[_bOSDLang]);
        break;
    default:
        break;
    }
}

//***************************************************************************
//  Function    :   _OSDND_ShowTime
//  Abstract    :   This function will show the time.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowTime(void)
{
    OSD_ShowHourMinSec(OSDND_FONT_INDEX);
    _OSDND_OutputUpString();

    switch (_bOSDMsg)
    {
    case    MSG_REMAIN_ABSTIME:
    case    MSG_REMAIN_RELTIME:
    case    MSG_REMAIN_TITLE_TIME:
    case    MSG_REMAIN_CHAPTER_TIME:
        GDI_CopyCodeString(aRemain[OSDND_FONT_INDEX]);
        break;
    case    MSG_ABSTIME:
    case    MSG_RELTIME:
    case    MSG_TITLE_TIME:
    case    MSG_CHAPTER_TIME:
        GDI_CopyCodeString(aNDPlus);
        break;
    default:
        break;
    }

    _OSDND_OutputUpString();

    switch (_bOSDMsg)
    {
        // absolute time/ absolute remain time, ie disc unit
    case MSG_ABSTIME:
    case MSG_REMAIN_ABSTIME:
        GDI_CopyCodeString(aNDDisc[_bOSDLang]);
        break;
        // relative playing time/ relative remain time, ie. track unit
    case MSG_RELTIME:
    case MSG_REMAIN_RELTIME:
        GDI_CopyCodeString(aNDTrack[_bOSDLang]);
        break;
        // title playing time/ title remain time
    case MSG_TITLE_TIME:
    case MSG_REMAIN_TITLE_TIME:
        GDI_CopyCodeString(aNDTitle[_bOSDLang]);
        break;
        // chapter playing time/ chapter remain time
    case MSG_CHAPTER_TIME:
    case MSG_REMAIN_CHAPTER_TIME:
        GDI_CopyCodeString(aNDChapter[_bOSDLang]);
        break;
    }  
}


//***************************************************************************
//  Function    :   _OSDND_ShowAudio
//  Abstract    :   Call this funciton to show audio info.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowAudio(void)
{
    //switch (gcShowStatus.bAudioChannel)
	switch (__bModeChannel) //CoCo1.21
    {
    case AUDIO_STEREO:
        GDI_CopyCodeString(aNDLR[_bOSDLang]);
        break;
    case AUDIO_LL:
        GDI_CopyCodeString(aNDLL[_bOSDLang]);
        break;
    case AUDIO_RR:
        GDI_CopyCodeString(aNDRR[_bOSDLang]);
        break;
        /* --CoCo2.31, no one set __bModeChannel to AUDIO_3D.
    case AUDIO_3D:
        GDI_CopyCodeString(aND3DAudio);
        break;
        */
    }  
}

//***************************************************************************
//  Function    :   _OSDND_SetBarAttribute
//  Abstract    :   Set the common attribute for the horizontal bar.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_SetBarAttribute(void)
{
    __GDIParm.u.VolumeBar.bBarColor = OSDND_PALETTE_ENTRY_BAR_FG;
    __GDIParm.u.VolumeBar.bBgColor = __bOSDBg;
    __GDIParm.u.VolumeBar.bOriention = ORIENTION_HORIZONTAL;
}

//***************************************************************************
//  Function    :   _OSDND_ShowVolume
//  Abstract    :   Call this function to show volume bar.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowVolume(void)
{
    GDI_CopyCodeString(aNDVolume[_bOSDLang]);
    _OSDND_OutputBottomString();

    //show volume bar
    if (!(_bVolDisplayed & VOL_DISPLAYED)) // brian0.95
        GDI_FILL_RECT(_wOSDVPHPos, __wOSDBottomVPos, (_wOSDVPHPos+OSDND_DISPLAY_VOLUME_BAR_WIDTH+OSDND_DISTANCE_FONT_VOLUME_BAR*2), (__wOSDBottomVPos+OSDND_FONT_HEIGHT-1), __bOSDBg);           

    _wOSDVPHPos += OSDND_DISTANCE_FONT_VOLUME_BAR;

    _bOSDVPTemp = LOBYTE(_wOSDInfo);

    _OSDND_SetBarAttribute();
    __GDIParm.u.VolumeBar.wVolume = (WORD)_bOSDVPTemp*100/OSDND_DISPLAY_VOLUME_BAR_RANGE; // percent
    SET_RECT(__GDIParm.u.VolumeBar.rect, _wOSDVPHPos, (__wOSDBottomVPos+(OSDND_FONT_HEIGHT-OSDND_DISPLAY_VOLUME_BAR_HEIGHT)/2), (_wOSDVPHPos+OSDND_DISPLAY_VOLUME_BAR_WIDTH), (__wOSDBottomVPos+OSDND_DISPLAY_VOLUME_BAR_HEIGHT));    
    GDI_DrawVolumeBar((PPARM_VOLUME_BAR)&__GDIParm);

    _bOSDIndex = 1; //put from the index 1 of __wGDIString[]
    if (_bOSDVPTemp < 10)
    {
        OSD_OutputNumFromIndex(0, OSDND_FONT_INDEX);
    }
    OSD_OutputNumFromIndex(_bOSDVPTemp, OSDND_FONT_INDEX);
        
    _wOSDVPHPos += OSDND_DISPLAY_VOLUME_BAR_WIDTH+OSDND_DISTANCE_FONT_VOLUME_BAR;

#ifdef SUPPORT_TUNE_DRAM_CLOCK_PHASE //CoCo2.32, add the code to support tuning the DRAM clock phase.
    GDI_DRAW_STRING(_wOSDVPHPos, __wOSDBottomVPos);
    _wOSDVPHPos += GDI_GetStringWidth()+16;

    _bOSDIndex = 1; //put from the index 1 of __wGDIString[]
    if (__dwDRAMClockPhaseValue < 10)
    {
        OSD_OutputNumFromIndex(0, OSDND_FONT_INDEX);
    }

    OSD_OutputNumFromIndex((WORD)__dwDRAMClockPhaseValue, OSDND_FONT_INDEX);
#endif
}

//***************************************************************************
//  Function    :   _OSDND_ShowAudioKeyControl
//  Abstract    :   Call this function to show audio key bar.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDND_ShowAudioKeyControl(void)
{
    GDI_CopyCodeString(aNDTone[_bOSDLang]);
    _OSDND_OutputBottomString();
    
    //show key bar    
    if (!(_bVolDisplayed & KEY_DISPLAYED))    // brian0.95
        GDI_FILL_RECT(_wOSDVPHPos, __wOSDBottomVPos, (_wOSDVPHPos+OSDND_DISPLAY_AUDIO_KEY_BAR_WIDTH+OSDND_DISTANCE_FONT_AUDIO_KEY_BAR*2), (__wOSDBottomVPos+OSDND_FONT_HEIGHT-1), __bOSDBg);             

    _wOSDVPHPos += OSDND_DISTANCE_FONT_AUDIO_KEY_BAR;

    _OSDND_SetBarAttribute();

⌨️ 快捷键说明

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