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

📄 osdfm.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_ROOT_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_ROOT_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_UPFOLDER_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_UPFOLDER_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_UPFOLDER_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_UPFOLDER_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_UPFOLDER_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_UPFOLDER_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_FOLDER_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_FOLDER_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_FOLDER_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_FOLDER_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_FOLDER_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_FOLDER_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_JPEG_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_JPEG_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_JPEG_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_JPEG_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_JPEG_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_JPEG_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_MP3_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_MP3_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_MP3_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_MP3_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_MP3_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_MP3_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_WMA_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_WMA_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_WMA_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_WMA_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_WMA_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_WMA_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_OPENFOLDER_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_OPENFOLDER_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_OPENFOLDER_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_OPENFOLDER_ICON_SHADOW_1, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_OPENFOLDER_ICON_SHADOW_2, OSDFM_PALETTE_COLOR_OPENFOLDER_ICON_SHADOW_2, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_TIME_STRING, OSDFM_PALETTE_COLOR_TIME_STRING, FALSE);
#endif

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

    _OSDFM_ClearRegion(OSDFM_CLEAR_ALL_REGION);

#ifndef GDI_4_BIT_OSD
    GDI_LoadPalette(2); //load color table for bitmap button.

    //Set the color of the background for the circle button.
    GDI_ChangePALEntry(BMP_ENTRY_BUTTON_COLOR_BG, OSDFM_PALETTE_COLOR_GENERAL_BACKGROUND, TRUE);
#endif //GDI_4_BIT_OSD

    GDI_ActivateRegion(); //open GDI
}

//***************************************************************************
//  Function    :   _OSDFM_UpdateFolderTitle
//  Abstract    :   This function will update the title for the folder.
//  Arguments   :   bDirID: The ID of the directory.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_UpdateFolderTitle(BYTE bDirID)
{
    _wHPos = OSDFM_DISPLAY_TITLE_START_H + GDI_GetCodeStringWidth(aFMTotalFiles[_bOSDLang]);
    
    if (_bOSDFMUpdate)
    {
        GDI_OUTPUT_TEXT(OSDFM_DISPLAY_TITLE_START_H, OSDFM_DISPLAY_TITLE_START_V, aFMTotalFiles[_bOSDLang]);
    }
    else
    {
        _OSDFM_ClearRegion(OSDFM_CLEAR_TITLE_SUB_REGION);
    }
    OSD_OutputNum(__pwFMFilesOfDir[bDirID], OSDFM_TITLE_NUM_INDEX);
    GDI_DRAW_STRING(_wHPos, OSDFM_DISPLAY_TITLE_START_V);
}

//***************************************************************************
//  Function    :   _OSDFM_UpdateFileTitle
//  Abstract    :   This function will update the title for the file.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_UpdateFileTitle(void)
{
    _wHPos = OSDFM_DISPLAY_TITLE_START_H + GDI_GetCodeStringWidth(aFMFileNumber[_bOSDLang]);

    if (_bOSDFMUpdate)
    {
        GDI_OUTPUT_TEXT(OSDFM_DISPLAY_TITLE_START_H, OSDFM_DISPLAY_TITLE_START_V, aFMFileNumber[_bOSDLang]);
    }
    else
    {
        _OSDFM_ClearRegion(OSDFM_CLEAR_TITLE_SUB_REGION);
    }

    OSD_OutputNum((WORD)(__FMSelectCursor.wIndex - __pFMDirTree[__bFMActiveDir].bNoOfSubDir + 1), OSDFM_TITLE_NUM_INDEX);
    GDI_DRAW_STRING(_wHPos, OSDFM_DISPLAY_TITLE_START_V);

    _wHPos += GDI_GetStringWidth();

    GDI_CopyCodeString(aFMSlash[OSDFM_TITLE_NUM_INDEX]);
    GDI_DRAW_STRING(_wHPos, OSDFM_DISPLAY_TITLE_START_V);

    _wHPos += GDI_GetStringWidth();

    OSD_OutputNum(__pwFMFilesOfDir[__bFMActiveDir], OSDFM_TITLE_NUM_INDEX);
    GDI_DRAW_STRING(_wHPos, OSDFM_DISPLAY_TITLE_START_V);
}

