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

📄 rip.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TOTAL,
          RIP_LINE1_STARTX + 15, RIP_LINE3_STARTY + 70,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_PROGRESS,
          RIP_LINE1_STARTX + 70, RIP_LINE3_STARTY + 70,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
            RIP_LINE3_STARTY + 100, RIP_LINE3_STARTY + 124);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLUE, 1, RIP_COL_AMETHYST);
  ///////////////////////////////////////////////////

  vSetRipXY(RIP_1D4_X - 50, RIP_1D4_X + 50,
            RIP_LINE3_STARTY + 131, RIP_LINE3_STARTY + 165);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLUE, 1, RIP_BG_HILI_COL);
  vShowMsg(WB_RIP_MENU, OSD_MSG_CANCEL,
          RIP_1D4_X - 32, RIP_LINE3_STARTY + 133,
          RIP_BG_HILI_COL, RIP_COL_BLUE);
  i = 1;
  while(fgReadSelectedTrackFlag(i) == FALSE){i++;}

  // kilocmd start rip
  vSendUopCmd(UOP_DIGITAL_BTN, i, stct_rip.fgHighSpeed, TRUE); //TRUE
  stct_rip.bRipState = RIP_RIP_START_STATE;
  _bRipEntry = ENTRY_CANCEL;
}


void vExitRipMenu(void)large
{
  BYTE i;

  vSetSharedInfo(SI_CD_RIP_UI_ON, SV_OFF);
  vDisableWB(WB_RIP_MENU);
  vSetKeyState(KEY_NONISO);
  vOsdSetSt(OSD_ST_BURST);
  vDeleteWB(WB_RIP_MENU);
  vOsdSetSt(OSD_ST_NML);
  _rOsdStateCtx.fgRipShow = FALSE;
  vOsdSetMemBlk(OSD_MEM_BLK_STATIC, OSD_MEM_DEFAULT);
  stct_rip.bRipState = RIP_CD_FORMAT;
  _bRipEntry = 0;
  stct_rip.fgHighSpeed = FALSE;
  stct_rip.bRipBitrate = 0;
  _bNewRipTracknum = 0;
  stct_rip.fgRipID3 = 0;
  stct_rip.bRipPageNum = 0;

  // if(_fgSvr == EV_ON)
  //fgEepromWriteByte(SCR_SAVER_POSITION, EV_ON);
  for(i = 0; i <= 13; i++)
    _bpRipTrkNum[i] = 0;
  // if((stct_rip.bRipState!= RIP_RIP_EJECT_STATE)&&(stct_rip.bRipState!= RIP_RIP_POWER_STATE))
  {
    stct_rip.bRipState = RIP_CD_FORMAT;
    vOsdShowWb(OSD_WB_RESTORE);
  }
  vOsdPosClear(OSD_POS_PLAY_INFO);
  vOsdPosClear(OSD_POS_TIME_LEFT);
  vSetSharedInfo(SI_CD_RIP_DEVICE, SV_DEVID_CDVDROM);
  vSetSharedInfo(SI_DEVICE_ID, SV_DEVID_CDVDROM); 
  vSetSharedInfo(SI_CD_RIP_READY, SV_OFF);
  vSetSharedInfo(SI_CD_RIP_STATUS, SV_CD_RIP_NONE);
  //vSetSharedInfo(SI_CD_RIP_OVERWRITE, SV_OFF);
}


