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

📄 osdfm.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            if ((__FMSelectCursor.wIndex == 1) && _OSDFM_HaveUpFolder())
                _bOSDFMTitleType = OSDFM_TITLE_TYPE_UP_FOLDER;
            else
                _bOSDFMTitleType = OSDFM_TITLE_TYPE_DIR;
            break;
        case POS_FILE_LIST:
            if (__FMSelectCursor.wIndex < __pFMDirTree[__bFMActiveDir].bNoOfSubDir) //the cusor is at the folder
                _bOSDFMTitleType = OSDFM_TITLE_TYPE_FILE_FOLDER;
            else
                _bOSDFMTitleType = OSDFM_TITLE_TYPE_FILE;
            break;
        case POS_BUTTON_LIST:   
            _bOSDFMTitleType = OSDFM_TITLE_TYPE_BUTTON;            
            break;
        default:
            break;
        }
    }

    if (_bOSDFMTemp != _bOSDFMTitleType)
        _bOSDFMUpdate = TRUE;
}

//***************************************************************************
//  Function    :   _OSDFM_UpdateTitle
//  Abstract    :   Call this function to update the title string.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_UpdateTitle(void)
{
	//CoCo1.06, show playing file in the title.
	if (_bOSDFMPlayingTitle && (!__btInputProgram))
		return;

    _OSDFM_PrepareUpdateTitle();

    if (_bOSDFMUpdate)
    {
        //clear title region
        _OSDFM_ClearRegion(OSDFM_CLEAR_TITLE_REGION);
    }
    else
    {
        if (__btProgram)
            return;
    }

    //Set the color of the text.
    GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND);
    GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_TITLE_STRING);
    //No shadow
    _OSDFM_NOFontShadow();

    switch (_bOSDFMTitleType)
    {
    case OSDFM_TITLE_TYPE_PROGRAM:
        GDI_OUTPUT_TEXT(OSDFM_DISPLAY_TITLE_START_H, OSDFM_DISPLAY_TITLE_START_V, aFMProgramMode[_bOSDLang]);
        break;
    case OSDFM_TITLE_TYPE_DIR:
        _OSDFM_UpdateFolderTitle(__bFMActiveDir);
        break;
    case OSDFM_TITLE_TYPE_FILE_FOLDER:
        _OSDFM_UpdateFolderTitle((BYTE)(__pFMDirTree[__bFMActiveDir].b1stSubDirID + __FMSelectCursor.wIndex));
        break;
    case OSDFM_TITLE_TYPE_FILE:
        _OSDFM_UpdateFileTitle();
        break;
    case OSDFM_TITLE_TYPE_UP_FOLDER:
    case OSDFM_TITLE_TYPE_BUTTON:
    default:
        break;
    }           
}

//***************************************************************************
//  Function    :   _OSDFM_UpdatePlayingTitle
//  Abstract    :   Call this function to update the title string.
//  Arguments   :   none.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   This function will draw the title off-screen and then copy to the exact plosition.
//***************************************************************************
void _OSDFM_UpdatePlayingTitle(void)
{
	_bOSDFMPlayingTitle = TRUE;
    _bOSDFMTitleType = OSDFM_TITLE_TYPE_PLAYING;

    //Off scrren draw the title then use bitmap copy to copy the title to the exact position.

	//clear title region
	//_OSDFM_ClearRegion(OSDFM_CLEAR_TITLE_REGION);

    //clear the off-screen region for title region.
    SET_RECT(__GDIParm.u.RectParm.rect, OSDFM_DISPLAY_TITLE_START_H, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V), (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH+1), (OSDFM_DISPLAY_TITLE_START_V+OSDFM_TITLE_FONT_HEIGHT+OSDFM_OFF_SCREEN_START_V));//yhtang_1108 according toxuli 
    __GDIParm.u.RectParm.bColor = OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND;
    GDI_FillRect((PPARM_RECT)&__GDIParm);
    
	_wHPos = OSDFM_DISPLAY_TITLE_START_H;

    GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND);
	GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND);
	GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_BLACK);
	GDI_SetTextColor(TEXT_SHADOW_COLOR_2, GDI_ENTRY_4B_COLOR_WHITE);    
	GDI_CopyCodeString(aFMPlayingFolderTitle);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

    //Set the color of the text.
    GDI_SetTextColor(TEXT_BG_COLOR, OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND);
    GDI_SetTextColor(TEXT_FG_COLOR, OSDFM_PALETTE_ENTRY_TITLE_STRING);
    //No shadow
    _OSDFM_NOFontShadow();

    _wHPos += GDI_GetStringWidth();
	GDI_CopyCodeString(aFMMouhow[OSDFM_PLAYING_TITLE_NUM_INDEX]);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

    _wHPos += GDI_GetStringWidth();
	_OSDFM_CopyDirString(__bFMPlayingDir, POS_DIR_LIST);