//***************************************************************************
//  Function    :   _OSDFM_UpdateHighlight
//  Abstract    :   This function will update the highlight.
//  Arguments   :   bUpdate: UPDATE_HIGHLIGHT_DRAW: draw the highlight.
//              :            UPDATE_HIGHLIGHT_CLEAR: clear the highlight.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_UpdateHighlight(BYTE bUpdate)
{
    if (bUpdate == UPDATE_HIGHLIGHT_DRAW)
    {
        _OSDFM_UpdateTitle();
#ifdef SUPPORT_FM_BUTTONS
        _OSDFM_UpdateHelp();
#endif
    }
    
    if (__FMSelectCursor.bPosition != POS_BUTTON_LIST)
    {
        if (bUpdate == UPDATE_HIGHLIGHT_DRAW)
        {
            GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND);
            GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_STRING_IN_FILE_WINDOW);
            //For the background of the highlight
            __GDIParm.u.RectParm.bColor = OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND;        
        }
        else if (bUpdate == UPDATE_HIGHLIGHT_CLEAR)
        {
            _OSDFM_NormalFileWindowStringPalette();
            //clear highlight
            __GDIParm.u.RectParm.bColor = OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND;        
        }
    }
   
    switch (__FMSelectCursor.bPosition)
    {
    case POS_DIR_LIST:
        //CoCo1.10, the background for serial number.
        GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND);
        
        if (__FMSelectCursor.wIndex == 0)
        {
            //CoCo1.10, add the serial number for DIR
            //draw serial number
            OSD_OutputNum(1, OSDFM_FILE_WINDOW_NUM_INDEX);
            GDI_DRAW_STRING((OSDFM_DISPLAY_LEFT_SERIAL_NUM_START_H-GDI_GetStringWidth()), OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V);

            GDI_CopyCodeString(aFMROOT[_bOSDLang]);
            _bOSDFMIconType = OSDFM_ICON_TYPE_ROOT;
#ifdef SUPPORT_UNICODE
            _bOSDFMDrawUnicodeString = FALSE;
#endif
        }
        else if ((__FMSelectCursor.wIndex == 1) && _OSDFM_HaveUpFolder())
        {
            GDI_CopyCodeString(aFMUpDIR[_bOSDLang]);
            _bOSDFMIconType = OSDFM_ICON_TYPE_UPFOLDER;
#ifdef SUPPORT_UNICODE
            _bOSDFMDrawUnicodeString = FALSE;
#endif
        }
        else
        {
            //CoCo1.10, add the serial number for DIR
            //draw serial number
            OSD_OutputNum((__bFMActiveDir+1), OSDFM_FILE_WINDOW_NUM_INDEX);
            GDI_DRAW_STRING((OSDFM_DISPLAY_LEFT_SERIAL_NUM_START_H-GDI_GetStringWidth()), (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT));

            _OSDFM_CopyDirString(__bFMActiveDir, POS_DIR_LIST);

#ifdef SUPPORT_UNICODE
            _bOSDFMDrawUnicodeString = TRUE;
#endif

            if (bUpdate == UPDATE_HIGHLIGHT_DRAW)				
                _bOSDFMIconType = OSDFM_ICON_TYPE_OPENFOLDER; 
            else
			{
				if (__bActiveDirChange) //change dir really
                {
                    _bOSDFMIconType = OSDFM_ICON_TYPE_FOLDER; 
                    __bActiveDirChange = FALSE;
                }
                else //Only KEY_RIGHT/KEY_LEFT to change the highlight.                
                    _bOSDFMIconType = OSDFM_ICON_TYPE_OPENFOLDER;                     
			}
        }

        //CoCo1.10, recover the highlight background after output the serial number.
        //For the background of the highlight
        if (bUpdate == UPDATE_HIGHLIGHT_DRAW)
            GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND);        

#ifdef SUPPORT_DYNAMIC_FILE_LENGTH
#ifdef SUPPORT_UNICODE //CoCo2.36, support UNICODE string.
        if (_bOSDFMDrawUnicodeString)
            _bOSDFMTemp3 = GDI_GetUnicodeStringMaxWidth(_wOSDFMMaxStringSpace);
        else
            _bOSDFMTemp3 = GDI_GetStringWidth();
#else
        _bOSDFMTemp3 = GDI_GetStringWidth();
#endif
		//Set the rectange of highlight
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDFM_DISPLAY_ICON_LEFT_WINDOW_START_H-OSDFM_HIGHLIGHT_DISTANCE_H), 
            (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT-OSDFM_HIGHLIGHT_DISTANCE_V), 
            (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_H+_bOSDFMTemp3+OSDFM_HIGHLIGHT_DISTANCE_H), 
            (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT+OSDFM_FILE_WINDOW_FONT_HEIGHT+OSDFM_HIGHLIGHT_DISTANCE_V));
#else
        //Set the rectange of highlight
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDFM_DISPLAY_ICON_LEFT_WINDOW_START_H-OSDFM_HIGHLIGHT_DISTANCE_H), 
            (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT-OSDFM_HIGHLIGHT_DISTANCE_V), 
            (OSDFM_DISPLAY_ICON_LEFT_WINDOW_START_H-OSDFM_HIGHLIGHT_DISTANCE_H+OSDFM_FOLDER_HIGHLIGHT_WIDTH), 
            (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT+OSDFM_FILE_WINDOW_FONT_HEIGHT+OSDFM_HIGHLIGHT_DISTANCE_V));
