X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Foutput%2FEpub.java;h=09a9944d78932b40c806a13a6f8b4fcef3d55ba8;hb=16a81ef7656c5c692fb831927e75edde25dd77a0;hp=1706d8b1002c1009ecedb64208857dccf19eb6c6;hpb=08fe2e33007063e30fe22dc1d290f8afaa18eb1d;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/output/Epub.java b/src/be/nikiroo/fanfix/output/Epub.java index 1706d8b..09a9944 100644 --- a/src/be/nikiroo/fanfix/output/Epub.java +++ b/src/be/nikiroo/fanfix/output/Epub.java @@ -1,12 +1,11 @@ package be.nikiroo.fanfix.output; +import java.io.BufferedWriter; import java.io.File; -import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.net.URL; - -import javax.imageio.ImageIO; +import java.io.OutputStreamWriter; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; @@ -14,23 +13,24 @@ import be.nikiroo.fanfix.bundles.StringId; import be.nikiroo.fanfix.data.Chapter; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Paragraph; -import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.data.Paragraph.ParagraphType; +import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.StringUtils; class Epub extends BasicOutput { private File tmpDir; - private FileWriter writer; + private BufferedWriter writer; private boolean inDialogue = false; private boolean inNormal = false; private File images; + private boolean nextParaIsCover = true; @Override public File process(Story story, File targetDir, String targetName) throws IOException { String targetNameOrig = targetName; - targetName += getDefaultExtension(); + targetName += getDefaultExtension(false); tmpDir = File.createTempFile("fanfic-reader-epub_", ".wip"); tmpDir.delete(); @@ -43,7 +43,9 @@ class Epub extends BasicOutput { // "Originals" File data = new File(tmpDir, "DATA"); data.mkdir(); - new InfoText().process(story, data, targetNameOrig); + BasicOutput.getOutput(OutputType.TEXT, isWriteInfo(), isWriteCover()) + .process(story, data, targetNameOrig); + InfoCover.writeInfo(data, targetNameOrig, story.getMeta()); IOUtils.writeSmallFile(data, "version", "3.0"); super.process(story, targetDir, targetNameOrig); @@ -58,7 +60,7 @@ class Epub extends BasicOutput { } @Override - protected String getDefaultExtension() { + public String getDefaultExtension(boolean readerTarget) { return ".epub"; } @@ -101,7 +103,8 @@ class Epub extends BasicOutput { String format = Instance.getConfig() .getString(Config.IMAGE_FORMAT_COVER).toLowerCase(); File file = new File(images, "cover." + format); - ImageIO.write(story.getMeta().getCover(), format, file); + Instance.getCache().saveAsImage(story.getMeta().getCover(), file, + true); } // OPS/* except chapters @@ -119,7 +122,9 @@ class Epub extends BasicOutput { protected void writeChapterHeader(Chapter chap) throws IOException { String filename = String.format("%s%03d%s", "chapter-", chap.getNumber(), ".xml"); - writer = new FileWriter(new File(tmpDir + "/OPS", filename)); + writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(new File(tmpDir + File.separator + "OPS", + filename)), "UTF-8")); inDialogue = false; inNormal = false; try { @@ -194,7 +199,7 @@ class Epub extends BasicOutput { writer.write("
"); break; case BREAK: - writer.write("
"); + writer.write("
"); break; case NORMAL: writer.write(" "); @@ -204,11 +209,14 @@ class Epub extends BasicOutput { break; case IMAGE: File file = new File(images, getCurrentImageBestName(false)); - Instance.getCache().saveAsImage(new URL(para.getContent()), file); + Instance.getCache().saveAsImage(para.getContentImage(), file, + nextParaIsCover); writer.write(" "); break; } + + nextParaIsCover = false; } @Override