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

📄 vremote.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
      //vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bTmp-9]); //[runma] mark off for mickey
      // change color for it...
      // to be done honnow...
      _wStartX = _rFocusItem[_rVremote.bPosition].wStartX;
      _wStartY = _rFocusItem[_rVremote.bPosition].wStartY;
      _wEndX = _rFocusItem[_rVremote.bPosition].wStartX+42; //EndX-8;
      _wEndY = _rFocusItem[_rVremote.bPosition].wStartY+42; //EndY-8;
      vChgColRep(WB_VRMT_ITEM, 4, 3); //[runma] mickey, 2->4
      #else
      vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BARSEL);
      vSetMsgCol4(WB_VRMT_ITEM, 0, 11, 8, 3);
      vOsdPasteMsgXY(_wStartX+20,VRMT_MENU_ITEM1_STARTY+(bTmp-9)*(LINE_HEIGHT+2),WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bTmp-9]);//OSD_NO_DISAPPEAR);
      vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);    
      #endif
    } 
    else  // draw
    {
      #ifdef VRMT_NOMENU_ITEM
      //vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bTmp-9]); //[runma] mark off for mickey.
      #else
      vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BAR);
      vOsdPasteMsgXY(_wStartX+20,VRMT_MENU_ITEM1_STARTY+(bTmp-9)*(LINE_HEIGHT+2),WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bTmp-9]);//,OSD_NO_DISAPPEAR);
      #endif
    }
  }

}

/*********************************************************************
  Function    : void vVremoteInit(BYTE fgInit) large
  Description : Initial function when go into v-remote state.
  Parameter :
  Return    :
**********************************************************************/
void vVremoteInit(BYTE fgInit) large 
{ 

  //Popup the vremote whiteboard
  
  /* chnage OSD mode to user mode */
  vOsdShowWb(OSD_WB_USER);

  /* set menu type */
  if (fgIsDvdPlay())
  {
    _rVremote.bMenuType = VRMT_MENU_TYPE_DVD;
  }   
  else if (fgIsIsoPlay())
  {
    vSetExitInputState();
    return;
  } 
  else 
  {
    _rVremote.bMenuType = VRMT_MENU_TYPE_NONE;
  }


  //create vremote whiteboard
#ifdef VRMT_WB_USE_TRUECOLOR
  vCreateWB(WB_VRMT_ITEM, TRUE);
  vSetWBTcColor(WB_VRMT_ITEM);
  //set blend level for background color.
  vSetTcPal(WB_VRMT_ITEM,1,BLEND_2,TRUECOLOR_DARKGRAY);
//  vSetTcPal(WB_VRMT_ITEM,9,BLEND_1,TRUECOLOR_GRAY);
#else
  vCreateWB(WB_VRMT_ITEM, FALSE);

  //set blend level for background color.
  vSetPal(WB_VRMT_ITEM,1,BLEND_1,COLOR_DARK_GRAY);
  vSetPal(WB_VRMT_ITEM,9,BLEND_1,COLOR_GRAY);
#endif
  // set idx 0 as transparent color.
  vSetTransEn(WB_VRMT_ITEM,0);
  //set message color of v-remote 
  vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
  
  //draw whole background ??
  //vDrawBorderWB(WB_VRMT_ITEM, 0);


  _rVremote.bState = VRMT_STATE_INIT;
  _rVremote.bPosition = VRMT_INIT_POSI; 
  vVRMTRedrawAll();
  
  //enable vremote whiteboard
  vEnableWB(WB_VRMT_ITEM);

  return; 
}

