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

📄 osd3.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:

                    //__bMENUSelect[__bMENUCurrentLevel] = 0;; // set select to 0, the first item.

                    __bCurrentMenuId = GET_MENU_ID(_pTempMenu);
                    __bMENUCurrentLevel--;

					__wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);


                    OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                    //OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);

                }

                // Brian1.08a, from sub menu to the icon menu, so display the settings 
#ifdef SUPPORT_MENU_SETTINGS_DISPLAY
                
				if (__bMENUCurrentLevel == 0 && _bMenuType == MENU_TYPE_SETUP)
                {
                    _DisplayCurrentSettings();
                }
#endif

             }
             break;
            // Brian1.08a
		    //case KEY_ENTER:
            //case KEY_PLAY:          // Brian2.81, CC module doesn't transfer key anymore
            //case KEY_PLAY_PAUSE:    // Brian2.81, CC module doesn't handle compound keys
            case OSDMENU_SELECT_ITEM:
				_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
				if (GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_VALUE)
				{
                    //if (GET_MENU_CHECK(_pTempMenu)) // Brian1.20 avoid using this expression under Keil 7 ==> just another pointer conversion issue
					if (GET_MENU_CHECK(_pTempMenu) != NULL) // the "Read default value" Value has no check
					{

					//bItemNum = *(GET_MENU_CHECK(_pTempMenu)) - GET_MENU_BASE(_pTempMenu); // the current check item
                    // Brian1.08, search the menu to get item position
                    bItemNum = _GetMenuItemPosition(*(GET_MENU_CHECK(_pTempMenu))); // the current check item

					if (bItemNum >=__bMENUDisplayStart[__bMENUCurrentLevel] && bItemNum < __bMENUDisplayStart[__bMENUCurrentLevel]+GET_MENU_ROW(_pTempMenu))
					{
						// the current checked item is displayed on the screen, un-check it
						OSDMENU_DrawCheckMark((BYTE)(bItemNum-__bMENUDisplayStart[__bMENUCurrentLevel]), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL, FALSE);
					}

					*(GET_MENU_CHECK(_pTempMenu)) = (BYTE)__wMENUCurrentItemId;
					OSDMENU_DrawCheckMark((BYTE)(_bMENUTemp-__bMENUDisplayStart[__bMENUCurrentLevel]), OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT, TRUE);
					}

#ifdef SUPPORT_MENU_CURSOR_STAY_AT_VALUE_AFTER_ENTER
                    // Brian1.08a
                    // menu cursor will stay at the value menu after Key Enter
                    // but the _SaveDataToSetupInfo depends on the __wMENUCurrentItemId which is item ID to save the value to EEPROM and do actions
                    // if the cursor is stay at value menu, then the ID is the value ID, not item ID.
                    // We don't want to change _SaveDataToSetupInfo so much for this option, ===> so we can use a extra variable
                    // to record the Item ID while the __wMENUCurrentItemId is still the value ID as it should be.
                    // And in _SaveDataToSetupInfo, we use the new variable instead.
                    _wMENUTemp = __bMENUParent[__bMENUCurrentLevel];
                    //_pTempMenu = _pMenuIndex[_wMENUTemp]; // don't change _pTempMenu, or we need to set it back after temp usage
                    __wMENUItemIdAfterEnter = GET_ITEM_ID(_pMenuIndex[_wMENUTemp], __bMENUSelect[__bMENUCurrentLevel-1]);



#else
                    // menu cursor will not mov to its parent (by issue a  "KEY_LEFT" operation) after KEY_ENTER
                    // Brian1.08a, use operation instead 
					//bKey = KEY_LEFT;
                    bMenuOperation = OSDMENU_GOTO_PARENT_MENU;
					goto process_key_op;
#endif

				}
				else
				{
                    // Brian1.08a
					//bKey = KEY_RIGHT;
                    bMenuOperation = OSDMENU_GOTO_SUB_MENU;
					goto process_key_op;
				}

			 break;


    }

}