void vISShowHook(void)large
{
  WORD wtmpy, wtmptime;
  BYTE bpStr[3] = {2, '0', '0'};
  BYTE bpTimeStr[6] = {5, '0', '0', ':', '0', '0'};

  if(fgReadSelectedTrackFlag(_bNewRipTracknum) == FALSE)
  {
    vWriteSelectedTrackFlag(_bNewRipTracknum);
    _bpRipTrkNum[0]++;
    wtmpy = RIP_LINE3_STARTY + ( _bRipEntry - ENTRY_TRACK1) * 35 + 13;
    if(wtmpy % 2!= 0)
      wtmpy -= 1;
    vOsdPasteBmpXY(RIP_CENTER_X + 30, wtmpy, WB_RIP_MENU, BMP_HOOK);

    vSetRipXY(RIP_CENTER_X + 30, RIP_ENTRY_RIGHT_X - 2, wtmpy - 7, wtmpy + 22);
    vChgColRep(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_BG_HILI_COL);
    vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
  }
  else
  {
    vWriteSelectedTrackFlag(_bNewRipTracknum);
    _bpRipTrkNum[0] --;
    wtmpy = RIP_LINE3_STARTY + ( _bRipEntry - ENTRY_TRACK1) * 35 + 13;
    vSetRipXY(RIP_CENTER_X + 30, RIP_ENTRY_RIGHT_X - 2, wtmpy - 7, wtmpy + 22);
    vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_BG_HILI_COL);
  }

  vSetRipXY(RIP_CENTER_X - 76, RIP_CENTER_X - 16,
            RIP_LINE5_STARTY + 10, RIP_LINE5_STARTY + 40);
  vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_MENU_COL_BG);

  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  bpStr[1] = ((_bpRipTrkNum[0]) / 10) ? (_bpRipTrkNum[0]) / 10 + '0' : ' ';
  bpStr[2] = (_bpRipTrkNum[0]) % 10 + '0';
  vOsdShowStrXY(RIP_CENTER_X - 71, RIP_LINE5_STARTY + 10,
                WB_RIP_MENU, bpStr);

  bHiByte(wtmptime) = wGetSelectedTotalSec() / 60;
  bLoByte(wtmptime) = wGetSelectedTotalSec() % 60;
  bpTimeStr[1] = bHiByte(wtmptime)  / 10 ? bHiByte(wtmptime)  / 10 + '0':'0';
  bpTimeStr[2] = bHiByte(wtmptime) % 10 ? bHiByte(wtmptime) % 10 + '0':'0';
  bpTimeStr[4] = bLoByte(wtmptime)  / 10 ? bLoByte(wtmptime)  / 10 + '0':'0';
  bpTimeStr[5] = bLoByte(wtmptime) % 10 ? bLoByte(wtmptime) % 10 + '0':'0';
  vSetRipXY(RIP_CENTER_X - 75, RIP_CENTER_X - 2,
            RIP_LINE5_STARTY + 42, RIP_LINE6_STARTY - 2);
  vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_MENU_COL_BG);
  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  vOsdShowStrXY(RIP_CENTER_X - 75, RIP_LINE5_STARTY + 42,
                WB_RIP_MENU, bpTimeStr);
}


