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

📄 rip.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:
BOOL fgStartRipState(void) large
{
  BYTE i = 1, j = 0;
  BYTE bpPercentStr[7];
  WORD wProgress, wTotalProgress;
  WORD wtmp, wtmptime;
  WORD wTrackSec;

  wProgress = bSharedInfo(SI_CD_RIP_PROGRESS);
  wtmp = (WORD)(RIP_ENTRY_LEFT_X + 2 + (WORD)((WORD)wProgress*222) / 100);
  if((wProgress <= 100)&&(wProgress!= 0))
  {
    //track progress
    vSetRipXY(RIP_ENTRY_LEFT_X + 2, wtmp,
              RIP_LINE3_STARTY + 43, RIP_LINE3_STARTY + 60);
    vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_COL_BLUE);

    bpPercentStr[0] = 6;
    bpPercentStr[1] = ' ';
    bpPercentStr[2] = wProgress / 10 ? wProgress / 10 + '0':' ';
    bpPercentStr[3] = wProgress % 10 + '0';
    bpPercentStr[4] = '%';
    bpPercentStr[5] = ' ';
    bpPercentStr[6] = ' ';
    vSetMsgCol4(WB_RIP_MENU, RIP_LIST_HILI_COL, RIP_LIST_HILI_COL, RIP_LIST_HILI_COL, RIP_COL_BLUE);
    vOsdShowStrXY(RIP_ENTRY_RIGHT_X + 110, RIP_ENTRY_RIGHT_Y + (_bHasRipNum%7) * 35,
                  WB_RIP_MENU, bpPercentStr);
  }

  while(i < 100)
  {

    if(fgReadSelectedTrackFlag(i)!= 0)
    {
      j++;
      if(j == (_bHasRipNum + 1))
        break;
    }
    i++;
  }
  //total progress
  wtmptime = wGetTrackTime(i);
  wTrackSec = bHiByte(wtmptime) * 60 + bLoByte(wtmptime);
  wTotalProgress = (WORD)((DWRD)((DWRD)(wTrackSec*wProgress) + (DWRD)(wGetHasRipSec())*100)/wGetSelectedTotalSec());//bProgress
  wtmp = RIP_ENTRY_LEFT_X + 2 + wTotalProgress*222 / 100;
  if(wTotalProgress!= 0)
  {
    vSetRipXY(RIP_ENTRY_LEFT_X + 2, wtmp,
              RIP_LINE3_STARTY + 103, RIP_LINE3_STARTY + 121);
    vChgColRep(WB_RIP_MENU, RIP_COL_AMETHYST, RIP_COL_BLUE);
  }
  return TRUE;
}


void vDrawReplaceOk(void)large
{
  BYTE i = 1, j = 0, bpStr_trknum[6] = {5, '0', '1', '/', '0', '0'};

  vSetSharedInfo(SI_CD_RIP_OVERWRITE, SV_ON);
  vSetRipXY(RIP_LINE1_STARTX + 6, RIP_CENTER_X - 2,
            RIP_LINE5_STARTY + 2, RIP_LINE6_NEW_STARTY - 2);
  vRectangle(WB_RIP_MENU, 0, RIP_COL_BLUE, 1, RIP_MENU_COL_BG);

  vShowMsg(WB_RIP_MENU, OSD_MSG_NOW_RIPPING,
          RIP_LINE1_STARTX + 50, RIP_LINE5_STARTY + 4,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TRACK2,
          RIP_LINE1_STARTX + 50, RIP_LINE5_STARTY + 42,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  bpStr_trknum[1] = (_bHasRipNum + 1) / 10 ? (_bHasRipNum + 1) / 10 + '0':'0';
  bpStr_trknum[2] = (_bHasRipNum + 1) % 10 + '0';
  bpStr_trknum[4] = _bpRipTrkNum[0] / 10 ? _bpRipTrkNum[0] / 10 + '0' : '0';
  bpStr_trknum[5] = _bpRipTrkNum[0] % 10 + '0';
  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  vOsdShowStrXY(RIP_LINE1_STARTX + 180, RIP_LINE5_STARTY + 42,
                WB_RIP_MENU, bpStr_trknum);
  stct_rip.bRipState = RIP_RIP_START_STATE;
  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);

  while(i < 100)
  {

    if(fgReadSelectedTrackFlag(i)!= 0)
    {
      j++;
      if(j == (_bHasRipNum + 1))
        break;
    }
    i++;
  }
  // kilocmd start rip
  vSendUopCmd(UOP_DIGITAL_BTN, i, stct_rip.fgHighSpeed, TRUE); //TRUE
  _bRipEntry = ENTRY_CANCEL;
}


