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

📄 osdvp.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
    if ((bMessage == MSG_REPEAT) || (bMessage == MSG_PROGRAM) || (bMessage == MSG_VIDEO_OUTPUT)) //CoCo1.00, let OSD module process the message again.
        return FALSE;
    else
        return TRUE;
}

//***************************************************************************
//  Function    :   _OSDVP_ShowItem
//  Abstract    :   This function will show the item according to the message.
//  Arguments   :   bMessage: The message.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_ShowItem(BYTE bMessage)
{
    _OSDVP_OutputString(bMessage, OSDVP_UPDATE_ITEM);

    switch (bMessage)
    {
    case MSG_TITLE:
    case MSG_TRACK:
        _bOSDVPTemp = OSDVP_REGION_TITLE;
        break;
    case MSG_CHAPTER:
        if ((__bDomain == VTSM_DOM) || (__bDomain == VMGM_DOM))// Root Menu/Title Menu
            return;
        else
            _bOSDVPTemp = OSDVP_REGION_CHAPTER;
        break;
    case MSG_SPST_CTL:
        _bOSDVPTemp = OSDVP_REGION_SUBTITLE;
        break;
    case MSG_AST_CTL:
        _bOSDVPTemp = OSDVP_REGION_AST;
        break;
    case MSG_ANGLE_CTL:
        _bOSDVPTemp = OSDVP_REGION_ANGLE;
        break;
    case MSG_TVMODE:
        _bOSDVPTemp = OSDVP_REGION_TVMODE;
        break;
    default:
        break;
    }

    _OSDVP_DrawRegion(_bOSDVPTemp, OSDVP_UPDATE_ITEM, 0);
}

//***************************************************************************
//  Function    :   _OSDVP_ShowDVDItems
//  Abstract    :   This function will show the items for DVD.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_ShowDVDItems(void)
{
#ifdef SAMLL_DISPLAY_MODE_2 //CoCo.230, show small display mode.

#ifdef SHOW_UNKNOWN_STATE_WHEN_STOP
    if (__bCountStop != 0)
    {
        _OSDVP_UpdateUnknownRegions();
        return;
    }
#endif

    _OSDVP_ShowItem(MSG_SPST_CTL);
    _OSDVP_ShowInfo(MSG_SPST_CTL);
    _OSDVP_ShowItem(MSG_AST_CTL);
    _OSDVP_ShowInfo(MSG_AST_CTL);
    _OSDVP_ShowItem(MSG_ANGLE_CTL);
    _OSDVP_ShowInfo(MSG_ANGLE_CTL);

#else
    //CoCo0.95, The stage and flow are defined and modified by Brain.
    switch(_bOSDVPStage)
    {
    case 1:
        //Update "Title" item
        _OSDVP_ShowItem(MSG_TITLE);

		//Update "Title" info.
		_OSDVP_ShowInfo(MSG_TITLE); 

        //update "Chapter" item
        _OSDVP_ShowItem(MSG_CHAPTER);

		//update "Chapter" info.
        _OSDVP_ShowInfo(MSG_CHAPTER);

        _bOSDVPStage++;
        break;
    case 2:
        //CoCo.110, Fix the problem about the time will flash in pre-stop/stop mode.
        if (__bCountStop != 0)
        {
            _OSDVP_ShowUnknownTime();
        }
        else
        {
            _bOSDMsg = __bShowTimeType;
            _OSDVP_ShowTime();
        }

        //Show playing status.
        _OSDVP_ShowInfo(MSG_STATUS);

        //update "Subtitle" item
        _OSDVP_ShowItem(MSG_SPST_CTL);
        _OSDVP_ShowInfo(MSG_SPST_CTL);

        _bOSDVPStage++;
        break;
    case 3:
        //update "Language" item
        _OSDVP_ShowItem(MSG_AST_CTL);
        _OSDVP_ShowInfo(MSG_AST_CTL);

        _bOSDVPStage++;
        break;
    case 4:
        //update "audio" info
        _OSDVP_ShowInfo(MSG_AUDIO_OUTPUT_CTL);     

        //show P-SCAN/Interlace
        _OSDVP_ShowInfo(MSG_PSCAN);

        _bOSDVPStage++;
        break;
    case 5:
		//update "equalizer" info
        //_OSDVP_ShowInfo(MSG_SOUND_EFFECT);
        _OSDVP_ShowItem(MSG_TVMODE);
        _OSDVP_ShowInfo(MSG_TVMODE);

        //update "angle" item
        _OSDVP_ShowItem(MSG_ANGLE_CTL);
        _OSDVP_ShowInfo(MSG_ANGLE_CTL);

        _bOSDVPStage++;
        break;        
    case 6:
        _OSDVP_ShowInfo(MSG_REPEAT);
        _OSDVP_ShowInfo(MSG_PROGRAM);
        _bOSDVPStage = 0;
        break;
    default:
        _bOSDVPStage = 0;
    }
#endif
}


