www.pudn.com > 6027_HD65.rar > flhelp.c


/**********************************************************************/ 
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/ 
/***************                                       ****************/ 
/***************  $Modtime:: 04/04/28 10:58a   $       ****************/ 
/***************  $Revision:: 4                $       ****************/ 
/***************                                       ****************/ 
/***************   Description : File List             ****************/ 
/***************                 JPEG Help Module      ****************/ 
/***************                                       ****************/ 
/***************       Company : MediaTek Inc.         ****************/ 
/***************    Programmer : Jacob Lin             ****************/ 
/**********************************************************************/ 
 
#define __FLHELP_C_ 
 
#include "../general.h" 
#include "../../procdef.h" 
#include "flcomm.h" 
 
#pragma NOAREGS 
 
#if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC) && defined(JPEG_DDISC_DIGEST_ENABLE) ) 
 
/* 
extern void vJpegHelpMenuShow(BOOL fgRedraw) large; 
void vJpegHelpMenuClose(void) large; 
extern void vDrawSetupBorder(void) large; 
extern void vFsMenuHpMenuInit(void); 
extern void vSetSetWbCol(BYTE bType); 
*/ 
 
//extern void vSetWbCol(void); 
 
static void vFlHpShowBorder(void) large; 
static void vFlHpShowPage(BOOL fgRedraw) large; 
 
static xdata BYTE _bFlHpMode; 
 
#define FLHP_INIT      0 
#define FLHP_PAGE_1    1 
#define FLHP_PAGE_2    2 
#define FLHP_PAGE_END  FLHP_PAGE_2 
 
#define FLHP_BTN_X      365 
#define FLHP_BTN_Y       0 
#define FLHP_TITLE_X    90 
#define FLHP_TITLE_Y    20 // 40 
#define FLHP_STARTX          20 
#define FLHP_STARTY         70 // 100 
#define FLHP_MSG_H           30 
#define FLHP_INTRO_STARTX   FLHP_STARTX +160 
#define FLHP_INTRO_STARTY   FLHP_STARTY 
 
#define FLHP_COLOR_BLACK  2 
#define FLHP_COLOR_WHITE  3 
 
#define FLHP_CTITLE_X    190 
 
typedef struct { 
  WORD wKeyMsg; 
  WORD wFuncMsg; 
} structFlHpMsg; 
 
static code structFlHpMsg _rFlHpPage1Msg[] = { 
#ifdef FSMENU_STYLE_1 
  { OSD_MSG_JPG_RESUME,  OSD_MSG_JPG_PROGRAM_FUNC }, 
#else 
  { OSD_MSG_JPG_PROGRAM, OSD_MSG_JPG_PROGRAM_FUNC }, 
#endif 
  { OSD_MSG_JPG_STOP,    OSD_MSG_JPG_MENU_FUNC }, 
  { OSD_MSG_JPG_NEXT,    OSD_MSG_JPG_NEXT_FUNC }, 
  { OSD_MSG_JPG_PREV,    OSD_MSG_JPG_PREV_FUNC }, 
  { OSD_MSG_JPG_PLAY,    OSD_MSG_JPG_PLAY_FUNC }, 
  { OSD_MSG_JPG_INVERT,  OSD_MSG_JPG_INVERT_FUNC }, 
  { OSD_MSG_JPG_MIRROR,  OSD_MSG_JPG_MIRROR_FUNC} 
}; 
 
static code structFlHpMsg _rFlHpPage2Msg[] = { 
  { OSD_MSG_JPG_ROTATE_CCLKW, OSD_MSG_JPG_ROTATE_CCLKW_FUNC }, 
  { OSD_MSG_JPG_ROTATE_CLKW,  OSD_MSG_JPG_ROTATE_CLKW_FUNC }, 
  { OSD_MSG_JPG_ZOOM,         OSD_MSG_JPG_ZOOM_FUNC }, 
  { OSD_MSG_JPG_ZOOMIN,       OSD_MSG_JPG_ZOOMIN_FUNC }, 
  { OSD_MSG_JPG_ZOOMOUT,      OSD_MSG_JPG_ZOOMOUT_FUNC }, 
  { OSD_MSG_JPG_PAN,          OSD_MSG_JPG_PAN_FUNC } 
}; 
 
#define FLHP_PAGE1_N     TBL_SIZE(_rFlHpPage1Msg) 
#define FLHP_PAGE2_N     TBL_SIZE(_rFlHpPage2Msg) 
 
 
 
