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

📄 osd3.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            __wGDIString[1] = CHAR_SETUP_EXIT3;
            __wGDIString[2] = CHAR_SETUP_EXIT4;
			 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+27) // Brian1.24a //xuli1118
	
#endif	//#ifndef REMOVE_SETUP_ICON


    }
}

//  *********************************************************************
//  Function    :   _DisplayMenu
//  Description :   This function display the single menu
//  Arguments   :   bItem: the item must be displayed.
//              :   bLevel: the level of menu, root = 0, next is 1,2,...
//  Global Var  :   _pTempMenu: The menu
//  Return      :   None  
//  Side Effect :
//  *********************************************************************

void _DisplayMenu(BYTE bItem, BYTE bLevel)
{
    BYTE i;
//#define OFFSCREEN_MENU

#ifdef OFFSCREEN_MENU
    if(__bCurrentRegionId == 0)
        GDI_SetCurrentRegion(1);
    else
        GDI_SetCurrentRegion(0);


    // ****
    // clear the scroll-up/down area first, or there may be garbage
#endif


    //_pTempMenu = _SetupMenuIndex[bMenuId];
    _bMENUTemp = GET_MENU_ITEM_NUM(_pTempMenu);
    _bMENUTemp2 = GET_MENU_ROW(_pTempMenu);
    if (_bMENUTemp2 > _bMENUTemp)
        _wMENUTemp = _bMENUTemp;
    else
        _wMENUTemp = _bMENUTemp2;

    GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu), // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                   GET_MENU_Y(_pTempMenu)+MENU_ITEM_HEIGHT*_wMENUTemp+MENU_BORDER_THICKNESS*2-1, // bottom

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

    GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
    GDI_SetTextColor(TEXT_BG_COLOR, OSDMENU_ENTRY_ITEM_COLOR_NORMAL);

    if (bItem != 0xFF)
    {
        // first display, calculate the display range.

        _wMENUTemp = (_bMENUTemp2 - 1)/2;  //up-half
        if (_wMENUTemp > bItem)
            bItem = 0; // display starts from the first item
        else
            bItem = bItem - _wMENUTemp;

        if (_bMENUTemp2+bItem > _bMENUTemp)
        {
            _wMENUTemp = _bMENUTemp2+bItem-_bMENUTemp;
            if (_wMENUTemp > bItem)
            {
                if (_bMENUTemp2 > _bMENUTemp)
                    _bMENUTemp2 = _bMENUTemp;
                bItem = 0; // display starts from the first item
            }
            else
                bItem = bItem - _wMENUTemp;
        }

        __bMENUDisplayStart[bLevel] = bItem; // record the start item of the displaying area
    }
    else
    {
        // not first time, use the __bMENUDisplayStart
        bItem = __bMENUDisplayStart[bLevel];

    }

     for (_bMENUTemp=bItem; (_bMENUTemp<_bMENUTemp2+bItem) && (_bMENUTemp<GET_MENU_ITEM_NUM(_pTempMenu)); _bMENUTemp++)
    {
        
        
        if (_bMENUTemp==bItem)
        {
            if (bItem != 0)
            {
                //if (!(__bMENUStatus[bLevel] & 0x01))
                {
                // Draw the scroll up mark
                //GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT,
                //  GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                //  GET_MENU_Y(_pTempMenu)-1,
                //  MENU_ITEM_COLOR_NORMAL);

                if (!(__bMENUStatus[bLevel] & 0x01))
                {
                GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT, // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                   GET_MENU_Y(_pTempMenu)-1, // bottom

                   OSDMENU_ENTRY_MENU_COLOR_BRIGHT,   // bColorBright
                   OSDMENU_ENTRY_MENU_COLOR_DARK,     // bColorDark
                   OSDMENU_ENTRY_MENU_COLOR_CENTER,   // bColorCenter
                   FRAME_POP_SOLID,     // bStyle
                   MENU_BORDER_THICKNESS // bThickness
                  );
                }

#ifdef SKIP_DISABLED_ITEM
                // Brian1.05, set Up mark color to disable if all the "Up" items are disbaled, ie., can't scroll up
                if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
                   GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
                {
                    for (i=0; i<bItem; i++)
                    {
                        if (*(GET_MENU_ENABLE(_pTempMenu)+i/8) & (1 << (i%8))) // if enabled
                        {
                            break; // find a enabled item
                        }
                    }

                    if (i==bItem)
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
                    else
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); 
                }
                else

                {
                    // it is value, just set Up mark as normal color
                    GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); 
                }
#endif                


                __wGDIString[1] = CHAR_N_UP_16; 
                __wGDIString[0] = 1; 
                GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS + GET_MENU_WIDTH(_pTempMenu)/2-16,
                                GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT+MENU_BORDER_THICKNESS);
                __bMENUStatus[bLevel] |= 0x01; // set scroll-up bit
                }

            
            }
            else
            {
                if (__bMENUStatus[bLevel] & 0x01)
                {
                    // Clear the scroll up mark
                    //GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT,
                    //    GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                    //    GET_MENU_Y(_pTempMenu)-1,
                    //    UI_BACKGROUND_COLOR);

                    GDI_FILL_RECT(GET_MENU_X(_pTempMenu), // left
                            GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT, // top
                            GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                            GET_MENU_Y(_pTempMenu)-1, // bottom
                            OSDSETUP_ENTRY_MAIN_COLOR_BG);

                    __bMENUStatus[bLevel] &= 0xFE; // clear scroll-up bit
                }
            }
        }
        else if (_bMENUTemp==_bMENUTemp2+bItem-1)
        {
            if (_bMENUTemp < GET_MENU_ITEM_NUM(_pTempMenu)-1)
            {
                //if (!(__bMENUStatus[bLevel] & 0x02))
                {
                // Draw the scroll down mark
                //GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,
                //        GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                //        GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1,
                //        MENU_ITEM_COLOR_NORMAL);

                if (!(__bMENUStatus[bLevel] & 0x02))
                {
                GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                   GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1, // bottom

                   OSDMENU_ENTRY_MENU_COLOR_BRIGHT,   // bColorBright
                   OSDMENU_ENTRY_MENU_COLOR_DARK,     // bColorDark
                   OSDMENU_ENTRY_MENU_COLOR_CENTER,   // bColorCenter
                   FRAME_POP_SOLID,     // bStyle
                   MENU_BORDER_THICKNESS // bThickness
                  );
                }

#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 (*(GET_MENU_ENABLE(_pTempMenu)+i/8) & (1 << (i%8))) // if enabled
                        {
                            break; // find a enabled item
                        }
                    }

                    if (i==GET_MENU_ITEM_NUM(_pTempMenu))
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
                    else
                        GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); 
                }
                else

                {
                    // it is value, just set Up mark as normal color
                    GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); 
                }