//***************************************************************************
//  Function    :   _OSDVP_Initial
//  Abstract    :   This function will do initializations for the virtual panel.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_Initial(void)
{
    _bSpecialMode = FALSE;
    _wOSDVPShowTime = 0xFFFF;
    _bOSDVPShowAllTime = TRUE;

    GDI_SetMixRatio(OSDVP_MIX_RATIO_BACKGROUND); //The mix ration just effects the background

    GDI_SetCurrentRegion(0); //use region 0
    _OSDVP_ClearRegion(OSDVP_REGION_ALL, 0);
    GDI_ActivateRegion(); //open GDI

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

#ifndef GDI_4_BIT_OSD
//***************************************************************************
//  Function    :   _OSDVP_InitializeGDI
//  Abstract    :   This function will initialize the palettes and draw the background of
//              :   the virtual panel.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_InitializeGDI(void)
{    
    //Set the palette entry.
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDVP_PALETTE_COLOR_GENERAL_BACKGROUND, TRUE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_DISCTYPE, OSDVP_PALETTE_COLOR_REGION_DISCTYPE, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TITLE_ITEM, OSDVP_PALETTE_COLOR_REGION_TITLE_ITEM, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_CHAPTER_ITEM, OSDVP_PALETTE_COLOR_REGION_CHAPTER_ITEM, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_SUBTITLE_ITEM, OSDVP_PALETTE_COLOR_REGION_SUBTITLE_ITEM, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_SUBTITLE_INFO, OSDVP_PALETTE_COLOR_REGION_SUBTITLE_INFO, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AST_ITEM, OSDVP_PALETTE_COLOR_REGION_AST_ITEM, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AST_INFO, OSDVP_PALETTE_COLOR_REGION_AST_INFO, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_PLAY, OSDVP_PALETTE_COLOR_REGION_PLAY, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TITLE_INFO, OSDVP_PALETTE_COLOR_REGION_TITLE_INFO, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_CHAPTER_INFO, OSDVP_PALETTE_COLOR_REGION_CHAPTER_INFO, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TIME, OSDVP_PALETTE_COLOR_REGION_TIME, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_KEY, OSDVP_PALETTE_COLOR_REGION_KEY, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_AUDIO, OSDVP_PALETTE_COLOR_REGION_AUDIO, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_EQUALIZER, OSDVP_PALETTE_COLOR_REGION_EQUALIZER, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_TV, OSDVP_PALETTE_COLOR_REGION_TV, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_ANGLE_ITEM, OSDVP_PALETTE_COLOR_REGION_ANGLE_ITEM, FALSE);
    GDI_ChangePALEntry(OSDVP_PALETTE_ENTRY_REGION_ANGLE_INFO, OSDVP_PALETTE_COLOR_REGION_ANGLE_INFO, FALSE);
}
#endif