#endif
        //Draw the highlight in the file window.
        GDI_FillRect((PPARM_RECT)&__GDIParm);        

#ifdef SUPPORT_UNICODE //CoCo2.36, support UNICODE string.
        if (_bOSDFMDrawUnicodeString)
            GDI_DRAW_UNICODE_STRING(OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_H, (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT), _wOSDFMMaxStringSpace);        
        else
            GDI_DRAW_STRING(OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_H, (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT));        
#else
        GDI_DRAW_STRING(OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_H, (OSDFM_DISPLAY_ITEM_LEFT_WINDOW_START_V+((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW)*OSDFM_DISPLAY_ITEM_HEIGHT));        
#endif //SUPPORT_UNICODE
        
        //Draw the icon
        if (bUpdate == UPDATE_HIGHLIGHT_DRAW)
            _OSDFM_DrawLeftFileWindowIcon((BYTE)((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW), TRUE);
        else
            _OSDFM_DrawLeftFileWindowIcon((BYTE)((__FMSelectCursor.wIndex-__bStartDrawDir)%OSDFM_MAX_DIR_IN_FILE_WINDOW), FALSE);
        break;
    case POS_FILE_LIST:
        if (__FMSelectCursor.wIndex > (__wStartDrawItem+OSDFM_MAX_ITEM_IN_FILE_WINDOW-1))
        {
            if ((__FMSelectCursor.wIndex - (__wStartDrawItem+OSDFM_MAX_ITEM_IN_FILE_WINDOW-1)) > 1)
            {
                //update the __wStartDrawItem
                __wStartDrawItem = __FMSelectCursor.wIndex - OSDFM_MAX_ITEM_IN_FILE_WINDOW + 1;

                //clear right right file window
                _OSDFM_ClearRegion(OSDFM_CLEAR_RIGHT_FILE_WINDOW_CONTENT_REGION); //Don't clear the right scroll bar because they are in the same folder.

                //re-draw all                
                _OSDFM_DrawRightFileWindow();

                //reset the color of the text
                GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND);
                GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_STRING_IN_FILE_WINDOW);            
            }
            else
            {
                __wStartDrawItem++;
                
                //scoll up. Do bitmap copy
                GDI_BITMAP_COPY((OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_H+OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_WIDTH+4), //left //for 4-bit mode (original "+1")
                    (OSDFM_DISPLAY_ICON_RIGHT_WINDOW_START_V+OSDFM_DISPLAY_ITEM_HEIGHT-OSDFM_SELECT_FRAME_DISTANCE_V), //top
                    (OSDFM_DISPLAY_RIGHT_SCROLL_BAR_H-1), //right
                    (OSDFM_DISPLAY_ICON_RIGHT_WINDOW_START_V+(OSDFM_MAX_ITEM_IN_FILE_WINDOW-1)*OSDFM_DISPLAY_ITEM_HEIGHT+OSDFM_FILE_WINDOW_FONT_HEIGHT+OSDFM_SELECT_FRAME_DISTANCE_V), //bottom
                    (OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_H+OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_WIDTH+4), //X //for 4-bit mode (original "+1")
                    (OSDFM_DISPLAY_ICON_RIGHT_WINDOW_START_V- OSDFM_SELECT_FRAME_DISTANCE_V), //Y
                    0, //source
                    0); //destionation
                
                //Then clear the last dir in this page  and re-draw it.
                _OSDFM_ClearItemRegionInFileWindow(OSDFM_RIGHT_FILE_WINDOW, (OSDFM_MAX_ITEM_IN_FILE_WINDOW-1));

                _OSDFM_UpdateRightScrollBar();
            }

            //Re-set the background's color.
            __GDIParm.u.RectParm.bColor = OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND;    
        }
        else if (__FMSelectCursor.wIndex < __wStartDrawItem)
        {
            if ((__wStartDrawItem - __FMSelectCursor.wIndex) > 1)
            {
                //update the __wStartDrawItem
                __wStartDrawItem = __FMSelectCursor.wIndex;
                
                //clear right right file window
                _OSDFM_ClearRegion(OSDFM_CLEAR_RIGHT_FILE_WINDOW_CONTENT_REGION); //Don't clear the right scroll bar because they are in the same folder.

                //re-draw all
                _OSDFM_DrawRightFileWindow();

                //reset the color of the text
                GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND);
                GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_HIGHLIGHT_STRING_IN_FILE_WINDOW);            
            }
            else
            {
                __wStartDrawItem--;

⌨️ 快捷键说明

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