#endif

                __wGDIString[1] = CHAR_N_DWN_16; 
                __wGDIString[0] = 1; 
                GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS + GET_MENU_WIDTH(_pTempMenu)/2-16,
                            GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*3+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT);
                
            __bMENUStatus[bLevel] |= 0x02; // set scroll-down bit
                }
            }
            else
            {
                if (__bMENUStatus[bLevel] & 0x02)
                {
                // Clear the scroll-down mark
                //GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,
                //        GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                //        GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1,
                //        UI_BACKGROUND_COLOR);

                GDI_FILL_RECT(GET_MENU_X(_pTempMenu), // left
                   GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, // top
                   GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
                   GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1, // bottom
                    OSDSETUP_ENTRY_MAIN_COLOR_BG);

                __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
                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);
            }

        }

        {
            // Draw single Menu Item
            OSDMENU_DrawItem(bItem, _bMENUTemp, OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
        }

    }


#ifdef OFFSCREEN_MENU

    if(__bCurrentRegionId == 0)
    {
        GDI_BITMAP_COPY(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
                        GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                        GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+2)*MENU_ITEM_HEIGHT-1,
                        GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
                        0,
                        1,
                        );
        GDI_SetCurrentRegion(1);
    }
    else
    {
        GDI_BITMAP_COPY(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
                        GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
                        GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+2)*MENU_ITEM_HEIGHT-1,
                        GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
                        1,
                        0,

⌨️ 快捷键说明

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