//***************************************************************************
//  Function    :   _OSDVP_ClearRegion
//  Abstract    :   This function will clear the region from (the starting of the region + bPos).
//  Arguments   :   bClearRegion: The region you want to clear.
//              :   bPos: The relative position of the region.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_ClearRegion(BYTE bClearRegion, BYTE bPos)
{
    switch (bClearRegion)
    {
    case OSDVP_REGION_ALL:
#ifdef SAMLL_DISPLAY_MODE_2
        SET_RECT(__GDIParm.u.RectParm.rect, OSDVP_START_H, OSDVP_START_V, (OSDVP_START_H+OSDVP_WIDTH), (OSDVP_START_V+OSDVP_HEIGHT-1));
#else
        SET_RECT(__GDIParm.u.RectParm.rect, OSDVP_START_H, OSDVP_START_V, (OSDVP_START_H+OSDVP_WIDTH), (OSDVP_START_V+OSDVP_HEIGHT));
#endif
        break;
    case OSDVP_REGION_TITLE:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_TITLE_START_H+bPos), 
            OSDVP_REGION_TITLE_START_V, 
            (OSDVP_REGION_TITLE_START_H+OSDVP_REGION_TITLE_WIDTH),
            (OSDVP_REGION_TITLE_START_V+OSDVP_REGION_TITLE_HEIGHT));
        break;
    case OSDVP_REGION_CHAPTER:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_CHAPTER_START_H+bPos), 
            OSDVP_REGION_CHAPTER_START_V, 
            (OSDVP_REGION_CHAPTER_START_H+OSDVP_REGION_CHAPTER_WIDTH),
            (OSDVP_REGION_CHAPTER_START_V+OSDVP_REGION_CHAPTER_HEIGHT));
        break;
    case OSDVP_REGION_SUBTITLE:
#ifdef SAMLL_DISPLAY_MODE_2
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_SUBTITLE_START_H+bPos), 
            OSDVP_REGION_SUBTITLE_START_V, 
            (OSDVP_REGION_SUBTITLE_START_H+OSDVP_REGION_SUBTITLE_WIDTH),
            (OSDVP_REGION_SUBTITLE_START_V+OSDVP_REGION_SUBTITLE_HEIGHT-1));
#else
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_SUBTITLE_START_H+bPos), 
            OSDVP_REGION_SUBTITLE_START_V, 
            (OSDVP_REGION_SUBTITLE_START_H+OSDVP_REGION_SUBTITLE_WIDTH),
            (OSDVP_REGION_SUBTITLE_START_V+OSDVP_REGION_SUBTITLE_HEIGHT));
#endif
        break;
    case OSDVP_REGION_AST:
#ifdef SAMLL_DISPLAY_MODE_2
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_AST_START_H+bPos), 
            OSDVP_REGION_AST_START_V, 
            (OSDVP_REGION_AST_START_H+OSDVP_REGION_AST_WIDTH),
            (OSDVP_REGION_AST_START_V+OSDVP_REGION_AST_HEIGHT-1));
#else
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_AST_START_H+bPos), 
            OSDVP_REGION_AST_START_V, 
            (OSDVP_REGION_AST_START_H+OSDVP_REGION_AST_WIDTH),
            (OSDVP_REGION_AST_START_V+OSDVP_REGION_AST_HEIGHT));
#endif
        break;
    case OSDVP_REGION_TIME:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_TIME_START_H+bPos), 
            OSDVP_REGION_TIME_START_V, 
            (OSDVP_REGION_TIME_START_H+OSDVP_REGION_TIME_WIDTH),
            (OSDVP_REGION_TIME_START_V+OSDVP_REGION_TIME_HEIGHT));
        break;
    case OSDVP_REGION_AUDIO:
#ifdef SAMLL_DISPLAY_MODE_2
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_AUDIO_START_H+bPos), 
            OSDVP_REGION_AUDIO_START_V, 
            (OSDVP_REGION_AUDIO_START_H+OSDVP_REGION_AUDIO_WIDTH),
            (OSDVP_REGION_AUDIO_START_V+OSDVP_REGION_AUDIO_HEIGHT-1));
#else
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_AUDIO_START_H+bPos), 
            OSDVP_REGION_AUDIO_START_V, 
            (OSDVP_REGION_AUDIO_START_H+OSDVP_REGION_AUDIO_WIDTH),
            (OSDVP_REGION_AUDIO_START_V+OSDVP_REGION_AUDIO_HEIGHT));
#endif
        break;
    case OSDVP_REGION_TVMODE:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_TVMODE_START_H+bPos), 
            OSDVP_REGION_TVMODE_START_V, 
            (OSDVP_REGION_TVMODE_START_H+OSDVP_REGION_TVMODE_WIDTH),
            (OSDVP_REGION_TVMODE_START_V+OSDVP_REGION_TVMODE_HEIGHT));
        break;
    case OSDVP_REGION_TV:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_TV_START_H+bPos), 
            OSDVP_REGION_TV_START_V, 
            (OSDVP_REGION_TV_START_H+OSDVP_REGION_TV_WIDTH),
            (OSDVP_REGION_TV_START_V+OSDVP_REGION_TV_HEIGHT));
        break;
    case OSDVP_REGION_ANGLE:
