bool OEBPlugin::readModel(BookModel &model) const { const ZLFile &file = model.book()->file(); model.addUserData( "inputStreamLock", new InputStreamLock(file.inputStream()) ); return OEBBookReader(model).readBook(opfFile(file)); }
bool TxtPlugin::readModel(BookModel &model) const { Book &book = *model.book(); const ZLFile &file = book.file(); shared_ptr<ZLInputStream> stream = file.inputStream(); if (stream.isNull()) { return false; } PlainTextFormat format(file); if (!format.initialized()) { PlainTextFormatDetector detector; detector.detect(*stream, format); } readLanguageAndEncoding(book); TxtBookReader(model, format, book.encoding()).readDocument(*stream); return true; }
bool HtmlPlugin::readModel(BookModel &model) const { const Book& book = *model.book(); const ZLFile &file = book.file(); shared_ptr<ZLInputStream> stream = file.inputStream(); if (stream.isNull()) { return false; } PlainTextFormat format(file); if (!format.initialized()) { PlainTextFormatDetector detector; detector.detect(*stream, format); } std::string directoryPrefix = MiscUtil::htmlDirectoryPrefix(file.path()); HtmlBookReader reader(directoryPrefix, model, format, book.encoding()); reader.setFileName(MiscUtil::htmlFileName(file.path())); reader.readDocument(*stream); return true; }
bool RtfPlugin::readModel(BookModel &model) const { const Book &book = *model.book(); return RtfBookReader(model, book.encoding()).readDocument(book.file()); }
bool DocPlugin::readModel(BookModel &model) const { return DocBookReader(model, model.book()->encoding()).readBook(); }
PluckerBookReader::PluckerBookReader(BookModel &model) : BookReader(model), EncodedTextReader(model.book()->encoding()), myFile(model.book()->file()), myFont(FT_REGULAR) { myCharBuffer = new char[65535]; myForcedEntry = 0; }
bool CHMPlugin::readModel(BookModel &model) const { model.setHyperlinkMatcher(new CHMHyperlinkMatcher()); const Book &book = *model.book(); const ZLFile &file = book.file(); shared_ptr<ZLInputStream> stream = file.inputStream(); if (stream.isNull() || !stream->open()) { return false; } shared_ptr<CHMFileInfo> info = new CHMFileInfo(file); if (!info->init(*stream)) { return false; } CHMFileInfo::FileNames names = info->sectionNames(stream); if (names.empty()) { return false; } CHMReferenceCollection referenceCollection; referenceCollection.addReference(names.Start, false); referenceCollection.addReference(names.Home, false); const std::string &encoding = book.encoding(); shared_ptr<ZLInputStream> tocStream = info->entryStream(stream, names.TOC); HHCReader hhcReader(referenceCollection, model, encoding); if (!tocStream.isNull() && tocStream->open()) { referenceCollection.setPrefix(names.TOC); hhcReader.readDocument(*tocStream); } /* if (!tocStream.isNull() && tocStream->open()) { std::string buf; buf.append(tocStream->sizeOfOpened(), '\0'); tocStream->read((char*)buf.data(), buf.length()); std::cerr << "[ " << names.TOC << " ]\n" << buf << "\n"; } */ int contentCounter = 0; PlainTextFormat format(file); HtmlSectionReader reader(model, format, encoding, info, referenceCollection); while (referenceCollection.containsNonProcessedReferences()) { const std::string fileName = referenceCollection.nextReference(); if (ZLStringUtil::stringEndsWith(fileName, ".jpg") || ZLStringUtil::stringEndsWith(fileName, ".gif")) { std::string lowerCasedFileName = ZLUnicodeUtil::toLower(fileName); BookReader bookReader(model); bookReader.setMainTextModel(); bookReader.addHyperlinkLabel(lowerCasedFileName); bookReader.pushKind(REGULAR); bookReader.beginParagraph(); bookReader.addImageReference(lowerCasedFileName); bookReader.addImage(fileName, new CHMFileImage(info, fileName)); bookReader.endParagraph(); bookReader.insertEndOfTextParagraph(); } else { shared_ptr<ZLInputStream> entryStream = info->entryStream(stream, fileName); if (!entryStream.isNull() && entryStream->open()) { /* std::string buf; buf.append(entryStream->sizeOfOpened(), '\0'); entryStream->read((char*)buf.data(), buf.length()); std::cerr << "[ " << fileName << " ]\n" << buf << "\n"; entryStream->open(); */ reader.setSectionName(fileName); reader.readDocument(*entryStream); ++contentCounter; } } } if (contentCounter == 0) { return false; } hhcReader.setReferences(); return true; }
bool OEBPlugin::readModel(BookModel &model) const { const ZLFile &file = model.book()->file(); return OEBBookReader(model).readBook(opfFile(file)); }