static void vFlHpShowBorder(void) large 
{ 
  // Horizontal Line 
  vOsdShowLineXY(WB_SETUP_HEAD, FLHP_COLOR_BLACK, 2, 0, (SETUP_HEAD_H - 2), SETUP_HEAD_W, (SETUP_HEAD_H - 2)); 
  vOsdShowLineXY(WB_SETUP_ITEM, FLHP_COLOR_WHITE, 2, 0, 0, SETUP_ITEM_W, 0); 
  vOsdShowLineXY(WB_SETUP_MSG,  FLHP_COLOR_WHITE, 2, 0, (SETUP_MSG_H - 2), SETUP_MSG_W, (SETUP_MSG_H - 2)); 
  vOsdShowLineXY(WB_SETUP_MSG, FLHP_COLOR_BLACK, 2, 0, (SETUP_MSG_H - 4), SETUP_MSG_W, (SETUP_MSG_H - 4)); 
 
  // Vertical Line 
  vOsdShowLineXY(WB_SETUP_ITEM, FLHP_COLOR_BLACK, 3, 0, 0, 0, SETUP_ITEM_H - 1); 
  vOsdShowLineXY(WB_SETUP_ITEM, FLHP_COLOR_WHITE, 3, 2, 0, 2, SETUP_ITEM_H - 1); 
  vOsdShowLineXY(WB_SETUP_MSG, FLHP_COLOR_BLACK, 3, 0, 0, 0, SETUP_MSG_H - 1); 
  vOsdShowLineXY(WB_SETUP_MSG, FLHP_COLOR_WHITE, 3, 2, 0, 2, SETUP_MSG_H - 1); 
  vOsdShowLineXY(WB_SETUP_ITEM, FLHP_COLOR_WHITE, 3, (SETUP_ITEM_W - 3), 0, (SETUP_ITEM_W - 3), SETUP_ITEM_H - 1); 
  vOsdShowLineXY(WB_SETUP_ITEM, FLHP_COLOR_BLACK, 3, (SETUP_ITEM_W - 6), 0, (SETUP_ITEM_W - 6), SETUP_ITEM_H - 1); 
  vOsdShowLineXY(WB_SETUP_MSG, FLHP_COLOR_WHITE, 3, (SETUP_MSG_W - 3), 0, (SETUP_MSG_W - 3), SETUP_MSG_H - 1); 
  vOsdShowLineXY(WB_SETUP_MSG, FLHP_COLOR_BLACK, 3, (SETUP_MSG_W - 6), 0, (SETUP_MSG_W - 6), SETUP_MSG_H - 4); 
} 
 
 
static void vFlHpShowPage(BOOL fgRedraw) large 
{ 
  BYTE bTemp; 
 
  if(!fgRedraw) 
  { 
    if(_bFlHpMode >= FLHP_PAGE_END) 
    { 
      _bFlHpMode = FLHP_INIT; 
      //vJpegHelpMenuClose(); 
      // - resume jpg decoding 
      vSendUopCmd(UOP_PAUSE, 0x01, 0x02, 0x00);  
      return; 
    } 
    else 
    { 
      if(_bFlHpMode == FLHP_INIT) 
      { 
        // - pause jpg decoding 
        vSendUopCmd(UOP_PAUSE, 0x01, 0x01, 0x00); 
      } 
      _bFlHpMode ++; 
    } 
  } 
 
#if !defined(USE_SMALL_SPTM) && defined (SPTM_SUPPORT) 
  if (fgIsEqShow()) 
  { 
    vDisableWB(WB_NORMAL_SPTM); 
  } 
#endif 
 
  vChgColDis(); 
  vHideHL(HL_1); 
  vHideHL(HL_2); 
 
#ifndef FONT_2_PIXEL 
  // hardware outline 
  vSetOL(WB_SETUP_HEAD, OL_A_1_PIX, 0, 0); 
  vSetOL(WB_SETUP_MSG, OL_A_1_PIX, 0, 0); 
#endif 
 
  vFlHpShowBorder(); 
 
  vOsdClearPosXY(8, 2, FL_HELP_WB, (SETUP_ITEM_W - 16), (SETUP_ITEM_H - 3)); 
   
  switch (_bFlHpMode) 
  { 
    case FLHP_PAGE_1: 
      vSetMsgCol4(FL_HELP_WB, 0, 0, 2, 3); 
      _wStartX = (bEepromReadByte(OSD_LANG_POSITION) == EV_OSD_CHINESE) ? FLHP_CTITLE_X : FLHP_TITLE_X; 
      _wStartY = FLHP_TITLE_Y; 
      vOsdMsgPaste(FL_HELP_WB, OSD_MSG_JPG_HELP_TITLE); 
 
      vSetMsgCol4(FL_HELP_WB, 0, 0, 2, 3); 
      _wStartX = FLHP_STARTX; 
      _wStartY = FLHP_STARTY; 
      for (bTemp=0; bTemp < FLHP_PAGE1_N; bTemp++) 
      { 
        vOsdMsgPaste(FL_HELP_WB, _rFlHpPage1Msg[bTemp].wKeyMsg); 
        _wStartY += FLHP_MSG_H; 
      } 
 
      vSetMsgCol4(WB_SETUP_ITEM, 0, 0, 0, 2); 
      _wStartX = FLHP_INTRO_STARTX; 
      _wStartY = FLHP_INTRO_STARTY; 
      for (bTemp=0; bTemp < FLHP_PAGE1_N; bTemp++) 
      { 
        vOsdMsgPaste(FL_HELP_WB, _rFlHpPage1Msg[bTemp].wFuncMsg); 
        _wStartY += FLHP_MSG_H; 
      } 
 
      vSetMsgCol4(WB_SETUP_MSG , 0, 1, 1, 3); 
      _wStartX = FLHP_BTN_X; 
      _wStartY = FLHP_BTN_Y; 
      vOsdClearPos(WB_SETUP_MSG, 120, 30); 
      vOsdMsgPaste(WB_SETUP_MSG, OSD_MSG_JPG_CONTINUE); 
      break; 
 
    case FLHP_PAGE_2: 
      vSetMsgCol4(FL_HELP_WB, 0, 0, 2, 3); 
      _wStartX = (bEepromReadByte(OSD_LANG_POSITION) == EV_OSD_CHINESE) ? FLHP_CTITLE_X : FLHP_TITLE_X; 
      _wStartY = FLHP_TITLE_Y; 
      vOsdMsgPaste(FL_HELP_WB, OSD_MSG_JPG_HELP_TITLE); 
 
      vSetMsgCol4(FL_HELP_WB, 0, 0, 2, 3); 
      _wStartX = FLHP_STARTX; 
      _wStartY = FLHP_STARTY; 
      for (bTemp=0; bTemp < FLHP_PAGE2_N; bTemp++) 
      { 
        if (bTemp == 3) 
          _wStartX = FLHP_STARTX + 20; 
        vOsdMsgPaste(FL_HELP_WB, _rFlHpPage2Msg[bTemp].wKeyMsg); 
        _wStartY += FLHP_MSG_H; 
      } 
 
      vSetMsgCol4(WB_SETUP_ITEM, 0, 0, 0, 2); 
      _wStartX = FLHP_INTRO_STARTX; 
      _wStartY = FLHP_INTRO_STARTY; 
      for (bTemp=0; bTemp < FLHP_PAGE2_N; bTemp++) 
      { 
        vOsdMsgPaste(FL_HELP_WB, _rFlHpPage2Msg[bTemp].wFuncMsg); 
        _wStartY += FLHP_MSG_H; 
      } 
 
      vSetMsgCol4(WB_SETUP_MSG , 0, 1, 1, 3); 
      _wStartX = FLHP_BTN_X; 
      _wStartY = FLHP_BTN_Y; 
      vOsdClearPos(WB_SETUP_MSG, 140, 30); 
      vOsdMsgPaste(WB_SETUP_MSG, OSD_MSG_JPG_EXIT_MENU); 
      break; 
  } 
} 
 