#ifdef SUPPORT_UNICODE //CoCo2.36, support UICODE string.
    GDI_DRAW_UNICODE_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V), _wOSDFMMaxStringSpace);
#else
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));
#endif

	_wHPos += GDI_GetStringWidth();
	GDI_CopyCodeString(aFMSpace[OSDFM_PLAYING_TITLE_NUM_INDEX]);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

	_wHPos += GDI_GetStringWidth();
	GDI_CopyCodeString(aFMPlayingFileTitle);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

	_wHPos += GDI_GetStringWidth();
    OSD_OutputNum((WORD)(__FMActiveCursor.wIndex - __pFMDirTree[__bFMPlayingDir].bNoOfSubDir + 1), OSDFM_PLAYING_TITLE_NUM_INDEX);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

    _wHPos += GDI_GetStringWidth();
	GDI_CopyCodeString(aFMSlash[OSDFM_PLAYING_TITLE_NUM_INDEX]);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

	_wHPos += GDI_GetStringWidth();
    OSD_OutputNum(__pwFMFilesOfDir[__bFMPlayingDir], OSDFM_PLAYING_TITLE_NUM_INDEX);
    GDI_DRAW_STRING(_wHPos, (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V));

    //Use bitmap copy to copy the title to the title's position.
    GDI_BITMAP_COPY(OSDFM_DISPLAY_TITLE_START_H, //left //for 4-bit mode (original "+1")
        (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V), //top
        (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH), //right
        (OSDFM_DISPLAY_TITLE_START_V+OSDFM_OFF_SCREEN_START_V+OSDFM_TITLE_FONT_HEIGHT), //bottom
        OSDFM_DISPLAY_TITLE_START_H, //X //for 4-bit mode (original "+1")
        OSDFM_DISPLAY_TITLE_START_V, //Y
        0, //source
        0); //destionation
}

//***************************************************************************
//  Function    :   _OSDFM_ClearRegion
//  Abstract    :   This function will clear the specified region.
//  Arguments   :   bClearRegion: The region that you want to clear. 
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_ClearRegion(BYTE bClearRegion)
{
    switch (bClearRegion)
    {
    case OSDFM_CLEAR_ALL_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, OSDFM_DISPLAY_BACKGROUND_H, OSDFM_DISPLAY_BACKGROUND_V, OSDFM_DISPLAY_BACKGROUND_RIGHT, OSDFM_DISPLAY_BACKGROUND_BOTTOM);
        break;
    case OSDFM_CLEAR_TITLE_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, OSDFM_DISPLAY_TITLE_START_H, OSDFM_DISPLAY_TITLE_START_V, (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH+1), (OSDFM_DISPLAY_TITLE_START_V+OSDFM_TITLE_FONT_HEIGHT));//XULI1108
        break;
    case OSDFM_CLEAR_TITLE_SUB_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, _wHPos, OSDFM_DISPLAY_TITLE_START_V, (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH), (OSDFM_DISPLAY_TITLE_START_V+OSDFM_TITLE_FONT_HEIGHT));
        break;