/*********************************************************************
  Function    : void vVRMTSelectFocus(BYTE bPosition)
  Description : In Vremote, highlight one item.
  Parameter : bPosition is the position id within virtual remote controller.
  Return    :
**********************************************************************/
void vVRMTSelectFocus(BYTE bPosition) large
{
  WORD wMsgIdx;
  BYTE bTmp;

  switch(bPosition)
  {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
      _wStartX = _rFocusItem[bPosition].wStartX+8;
      _wStartY = _rFocusItem[bPosition].wStartY+8;
      _wEndX = _rFocusItem[bPosition].wEndX-8;
      _wEndY = _rFocusItem[bPosition].wEndY-8;

#ifdef VRMT_WB_USE_TRUECOLOR
      //vRectangle(WB_VRMT_ITEM,2,11,FALSE,0);  //for test

      vChgColRep(WB_VRMT_ITEM, 15, 3);
#else 
      _wStartX += VREMOTE_START_X;
      _wEndX += VREMOTE_START_X;
      _wStartY += VREMOTE_START_Y;
      _wEndY += VREMOTE_START_Y;

      vChgColSetCol(WB_VRMT_ITEM, 3 , BLEND_3, COLOR_ORANGE);
      vChgColRng(WB_VRMT_ITEM);
      vChgColEn();
#endif
      break;
    case 9:
    case 10:
    case 11:
      _wStartX = _rFocusItem[bPosition].wStartX;
      _wStartY = _rFocusItem[bPosition].wStartY;
      #ifdef VRMT_NOMENU_ITEM
      //vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bPosition-9]); //should be removed
      // should hili bPosition TBD ... runma
      _wStartX = _rFocusItem[bPosition].wStartX;//+8;
      _wStartY = _rFocusItem[bPosition].wStartY;//+8;
      _wEndX = _rFocusItem[bPosition].wStartX+42;//EndX-8;
      _wEndY = _rFocusItem[bPosition].wStartY+42;//EndY-8;
      vChgColRep(WB_VRMT_ITEM, 15, 3);   //[runma] 2->4
      #else
      vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BARSEL);
      vSetMsgCol4(WB_VRMT_ITEM, 0, 11, 8, 3);
      vOsdPasteMsgXY(_wStartX+20,_wStartY,WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bPosition-9]);//,OSD_NO_DISAPPEAR);
      vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
      #endif

      break;
    default:
      break;
  }
      
}

/*********************************************************************
  Function    : void vVRMTUnselectFocus(BYTE bPosition)
  Description : In Vremote, disable one item's highlight.
  Parameter : bPosition is the position in the vremote.
  Return    :
**********************************************************************/
void vVRMTUnselectFocus(BYTE bPosition)
{  
  WORD wMsgIdx;
  switch(bPosition)
  {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
      #ifdef VRMT_WB_USE_TRUECOLOR
      _wStartX = _rFocusItem[bPosition].wStartX+8; //test
      _wStartY = _rFocusItem[bPosition].wStartY+8; //test
      _wEndX = _rFocusItem[bPosition].wEndX-8;     //test
      _wEndY = _rFocusItem[bPosition].wEndY-8;     //test 
      //vRectangle(WB_VRMT_ITEM,2,7,FALSE,0);        //test
      vChgColRep(WB_VRMT_ITEM, 3, 15); // disable the hi light button
      #else
      vChgColDis();      
      #endif
      break;
    case 9:
    case 10:
    case 11:
      _wStartX = _rFocusItem[bPosition].wStartX;
      _wStartY = _rFocusItem[bPosition].wStartY;
      #ifdef VRMT_NOMENU_ITEM
      //vPasteBmp(WB_VRMT_ITEM,_bVrmtMenuItemBmpId[bPosition-9]); //should be removed.
      // un-hili bPosition..TBD. by vChgColRep...runma
      _wStartX = _rFocusItem[bPosition].wStartX;//+8;
      _wStartY = _rFocusItem[bPosition].wStartY;//+8;
      _wEndX = _rFocusItem[bPosition].wStartX+42; //EndX-8;
      _wEndY = _rFocusItem[bPosition].wStartY+42; //EndY-8;
      vChgColRep(WB_VRMT_ITEM, 3, 15);  //[runma] 2->4 for mickey.
      
      #else
      vPasteBmp(WB_VRMT_ITEM,BMP_VRMT_BAR);
      vSetMsgCol4(WB_VRMT_ITEM, 0, 9, 8, 3);
      vOsdPasteMsgXY(_wStartX+20,_wStartY,WB_VRMT_ITEM,_wVrmtMenuItemMsgId[bPosition-9]);//,OSD_NO_DISAPPEAR);
      #endif
      break;
    default:
      break;
  }
}