void vFlHpEnter(WORD wItem) large 
{ 
  BYTE  i; 
 
  _bFlHpMode = FLHP_INIT; 
 
  for(i=0; i < WB_INDEX_MAX; i++) 
  { 
    vDisableWB(i); 
  } 
 
#ifdef SETUP_MENU_TRUECOLOR 
  vCreateWB(WB_SETUP_ITEM, TRUE); 
  vCreateWB(WB_SETUP_MSG, TRUE); 
  vSetTcPal(WB_SETUP_ITEM, 0, BLEND_2, TRUECOLOR_GREENBLUE);  
  vSetTcPal(WB_SETUP_ITEM, 1, BLEND_2, TRUECOLOR_GREENBLUE); 
  vSetTcPal(WB_SETUP_ITEM, 2, BLEND_2, TRUECOLOR_BLACK); 
  vSetTcPal(WB_SETUP_ITEM, 3, BLEND_2, TRUECOLOR_WHITE); 
  vSetTcPal(WB_SETUP_MSG,  0, BLEND_2, TRUECOLOR_GREENBLUE); 
  vSetTcPal(WB_SETUP_MSG,  1, BLEND_2, TRUECOLOR_ORANGE);  
  vSetTcPal(WB_SETUP_MSG,  2, BLEND_2, TRUECOLOR_BLACK); 
  vSetTcPal(WB_SETUP_MSG,  3, BLEND_2, TRUECOLOR_WHITE); 
#else 
  vCreateWB(WB_SETUP_ITEM, FALSE); 
  vCreateWB(WB_SETUP_MSG, FALSE); 
  vSetPal(WB_SETUP_ITEM, 0, BLEND_2, COLOR_GREENBLUE); 
  vSetPal(WB_SETUP_ITEM, 1, BLEND_2, COLOR_GREENBLUE); 
  vSetPal(WB_SETUP_ITEM, 2, BLEND_2, COLOR_BLACK); 
  vSetPal(WB_SETUP_ITEM, 3, BLEND_2, COLOR_WHITE); 
  vSetPal(WB_SETUP_MSG,  0, BLEND_2, COLOR_GREENBLUE); 
  vSetPal(WB_SETUP_MSG,  1, BLEND_2, COLOR_ORANGE);  
  vSetPal(WB_SETUP_MSG,  2, BLEND_2, COLOR_BLACK); 
  vSetPal(WB_SETUP_MSG,  3, BLEND_2, COLOR_WHITE); 
#endif 
 
  vEnableWB(WB_SETUP_MSG); 
  vEnableWB(WB_SETUP_ITEM); 
  vClearWB(WB_SETUP_MSG); 
  vClearWB(WB_SETUP_ITEM); 
/*   
#ifdef SETUP_MENU_TRUECOLOR 
  vSetWBTcMode(WB_SETUP_ITEM); 
  vSetWBTcMode(WB_SETUP_MSG); 
#endif 
*/ 
  vFlHpShowPage(FALSE); 
} 
 