void vISDrawAllHook(BOOL fgAll)large
{
  BYTE i = 0;
  BYTE bfirstnum = 7 + (stct_rip.bRipPageNum - 1) * 6 - 6;
  WORD  wtmptime, wtmpy;
  BYTE bpStr[3] = {2, '0', '0'};
  BYTE bpTimeStr[6] = {5, '0', '0', ':', '0', '0'};

  if(fgAll == TRUE) // select all
  {
    _bpRipTrkNum[0] = MAX_TRACK_NUM;
    for(i = 1; i <= 13; i++)
    {
      _bpRipTrkNum[i] = 0xff;
    }

    for(i = 1; i < 7; i++)
    {
      if(bfirstnum + i >  MAX_TRACK_NUM)
        break;
      wtmpy = RIP_ENTRY_RIGHT_Y + i * 35 + 8;
      if(wtmpy % 2 != 0)
        wtmpy -= 1;
      vOsdPasteBmpXY(RIP_CENTER_X + 30, wtmpy, WB_RIP_MENU, BMP_HOOK);
    }

    if(stct_rip.bRipPageNum == 1)
    {
      vOsdPasteBmpXY(RIP_CENTER_X + 30, RIP_ENTRY_RIGHT_Y + 8, WB_RIP_MENU, BMP_HOOK);
    }
  }
  else //select none
  {
    for(i = 0; i <= 13; i++)
    {
      _bpRipTrkNum[i] = 0;
    }

    vSetRipXY(RIP_CENTER_X + 30, RIP_ENTRY_RIGHT_X - 2,
              RIP_ENTRY_RIGHT_Y, RIP_LINE6_STARTY - 2);
    vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_MENU_COL_BG);
  }

  vSetRipXY(RIP_CENTER_X - 76, RIP_CENTER_X - 16,
            RIP_LINE5_STARTY + 10, RIP_LINE5_STARTY + 40);
  vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_MENU_COL_BG);

  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  bpStr[1] = (_bpRipTrkNum[0]) / 10 ? (_bpRipTrkNum[0]) / 10 + '0' : ' ';
  bpStr[2] = (_bpRipTrkNum[0]) % 10 + '0';
  vOsdShowStrXY(RIP_CENTER_X - 71, RIP_LINE5_STARTY + 10,
                WB_RIP_MENU, bpStr);

  bHiByte(wtmptime) = (BYTE)(wGetSelectedTotalSec() / 60);
  bLoByte(wtmptime) = (BYTE)(wGetSelectedTotalSec() % 60);
  bpTimeStr[1] = bHiByte(wtmptime)  / 10 ? bHiByte(wtmptime)  / 10 + '0':'0';
  bpTimeStr[2] = bHiByte(wtmptime) % 10 ? bHiByte(wtmptime) % 10 + '0':'0';
  bpTimeStr[4] = bLoByte(wtmptime)  / 10 ? bLoByte(wtmptime)  / 10 + '0':'0';
  bpTimeStr[5] = bLoByte(wtmptime) % 10 ? bLoByte(wtmptime) % 10 + '0':'0';

  vSetRipXY(RIP_CENTER_X - 75, RIP_CENTER_X - 2,
            RIP_LINE5_STARTY + 42, RIP_LINE6_STARTY - 2);
  vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_MENU_COL_BG);

  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  vOsdShowStrXY(RIP_CENTER_X - 75, RIP_LINE5_STARTY + 42,
                WB_RIP_MENU, bpTimeStr);
}