/*********************************************************************
  Function    : BOOL fgVremoteState(void) large 
  Description : State machine when vremote input state.
  Parameter :
  Return    :
**********************************************************************/
BOOL fgVremoteState(void) large 
{ 
  BYTE bPbcState;
  BOOL fgRet = TRUE;

  switch (_bIRKey)
  {
    case IR_UP:
      if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bUpLink)
      {
        if((_rVremote.bMenuType != VRMT_MENU_TYPE_NONE)||(_rFocusItem[_rVremote.bPosition].bUpLink!=11))
        {
          vVRMTUnselectFocus(_rVremote.bPosition);
          _rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bUpLink;
          vVRMTSelectFocus(_rVremote.bPosition);
        }
      }
      break;

    case IR_LEFT:
      if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bLeftLink)
      {
        vVRMTUnselectFocus(_rVremote.bPosition);
        _rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bLeftLink;
        vVRMTSelectFocus(_rVremote.bPosition);
      }
      break;
    case IR_RIGHT:
      if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bRightLink)
      {
        vVRMTUnselectFocus(_rVremote.bPosition);
        _rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bRightLink;
        vVRMTSelectFocus(_rVremote.bPosition);
      }
      break;

    case IR_DOWN:
      if(_rVremote.bPosition != _rFocusItem[_rVremote.bPosition].bDownLink)
      {
        vVRMTUnselectFocus(_rVremote.bPosition);
        _rVremote.bPosition = _rFocusItem[_rVremote.bPosition].bDownLink;
        vVRMTSelectFocus(_rVremote.bPosition);
      }
      break;

    case IR_ENTER:
    //case IR_PLAY: 
    case IR_PLAY_ENTER:    
      _bIRKey = _rFocusItem[_rVremote.bPosition].bIRKey;
      fgRet = FALSE;
      if(_bIRKey==IR_GOTO)
      {
        vSetExitInputState();
      } 
      else if(_bIRKey==IR_PAUSE_STEP)
      {
        bPbcState = bSharedInfo(SI_PBC_STATE);
        if ((bPbcState == SV_PAUSE) || (bPbcState == SV_STEP))
        {
          _bIRKey = IR_STEP;
        }
        else
        {
          _bIRKey = IR_PAUSE;
        }
      } 
      else if(_bIRKey==IR_ANGLE)
      {
      #if 0 //honnow...
        vSendUopCmd(UOP_NEXT_AGL, 0, 0, 0);
        if (!fgIsAngleShow())
        {
          vIrSetTimeOut(IR_TIMEOUT_ANGLE);
          _rVremote.bState = VRMT_STATE_WAIT_TIMEOUT;
        }
        fgRet = TRUE;  
      #endif
      } 
       else if(_bIRKey==IR_PLAY_RESUME)
      {
        if(bSharedInfo(SI_HLI_STATE)==SV_ON)
          _bIRKey = IR_ENTER;
      }
      break;
    case IR_PLAY: 
    case IR_FF:
    case IR_FR:
    case IR_SF:
    case IR_SR:
    case IR_NEXT:
    case IR_PREV:
    case IR_PAUSE:
    case IR_PAUSE_STEP:
    case IR_DISPLAY:
    case IR_OSD_LANGUAGE:  
    case IR_AUDIO:
    case IR_SUB_TITLE:
    case IR_ANGLE:
    case IR_NEXT_DLIST:
    case IR_PREV_DLIST:
    //case IR_TIME_OUT:
      fgRet = FALSE;
      break;
    case IR_TIME_OUT:
      #if 0 //honnow...
      if(_rVremote.bState == VRMT_STATE_WAIT_TIMEOUT)
      {
         _rVremote.bState = VRMT_STATE_NORMAL;
         if (!fgIsAngleShow())
            vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
      }
      else
      {
        fgRet = FALSE;      
      }
      #else
        fgRet = FALSE;
      #endif
      break;
//    case IR_ANGLE:
//      vSendUopCmd(UOP_NEXT_AGL, 0, 0, 0);
//      vIrSetTimeOut(IR_TIMEOUT_ANGLE);
//      break;
    case IR_VRMT:
      vSetExitInputState();
      break;
    default:
      fgRet = FALSE;
      vSetExitInputState();
      break;
  }
  return (fgRet); 
}

/*********************************************************************
  Function    : void vVremoteExit(void) large 
  Description : Exit function when exiting vremote input mode.
  Parameter :
  Return    :
**********************************************************************/
void vVremoteExit(void) large 
{ 
  vDeleteWB(WB_VRMT_ITEM);
  /* restore OSD mode */
  vOsdShowWb(OSD_WB_RESTORE);
  #if 0
  if(_rVremote.bState == VRMT_STATE_WAIT_TIMEOUT)
  {
    _rVremote.bState = VRMT_STATE_NORMAL;
    if (!fgIsAngleShow())
      vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0); 
    
  }
  #endif
  return; 


  
}


#else
//dummy functions
void vVremoteInit(BYTE fgInit) large { return; }
BOOL fgVremoteState(void) large { return (FALSE); }
void vVremoteExit(void) large { return; }


//void vVremoteHandleUpdate(BYTE bItem, BYTE bVal) large { return; }
//void vVremoteUsrPbcChange(void) large { return; }

#endif

⌨️ 快捷键说明

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