WORD wFlHpLeave(BOOL bSuicide) large 
{ 
  vDeleteWB(WB_SETUP_ITEM); 
  vDeleteWB(WB_SETUP_MSG); 
   
  vSendUopCmd(UOP_PAUSE, 0x01, 0x02, 0x00); 
 
  vChgColDis(); 
  vHideHL(HL_1); 
  vHideHL(HL_2); 
 
#if !defined(USE_SMALL_SPTM) && defined (SPTM_SUPPORT) 
  if (fgIsEqShow()) 
  { 
    vEnableWB(WB_NORMAL_SPTM); 
  } 
#endif 
 
  return ((WORD)bSharedInfo(SI_JPG_ITEM_IDX_HI)*256 + bSharedInfo(SI_JPG_ITEM_IDX_LO)); 
} 
 
void vFlHpRecover(BOOL bDrawAll) large 
{ 
  BYTE  i; 
 
  if (bDrawAll) 
  { 
    for(i=0; i < WB_INDEX_MAX; i++) 
    { 
      vDisableWB(i); 
    } 
 
    vEnableWB(WB_SETUP_MSG); 
    vEnableWB(WB_SETUP_ITEM); 
    vClearWB(WB_SETUP_MSG); 
    vClearWB(WB_SETUP_ITEM); 
   
  #ifdef SETUP_MENU_TRUECOLOR 
    vSetWBTcMode(WB_SETUP_ITEM);   
    vSetWBTcMode(WB_SETUP_MSG); 
  #endif 
  } 
 
  vFlHpShowPage(TRUE); 
} 
 
BOOL fgFlOnHp(void) large 
{ 
  BOOL fgIsGrabbed = FALSE; 
 
  switch (_bIRKey) 
  { 
    case IR_ENTER: 
    case IR_PLAY: 
    case IR_PLAY_ENTER: 
    case IR_PLAY_PAUSE: 
      if(_bFlHpMode == FLHP_PAGE_END) 
      { 
        //vFlHpShowPage(FALSE); 
        //vOsdShowWb(OSD_WB_RESTORE); 
        vFlSetCmdTarget(FL_CMD_TARGET_JPEG); 
      } 
      else 
      { 
        vFlHpShowPage(FALSE); 
      } 
      fgIsGrabbed = TRUE; 
      break; 
    default: 
      fgIsGrabbed = TRUE; 
      break; 
  } 
 
  return fgIsGrabbed; 
} 
 
#endif  // #if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC))