📄 osddg.c
字号:
#include "winav.h"#include "ctkav.h"#include "infofilter.h"#include "osd.h"#include "gdi.h"
#include "fontindex.h" //++CoCo2.37P
#include "osdnd.h"#include "cc.h"#include "setup.h"#include "hal.h"#include "Digest.h"#include "OSDDG.h"#include "osddlg.h"
#include "notransl.h"
#ifndef NO_DIGEST#define OSDDG_MAIN_FILE
#endif
//#include "string.lan"
#include "OSDString\\strextrn.h"#ifndef NO_DIGEST//***************************************************************************//Note: The following strings will be translated. And they may be moved to other string file./*WORD aDGDlgBtnTrackDigest[] = {12, CHAR_T, CHAR_r, CHAR_a, CHAR_c, CHAR_k, CHAR_SPACE, CHAR_D, CHAR_i, CHAR_g, CHAR_e, CHAR_s, CHAR_t};WORD aDGDlgBtnDiscInterval[] = {13, CHAR_D, CHAR_i, CHAR_s, CHAR_c, CHAR_SPACE, CHAR_I, CHAR_n, CHAR_t, CHAR_e, CHAR_r, CHAR_v, CHAR_a, CHAR_l};WORD aDGPage[] = {5, CHAR_P, CHAR_a, CHAR_g, CHAR_e, CHAR_COLON};WORD aDGTitleTrackDigest[] = {12, CHAR_T, CHAR_r, CHAR_a, CHAR_c, CHAR_k, CHAR_SPACE, CHAR_D, CHAR_i, CHAR_g, CHAR_e, CHAR_s, CHAR_t};WORD aDGTitleDiscInterval[] = {13, CHAR_D, CHAR_i, CHAR_s, CHAR_c, CHAR_SPACE, CHAR_I, CHAR_n, CHAR_t, CHAR_e, CHAR_r, CHAR_v, CHAR_a, CHAR_l};WORD aDGInfoTrack[] = {6, CHAR_T, CHAR_r, CHAR_a, CHAR_c, CHAR_k, CHAR_COLON};WORD aDGBtnMenu[] = {4, CHAR_M, CHAR_e, CHAR_n, CHAR_u};WORD aDGBtnExit[] = {4, CHAR_E, CHAR_x, CHAR_i, CHAR_t};*///***************************************************************************//***************************************************************************//Note: Define the palettes for the skinDWORD _dwOSDDGDlgBackgroundColor[] = {OSDDG_PALETTE_COLOR_DLG_BACKGROUND_1, OSDDG_PALETTE_COLOR_DLG_BACKGROUND_2, OSDDG_PALETTE_COLOR_DLG_BACKGROUND_3, OSDDG_PALETTE_COLOR_DLG_BACKGROUND_4};DWORD _dwOSDDGDlgHighlightButtonColor[] = {OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_BACKGROUND_1, OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_BACKGROUND_2, OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_BACKGROUND_3, OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_BACKGROUND_4};DWORD _dwOSDDGDlgEnableButtonColor[] = {OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_BACKGROUND_1, OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_BACKGROUND_2, OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_BACKGROUND_3, OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_BACKGROUND_4};DWORD _dwOSDDGDlgFrameColor[] = {OSDDG_PALETTE_COLOR_DLG_FRAME_1, OSDDG_PALETTE_COLOR_DLG_FRAME_2, OSDDG_PALETTE_COLOR_DLG_FRAME_3, OSDDG_PALETTE_COLOR_DLG_FRAME_4};DWORD _dwOSDDGInfoRegionColor[] = {OSDDG_PALETTE_COLOR_INFO_REGION_BACKGROUND_1, OSDDG_PALETTE_COLOR_INFO_REGION_BACKGROUND_2, OSDDG_PALETTE_COLOR_INFO_REGION_BACKGROUND_3, OSDDG_PALETTE_COLOR_INFO_REGION_BACKGROUND_4};DWORD _dwOSDDGEnableButtonColor[] = {OSDDG_PALETTE_COLOR_ENABLE_BUTTON_BACKGROUND_1, OSDDG_PALETTE_COLOR_ENABLE_BUTTON_BACKGROUND_2, OSDDG_PALETTE_COLOR_ENABLE_BUTTON_BACKGROUND_3, OSDDG_PALETTE_COLOR_ENABLE_BUTTON_BACKGROUND_4};DWORD _dwOSDDGHighlightButtonColor[] = {OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_BACKGROUND_1, OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_BACKGROUND_2, OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_BACKGROUND_3, OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_BACKGROUND_4};//***************************************************************************//Declare global variables.PARM_RECT _OSDDGRect;PARM_DRAW_STRING _OSDDGStringAttr;PARM_DRAW_BITMAP _OSDDGDrawBitmap;PARM_DRAW_STRING _OSDDGStringAttr;PARM_FRAME _OSDDGFrame;BYTE _bOSDDGTemp, _bOSDDGTemp1;WORD _wOSDDGTemp, _wOSDDGTemp1;BYTE _bDGTuneFrame_H, _bDGTuneFrame_V;extern DLG_ATTRIBUTE _OSDDLGAttribute;extern WORD _wOSDDLGButtonWidth;extern PARM_RECT _OSDDLGRect;extern PARM_DRAW_STRING _OSDDLGStringAttr;extern BYTE __bTVType;//The following variable will be declared in Digest UI and will be removed in the future.extern DIGESTUI __DigestUIAttr;//***************************************************************************// Function : OSDDG_Update// Abstract : This function will be called by Digest module to draw UI.// Arguments : bMessage: the message.// Return : none.// Side Effect : none.// Notes : //***************************************************************************void OSDDG_Update(BYTE bMessage){ switch (bMessage) { case OSDDG_MSG_DLG_INITIAL: _OSDDG_DLG_Initial(FALSE); break; case OSDDG_MSG_CLEAR_HIGHLIGHT: _OSDDG_UpdateHighlight(OSDDG_CLEAR); break; case OSDDG_MSG_UPDATE_HIGHLIGHT: _OSDDG_UpdateHighlight(OSDDG_DRAW); break; case OSDDG_MSG_DLG_EXIT: _OSDDG_DLG_UpdateBackground(OSDDG_CLEAR); break; case OSDDG_MSG_INITIAL: _OSDDG_Initial(); break; case OSDDG_MSG_DRAW_NORMAL_FRAME: _OSDDG_DrawFrame(__DigestUIAttr.bCurFrameNo, OSDDG_FRAME_NORMAL); break; case OSDDG_MSG_DRAW_SELECT_FRAME: _OSDDG_DrawFrame(__DigestUIAttr.bCurFrameNo, OSDDG_FRAME_SELECT); break; case OSDDG_MSG_UPDATE_FRAME_TIME: _OSDDG_UpdteFrameInfo(__DigestUIAttr.bCurFrameNo); break; case OSDDG_MSG_CLEAR_ALL_FRAME: _OSDDG_ClearFrameRegion(); break; case OSDDG_MSG_UPDATE_UI_INFO: _OSDDG_UpdateInfoRegion(); break; case OSDDG_MSG_CHANGE_TV_MODE: _OSDDG_ChangeTVMode(); break; case OSDDG_MSG_EXIT: _OSDDG_Exit(); break; case OSDDG_MSG_CHANGE_PAGE: _OSDDG_ClearPageInfoRegion(); _OSDDG_DisplayPageInfo(); break; default: break; }}//***************************************************************************// Function : OSDDG_Recover// Abstract : This function will be called by OSD to do Digest UI's recovery// Arguments : bRecoverRegion: // Return : none.// Side Effect : none.// Notes : //***************************************************************************BYTE OSDDG_Recover(BYTE bRecoverRegion){ switch (bRecoverRegion) { case OSD_RECOVER_UPPER_REGION: //Recover the "page info". if (__DigestUIAttr.bDigestMode != DIGEST_MODE_DIALOG) { //Draw the title _OSDDG_DisplayTitle(); _OSDDG_DisplayPageInfo(); } break; case OSD_RECOVER_BOTTOM_REGION: if (__DigestUIAttr.bDigestMode != DIGEST_MODE_DIALOG) { //Recover the help string in the info. region. _OSDDG_UpdateInfoRegion(); } break; case OSD_RECOVER_ALL: //Recover all Digest UI. _OSDDG_RecoverAll(); break; default: return FALSE; } return TRUE;}//***************************************************************************// Function : OSDDG_ClearRegion// Abstract : This function will be called by OSD to clear the normal upper // : region or normal bottom region if the UI accepts the normal display// : message is displayed in its UI.// Arguments : bClearRegion: OSD_ND_UPPER_RIGHT_REGION/OSD_ND_BOTTOM_REGION.// Return : none.// Side Effect : none.// Notes : //***************************************************************************void OSDDG_ClearRegion(BYTE bClearRegion){ switch (bClearRegion) { case OSD_ND_UPPER_RIGHT_REGION: //Clear the "page info." region. _OSDDG_ClearPageInfoRegion(); break; case OSD_ND_BOTTOM_REGION: _OSDDG_DrawInfoRegion(); break; default: return; }}//***************************************************************************// Function : _OSDDG_InitializeGDI// Abstract : This function will initialize GDI-relative attributes like palette.// Arguments : none.// Return : none.// Side Effect : none.// Notes : //***************************************************************************void _OSDDG_InitializeGDI(void){ _bOSDDGTemp = __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN; GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_BACKGROUND, _dwOSDDGDlgBackgroundColor[_bOSDDGTemp], TRUE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_ENABLE_BUTTON_BACKGROUND, _dwOSDDGDlgEnableButtonColor[_bOSDDGTemp], FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_HIGHLIGHT_BUTTON_BACKGROUND, _dwOSDDGDlgHighlightButtonColor[_bOSDDGTemp], FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_FRAME, _dwOSDDGDlgFrameColor[_bOSDDGTemp], FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_INFO_REGION_BACKGROUND, _dwOSDDGInfoRegionColor[_bOSDDGTemp], FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_ENABLE_BUTTON_BACKGROUND, _dwOSDDGEnableButtonColor[_bOSDDGTemp], FALSE); //Will be removed if use Bitmap button GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BACKGROUND, _dwOSDDGHighlightButtonColor[_bOSDDGTemp], FALSE); //Will be removed if use Bitmap button //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_BACKGROUND, OSDDG_PALETTE_COLOR_DLG_BACKGROUND, TRUE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_TITLE_STRING, OSDDG_PALETTE_COLOR_TITLE_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_HELP_STRING, OSDDG_PALETTE_COLOR_HELP_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_ENABLE_BUTTON_STRING, OSDDG_PALETTE_COLOR_ENABLE_BUTTON_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_STRING, OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT, OSDDG_PALETTE_COLOR_NORMAL_FRAME_BRIGHT, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_NORMAL_FRAME_DARK, OSDDG_PALETTE_COLOR_NORMAL_FRAME_DARK, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_SELECT_FRAME_BRIGHT, OSDDG_PALETTE_COLOR_SELECT_FRAME_BRIGHT, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_SELECT_FRAME_DARK, OSDDG_PALETTE_COLOR_SELECT_FRAME_DARK, FALSE); //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_ENABLE_BUTTON_BACKGROUND, OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_BACKGROUND, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_DISABLE_BUTTON_BACKGROUND, OSDDG_PALETTE_COLOR_DLG_DISABLE_BUTTON_BACKGROUND, FALSE); //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_HIGHLIGHT_BUTTON_BACKGROUND, OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_BACKGROUND, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_ENABLE_BUTTON_STRING, OSDDG_PALETTE_COLOR_DLG_ENABLE_BUTTON_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_DISABLE_BUTTON_STRING, OSDDG_PALETTE_COLOR_DLG_DISABLE_BUTTON_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_HIGHLIGHT_BUTTON_STRING, OSDDG_PALETTE_COLOR_DLG_HIGHLIGHT_BUTTON_STRING, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_FRAME_INFO_BACKGROUND, OSDDG_PALETTE_COLOR_FRAME_INFO_BACKGROUND, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_FRAME_INFO_STRING, OSDDG_PALETTE_COLOR_FRAME_INFO_STRING, FALSE); //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_INFO_REGION_BACKGROUND, OSDDG_PALETTE_COLOR_INFO_REGION_BACKGROUND, FALSE); //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_ENABLE_BUTTON_BACKGROUND, OSDDG_PALETTE_COLOR_ENABLE_BUTTON_BACKGROUND, FALSE); //Will be removed if use Bitmap button //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BACKGROUND, OSDDG_PALETTE_COLOR_HIGHLIGHT_BUTTON_BACKGROUND, FALSE); //Will be removed if use Bitmap button GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_BUTTON_FRAME, OSDDG_PALETTE_COLOR_BUTTON_FRAME, FALSE); //GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_DLG_FRAME, OSDDG_PALETTE_COLOR_DLG_FRAME, FALSE); GDI_ChangePALEntry(OSDDG_PALETTE_ENTRY_INFO_REGION_FRAME, OSDDG_PALETTE_COLOR_INFO_REGION_FRAME, FALSE); //CoCo0.95 GDI_WaitPaletteComplete(); GDI_ActivateRegion(0); //open GDI}//***************************************************************************// Function : _OSDDG_DLG_Initial// Abstract : This function will initialize Digest's dialog when the dialog is// : pop up.// Arguments : bRecover: TRUE==>This function is called by the recovery routine.// : FALSE==>This function is called by the normal message. // Return : none.// Side Effect : none.// Notes : //***************************************************************************void _OSDDG_DLG_Initial(BYTE bRecover){ //Clear the background GDI_ClearRegion(0); //clear region 0 //Tell OSD that Digest UI exits. if (!bRecover) { OSD_ChangeUI(OSD_UI_DIGEST, OSD_ENTER_UI); //Initialize the attribute of the dialog box. _OSDDLGAttribute.wWidth = _OSDDG_DLG_GetMaxButtonWidth()+(WORD)((OSDDG_DLG_BACKGROUND_BUTTON_DISTANCE_H<<1)); _OSDDLGAttribute.wHeight = _OSDDG_DLG_GetDlgHeight(); _OSDDLGAttribute.wStartH = ((OSD_PLANE_WIDTH - _OSDDLGAttribute.wWidth) >> 1); _OSDDLGAttribute.wStartV = ((OSD_PLANE_HEIGHT - _OSDDLGAttribute.wHeight) >> 1); } _OSDDG_InitializeGDI(); //Draw the dialog's background. _OSDDG_DLG_UpdateBackground(OSDDG_DRAW); //Draw the buttons. for (_bOSDDGTemp = 0; _bOSDDGTemp < OSDDG_DLG_BUTTON_NUM; _bOSDDGTemp++) { if (_bOSDDGTemp == __DigestUIAttr.bButtonIndex) //The button is highlighted. { _OSDDG_DLG_DrawButton(_bOSDDGTemp, TRUE); } else { _OSDDG_DLG_DrawButton(_bOSDDGTemp, FALSE); } }}//*********************************************************************************************************// Function : _OSDDG_DLG_GetMaxButtonWidth// Abstract : This function will fill the string of the button.// Arguments : none.// Return : Max. button width.// Side Effect : none.// Notes : //*********************************************************************************************************WORD _OSDDG_DLG_GetMaxButtonWidth(void){ BYTE bIndex = 0; _wOSDDGTemp1 = 0; //Use it and max. width. for (bIndex = 0; bIndex < OSDDG_DLG_BUTTON_NUM; bIndex++) { //Fill string _OSDDG_DLG_FillButtonString(bIndex); _wOSDDGTemp = GDI_GetStringWidth_909(__pOSDUTLOutputString); if (_wOSDDGTemp1 < _wOSDDGTemp) _wOSDDGTemp1 = _wOSDDGTemp; } _wOSDDGTemp1 += (OSDDG_DLG_BUTTON_TEXT_DISTANCE_H << 1); return _wOSDDGTemp1;}//*********************************************************************************************************// Function : _OSDDG_DLG_FillButtonString// Abstract : This function will fill the string of the button.// Arguments : bIndex: the index of the button.// Return : none.// Side Effect : none.// Notes : //*********************************************************************************************************void _OSDDG_DLG_FillButtonString(BYTE bIndex){ switch (bIndex) { case OSDDG_DLG_BUTTON_TRACK_DIGEST: __pOSDUTLOutputString = aDGDlgBtnTrackDigest; break; case OSDDG_DLG_BUTTON_BUTTON_DISC_INTERVAL: __pOSDUTLOutputString = aDGDlgBtnDiscInterval; break; default: break; }}//*********************************************************************************************************// Function : _OSDDG_DLG_GetDlgHeight// Abstract : This function will calculate the height of the dialog box.// Arguments : none.// Return : The height of the dialog box.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -