📄 mapp_uimenu2.c
字号:
#define MAPP_UI_MENU2_C
/******************************************************************************
Copyright (c) 2006 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: MApp_uiMenu.c
[Date]: 2006/09/04
[Comment]:
OSD relative subroutines.
[Reversion History]:
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Datatype.h"
#include "Drvgop.h"
#include "msKeypad.h"
#include "msAPI_GOP.h"
#include "msAPI_IR.h"
#include "msAPI_Timer.h"
#include "msAPI_OSD.h"
#include "MApp_GlobalVar.h"
#include "MApp_UiMenu.h"
#include "MApp_UiMenuDef.h"
#include "MApp_UiMenuFunc.h"
#include "MApp_UiMenuTbl.h"
#include "MApp_PCMode.h"
#include "MApp_UiMenuDraw.h"
void MApp_UiMenu_DisplayShortCut(EN_IDLE_WINDOW_TYPE shortcut)
{
MApp_UiMenu2_ClearOSD(0, 0, NEWUI_R_GWIN_WIDTH, NEWUI_R_GWIN_HEIGHT);
MApp_UiMenu2_ShowOSDGWin(GWIN_MAIN_MENU);
if(shortcut==IDLE_CHANNEL_BANNER_WIN)
{
// JJ u16TempProgIndex = MApp_ChanProc_GetCurProgIndex();
enCurIdleWin=IDLE_CHANNEL_BANNER_WIN;
g_u8PrevMenuPageIndex = g_u8MenuPageIndex;
//g_u8MenuPageIndex = MENU_CHANNEL_BANNER;
g_u8MenuMainItemIndex = 0;
MApp_UiMenu_DrawMenuPage();
}
/*else if(shortcut==IDLE_INPUT_SOURCE_WIN)
{
enCurIdleWin=IDLE_INPUT_SOURCE_WIN;
g_u8PrevMenuPageIndex = g_u8MenuPageIndex;
//g_u8MenuPageIndex = MENU_CHANNEL_BANNER;
//MApp_UiMenu_DrawMenuPage();
g_u8MenuPageIndex = MENU_INPUT_SOURCE;
g_u8MenuMainItemIndex = UI_INPUT_SOURCE_TYPE;
MApp_UiMenu_DrawMenuPage();
}*/
else if(shortcut==IDLE_TENKEY_NUMBER_WIN)
{
enCurIdleWin=IDLE_TENKEY_NUMBER_WIN;
g_u8PrevMenuPageIndex = g_u8MenuPageIndex;
//g_u8MenuPageIndex = MENU_CHANNEL_NUMBER_MSGBOX;
g_u8MenuMainItemIndex = 0;
MApp_UiMenu_DrawMenuPage();
}
}
void MApp_UiMenu_HideShortcut()
{
enCurIdleWin=IDLE_NONEOSD_WIN;
MApp_UiMenu2_HideOSDGwin(GWIN_MUTE);
MApp_UiMenu2_ClearOSD(0, 0, NEWUI_R_GWIN_WIDTH, NEWUI_R_GWIN_HEIGHT);
}
/*
void MApp_UiMenu_Show_Warning_Message_Dialog(U8 warningMenuPageIndex)
{
U8 tmpMenuPageIndex=g_u8MenuPageIndex;
U8 tmpMenuItemIndex=g_u8MenuMainItemIndex;
g_u8MenuPageIndex=warningMenuPageIndex;
g_u8MenuMainItemIndex=0;
g_u8MenuPageIndex=tmpMenuPageIndex;
g_u8MenuMainItemIndex=tmpMenuItemIndex;
}
*/
OSDClrBtn MApp_UiMenu2_GetOSDClrBtn(U8 OSDGwinID)
{
OSDClrBtn clrBtn;
switch(OSDGwinID)
{
case GWIN_MAIN_MENU:
case GWIN_TEXT_MENU:
/*
clrBtn.x = GWIN_PREPEND_X + (PANEL_WIDTH-800)/2;
clrBtn.y = GWIN_PREPEND_Y + (PANEL_HEIGHT-480)/2;
clrBtn.width = 800; //PANEL_WIDTH; //NEWUI_MAIN_MENU_GWIN_WIDTH;
clrBtn.height = 480; //PANEL_HEIGHT; //NEWUI_MAIN_MENU_GWIN_HEIGHT;
*/
// Addy 20070928
clrBtn.x = GWIN_PREPEND_X;
clrBtn.y = GWIN_PREPEND_Y;
clrBtn.width = PANEL_WIDTH; //NEWUI_MAIN_MENU_GWIN_WIDTH;
clrBtn.height = PANEL_HEIGHT; //NEWUI_MAIN_MENU_GWIN_HEIGHT;
break;
// Addy 20071031
case GWIN_MUTE:
clrBtn.x = GWIN_PREPEND_X;
clrBtn.y = GWIN_PREPEND_Y;
clrBtn.width = 0; //NEWUI_MAIN_MENU_GWIN_WIDTH;
clrBtn.height = 0; //NEWUI_MAIN_MENU_GWIN_HEIGHT;
/*
clrBtn.x = GWIN_PREPEND_X + NEWUI_MUTE_GWIN_STARTX;
clrBtn.y = GWIN_PREPEND_Y + NEWUI_MUTE_GWIN_STARTY;
clrBtn.width = NEWUI_MUTE_GWIN_WIDTH;
clrBtn.height = NEWUI_MUTE_GWIN_HEIGHT;
*/
break;
case GWIN_LOGO:
/*
clrBtn.x = GWIN_PREPEND_X + (PANEL_WIDTH-800)/2;
clrBtn.y = GWIN_PREPEND_Y + (PANEL_HEIGHT-480)/2;
clrBtn.width = 800; //PANEL_WIDTH;
clrBtn.height = 480; //PANEL_HEIGHT;
*/
// Addy 20070928
clrBtn.x = GWIN_PREPEND_X;
clrBtn.y = GWIN_PREPEND_Y;
clrBtn.width = PANEL_WIDTH;
clrBtn.height = PANEL_HEIGHT;
break;
}
if ((clrBtn.width==0)||(clrBtn.width&0x0003))/* width must be multi-of-4 */
{
clrBtn.width &= 0xFFFC;
clrBtn.width += 4;
}
return clrBtn;
}
void MApp_UiMenu2_GWIN_Enable(U8 winId, BOOLEAN bEnable)
{
if (bEnable==TRUE)
{
msAPI_GOP_GWIN_Enable(winId,bEnable);
}
else
{
msAPI_GOP_GWIN_Enable(winId,bEnable);
}
}
void MApp_UiMenu2_ResetOSDGWin()
{
memset(u8OSDGWinTbl, GWIN_ID_INVALID, MAXNUM_GWIN);
}
void MApp_UiMenu2_InitGWin()
{
MApp_UiMenu2_ResetOSDGWin();
MApp_UiMenu2_CreateOSDGWin(GWIN_MAIN_MENU);
msAPI_GOP_GWIN_SetFMT0TransClr(COLOR_UI_TRANSPARENT);
MApp_UiMenu2_HideOSDGwin(GWIN_MAIN_MENU);
/*
MApp_UiMenu2_CreateOSDGWin(GWIN_MUTE);
msAPI_GOP_GWIN_SetFMT0TransClr(COLOR_UI_TRANSPARENT);
MApp_UiMenu2_HideOSDGwin(GWIN_MUTE);
*/
msAPI_GOP_GWIN_SwitchGOP(1);
MApp_UiMenu2_CreateOSDGWin(GWIN_TEXT_MENU);
msAPI_GOP_GWIN_SetFMT0TransClr(COLOR_UI_TRANSPARENT);
msAPI_GOP_GWIN_Enable(u8OSDGWinTbl[GWIN_TEXT_MENU],TRUE);
msAPI_GOP_GWIN_SwitchGOP(0);
MApp_UiMenu2_SwitchToGwin(GWIN_MAIN_MENU);
}
void MApp_UiMenu2_SwitchToGwin(U8 OSDGwinID)
{
if(u8OSDGWinTbl[OSDGwinID]!=GWIN_ID_INVALID)
{
OSDClrBtn clrBtn;
clrBtn=MApp_UiMenu2_GetOSDClrBtn(OSDGwinID);
msAPI_GOP_GWIN_Switch2Gwin(u8OSDGWinTbl[OSDGwinID]);
msAPI_GOP_GWIN_SetWinPosition(u8OSDGWinTbl[OSDGwinID], clrBtn.x, clrBtn.y);
msAPI_OSD_SetClipWindow(0, 0, clrBtn.width, clrBtn.height);
}
}
void MApp_UiMenu2_CreateOSDGWin(U8 OSDGwinID)
{
if(u8OSDGWinTbl[OSDGwinID]==GWIN_ID_INVALID)
{
OSDClrBtn clrBtn;
switch(OSDGwinID)
{
case GWIN_MAIN_MENU:
u8OSDGWinTbl[OSDGwinID] = OSDGWIN_3;
break;
case GWIN_MUTE:
u8OSDGWinTbl[OSDGwinID] = OSDGWIN_1;
break;
case GWIN_LOGO:
u8OSDGWinTbl[OSDGwinID] = OSDGWIN_3;
break;
case GWIN_TEXT_MENU:
u8OSDGWinTbl[OSDGwinID] = OSDGWIN_7;
break;
}
clrBtn=MApp_UiMenu2_GetOSDClrBtn(OSDGwinID);
msAPI_GOP_GWIN_CreateFB(OSDGwinID, clrBtn.width, clrBtn.height, DEFAULT_FB_FMT);
msAPI_GOP_GWIN_MapFB2Win(OSDGwinID, u8OSDGWinTbl[OSDGwinID]);
msAPI_GOP_GWIN_Switch2Gwin(u8OSDGWinTbl[OSDGwinID]);
msAPI_GOP_GWIN_SetWinPosition(u8OSDGWinTbl[OSDGwinID], clrBtn.x, clrBtn.y);
msAPI_OSD_SetClipWindow(0, 0, clrBtn.width, clrBtn.height);
msAPI_GOP_GWIN_SetBlending(u8OSDGWinTbl[OSDGwinID], TRUE, NEWUI_GWIN_BLENDING);
MApp_UiMenu2_ClearOSD(0, 0, clrBtn.width, clrBtn.height);
}
}
void MApp_UiMenu2_DeleteOSDGWin(U8 OSDGwinID)
{
if(u8OSDGWinTbl[OSDGwinID]!=GWIN_ID_INVALID)
{
msAPI_GOP_GWIN_ReleaseWin(u8OSDGWinTbl[OSDGwinID]);
msAPI_GOP_GWIN_DestroyFB(OSDGwinID);
u8OSDGWinTbl[OSDGwinID]=GWIN_ID_INVALID;/*INVALID_WIN_ID*/;
}
}
void MApp_UiMenu2_DeleteALLOSDWindow(void)
{
U8 window_index;
for(window_index=GWIN_MAIN_MENU;window_index<MAXNUM_GWIN;window_index++)
{
MApp_UiMenu2_DeleteOSDGWin(window_index);
}
}
void MApp_UiMenu2_ShowOSDGWin(U8 OSDGwinID)
{
if(u8OSDGWinTbl[OSDGwinID]!=GWIN_ID_INVALID)
{
MApp_UiMenu2_SwitchToGwin(OSDGwinID);
MApp_UiMenu2_GWIN_Enable(u8OSDGWinTbl[OSDGwinID],TRUE);
}
}
void MApp_UiMenu2_HideOSDGwin(U8 OSDGwinID)
{
if(u8OSDGWinTbl[OSDGwinID]!=GWIN_ID_INVALID)
{
MApp_UiMenu2_GWIN_Enable(u8OSDGWinTbl[OSDGwinID],FALSE);
}
}
void MApp_UiMenu2_DestroyAllGWin(void)
{
U8 idxGWin = 0;
for(idxGWin=0; idxGWin<MAX_GWIN_SUPPORT; idxGWin++)
{
MApp_UiMenu2_GWIN_Enable(idxGWin, FALSE);
msAPI_GOP_GWIN_DeleteWin(idxGWin);
}
}
void MApp_UiMenu2_ClearOSD(U16 x,U16 y, U16 Width, U16 Height)
{
OSDClrBtn clrBtn;
clrBtn.x = x;
clrBtn.y = y;
clrBtn.width = Width;
clrBtn.height = Height;
clrBtn.u8Gradient = CONSTANT_COLOR;
clrBtn.fHighLight = FALSE;
clrBtn.b_clr = COLOR_UI_TRANSPARENT;
g_u16GroupXPos = 0;
g_u16GroupYPos = 0;
msAPI_OSD_DrawBlock(&clrBtn);
}
/*void MApp_UiMenu2_DrawBlackOSD(U16 x,U16 y, U16 Width, U16 Height)
{
OSDClrBtn clrBtn;
clrBtn.x = x;
clrBtn.y = y;
clrBtn.width = Width;
clrBtn.height = Height;
clrBtn.u8Gradient = CONSTANT_COLOR;
clrBtn.fHighLight = FALSE;
clrBtn.b_clr = COLOR_UI_BLACK;
g_u16GroupXPos = 0;
g_u16GroupYPos = 0;
msAPI_OSD_DrawBlock(&clrBtn);
}*/
void MApp_UiMenu2_ShowChannelInfoGwin(EN_IDLE_WINDOW_TYPE shortcut)
{
MApp_UiMenu2_ClearOSD(0, 0, NEWUI_R_GWIN_WIDTH, NEWUI_R_GWIN_HEIGHT);
MApp_UiMenu2_ShowOSDGWin(GWIN_MAIN_MENU);
/*if(shortcut==IDLE_INPUT_SOURCE_WIN)
{
enCurIdleWin = IDLE_INPUT_SOURCE_WIN;
g_u8MenuPageIndex = MENU_INPUT_SOURCE;
g_u8MenuMainItemIndex = UI_INPUT_SOURCE_TYPE;
MApp_UiMenu_DrawMenuPage();
}
else */if (shortcut == IDLE_CHANNEL_LIST_WIN)
{
enCurIdleWin = IDLE_CHANNEL_LIST_WIN;
//g_u8MenuPageIndex = MENU_CHANNEL_LIST;
MApp_UiMenu_DrawMenuPage();
}
else if(shortcut==IDLE_CHANNEL_FAVORITE_WIN)
{
enCurIdleWin=IDLE_CHANNEL_FAVORITE_WIN;
MApp_UiMenu_DrawMenuPage();
}
}
void MApp_UiMenu2_ShowWarningMessageGwin(U8 warningMenuPageIndex)
{
U8 tmpMenuPageIndex=g_u8MenuPageIndex;
MApp_UiMenu2_HideOSDGwin(GWIN_MAIN_MENU);
MApp_UiMenu2_HideOSDGwin(GWIN_MUTE);
g_u8MsgPageIndex=warningMenuPageIndex;
g_u8MenuPageIndex=warningMenuPageIndex;
MApp_UiMenu_DrawMenuPage();
msAPI_Timer_Delayms(3000);
MApp_UiMenu2_SwitchToGwin(GWIN_MAIN_MENU);
msAPI_ClearIRFIFO();
msKeypad_ClearBuffer();
g_u8MenuPageIndex=tmpMenuPageIndex;
}
/*
void MApp_UiMenu2_CopyRegion(U8 CopyGwinID, U8 PasteGwinID)
{
if((u8OSDGWinTbl[CopyGwinID]!=GWIN_ID_INVALID)&&(u8OSDGWinTbl[PasteGwinID]!=GWIN_ID_INVALID))
{
MSAPI_OSDRegion CopyGwin;
MSAPI_OSDRegion PasteGwin;
OSDClrBtn CopyclrBtn;
OSDClrBtn PasteclrBtn;
CopyclrBtn=MApp_UiMenu2_GetOSDClrBtn(CopyGwinID);
PasteclrBtn=MApp_UiMenu2_GetOSDClrBtn(PasteGwinID);
PasteGwin.fbID=PasteGwinID;
PasteGwin.x=0;
PasteGwin.y=0;
PasteGwin.width=PasteclrBtn.width;
PasteGwin.height=PasteclrBtn.height;
CopyGwin.fbID=CopyGwinID;
CopyGwin.x=(PasteclrBtn.x-CopyclrBtn.x);
CopyGwin.y=(PasteclrBtn.y-CopyclrBtn.y);
CopyGwin.width=PasteclrBtn.width;
CopyGwin.height=PasteclrBtn.height;
msAPI_OSD_CopyRegion(&CopyGwin, &PasteGwin);
}
}
*/
//============================================================================
void MApp_UiMenu2_DisplayMenuSlideShow(MenuItemActionType menuAction)
{
U8 u8MainFbID,u8SubFbID1,u8SubFbID2;
U16 draw_w;
MSAPI_OSDRegion MainFB,SubFB1,SubFB2;
U16 i=0;
U16 interval=8;
u8MainFbID=msAPI_GOP_GWIN_GetFBfromGWIN(msAPI_GOP_GWIN_GetCurrentWinId());
//To generating a framebuffer to save the mainmenu pic
u8SubFbID2=msAPI_GOP_GWIN_GetFreeFBID();
msAPI_GOP_GWIN_CreateFB(u8SubFbID2, NEWUI_MAIN_MENU_WIDTH, NEWUI_MAIN_MENU_HEIGHT, DEFAULT_FB_FMT);
MainFB.fbID=u8MainFbID;
SubFB2.fbID=u8SubFbID2;
MainFB.y=0;
SubFB2.y=0;
MainFB.x=0;
SubFB2.x=0;
MainFB.height=NEWUI_MAIN_MENU_HEIGHT;
SubFB2.height=NEWUI_MAIN_MENU_HEIGHT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -