const DK_TOCINFO* MobiBookReader::GetChapterInfo(const DK_FLOWPOSITION& posPage, CHAPTER_POSITION_MODE positionMode, DKXBlock* curDKXBlock) { GetTOC(curDKXBlock); int chapterIndex = GetChapterIndexByPosition(posPage.nElemIndex); chapterIndex += (positionMode - CURRENT_CHAPTER); if(m_pBook && chapterIndex >= 0 && chapterIndex < (int)m_vTOCList.size()) { DK_TOCINFO* pChapterTocInfo = m_vTOCList.at(chapterIndex); if(pChapterTocInfo) { DK_FLOWPOSITION newChapterPos; DK_UINT uTmpPagePosition = pChapterTocInfo->GetBeginPos().nElemIndex; IDKMPage *pNewPage = m_pBook->CreatePage(uTmpPagePosition, IDKMBook::LOCATION_PAGE); if(!pNewPage) { return false; } // newChapterPos.nChapterIndex = chapterIndex; newChapterPos.nElemIndex = pNewPage->GetBeginPosition(); pChapterTocInfo->SetBeginPos(newChapterPos); m_pBook->DestroyPage(pNewPage); return pChapterTocInfo; } } return NULL; }
bool CDROM_Interface_Aspi::GetAudioTracks(int& stTrack, int& endTrack, TMSF& leadOut) { TOC toc; if (GetTOC((LPTOC)&toc) == SS_COMP) { stTrack = toc.cFirstTrack; endTrack = toc.cLastTrack; leadOut.min = (unsigned char)(toc.tracks[endTrack].lAddr >> 8) &0xFF; leadOut.sec = (unsigned char)(toc.tracks[endTrack].lAddr >> 16) &0xFF; leadOut.fr = (unsigned char)(toc.tracks[endTrack].lAddr >> 24) &0xFF; return true; }
string MobiBookReader::GetChapterTitle(const DK_FLOWPOSITION& posChapter, DKXBlock* curDKXBlock) { GetTOC(curDKXBlock); int chapterIndex = GetChapterIndexByPosition(posChapter.nElemIndex); if(chapterIndex > 0 && chapterIndex < (int)m_vTOCList.size()) { DK_TOCINFO* pTocInfo = m_vTOCList.at(chapterIndex); if(pTocInfo) { return pTocInfo->GetChapter(); } } return ""; }