void vDrawReplaceCancel(void)large
{
  stct_rip.bRipState = RIP_RIP_START_STATE;
  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);
  _bRipEntry = ENTRY_CANCEL;

  vDrawRipFinish();
}


void vShowReplacePage(void) large
{
  stct_rip.bRipState = RIP_OPTIONS_STATE;
  // clear the summary bg
  vSetRipXY(RIP_LINE1_STARTX + 4, RIP_CENTER_X - 2,
            RIP_LINE5_STARTY + 2, RIP_LINE6_NEW_STARTY - 5);
  vRectangle(WB_RIP_MENU, 0, RIP_COL_BLACK, 1, RIP_COL_LIGHT2_BLUE);

  // hide the cancel button
  vSetRipXY(RIP_1D4_X - 55, RIP_1D4_X + 55,
            RIP_LINE3_STARTY + 131, RIP_LINE3_STARTY + 165);
  vRectangle(WB_RIP_MENU, 0, RIP_COL_BLUE, 1, RIP_COL_LIGHT2_BLUE);

  // show msg
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_REPLACE1,
          RIP_LINE1_STARTX + 35, RIP_LINE5_STARTY + 2,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_REPLACE2,
          RIP_LINE1_STARTX + 40, RIP_LINE5_STARTY + 26,
          RIP_MENU_COL_BG, RIP_COL_BLACK);

  // show the replace ok and cancel button
  vSetRipXY(RIP_LINE1_STARTX + 15, RIP_1D4_X - 15,
            RIP_LINE6_NEW_STARTY - 38, RIP_LINE6_NEW_STARTY - 4);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLUE, 1, RIP_BG_HILI_COL);
  vShowMsg(WB_RIP_MENU, OSD_MSG_OK,
          RIP_LINE1_STARTX + 55, RIP_LINE6_NEW_STARTY - 36,
          RIP_BG_HILI_COL, RIP_COL_BLUE);

  vSetRipXY(RIP_1D4_X + 15, RIP_CENTER_X - 15,
            RIP_LINE6_NEW_STARTY - 38, RIP_LINE6_NEW_STARTY - 4);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLACK, 1, RIP_COL_AMETHYST);
  vShowMsg(WB_RIP_MENU, OSD_MSG_CANCEL,
          RIP_1D4_X + 35, RIP_LINE6_NEW_STARTY - 36,
          RIP_COL_AMETHYST, RIP_COL_BLACK);
  _bRipEntry = ENTRY_REPLACE_OK;
}


