KoFilter::ConversionStatus EpubFile::writeMetaInf(KoStore *epubStore) { // We can hardcode this one. if (!epubStore->open("META-INF/container.xml")) { kDebug(30503) << "Can not to open META-INF/container.xml."; return KoFilter::CreationError; } KoStoreDevice metaDevice(epubStore); KoXmlWriter writer(&metaDevice); writer.startElement("container"); writer.addAttribute("version", "1.0"); writer.addAttribute("xmlns", "urn:oasis:names:tc:opendocument:xmlns:container"); writer.startElement("rootfiles"); writer.startElement("rootfile"); writer.addAttribute("full-path", pathPrefix() + "content.opf"); writer.addAttribute("media-type", "application/oebps-package+xml"); writer.endElement(); // rootfile writer.endElement(); // rootfiles writer.endElement(); // container epubStore->close(); return KoFilter::OK; }
void XHTMLTagImageAction::doAtStart(XHTMLReader &reader, const char **xmlattributes) { const char *fileName = reader.attributeValue(xmlattributes, *myPredicate); if (fileName == 0) { return; } const std::string fullfileName = pathPrefix(reader) + MiscUtil::decodeHtmlURL(fileName); ZLFile imageFile(fullfileName); if (!imageFile.exists()) { return; } const bool flagParagraphIsOpen = bookReader(reader).paragraphIsOpen(); if (flagParagraphIsOpen) { if (reader.myCurrentParagraphIsEmpty) { bookReader(reader).addControl(IMAGE, true); } else { endParagraph(reader); } } const std::string imageName = imageFile.name(false); bookReader(reader).addImageReference(imageName, 0, reader.myMarkNextImageAsCover); bookReader(reader).addImage(imageName, new ZLFileImage(imageFile, "", 0, 0, reader.myEncryptionMap->info(imageFile.path()))); reader.myMarkNextImageAsCover = false; if (flagParagraphIsOpen && reader.myCurrentParagraphIsEmpty) { bookReader(reader).addControl(IMAGE, false); endParagraph(reader); } }
void XHTMLTagImageAction::doAtStart(XHTMLReader &reader, const char **xmlattributes) { const char *fileName = reader.attributeValue(xmlattributes, *myPredicate); if (fileName == 0) { return; } const std::string fullfileName = pathPrefix(reader) + MiscUtil::decodeHtmlURL(fileName); ZLFile imageFile(fullfileName); if (!imageFile.exists()) { return; } bool flag = bookReader(reader).paragraphIsOpen(); if (flag) { endParagraph(reader); } if (std::strlen(fileName) > 2 && std::strncmp(fileName, "./", 2) == 0) { fileName +=2; } bookReader(reader).addImageReference(fullfileName); bookReader(reader).addImage(fullfileName, new ZLFileImage(ZLFile(fullfileName), 0)); if (flag) { beginParagraph(reader); } }
void XHTMLTagImageAction::doAtStart(XHTMLReader &reader, const char **xmlattributes) { // Ignore transparent images if (!reader.myParseStack.back().opacity) { return; } const char *fileName = reader.attributeValue(xmlattributes, *myPredicate); if (fileName == 0) { return; } const std::string fullfileName = pathPrefix(reader) + MiscUtil::decodeHtmlURL(fileName); if (!ZLFile(fullfileName).exists()) { return; } if ((strlen(fileName) > 2) && strncmp(fileName, "./", 2) == 0) { fileName +=2; } reader.myParseStack.back().kind = IMAGE; reader.haveContent(); reader.myModelReader.addImageReference(fullfileName); reader.myModelReader.addImage(fullfileName, new ZLFileImage(ZLFile(fullfileName), 0)); }
foreach(FileInfo *file, files()) { // Since paths are relative from where this file is, remove // the common prefix from the reference. if (file->m_id == "cover") { continue; } QString relativeFilename = file->m_fileName; if (relativeFilename.contains(filePrefix())) { if (relativeFilename.startsWith(pathPrefix())) { relativeFilename = relativeFilename.right(relativeFilename.size() - pathPrefix().size()); } writer.startElement("itemref"); writer.addAttribute("idref", file->m_id); writer.endElement(); // itemref } }
void XHTMLTagSourceAction::doAtStart(XHTMLReader &reader, const char **xmlattributes) { const char *mime = reader.attributeValue(xmlattributes, "type"); const char *href = reader.attributeValue(xmlattributes, "src"); if (mime != 0 && href != 0) { reader.myVideoEntry->addSource( mime, ZLFile(pathPrefix(reader) + MiscUtil::decodeHtmlURL(href)).path() ); } }
void XHTMLTagImageAction::doAtStart(XHTMLReader &reader, const char **xmlattributes) { const char *fileName = reader.attributeValue(xmlattributes, myNameAttribute.c_str()); if (fileName != 0) { bool flag = bookReader(reader).paragraphIsOpen(); if (flag) { bookReader(reader).endParagraph(); } if ((strlen(fileName) > 2) && strncmp(fileName, "./", 2) == 0) { fileName +=2; } const std::string fullfileName = pathPrefix(reader) + fileName; bookReader(reader).addImageReference(fullfileName); bookReader(reader).addImage(fullfileName, new ZLFileImage("image/auto", fullfileName, 0)); if (flag) { bookReader(reader).beginParagraph(); } } }
/*! Returns the list of (paths to) game audio effects. NOTE: This is mandatory (sounds and indexes) for all the levels! \see levelplugininterface.h */ QStringList LevelTwo::levelSounds() { QStringList list; // 0 = Enemy explode list.append(pathPrefix() + "quickhitdata/leveltwo/sound/enemy_explosion.wav"); // 1 = You explode list.append(pathPrefix() + "quickhitdata/leveltwo/sound/myship_explosion.wav"); // 2 = Missile fires list.append(pathPrefix() + "quickhitdata/leveltwo/sound/laser.wav"); // 3 = Emeny Missile fires list.append(pathPrefix() + "quickhitdata/leveltwo/sound/rocket.wav"); // Additional sounds list.append(pathPrefix() + "quickhitdata/leveltwo/sound/enableship.wav"); list.append(pathPrefix() + "quickhitdata/leveltwo/sound/level2.wav"); return list; }
//ユーザーのホームディレクトリを取得する QString OperatingSystem::homeDirectory() const { //QMLで使いやすい状態に加工 return pathPrefix() + QDir::homePath() + "/"; }
KoFilter::ConversionStatus EpubFile::writeOpf(KoStore *epubStore, QHash<QString, QString> &metadata) { if (!epubStore->open(pathPrefix() + "content.opf")) { kDebug(30503) << "Can not create content.opf ."; return KoFilter::CreationError; } KoStoreDevice opfDevice(epubStore); KoXmlWriter writer(&opfDevice); //FIXME: Write <?xml version="1.0"?> -> FIXED writer.startDocument(NULL,NULL,NULL); // FIXME: Get the unique identifier writer.startElement("package"); writer.addAttribute("version", "2.0"); writer.addAttribute("xmlns", "http://www.idpf.org/2007/opf"); writer.addAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/"); writer.addAttribute("xmlns:opf", "http://www.idpf.org/2007/opf"); writer.addAttribute("unique-identifier", "BookId"); // FIXME: Where to get this? // ==== metadata ==== writer.startElement("metadata"); // Required elements are: title, language and identifier writer.startElement("dc:title"); writer.addTextNode(metadata.value("title")); writer.endElement(); // dc:title writer.startElement("meta"); writer.addAttribute("name", "cover"); writer.addAttribute("content", "cover-image"); writer.endElement(); writer.startElement("dc:language"); if (!metadata.value("language").isEmpty()) writer.addTextNode(metadata.value("language")); else writer.addTextNode("en"); writer.endElement(); // dc:language writer.startElement("dc:identifier"); writer.addAttribute("id", "BookId"); writer.addAttribute("opf:scheme", "ISBN"); writer.addTextNode("123456789X"); // FIXME: Where to get this? writer.endElement(); // dc:identifier writer.startElement("dc:creator"); writer.addTextNode(metadata.value("creator")); // It's the "Author" profile name writer.endElement(); // dc:creator writer.startElement("dc:subject"); writer.addTextNode(""); // FIXME: Here should come suject info with form : Fiction & Fantasy & ... writer.endElement(); // dc:subject // FIXME: many more (optional) writer.endElement(); // metadata // ==== manifest ==== writer.startElement("manifest"); // Write manifest entry for each embedded file. foreach(FileInfo *file, files()) { // Since paths are relative from where this file is, remove // the common prefix from the reference. QString relativeFilename = file->m_fileName; if (relativeFilename.startsWith(pathPrefix())) relativeFilename = relativeFilename.right(relativeFilename.size() - pathPrefix().size()); writer.startElement("item"); writer.addAttribute("id", file->m_id); writer.addAttribute("href", relativeFilename); writer.addAttribute("media-type", file->m_mimetype); writer.endElement(); // item }