//  *********************************************************************
//  Function    :   OSDMENU_DisplayMenu
//  Description :   This function display the single menu
//  Arguments   :   bMenuId: the ID of menu 
//                  The ID is an index to _pMenuIndex[]
//                  bLevel: the item must be displayed.
//  Return      :   None  
//  Side Effect :
//  *********************************************************************

void OSDMENU_DisplayMenu(BYTE bMenuId, BYTE bItem, BYTE bLevel)
{
    _pTempMenu = _pMenuIndex[bMenuId];
    if (_pTempMenu) // for Main Menu "Exit" item, the submenu is null
    {
        if ((_bMenuType == MENU_TYPE_SETUP) && 
            (bMenuId == SETUP_MENU_MAIN 
            || bMenuId == SETUP_MENU_MAIN_WITH_PROLOGIC)) // Brian1.08
            _DisplayIconMenu();
        else
            _DisplayMenu(bItem, bLevel);
    }
}

//  *********************************************************************
//  Function    :   _DisplayIconMenu
//  Description :   This function display the single Icon menu
//  Arguments   :   None (assume icon menu is the root (level 0) and no scroll)
//  Global Var  :   _pTempMenu: The menu
//  Return      :   None  
//  Side Effect :
//  *********************************************************************
//  This fuction would only be called when the Root (icon) menu is first displayed
void _DisplayIconMenu(void)
{
    _bMENUTemp2 = GET_MENU_ITEM_NUM(_pTempMenu);

    //Brian1.24a, bmp/font icon use the same layout 
/*
#ifdef REMOVE_SETUP_ICON

    GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu), // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-4, // right//Iris0318
                   GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*GET_MENU_ROW(_pTempMenu)+MENU_BORDER_THICKNESS*2-1-MENU_ICON_Y_OFFSET, // bottom

                   OSDMENU_ENTRY_MENU_COLOR_BRIGHT,   // bColorBright
                   OSDMENU_ENTRY_MENU_COLOR_DARK,     // bColorDark
                   OSDMENU_ENTRY_MENU_COLOR_CENTER,   // bColorCenter
                   FRAME_POP, //FRAME_POP_SOLID,     // bStyle //Iris0312
                   MENU_BORDER_THICKNESS // bThickness
                  );//xuli1118

#endif
*/


    for (_bMENUTemp=0; _bMENUTemp <_bMENUTemp2; _bMENUTemp++)
    {

#ifdef REMOVE_SETUP_ICON
    GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDMENU_ENTRY_TEXT_COLOR_DISABLE); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
    GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
#endif
        // check if disable
        if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM)
        //if (GET_MENU_ENABLE(_pTempMenu) != NULL) // the _bEnabelxxx exist
        {
            if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
            {
#ifndef REMOVE_SETUP_ICON
                // item is enabled, set the text color as normal color
				if (_bMENUTemp == __bMENUSelect[__bMENUCurrentLevel])
					_wMENUTemp = BUTTON_HIGHLIGHT;
				else
					_wMENUTemp = BUTTON_NORMAL; //|BUTTON_WITH_TEXT;
#else
                // item is enabled, set the text color as normal color
                if (_bMENUTemp == __bMENUSelect[__bMENUCurrentLevel])

                {
					_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT;
                 //   GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE);
					GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_BLUE); //Brian1.24a //Iris0312
				}
				else
                {
					_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_NORMAL;
                 //   GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE);
					GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_BLUE); //Brian1.24a //Iris0312
				}
#endif
            }
            else
            {
#ifndef REMOVE_SETUP_ICON
                // item is disabled, set the text color as disable color
                _wMENUTemp = BUTTON_DISABLED; //|BUTTON_WITH_TEXT;
#else
				_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_NORMAL;
		        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
    		    GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDMENU_ENTRY_DESC_TEXT_COLOR); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
					  
#endif
            }

        }

