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

📄 osd3.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                {
                    if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
                    {
                        // item is enabled, set the text color as normal color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                        OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
                    }
                    else
                    {
                        // item is disabled, set the text color as disable color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);

                    }
                    break;
                }
				// Brian1.02a,for Dialog like "Parental", "Change Password"
				else if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
				{
					if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
					{
						// item is enabled, set the text color as normal color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
					}
					else
					{
						// item is disabled, set the text color as disable color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
					}
				}

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

                
            }
            break;
        // Brian1.08a
        //case KEY_DOWN:
        case OSDMENU_GOTO_NEXT_ITEM:
            if (__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
            {

#ifdef SKIP_DISABLED_ITEM
                // Brian1.05, don't move cursor onto disabled item.
                bOrgItem = __bMENUSelect[__bMENUCurrentLevel]; // keep the current select

                while(__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
                {
                    __bMENUSelect[__bMENUCurrentLevel]++;

                    _bMENUTemp = __bMENUSelect[__bMENUCurrentLevel]; 

                    if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
                       GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
                    {
                        if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8))) // if enabled
                        {
                            break; // find a enabled item
                        }
                        else
                        {
                            if (__bMENUSelect[__bMENUCurrentLevel] == bItemNum-1)
                            {
                                // no enabled item is found, so the cursor remain still
                                __bMENUSelect[__bMENUCurrentLevel] = bOrgItem;
                                return;
                            }
                        }
                    } // if IS_ITEM
                    else
                    {
                        break; // for value, no such consideration, just move the cursor as usual

                    }
                } // while
#else

                __bMENUSelect[__bMENUCurrentLevel]++;
#endif

				if (__bMENUCurrentLevel < MENU_LEVEL-1)
				__bMENUSelect[__bMENUCurrentLevel+1] = 0; // set select to 0, the first item.

				__wMENUPrevItemId = __wMENUCurrentItemId;

				if (__bMENUCurrentLevel == 0 && _bMenuType == MENU_TYPE_SETUP)
                {
					OSDSETUP_ShowDescriptionText();
                    // Brian1.08a, display menu settings when menu cursor in on Icon menu 
#ifdef SUPPORT_MENU_SETTINGS_DISPLAY
                    _ClearCurrentSettings();
                    _DisplayCurrentSettings();
#endif

                }

                if(GET_ITEM_ATTRIBUTE(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]) == IS_LINE)
                {
                    // I assume nobody will put a seperate line as the last item,
                    // so I don't check if it is out of the range
                    __bMENUSelect[__bMENUCurrentLevel]++;
                    bItemNum = 1; // just use it to keep if this is a seperate line
                }
                else
                    bItemNum = 0; // just use it to keep if this is a seperate line


                //OSDMENU_DisplaySetupMenu();
                if (__bMENUSelect[__bMENUCurrentLevel] > __bMENUDisplayStart[__bMENUCurrentLevel]+GET_MENU_ROW(_pTempMenu)-1)
                {
#ifdef SKIP_DISABLED_ITEM
                    __bMENUDisplayStart[__bMENUCurrentLevel] = __bMENUSelect[__bMENUCurrentLevel] - GET_MENU_ROW(_pTempMenu) +(1+bItemNum);
#else
                    __bMENUDisplayStart[__bMENUCurrentLevel] += (1+bItemNum);
#endif
                    OSDMENU_DisplayMenu(__bCurrentMenuId, 0xFF, __bMENUCurrentLevel);
                }
                else
                {
#ifdef SKIP_DISABLED_ITEM                    
                    // Brian1.05, don't move cursor onto disabled item.
                    OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], (BYTE)(bOrgItem-bItemNum), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
#else
                    OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], (BYTE)(__bMENUSelect[__bMENUCurrentLevel]-1-bItemNum), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
#endif
                }

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

                // clear the previous menu
#ifdef SKIP_DISABLED_ITEM
                _pTempMenu = GET_SUB_MENU(_pTempMenu, bOrgItem-bItemNum);
#else
                _pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]-1-bItemNum);