#ifdef SUPPORT_FM_BUTTONS    
    case OSDFM_CLEAR_HELP_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, OSDFM_DISPLAY_HELP_STRING_START_H, OSDFM_DISPLAY_HELP_STRING_START_V, OSDFM_DISPLAY_BACKGROUND_RIGHT, (OSDFM_DISPLAY_HELP_STRING_START_V+OSDFM_HELP_FONT_HEIGHT));
        break;
    case OSDFM_CLEAR_BUTTON_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, OSDFM_BUTTON_START_H, OSDFM_BUTTON_START_V, OSDFM_DISPLAY_BACKGROUND_RIGHT, (OSDFM_BUTTON_START_V+OSDFM_BUTTON_HEIGHT));
        break;
#endif //SUPPORT_FM_BUTTONS
    case OSDFM_CLEAR_LEFT_FILE_WINDOW_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDFM_DISPLAY_BIG_FRAME_H+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_H-1), 
            (OSDFM_DISPLAY_HORIZONTAL_SEPARATE_FRAME_V-1));
        break;
    case OSDFM_CLEAR_LEFT_FILE_WINDOW_CONTENT_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDFM_DISPLAY_BIG_FRAME_H+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_LEFT_SCROLL_BAR_H-1), 
            (OSDFM_DISPLAY_HORIZONTAL_SEPARATE_FRAME_V-1));
        break;
    case OSDFM_CLEAR_RIGHT_FILE_WINDOW_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect,
            (OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_H+OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_WIDTH+1), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_BIG_FRAME_H+OSDFM_DISPLAY_BIG_FRAME_WIDTH-OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_HEIGHT-OSDFM_DISPLAY_BIG_FRAME_THICKNESS));
        break;
    case OSDFM_CLEAR_RIGHT_FILE_WINDOW_CONTENT_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect,
            (OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_H+OSDFM_DISPLAY_VERTICAL_SEPARATE_FRAME_WIDTH+1), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_THICKNESS), 
            (OSDFM_DISPLAY_RIGHT_SCROLL_BAR_H-1), 
            (OSDFM_DISPLAY_BIG_FRAME_V+OSDFM_DISPLAY_BIG_FRAME_HEIGHT-OSDFM_DISPLAY_BIG_FRAME_THICKNESS));
        break;
    case OSDFM_CLEAR_RIGHT_SCROLL_BAR_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            OSDFM_DISPLAY_RIGHT_SCROLL_BAR_H,
            OSDFM_DISPLAY_SCROLL_BAR_V,
            (OSDFM_DISPLAY_RIGHT_SCROLL_BAR_H+OSDFM_DISPLAY_SCROLL_BAR_WIDTH),
            (OSDFM_DISPLAY_SCROLL_BAR_V+OSDFM_DISPLAY_RIGHT_SCROLL_BAR_HEIGHT));
        break;
    case OSDFM_CLEAR_LEFT_SCROLL_BAR_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            OSDFM_DISPLAY_LEFT_SCROLL_BAR_H,
            OSDFM_DISPLAY_SCROLL_BAR_V,
            (OSDFM_DISPLAY_LEFT_SCROLL_BAR_H+OSDFM_DISPLAY_SCROLL_BAR_WIDTH),
            (OSDFM_DISPLAY_SCROLL_BAR_V+OSDFM_DISPLAY_LEFT_SCROLL_BAR_HEIGHT));
        break;
    case OSDFM_CLEAR_RECOVER_UPPER_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, 
            (OSDFM_DISPLAY_TITLE_START_H+OSDFM_DISPLAY_TITLE_WIDTH), 
            OSDFM_DISPLAY_BACKGROUND_V, 
            OSDFM_DISPLAY_BACKGROUND_RIGHT,
            (OSDFM_DISPLAY_BIG_FRAME_V-1));
        break;
    case OSDFM_CLEAR_RECOVER_BOTTOM_REGION:
        SET_RECT(__GDIParm.u.RectParm.rect, __wOSDBottomHPos, __wOSDBottomVPos, OSDFM_DISPLAY_BACKGROUND_RIGHT, OSDFM_DISPLAY_BACKGROUND_BOTTOM);
        break;
    default:
        break;
    }

    __GDIParm.u.RectParm.bColor = OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND;
    
    GDI_FillRect((PPARM_RECT)&__GDIParm);
}

