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

📄 osd3.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
            else            {                if (__bMENUStatus[bLevel] & 0x01)                {                    // Clear the scroll up mark                    _MENU_RectAttr.bColor = OSDSETUP_ENTRY_CENTER_COLOR_BG;                    _OSDMENU_FillRect(GET_MENU_X(_pTempMenu),                              GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT,                              GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1,                              GET_MENU_Y(_pTempMenu)-1); //CoCo1.20, reduce code size.                    __bMENUStatus[bLevel] &= 0xFE; // clear scroll-up bit                }            }        }        else if (_bMENUTemp==_bMENUTemp2+bItem-1)        {            if (_bMENUTemp < GET_MENU_ITEM_NUM(_pTempMenu)-1)            {                {                // Draw the scroll down mark                if (!(__bMENUStatus[bLevel] & 0x02))                {                    _InitRect((PURECT)&(_MENU_FrameAttr),                    GET_MENU_X(_pTempMenu),                    GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,                    GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1,                    GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1);                    _OSDMENU_DrawFrame(FRAME_POP_SOLID); //CoCo1.20, reduce code size.                }#ifdef SKIP_DISABLED_ITEM                // Brian1.05, set Down mark color to disable if all the "Down" items are disbaled, ie., can't scroll down                if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||                   GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)                {                    for (i=_bMENUTemp+1; i<GET_MENU_ITEM_NUM(_pTempMenu); i++)                    {                        if (*(((BYTE*)(_pTempMenu[0].pbItemText))+i/8) & (1 << (i%8))) // if enabled                        {                            break; // find a enabled item                        }                    }                    if (i==GET_MENU_ITEM_NUM(_pTempMenu))                        _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_DISABLE;                    else                        _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;                }                else                {                    // it is value, just set Up mark as normal color                    _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;                }#endif                _wMENUString[0] = 1;                 _wMENUString[1] = CHAR_N_DWN_16;                 //__bTemp = GDI_GetStringHeight(&_wMENUString);                _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) + MENU_BORDER_THICKNESS +                                   GET_MENU_WIDTH(_pTempMenu)/2 - 16;                _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu) + MENU_BORDER_THICKNESS*3 +                                   (_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT;                _OSDMENU_DrawString(); //CoCo1.20, reduce code size.                __bMENUStatus[bLevel] |= 0x02; // set scroll-down bit                }            }            else            {                if (__bMENUStatus[bLevel] & 0x02)                {                // Clear the scroll-down mark                    _MENU_RectAttr.bColor = OSDSETUP_ENTRY_CENTER_COLOR_BG;                    _OSDMENU_FillRect(GET_MENU_X(_pTempMenu),                              GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,                              GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1,                              GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1); //CoCo1.20, reduce code size.                    __bMENUStatus[bLevel] &= 0xFD; // clear scroll-down bit                }            }                    }        //else        // check if disable        if(GET_ITEM_ATTRIBUTE(_pTempMenu, bItem) == IS_ITEM)        //if (GET_MENU_ENABLE(_pTempMenu) != NULL) // the _bEnabelxxx exist        {            if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))            {                // item is enabled, set the text color as normal color                _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;            }            else            {                // item is disabled, set the text color as disable color                _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_DISABLE;            }        }        {            // Draw single Menu Item            OSDMENU_DrawItem(bItem, _bMENUTemp, OSDMENU_ENTRY_ITEM_COLOR_NORMAL);        }    }}//  *********************************************************************//  Function    :   OSDMENU_DisplaySubMenu//  Description :   This function display the single menu//  Arguments   :   bItem: the item must be displayed.//  Global Var  :   _pTempMenu: The menu//  Return      :   None  //  Side Effect ://  *********************************************************************void OSDMENU_DisplaySubMenu(BYTE bItem, BYTE bLevel){    if (GET_ITEM_ATTRIBUTE(_pTempMenu, bItem)==IS_ITEM)    {        _pTempMenu = _pTempMenu[2+bItem].pSubMenu; // get sub menu        // Brian1.10, for Keil 7, don't use expression like !pointer, the result may be wrong        if (_pTempMenu == NULL) // for Main Menu "Exit" item, the submenu is null            return;        if(GET_ITEM_ATTRIBUTE(_pTempMenu, 0) == IS_VALUE) // use one item to judge if it is value sub menu        {            // find the checked item            // for "Default Value->Read", it is a value but there is no check            if (GET_MENU_CHECK(_pTempMenu) != NULL) // It is a "Value" sub menu            {                bItem = _GetMenuItemPosition(*(GET_MENU_CHECK(_pTempMenu)));                // the checked item is also the selection, so record it at the same time.                __bMENUSelect[bLevel+1] = bItem;            }            else            {                bItem = 0; // for "Default Value->Read", it is a value but there is no check                // Brian1.24a                __bMENUSelect[bLevel+1] = 0; // assign it to 0, the first item.             }        }        else            bItem = 0; // it is a "item" sub menu, so just assign the first item as the one that must be displayed        _DisplayMenu(bItem, (BYTE)(bLevel+1));    }}//  *********************************************************************//  Function    :   OSDMENU_DrawItem//  Description :   This function draws a menu item text //  Arguments   :   bItem: the item number//                  bColor: the color represent the state://                      MENU_ITEM_COLOR_HIGHLIGHT, MENU_ITEM_COLOR_SELECT or MENU_ITEM_COLOR_NORMAL //  Global Var  :   _pTempMenu: The menu//  Return      :   None  //  Side Effect ://  Note        :   may use macro instead to save SRAM//  *********************************************************************void OSDMENU_DrawItem(BYTE bBase, BYTE bItem, BYTE bColor){        // The following code handles Icon menu    if (CHECK_ICON_ATTRIBUTE(_pTempMenu, bItem))    {#ifndef REMOVE_SETUP_ICON         switch (bColor)        {        case OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT:            _wMENUString[5] = BUTTON_HIGHLIGHT; //|BUTTON_WITH_TEXT;            break;        case OSDMENU_ENTRY_ITEM_COLOR_NORMAL:            _wMENUString[5] = BUTTON_NORMAL; //|BUTTON_WITH_TEXT;            break;        case OSDMENU_ENTRY_ITEM_COLOR_SELECT:            _wMENUString[5] = BUTTON_PUSH; //|BUTTON_WITH_TEXT;            break;        }        switch(bItem)		{        case 0:            _wMENUString[1] = BUTTON_ID_LANGUAGE;            break;        case 1:            _wMENUString[1] = BUTTON_ID_SCREEN;            break;        case 2:            _wMENUString[1] = BUTTON_ID_AUDIO;            break;        case 3:            _wMENUString[1] = BUTTON_ID_CUSTOM;            break;        case 4:            _wMENUString[1] = BUTTON_ID_EXIT;            break;        }// Brian1.08a#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU        // Draw the icon menu in horizontal direction here        _InitRect(&(_MENU_BtnAttr.rect),                  GET_MENU_X(_pTempMenu)+ (MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem,                  GET_MENU_Y(_pTempMenu),                  GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem+MENU_ICON_WIDTH-1,                  GET_MENU_Y(_pTempMenu)+MENU_ICON_HEIGHT-1);        _MENU_BtnAttr.bButtonId = _wMENUString[1];        _MENU_BtnAttr.bStyle = _wMENUString[5];        GDI_DrawButton_909(0, &_MENU_BtnAttr);#else        _InitRect(&(_MENU_BtnAttr.rect),                  GET_MENU_X(_pTempMenu),                  GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*bItem,                  GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1,                  GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*bItem+MENU_ICON_HEIGHT-1);        _MENU_BtnAttr.bButtonId = _wMENUString[1];        _MENU_BtnAttr.bStyle = _wMENUString[5];        GDI_DrawButton_909(0, &_MENU_BtnAttr);#endif#else // #ifndef REMOVE_SETUP_ICON/*        switch (bColor)        {        case OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT:            _MENU_StrAttr.bBackground = bColor;            break;        case OSDMENU_ENTRY_ITEM_COLOR_NORMAL:        case OSDMENU_ENTRY_ITEM_COLOR_SELECT:            _MENU_StrAttr.bBackground = OSDSETUP_ENTRY_COLOR_TOP_BANNER;            break;        } //alan085a adds for divx reg code        _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;        _MENU_StrAttr.bShadow1 = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;        _MENU_StrAttr.bShadow2 = OSDMENU_ENTRY_TEXT_COLOR_DISABLE;*/            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_BLUE;            _MENU_StrAttr.bBackground = bColor;            _MENU_StrAttr.bShadow1 = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;            _MENU_StrAttr.bShadow2 = OSDMENU_ENTRY_TEXT_COLOR_DISABLE;	bItem=bItem-bBase;	        switch(bItem)        {        case 0:            _wMENUString[1] = CHAR_SETUP_LANG1;            _wMENUString[2] = CHAR_SETUP_LANG2;	                break;        case 1:            _wMENUString[1] = CHAR_SETUP_SCRN1;            _wMENUString[2] = CHAR_SETUP_SCRN2;	            break;        case 2:            _wMENUString[1] = CHAR_SETUP_AUDIO1;            _wMENUString[2] = CHAR_SETUP_AUDIO2;	            _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_GREEN;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        case 3:            _wMENUString[1] = CHAR_SETUP_CUSTOM1;            _wMENUString[2] = CHAR_SETUP_CUSTOM2;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        case 4:            _wMENUString[1] = CHAR_SETUP_EXIT1;            _wMENUString[2] = CHAR_SETUP_EXIT2;            _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_RED;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        }	_wMENUString[0]=2;#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU        _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) +                           (MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem,        _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu);#else        _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) + MENU_BORDER_THICKNESS;        _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu) + (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*bItem+MENU_BORDER_THICKNESS;#endif        _OSDMENU_DrawString(); //CoCo1.20, reduce code size.        switch(bItem)        {        case 0:            _wMENUString[1] = CHAR_SETUP_LANG3;            _wMENUString[2] = CHAR_SETUP_LANG4;	                break;        case 1:            _wMENUString[1] = CHAR_SETUP_SCRN3;            _wMENUString[2] = CHAR_SETUP_SCRN4;	            break;        case 2:            _wMENUString[1] = CHAR_SETUP_AUDIO3;            _wMENUString[2] = CHAR_SETUP_AUDIO4;	            _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_GREEN;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        case 3:            _wMENUString[1] = CHAR_SETUP_CUSTOM3;            _wMENUString[2] = CHAR_SETUP_CUSTOM4;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        case 4:            _wMENUString[1] = CHAR_SETUP_EXIT3;            _wMENUString[2] = CHAR_SETUP_EXIT4;            _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_RED;            _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE;            break;        }	_wMENUString[0]=2;	#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU        _MENU_StrAttr.wX = GET_MENU_X

⌨️ 快捷键说明

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