#endif
                if (_pTempMenu)
                {
                    OSDMENU_ClearMenu();
                    __bMENUStatus[__bMENUCurrentLevel+1] &= 0xFE; // clear scroll-up bit
                    __bMENUStatus[__bMENUCurrentLevel+1] &= 0xFD; // clear scroll-down bit
                }
                _pTempMenu = _pMenuIndex[__bCurrentMenuId];
                
                _bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
                if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM)
                {
                    if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
                    {
                        // item is enabled, set the text color as normal color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                        OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
                    }
                    else
                    {
                        // item is disabled, set the text color as disable color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);

                    }
                    break;
                }
				// Brian1.02a,for Dialog like "Parental", "Change Password"
				else if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
				{
					if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
					{
						// item is enabled, set the text color as normal color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
					}
					else
					{
						// item is disabled, set the text color as disable color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
					}
				}

                OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
            }
            break;
        // Brian1.08a
        //case KEY_RIGHT:
        case OSDMENU_GOTO_SUB_MENU:
             _bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];

             if (GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]) &&
                 *(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)) ) // && __bMENUCurrentLevel < (MENU_LEVEL-1))
             {

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

                
				__wMENUPrevItemId = __wMENUCurrentItemId;
				// change the highlight to select
                OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_SELECT);

                __bMENUParent[__bMENUCurrentLevel+1] = __bCurrentMenuId;
                _pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
                //if (_pTempMenu) // has sub menu
                {
                    __bCurrentMenuId = GET_MENU_ID(_pTempMenu);
                    __bMENUCurrentLevel++;

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

                _bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];

#ifdef SKIP_DISABLED_ITEM
                // Brian1.05, don't move cursor onto disabled item.
                bOrgItem = __bMENUSelect[__bMENUCurrentLevel]; // keep the current select

                while(__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
                {
                    
                    _bMENUTemp = __bMENUSelect[__bMENUCurrentLevel]; 

                    if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
                       GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
                    {
                        if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8))) // if enabled
                        {
                            __wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
                            break; // find a enabled item
                        }
                        else
                        {
                            if (__bMENUSelect[__bMENUCurrentLevel] == bItemNum-1)
                            {
                                // no enabled item is found, so the cursor remain still
                                __bMENUSelect[__bMENUCurrentLevel] = bOrgItem;
                                return;
                            }
                        }

                        __bMENUSelect[__bMENUCurrentLevel]++;

                    } // if IS_ITEM
                    else
                    {
                        break; // for value, no such consideration, just move the cursor as usual

                    }

                } // while
#endif


                if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM ||
                    GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG) // Brian1.05
                {
                    if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
                    {
                        // item is enabled, set the text color as normal color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                        OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
                    }
                    else
                    {
                        // item is disabled, set the text color as disable color
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
                        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);

                    }
                    break;
                }

                    //OSDMENU_DisplaySetupMenu();
                    //OSDMENU_DisplayMenu(__bCurrentMenuId, 0xFF, __bMENUCurrentLevel);
                    OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
                    OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);

                }
             }
             break;
        // Brian1.08a
        //case KEY_LEFT:
        case OSDMENU_GOTO_PARENT_MENU:
// Brian1.08a, support Horizontal icon menu
#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU
             // for Horizontal icon case, KEY_LEFT won't go to icon menu
             if (__bMENUCurrentLevel == 1 && bKey == KEY_LEFT)
             {
                 break;
             }
             else
#endif
             if (__bMENUCurrentLevel > 0)

             {
				 __wMENUPrevItemId = __wMENUCurrentItemId;

                // change the highlight to normal
                OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
                // Clear the sub menu
                _pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
                if (_pTempMenu)
                {
                    OSDMENU_ClearMenu();
                    __bMENUStatus[__bMENUCurrentLevel+1] &= 0xFE; // clear scroll-up bit
                    __bMENUStatus[__bMENUCurrentLevel+1] &= 0xFD; // clear scroll-down bit
                }

                _pTempMenu = _pMenuIndex[__bMENUParent[__bMENUCurrentLevel]];
                if (_pTempMenu)
                {

⌨️ 快捷键说明

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