#ifdef SAMLL_DISPLAY_MODE_2
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_ANGLE_START_H+bPos), 
            OSDVP_REGION_ANGLE_START_V, 
            (OSDVP_REGION_ANGLE_START_H+OSDVP_REGION_ANGLE_WIDTH),
            (OSDVP_REGION_ANGLE_START_V+OSDVP_REGION_ANGLE_HEIGHT-1));
#else
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_ANGLE_START_H+bPos), 
            OSDVP_REGION_ANGLE_START_V, 
            (OSDVP_REGION_ANGLE_START_H+OSDVP_REGION_ANGLE_WIDTH),
            (OSDVP_REGION_ANGLE_START_V+OSDVP_REGION_ANGLE_HEIGHT));
#endif
        break;
    case OSDVP_REGION_STATUS:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_STATUS_START_H+bPos), 
            OSDVP_REGION_STATUS_START_V, 
            (OSDVP_REGION_STATUS_START_H+OSDVP_REGION_STATUS_WIDTH),
            (OSDVP_REGION_STATUS_START_V+OSDVP_REGION_STATUS_HEIGHT));
        break;
    case OSDVP_REGION_REPEAT:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_REPEAT_START_H+bPos), 
            OSDVP_REGION_REPEAT_START_V, 
            (OSDVP_REGION_REPEAT_START_H+OSDVP_REGION_REPEAT_WIDTH),
            (OSDVP_REGION_REPEAT_START_V+OSDVP_REGION_REPEAT_HEIGHT));
        break;
    case OSDVP_REGION_PROGRAM:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_PROGRAM_START_H+bPos), 
            OSDVP_REGION_PROGRAM_START_V, 
            (OSDVP_REGION_PROGRAM_START_H+OSDVP_REGION_PROGRAM_WIDTH),
            (OSDVP_REGION_PROGRAM_START_V+OSDVP_REGION_PROGRAM_HEIGHT));
        break;
    case OSDVP_REGION_MENU:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDVP_REGION_MENU_START_H+bPos), 
            OSDVP_REGION_MENU_START_V, 
            (OSDVP_REGION_MENU_START_H+OSDVP_REGION_MENU_WIDTH),
            (OSDVP_REGION_MENU_START_V+OSDVP_REGION_MENU_HEIGHT));
        break;
    default:
        return;
    }
 
    __GDIParm.u.RectParm.bColor = OSDVP_PALETTE_ENTRY_GENERAL_BACKGROUND;
    
    GDI_FillRect((PPARM_RECT)&__GDIParm);
}

//***************************************************************************
//  Function    :   _OSDVP_OutputString
//  Abstract    :   This function will output the strings for the fixed items.
//  Arguments   :   bMessage: the message.
//              :   bType: OSDVP_UPDATE_ITEM: Ouput the string of the item.
//              :          OSDVP_UPDATE_INFO: Output the info for the item. 
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDVP_OutputString(BYTE bMessage, BYTE bType)
{
    switch (bMessage)
    {
    case MSG_TITLE: //update title region
        _OSDVP_ShowTitle(bType);
        break;
    case MSG_CHAPTER:
        _OSDVP_ShowChapter(bType);
        break;
    case MSG_SPST_CTL:
        _OSDVP_ShowSPST(bType);
        break;
    case MSG_AST_CTL:
        _OSDVP_ShowAST(bType);
        break;
    case MSG_TVMODE:
        _OSDVP_ShowTVMode(bType);
        break;
    case MSG_PSCAN:
    case MSG_VIDEO_OUTPUT:
        _OSDVP_ShowPSCAN();
        break;
    case MSG_ANGLE_CTL:
        _OSDVP_ShowAngle(bType);
        break;
    case MSG_STATUS:
        _OSDVP_ShowPlayingStatus();
        break;
    case MSG_REPEAT:
        if (__bRepeat == REPEAT_NONE)
        {
            __wGDIString[0] = 0;
        }
        else 
        {
            GDI_CopyCodeString(aVPRepeatSymbol);
        }
        break;
    case MSG_PROGRAM:
        if (__btPlayingProgram)

⌨️ 快捷键说明

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