void vOptionsLeft(void) large
{
  switch(_bRipEntry)
  {
    case ENTRY_TRACK1:
    case ENTRY_TRACK2:
    case ENTRY_TRACK3:
    case ENTRY_TRACK4:
    case ENTRY_TRACK5:
    case ENTRY_TRACK6:
    case ENTRY_TRACK7:
    case ENTRY_TRACK8:
    {
      vSetRipXY(RIP_CENTER_X + 2, RIP_MENU_ENDX - 6,
                RIP_LINE3_STARTY, RIP_LINE6_STARTY);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_MENU_COL_BG);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry = ENTRY_SPEED;

      vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
                RIP_ENTRY_LEFT_Y, RIP_ENTRY_LEFT_Y + 34);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_SPEED:
    case ENTRY_BITRATE:
    case ENTRY_ID3:
    case ENTRY_START:
    case ENTRY_USB:
      break;
    case ENTRY_SELECT_NONE:
    {
      vSetRipXY(RIP_CENTER_X, RIP_MENU_ENDX,
                RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry = ENTRY_SELECT_ALL;

      vSetRipXY(RIP_CENTER_X, RIP_3D4_X - 16,
                RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_SELECT_ALL:
    case ENTRY_EXIT:
    {
      vSetRipXY(0, RIP_MENU_ENDX,
                RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry --;

      vSetRipXY(2 + RIP_1D4_X*(_bRipEntry - ENTRY_START), RIP_1D4_X*(_bRipEntry - ENTRY_START + 1) - 2,
                RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_REPLACE_CANCEL:
      vSetRipXY(RIP_1D4_X + 5, RIP_CENTER_X - 5,
                RIP_LINE6_NEW_STARTY - 40, RIP_LINE6_NEW_STARTY - 3);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      vSetRipXY(RIP_LINE1_STARTX + 5, RIP_1D4_X - 5,
                RIP_LINE6_NEW_STARTY - 40, RIP_LINE6_NEW_STARTY - 3);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      _bRipEntry = ENTRY_REPLACE_OK;
      break;
    default:
      break;
  }
}


void vOptionsRight(void) large
{
  switch(_bRipEntry)
  {
    case ENTRY_TRACK1:
    case ENTRY_TRACK2:
    case ENTRY_TRACK3:
    case ENTRY_TRACK4:
    case ENTRY_TRACK5:
    case ENTRY_TRACK6:
    case ENTRY_TRACK7:
    case ENTRY_TRACK8:
    case ENTRY_SELECT_NONE:
      break;

    case ENTRY_SPEED:
    case ENTRY_BITRATE:
    case ENTRY_ID3:
    case ENTRY_USB:
    {
      vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
                RIP_ENTRY_LEFT_Y + _bRipEntry*39, RIP_ENTRY_LEFT_Y + 34 + _bRipEntry*39);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry = ENTRY_TRACK1;
      _bNewRipTracknum = 7 + (stct_rip.bRipPageNum - 1) * 6 - 6;
      vSetRipXY(RIP_CENTER_X + 2, RIP_MENU_ENDX - 6,
                RIP_LINE3_STARTY + 5, RIP_LINE3_STARTY + 35);
      vChgColRep(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_START:
    {
      vSetRipXY(2, RIP_1D4_X - 2, RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry++;

      vSetRipXY(RIP_1D4_X + 2, RIP_CENTER_X - 2, RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_EXIT:
    {
      vSetRipXY(RIP_1D4_X + 2, RIP_CENTER_X - 2,
                RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry++;

      vSetRipXY(RIP_CENTER_X + 2, RIP_3D4_X - 18,
                RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_SELECT_ALL:
    {
      vSetRipXY(RIP_CENTER_X, RIP_MENU_ENDX,
                RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      _bRipEntry++;

      vSetRipXY(RIP_3D4_X - 12, RIP_MENU_ENDX - 6,
                RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      break;
    }
    case ENTRY_REPLACE_OK:
      vSetRipXY(RIP_LINE1_STARTX + 5, RIP_1D4_X - 5,
                RIP_LINE6_NEW_STARTY - 40, RIP_LINE6_NEW_STARTY - 3);
      vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_COL_AMETHYST);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

      vSetRipXY(RIP_1D4_X + 5, RIP_CENTER_X - 5,
                RIP_LINE6_NEW_STARTY - 40, RIP_LINE6_NEW_STARTY - 3);
      vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
      vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      _bRipEntry = ENTRY_REPLACE_CANCEL;
      break;
    default:
      break;
  }
}


void vOptionsDown(void) large
{
  WORD wtmpy;

  switch(_bRipEntry)
  {
    case ENTRY_TRACK1:
    case ENTRY_TRACK2:
    case ENTRY_TRACK3:
    case ENTRY_TRACK4:
    case ENTRY_TRACK5:
    case ENTRY_TRACK6:
    case ENTRY_TRACK7:
      if(_bNewRipTracknum + 1 >  MAX_TRACK_NUM)
      {
        wtmpy = RIP_LINE3_STARTY + ( _bRipEntry - ENTRY_TRACK1) * 35 + 5;
        vSetRipXY(RIP_CENTER_X + 2, RIP_MENU_ENDX - 6, wtmpy, wtmpy + 30);
        vChgColRep(WB_RIP_MENU, RIP_BG_HILI_COL, RIP_MENU_COL_BG);
        vChgColRep(WB_RIP_MENU, RIP_COL_BLUE, RIP_COL_BLACK);

        _bRipEntry = ENTRY_SELECT_ALL;
        vSetRipXY(RIP_CENTER_X + 2, RIP_3D4_X - 18,
                  RIP_LINE6_STARTY + 2, RIP_MENU_ENDY - 6);
        vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_BG_HILI_COL);
        vChgColRep(WB_RIP_MENU, RIP_COL_BLACK, RIP_COL_BLUE);
      }

⌨️ 快捷键说明

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