#ifndef REMOVE_SETUP_ICON
        // just for test
        switch(_bMENUTemp)
        {
        case 0:
            __wGDIString[1] = BUTTON_ID_LANGUAGE;
            break;
        case 1:
            __wGDIString[1] = BUTTON_ID_SCREEN;
            break;
        case 2:
            __wGDIString[1] = BUTTON_ID_AUDIO;
            break;
        case 3:
            __wGDIString[1] = BUTTON_ID_CUSTOM;
            break;
        case 4:
            __wGDIString[1] = BUTTON_ID_EXIT;
            break;
        }

// Brian1.08a
#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU

        // arrange the icon menu in horizontal direction here
        GDI_DRAW_BUTTON(GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*_bMENUTemp, // left
                        GET_MENU_Y(_pTempMenu), // top
                        GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*_bMENUTemp+MENU_ICON_WIDTH-1, // right
                        GET_MENU_Y(_pTempMenu)+MENU_ICON_HEIGHT-1, // bottom
                        __wGDIString[1], // bButtonId
                        _wMENUTemp // bStyle
                        );

#else
        GDI_DRAW_BUTTON(GET_MENU_X(_pTempMenu), // left
                        GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*_bMENUTemp, // top
                        GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                        GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*_bMENUTemp+MENU_ICON_HEIGHT-1, // bottom
                        __wGDIString[1], // bButtonId
                        _wMENUTemp // bStyle
                        );
#endif

#else	//#ifndef REMOVE_SETUP_ICON

    GDI_SetTextColor(TEXT_BG_COLOR, _wMENUTemp);

    // Brian1.24a
    GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp, // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-5, // right
                   GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp+MENU_ICON_HEIGHT+3, // bottom
                        
                   OSDMENU_ENTRY_MENU_COLOR_BRIGHT,   // bColorBright
                   OSDMENU_ENTRY_MENU_COLOR_DARK,     // bColorDark
                   OSDMENU_ENTRY_MENU_COLOR_CENTER,   // bColorCenter
                   FRAME_POP, //FRAME_POP, //FRAME_POP_SOLID,     // bStyle
                   2 // bThickness

                        );



        switch(_bMENUTemp)
        {
        case 0:
            __wGDIString[1] = CHAR_SETUP_LANG1;
            __wGDIString[2] = CHAR_SETUP_LANG2;	    
            break;
        case 1:
            __wGDIString[1] = CHAR_SETUP_SCRN1;
            __wGDIString[2] = CHAR_SETUP_SCRN2;	
            break;
        case 2:
            __wGDIString[1] = CHAR_SETUP_AUDIO1;
            __wGDIString[2] = CHAR_SETUP_AUDIO2;	
    GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_GREEN); //Brian1.24a //Iris0318
		GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312		
            break;
        case 3:
            __wGDIString[1] = CHAR_SETUP_CUSTOM1;
            __wGDIString[2] = CHAR_SETUP_CUSTOM2;
			GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312			
            break;
        case 4:
            __wGDIString[1] = CHAR_SETUP_EXIT1;
            __wGDIString[2] = CHAR_SETUP_EXIT2;
			 GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_RED); //Brian1.24a //Iris0318
				GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
            break;
        }
	__wGDIString[0]=2;
	GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS,GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp+MENU_BORDER_THICKNESS); // Brian1.24a //xuli1118

        switch(_bMENUTemp)
        {
        case 0:
            __wGDIString[1] = CHAR_SETUP_LANG3;
            __wGDIString[2] = CHAR_SETUP_LANG4;	    
            break;
        case 1:
            __wGDIString[1] = CHAR_SETUP_SCRN3;
            __wGDIString[2] = CHAR_SETUP_SCRN4;	
            break;
        case 2:
            __wGDIString[1] = CHAR_SETUP_AUDIO3;
            __wGDIString[2] = CHAR_SETUP_AUDIO4;	
			 GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_GREEN); //Brian1.24a //Iris0318
				GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
            break;
        case 3:
            __wGDIString[1] = CHAR_SETUP_CUSTOM3;
            __wGDIString[2] = CHAR_SETUP_CUSTOM4;
				GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
            break;
        case 4:

⌨️ 快捷键说明

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