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

📄 osd3.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "winav.h"#include "gdi.h"

#ifndef IMAGE_FRAME_SETUP //CoCo2.38
#ifndef SUPPORT_STB
#define MENU_DECLARATION#include "utl.h"#include "comutl.h"#include "hal.h"#include "osd.h"#include  "cc.h"#include "input.h"#include "fontindex.h" //++CoCo2.37P#include "setup.h"#include "osdnd.h"#include "osd3.h"#include "osddlg.h"#include "osddivx.h"#include "setup.h"#include "notransl.h"// Brian1.05, define this to skip disabled item when moving cursor#define SKIP_DISABLED_ITEM // Brian1.08a, support horizontal Icon menu#define OSDMENU_GOTO_PREV_ITEM      0#define OSDMENU_GOTO_NEXT_ITEM      1#define OSDMENU_GOTO_SUB_MENU       2#define OSDMENU_GOTO_PARENT_MENU    3#define OSDMENU_SELECT_ITEM         4#define MENU_ITEM_HEIGHT        28 // each Item line height#define MENU_ITEM_X_OFFSET      30 // the x offset reserves space for "check mark"#define MENU_ITEM_SUBMENU_OFFSET 18 // the x offset reserves space for "sub menu"#define MENU_CHECK_OFFSET       5#define MENU_SCROLL_HEIGHT      22 // the scroll-up/down mark height is 16, plus 2 border thinkness#define MENU_TOP_ICON_HEIGHT    26 // The height of the top part of icon is 26 pixel.#ifndef REMOVE_SETUP_ICON#define MENU_ICON_HEIGHT        (44+4)  // the height of the icon in the list, including the border 2*2#else#define MENU_ICON_HEIGHT	44#endif// Brian1.08a#define MENU_ICON_WIDTH         64  // the width of the icon in the list#define MENU_ICON_X_OFFSET      56       // use for horizontal icon menu#define MENU_ICON_Y_OFFSET      6       // use for vertical icon menu#define MENU_DESCRIPTION_X      (40 +MENU_GLOBAL_OFFSET_X)#define MENU_DESCRIPTION_Y      (MENU_GLOBAL_OFFSET_Y + 5)// Brian1.08// for Input dialog display in Setup// Adjust the "Input Password" / "Input Language Code" dialog position, so it won't overlap with Setup menu#define DIALOG_INPUT_PASSWORD_X1        SETUP_MENU_ITEM_X#define DIALOG_INPUT_PASSWORD_X2        (DIALOG_INPUT_PASSWORD_X1+ SETUP_MENU_ITEM_W)#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU#define DIALOG_INPUT_PASSWORD_Y1        290#define DIALOG_INPUT_PASSWORD_Y2        360#else#define DIALOG_INPUT_PASSWORD_Y1        250#define DIALOG_INPUT_PASSWORD_Y2        320#endif#define DIALOG_INPUT_PASSWORD_X_OFFSET	20#define DIALOG_INPUT_PASSWORD_Y_OFFSET	20// for Input dialog display in noraml OSD#define DIALOG_INPUT_PASSWORD_OSD_X1    (16+MENU_GLOBAL_OFFSET_X) #define DIALOG_INPUT_PASSWORD_OSD_Y1	20 //(OSDND_UPPER_BACKGROUND_RIGHT_DISPLAY_DISTANCE_V+OSDND_FONT_HEIGHT) //20 Howard1.24#define DIALOG_INPUT_PASSWORD_OSD_X2	(DIALOG_INPUT_PASSWORD_OSD_X1+520)#define DIALOG_INPUT_PASSWORD_OSD_Y2	(DIALOG_INPUT_PASSWORD_OSD_Y1+32)#define DIALOG_INPUT_PASSWORD_OSD_X_OFFSET	100#define DIALOG_INPUT_PASSWORD_OSD_Y_OFFSET	0// Adjust the "change password" dialog position, so it won't overlap with Setup menu#define DIALOG_CHANGE_PASSWORD_X1       SETUP_MENU_ITEM_X	#define DIALOG_CHANGE_PASSWORD_X2       (DIALOG_CHANGE_PASSWORD_X1 + 370)#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU#define DIALOG_CHANGE_PASSWORD_Y1       (SETUP_MENU_ITEM_Y + 143)#else#define DIALOG_CHANGE_PASSWORD_Y1       (SETUP_MENU_ITEM_Y + 164)#endif#define DIALOG_CHANGE_PASSWORD_Y2       (DIALOG_CHANGE_PASSWORD_Y1 + 98) #define DIALOG_CHANGE_PASSWORD_X_OFFSET	20 #define DIALOG_CHANGE_PASSWORD_Y_OFFSET	10 #define DIALOG_CHANGE_PASSWORD_X_SHIFT	120 #define DIALOG_CHANGE_PASSWORD_CHAR_WIDTH	20#define DIALOG_CHANGE_PASSWORD_CHAR_HEIGHT	OSD_FONT_HEIGHT#define GET_MENU_X(MENU)                   (WORD)((DWORD)(MENU[1].pbItemText))#define GET_MENU_Y(MENU)                   (WORD)((DWORD)(MENU[1].pSubMenu))#define GET_MENU_WIDTH(MENU)               (WORD)(MENU[1].Id)#define GET_MENU_ROW(MENU)                 (BYTE)(MENU[1].bAttribute) // could display n Row#define GET_MENU_ITEM_NUM(MENU)            (BYTE)(MENU[0].bAttribute) // number of items in a menu#define GET_MENU_ITEM_TEXT(MENU, NUM)   (MENU[2+NUM].pbItemText)#define GET_ITEM_ATTRIBUTE(MENU, NUM)   (MENU[2+NUM].bAttribute & 0x03)#define CHECK_ICON_ATTRIBUTE(MENU, NUM)   (MENU[2+NUM].bAttribute & 0x10) // check if it is an ICON#define GET_ITEM_ID(MENU, NUM)          (MENU[2+NUM].Id)#define GET_MENU_ENABLE(MENU)           ((BYTE*)(MENU[0].pbItemText)) // the _bEnablexxx#define GET_MENU_CHECK(MENU)            ((BYTE*)(MENU[0].pbItemText)) //  &(__SetupInfo.xxx)#define GET_MENU_BASE(MENU)             (MENU[0].Id)#define GET_MENU_ID(MENU)               ((BYTE) ((DWORD)(MENU[0].pSubMenu)))#define GET_SUB_MENU(MENU, NUM)         (MENU[2+NUM].pSubMenu)                  extern  BYTE    DATA    _bOSDLang;BYTE __bMENUParent[MENU_LEVEL]; // record the parent menu of each levelBYTE __bMENUSelect[MENU_LEVEL]; // record the current selection of each levelBYTE __bMENUDisplayStart[MENU_LEVEL]; // record which item is displayed first in the display areaBYTE __bMENUStatus[MENU_LEVEL]; //bit 0: scroll-up mark appears, bit 1: scroll-down mark appearsBYTE    __bCurrentMenuId; // replace _pCurrentMenuWORD    __wMENUCurrentItemId, __wMENUPrevItemId;BYTE    __bMENUCurrentLevel;#ifdef SUPPORT_MENU_CURSOR_STAY_AT_VALUE_AFTER_ENTERWORD    __wMENUItemIdAfterEnter; // Brian1.08a, the Item ID after key Enter#endifPMENU_STRUCT *_pMenuIndex; // Brian1.20// Brian1.20, in fact, it's a pointer to code menu structure// must declare it as code pointer, otherwise there will be conversion problem with keil C 6.12 and 7.02MENU_STRUCT  *_pTempMenu;MENU_STRUCT  *_pTempMenu2, *_pTempMenu3; // Brian1.08a, Brian1.20WORD    _wMENUTemp;BYTE    _bMENUTemp, _bMENUTemp2;// this variable is used to keep the New Password for verification// could be used for other purpose as long as it is not in the "Change Password" process.WORD	_wPasswordTemp; BYTE bStatus; // used in InputPassword, ChangePassword, InputLanguageCode function//***************************************************************************//Note: Don't translate the following strings.//CoCo1.20, reduce code size.// alan test WORD aSETUPPassword[] = {4, CHAR_X, CHAR_X, CHAR_X, CHAR_X};//Alex1.07a for Input dialog display in PSCAN MODE#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)#define DIALOG_INPUT_PSCAN_X1		(104+MENU_GLOBAL_OFFSET_X)#define DIALOG_INPUT_PSCAN_Y1		120#define DIALOG_INPUT_PSCAN_X2		(504+MENU_GLOBAL_OFFSET_X) #define DIALOG_INPUT_PSCAN_Y2		340#define DIALOG_INPUT_PSCAN_X_OFFSET	 30#define DIALOG_INPUT_PSCAN_Y_OFFSET	 30BYTE __bOSDPromptMode;BYTE    OSDPROMPT_ProcessKey(BYTE bKey);#define OSD_PSCAN_PROMPT_WAIT_TIME 10 //5BYTE    __bOSDPromptWaitTime; // = OSD_PSCAN_PROMPT_WAIT_TIME; To count How many time leftBYTE    __bOSDPromptPreKey;DWORD    __dwOSDPromptInitialTime; // = OSD_PSCAN_PROMPT_Intial_TIME; To count How many time left//AlanWORD             _wMENUString[9];PARM_FRAME       _MENU_FrameAttr;PARM_DRAW_STRING _MENU_StrAttr;PARM_RECT        _MENU_RectAttr;PARM_BUTTON      _MENU_BtnAttr;extern BYTE    __bOSDPromptMode; // = FALSE; put in _INITIAL_Variables_PowerONvoid    OSDPROMPT_Trigger(void);void    OSDSETUP_ScreenVideoOutputPscanDlg(void);BYTE    OSDSETUP_InputPscan(BYTE bKey);extern BYTE    OSDPROMPT_ProcessKey(BYTE bKey);extern  BYTE CC_DoKeyAction(BYTE bKey);#endif //#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)void OSDMENU_DrawItem(BYTE bBase, BYTE bItem, BYTE bColor);void OSDMENU_DisplaySubMenu(BYTE bItem, BYTE bLevel);void OSDMENU_DisplayAVSysMenu(BYTE bLevel); // sepcial for AV system menuvoid _DisplayIconMenu(void);void _DisplayMenu(BYTE bItem, BYTE bLevel);void OSDMENU_ClearMenu(void);void OSDSETUP_ShowDescriptionText(void);BYTE _GetMenuItemPosition(BYTE bItemId); // Brian1.08void _DisplayCurrentSettings(void); // Brian1.08avoid _ClearCurrentSettings(void); // Brian1.08avoid _InitRect(PURECT pRect, WORD wLeft, WORD wTop, WORD wRight, WORD wBottom);BYTE _PScan_Callback(void);void _OSDMENU_DrawPassword(BYTE bPasswordType); //CoCo1.20, reduce code size.void _OSDMENU_DrawFrame(BYTE bStyle); //CoCo1.20, reduce code size.void _OSDMENU_SetMenuStringColor(void); //CoCo1.20, reduce code size.void _OSDMENU_SetDlgStringColor(void); //CoCo1.20, reduce code size.void _OSDMENU_FillRect(WORD wLeft, WORD wTop, WORD wRight, WORD wBottom); //CoCo1.20, reduce code size.void _OSDMENU_DrawString(void); //CoCo1.20, reduce code size.void _OSDMENU_DrawDynamicString(WORD *pwString); //CoCo1.20, reduce code size.void OSDMENU_Initial(void){    // don't forget to initialize the Enable array accroding to the number of item    _bEnableLanguage[0] = 0xFF; //0xFE;    _bEnableScreen[0] = 0xFF;    _bEnableAudio[0] = 0xFF;    _bEnableCustom[0] = 0xFF;    _bEnableMain[0] = 0xFF;    __bMENUCurrentLevel = 0;    for (_bMENUTemp=0; _bMENUTemp<MENU_LEVEL; _bMENUTemp++)    {        __bMENUParent[_bMENUTemp] = 0;        __bMENUSelect[_bMENUTemp] = 0;        __bMENUDisplayStart[_bMENUTemp] = 0;        __bMENUStatus[_bMENUTemp] = 0;    }        __bMENUCurrentLevel = 0; //1;    __bMENUSelect[__bMENUCurrentLevel] = 0; //3;    __bMENUDisplayStart[__bMENUCurrentLevel] = 0;    _pMenuIndex = _SetupMenuIndex;    // Brian1.22, Kevin1.11a modified    if (__dwSupportFeature & SUPPORT_FEATURE_PROLOGIC)       __bCurrentMenuId = SETUP_MENU_MAIN_WITH_PROLOGIC;    else       __bCurrentMenuId = SETUP_MENU_MAIN ;//SETUP_MENU_LANGUAGE;    __wMENUCurrentItemId = SETUP_MAIN_LANGUAGE;}void OSDMENU_SetMenuPalEntry(void){    // set entries used by Menu, Setup, Equalizer and AV System    GDI_ChangePALEntry(OSDMENU_ENTRY_MENU_COLOR_BRIGHT, OSDMENU_VALUE_MENU_COLOR_BRIGHT, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_MENU_COLOR_DARK, OSDMENU_VALUE_MENU_COLOR_DARK, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_MENU_COLOR_CENTER, OSDMENU_VALUE_MENU_COLOR_CENTER, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_TEXT_COLOR_NORMAL, OSDMENU_VALUE_TEXT_COLOR_NORMAL, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_TEXT_COLOR_DISABLE, OSDMENU_VALUE_TEXT_COLOR_DISABLE, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_DESC_TEXT_COLOR, OSDMENU_VALUE_DESC_TEXT_COLOR, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_ITEM_COLOR_SELECT, OSDMENU_VALUE_ITEM_COLOR_SELECT, FALSE);    GDI_ChangePALEntry(OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT, OSDMENU_VALUE_ITEM_COLOR_HIGHLIGHT, FALSE);/*    // also set Setup color    GDI_ChangePALEntry(OSDSETUP_ENTRY_CENTER_COLOR_BG, OSDSETUP_VALUE_MAIN_COLOR_BG, TRUE);    GDI_ChangePALEntry(OSDSETUP_ENTRY_HELP_COLOR_BG, OSDSETUP_VALUE_HELP_COLOR_BG, TRUE);    GDI_ChangePALEntry(OSDSETUP_ENTRY_ICON_COLOR_BG, OSDSETUP_VALUE_ICON_COLOR_BG, TRUE);    GDI_ChangePALEntry(OSDSETUP_ENTRY_SPEAKER_HIGHLIGHT, OSDSETUP_VALUE_SPEAKER_HIGHLIGHT, FALSE);#ifdef REMOVE_SETUP_ICON    GDI_ChangePALEntry(OSDSETUP_ENTRY_ICON_COLOR_ORANGE, OSDSETUP_VALUE_ICON_ORANGE, FALSE);	    GDI_ChangePALEntry(OSDSETUP_ENTRY_ICON_COLOR_BLUE, OSDSETUP_VALUE_ICON_BLUE, FALSE); //Brian1.24a //Iris0312	    GDI_ChangePALEntry(OSDSETUP_ENTRY_ICON_COLOR_RED, OSDSETUP_VALUE_ICON_RED, FALSE); //Brian1.24a //Iris0318		GDI_ChangePALEntry(OSDSETUP_ENTRY_ICON_COLOR_GREEN, OSDSETUP_VALUE_ICON_GREEN, FALSE); //Brian1.24a //Iris0318#endif*/    GDI_WaitPaletteComplete();}void OSDMENU_DisplayTheMenu(void){    OSDMENU_DisplayMenu(__bCurrentMenuId, __bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);    if (__bMENUCurrentLevel == 0)    {        OSDSETUP_ShowDescriptionText();        // Brian1.08a, display menu settings when menu cursor in on Icon menu #ifdef SUPPORT_MENU_SETTINGS_DISPLAY        _DisplayCurrentSettings();#endif    }    OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);}void OSDMENU_RedrawAll(void){    BYTE bBackupLevel;    MENU_STRUCT  *_pBackupMenu;    bBackupLevel = __bMENUCurrentLevel;    _pBackupMenu = _pTempMenu;    OSDSETUP_RedrawMenu();    _pTempMenu = _pMenuIndex[0];    __bMENUCurrentLevel = 0;    _DisplayIconMenu();    if (0 < bBackupLevel)    {        OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel],                         __bMENUSelect[__bMENUCurrentLevel],                         OSDMENU_ENTRY_ITEM_COLOR_SELECT);        if (2 == bBackupLevel)        {            _pTempMenu = GET_SUB_MENU(_pTempMenu,                                      __bMENUSelect[__bMENUCurrentLevel]);            __bMENUCurrentLevel = 1;            _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL;            OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel],                             __bMENUSelect[__bMENUCurrentLevel],                             OSDMENU_ENTRY_ITEM_COLOR_SELECT);        }    }    __bMENUCurrentLevel = bBackupLevel;    _pTempMenu = _pBackupMenu;}

⌨️ 快捷键说明

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