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

📄 mapp_uimenu2.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -