Exemplo n.º 1
0
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;
	}
Exemplo n.º 3
0
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 "";
}