//***************************************************************************
//  Function    :   _OSDFM_InitializeGDI
//  Abstract    :   This function will initialize the palette and draw the background of the
//              :   File Manager UI.
//  Arguments   :   none.    
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _OSDFM_InitializeGDI(void)
{
    GDI_ClearRegion(0); //clear region 0

#ifdef MINI_OSD_REGION //CoCo.230, borrow frame buffer to show OSD.
    __bColorMode = COLOR_MODE_4_BIT;
    __dwRegionHeight = GDI_REGION_HEIGHT; // 460
    // Need to set to the correct DRAM address
    __dwRegionTAddr = W99AV_ADDR_MPEG_FRAME_FOR_OS_T; //Use JPEG temp buffer.
    __dwRegionBAddr = W99AV_ADDR_MPEG_FRAME_FOR_OS_B; //Use JPEG temp buffer.

    GDI_ClearRegion_By_RISC(0);
    GDI_InitialRegion (0); // initialize region to set it to 8-bit mode
#endif

    GDI_SetCurrentRegion(0); //use region 0

#ifndef GDI_4_BIT_OSD
    //Set the palette entry.
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_GENERAL_BACKGROUND, OSDFM_PALETTE_COLOR_GENERAL_BACKGROUND, TRUE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_TITLE_STRING, OSDFM_PALETTE_COLOR_TITLE_STRING, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_HELP_STRING, OSDFM_PALETTE_COLOR_HELP_STRING, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_GENERAL_STRING_IN_FILE_WINDOW, OSDFM_PALETTE_COLOR_GENERAL_STRING_IN_FILE_WINDOW, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_HIGHLIGHT_STRING_IN_FILE_WINDOW, OSDFM_PALETTE_COLOR_HIGHLIGHT_STRING_IN_FILE_WINDOW, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND, OSDFM_PALETTE_COLOR_HIGHLIGHT_BACKGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_DISABLE_BUTTON_STRING, OSDFM_PALETTE_COLOR_DISABLE_BUTTON_STRING, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_ENABLE_BUTTON_STRING, OSDFM_PALETTE_COLOR_ENABLE_BUTTON_STRING, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_HIGHLIGHT_BUTTON_STRING, OSDFM_PALETTE_COLOR_HIGHLIGHT_BUTTON_STRING, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT, OSDFM_PALETTE_COLOR_NORMAL_FRAME_BRIGHT, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_NORMAL_FRAME_DARK, OSDFM_PALETTE_COLOR_NORMAL_FRAME_DARK, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_SELECT_FRAME_BRIGHT, OSDFM_PALETTE_COLOR_SELECT_FRAME_BRIGHT, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_SELECT_FRAME_DARK, OSDFM_PALETTE_COLOR_SELECT_FRAME_DARK, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_SEPARATE_FRAME_CENTER, OSDFM_PALETTE_COLOR_SEPARATE_FRAME_CENTER, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_ROOT_ICON_TEXT_FOREGROUND, OSDFM_PALETTE_COLOR_ROOT_ICON_TEXT_FOREGROUND, FALSE);
    GDI_ChangePALEntry(OSDFM_PALETTE_ENTRY_ROOT_ICON_SHADOW_1, OSDFM_PALETTE_COLOR_ROOT_ICON_SHADOW_1, FALSE);

⌨️ 快捷键说明

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