void vShowRipPage(void) large
{
  BYTE i, bpStr[8], bpStr_trknum[3] = {2, ' ', '0'};
  BYTE bpTimeStr[6] = {5, '0', '0', ':', '0', '0'};
  WORD wTime = 0;

  _bRipEntry = ENTRY_SPEED;
  stct_rip.bRipPageNum = 1;
  stct_rip.bRipState = RIP_OPTIONS_STATE;
  _bNewRipTracknum = 1;
  _bHasRipNum = 0;
  _bRippingTimer = 0;
  for(i = 0; i < 14; i++)
    _bpRipTrkNum[i] = 0;
  if(_rOsdStateCtx.fgRipShow != TRUE)
  vNewRipInit();
  //if(!fgRipSlotValid(_bRipSlot))
  {
    for (i = 0; i < 6; i++)
    {
      if(fgRipSlotValid(i))
        break;
    }
    _bRipSlot = SV_DEVID_USB_SLOT_1 + i;
  }
  bpStr[0] = 7;
  bpStr[1] = 't';
  bpStr[2] = 'r';
  bpStr[3] = 'a';
  bpStr[4] = 'c';
  bpStr[5] = 'k';
  bpStr[6] = '0';
  vOsdShowWb(OSD_WB_DISABLE);
  vOsdSetMemBlk(OSD_MEM_BLK_DYNAMIC, OSD_MEM_DEFAULT);
  vCreateWB(WB_RIP_MENU, TRUE);
  vOsdSetSt(OSD_ST_BATCH);
  vSetWBTcColor(WB_RIP_MENU);

  vSetRipXY(RIP_MENU_STARTX, RIP_MENU_ENDX, RIP_MENU_STARTY, RIP_MENU_ENDY);
  vRectangle(WB_RIP_MENU, 0, RIP_COL_TRANS, 1, RIP_COL_TRANS);
  //show the bg col
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_MENU_WIDTH - 4,
            RIP_LINE1_STARTY + 1, RIP_MENU_HEIGHT - 4);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLACK, 1, RIP_COL_LIGHT2_BLUE);

  // draw lin2
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_MENU_ENDX - 4,
            RIP_LINE2_STARTY, RIP_LINE2_STARTY);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 2);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TITLE,
          RIP_CENTER_LINE_STARTX - 35, RIP_LINE1_STARTY + 4,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  // draw lin3
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_MENU_ENDX - 4,
            RIP_LINE3_STARTY, RIP_LINE3_STARTY);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 2);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_OPTIONS,
          RIP_1D4_X - 45, RIP_LINE2_STARTY + 2,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TRACK1,
          RIP_3D4_X - 40, RIP_LINE2_STARTY + 2,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  // draw lin4
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_CENTER_LINE_STARTX,
            RIP_LINE4_STARTY, RIP_LINE4_STARTY);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 2);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SUMMARY,
          RIP_1D4_X - 70, RIP_LINE4_STARTY + 2,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  // draw lin5
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_CENTER_LINE_STARTX,
            RIP_LINE5_STARTY, RIP_LINE5_STARTY);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 2);


  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SELECTED,
          RIP_LINE1_STARTX + 15, RIP_LINE5_STARTY + 10,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TRACK2,
          RIP_LINE1_STARTX + 117, RIP_LINE5_STARTY + 10,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
  vOsdShowStrXY(RIP_CENTER_X - 61, RIP_LINE5_STARTY + 10,
                WB_RIP_MENU, bpStr_trknum);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SELECTED,
          RIP_LINE1_STARTX + 15, RIP_LINE5_STARTY + 42,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_TIME,
          RIP_LINE1_STARTX + 117, RIP_LINE5_STARTY + 42,
          RIP_MENU_COL_BG, RIP_COL_BLACK);
  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);
  // draw lin6
  vSetRipXY(RIP_LINE1_STARTX + 1, RIP_MENU_ENDX - 4,
            RIP_LINE6_STARTY, RIP_LINE6_STARTY);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 2);

  // draw center line
  vSetRipXY(RIP_CENTER_LINE_STARTX, RIP_CENTER_LINE_STARTX,
            RIP_CENTER_LINE_STARTY, RIP_MENU_ENDY - 4);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 1);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_START,
          RIP_LINE1_STARTX + 45, RIP_LINE6_STARTY + 3,
          RIP_MENU_COL_BG, RIP_COL_BLACK);

  vSetRipXY(RIP_1D4_X, RIP_1D4_X,
            RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 1);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_EXIT,
          RIP_1D4_X + 48, RIP_LINE6_STARTY + 3,
          RIP_MENU_COL_BG, RIP_COL_BLACK);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SELECT_ALL,
          RIP_CENTER_LINE_STARTX + 15, RIP_LINE6_STARTY + 3,
          RIP_MENU_COL_BG, RIP_COL_BLACK);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SELECT_NONE,
          RIP_3D4_X + 5, RIP_LINE6_STARTY + 3,
          RIP_MENU_COL_BG, RIP_COL_BLACK);

  vSetRipXY(2, RIP_MENU_ENDX,
            RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
  vChgColRep(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_COL_AMETHYST);

  vSetRipXY(RIP_3D4_X - 16, RIP_3D4_X - 16,
            RIP_LINE6_STARTY, RIP_MENU_ENDY - 4);
  vOsdShowLine(WB_RIP_MENU, RIP_COL_BLACK, 1);

  for(i = 0; i < 7 && i < MAX_TRACK_NUM; i++)
  {
    bpStr[7] = '0' + (i + 1);
    vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
    vOsdShowStrXY(RIP_ENTRY_RIGHT_X, RIP_ENTRY_RIGHT_Y + i * 35,
                  WB_RIP_MENU, bpStr);
    wTime = wGetTrackTime(i + 1);
    bpTimeStr[1] = bHiByte(wTime) / 10 ? bHiByte(wTime) / 10 + '0':'0';
    bpTimeStr[2] = bHiByte(wTime) % 10 + '0';
    bpTimeStr[4] = bLoByte(wTime) / 10 ? bLoByte(wTime) / 10 + '0':'0';
    bpTimeStr[5] = bLoByte(wTime) % 10 + '0';
    vSetMsgCol4(WB_RIP_MENU, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_MENU_COL_BG, RIP_COL_BLACK);
    vOsdShowStrXY(RIP_ENTRY_RIGHT_X + 110, RIP_ENTRY_RIGHT_Y + i * 35,
                  WB_RIP_MENU, bpTimeStr);
  }

  if( MAX_TRACK_NUM > 7)
  {
    vOsdPasteBmpXY(RIP_ENTRY_RIGHT_X + 75, RIP_ENTRY_RIGHT_Y + 7 * 35 + 5, WB_RIP_MENU, BMP_RIP_DOWN);
  }

  //show the speed
  vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
            RIP_ENTRY_LEFT_Y, RIP_ENTRY_LEFT_Y + 34);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLUE, 1, RIP_BG_HILI_COL);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_SPEED,
          RIP_ENTRY_LEFT_X + 13, RIP_ENTRY_LEFT_Y + 2,
          RIP_BG_HILI_COL, RIP_COL_BLUE);//RIP_COL_RED

  vShowMsg(WB_RIP_MENU, OSD_MSG_SPEED_NORMAL + stct_rip.fgHighSpeed,
          RIP_CENTER_X - 125, RIP_ENTRY_LEFT_Y + 2,
          RIP_BG_HILI_COL, RIP_COL_BLUE);

  //show the bitrate
  vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
            RIP_ENTRY_LEFT_Y + 39, RIP_ENTRY_LEFT_Y + 73);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLACK, 1, RIP_COL_AMETHYST);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_BITRATE,
          RIP_ENTRY_LEFT_X + 13, RIP_ENTRY_LEFT_Y + 41,
          RIP_COL_AMETHYST, RIP_COL_BLACK);

  vShowMsg(WB_RIP_MENU, OSD_MSG_96KBPS + (stct_rip.bRipBitrate - RIP_BITRATE_96kbps),
          RIP_CENTER_X - 125, RIP_ENTRY_LEFT_Y + 41,
          RIP_COL_AMETHYST, RIP_COL_BLACK);

  //show the Create ID3
  vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
            RIP_ENTRY_LEFT_Y + 78, RIP_ENTRY_LEFT_Y + 112);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLACK, 1, RIP_COL_AMETHYST);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_CREATE_ID3,
          RIP_ENTRY_LEFT_X + 13, RIP_ENTRY_LEFT_Y + 80,
          RIP_COL_AMETHYST, RIP_COL_BLACK);

  vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_NO - stct_rip.fgRipID3,
          RIP_CENTER_X - 100, RIP_ENTRY_LEFT_Y + 80,
          RIP_COL_AMETHYST, RIP_COL_BLACK);
  //show the device
  vSetRipXY(RIP_ENTRY_LEFT_X, RIP_CENTER_X - 20,
            RIP_ENTRY_LEFT_Y + 117, RIP_ENTRY_LEFT_Y + 151);
  vRectangle(WB_RIP_MENU, 2, RIP_COL_BLACK, 1, RIP_COL_AMETHYST);

  if(bRipGetUsbNs() == 0)
  {
    vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_USB_DEVICE,
            RIP_ENTRY_LEFT_X + 13, RIP_ENTRY_LEFT_Y + 119,
            RIP_COL_AMETHYST, RIP_BG_GRAY_COL);
    vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_NONE,
            RIP_CENTER_X - 100, RIP_ENTRY_LEFT_Y + 119,
            RIP_COL_AMETHYST, RIP_BG_GRAY_COL);
    vSetSharedInfo(SI_CD_RIP_DEVICE, SV_DEVID_CDVDROM);
  }
  else
  {
    vShowMsg(WB_RIP_MENU, OSD_MSG_RIP_USB_DEVICE,
            RIP_ENTRY_LEFT_X + 13, RIP_ENTRY_LEFT_Y + 119,
            RIP_COL_AMETHYST, RIP_COL_BLACK);
    vShowMsg(WB_RIP_MENU, OSD_MSG_USB_SLOT1 + _bRipSlot,
            RIP_CENTER_X - 100, RIP_ENTRY_LEFT_Y + 119,
            RIP_COL_AMETHYST, RIP_COL_BLACK);
    vSetSharedInfo(SI_CD_RIP_DEVICE, _bRipSlot);
  }
  _bNewRipTracknum = 1;
  _bRipEntry = ENTRY_SPEED;
  _bIRKey = IR_NONE;
  vOsdSetSt(OSD_ST_NML);
  vOsdSetSt(OSD_ST_BURST);
  vEnableWB(WB_RIP_MENU);
  vOsdSetSt(OSD_ST_BURST);
  _rOsdStateCtx.fgRipShow = TRUE;
}
#endif //SUPPORT_RIP
#endif  //_RIP_C

⌨️ 快捷键说明

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