Merge branch 'subtree'
[fanfix.git] / src / be / nikiroo / fanfix / output / Text.java
index 6db7b7be8d3f4ee53395345acd61a29ba802181b..f0516dc629ebca9bf65b7bf86fa559028004f622 100644 (file)
@@ -1,33 +1,36 @@
 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.net.URL;
+import java.io.OutputStreamWriter;
 
 import be.nikiroo.fanfix.Instance;
 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;
 
 class Text extends BasicOutput {
-       protected FileWriter writer;
+       protected BufferedWriter writer;
        protected File targetDir;
+       private boolean nextParaIsCover = true;
 
        @Override
        public File process(Story story, File targetDir, String targetName)
                        throws IOException {
                String targetNameOrig = targetName;
-               targetName += getDefaultExtension();
+               targetName += getDefaultExtension(false);
 
                this.targetDir = targetDir;
 
                File target = new File(targetDir, targetName);
 
-               writer = new FileWriter(target);
+               writer = new BufferedWriter(new OutputStreamWriter(
+                               new FileOutputStream(target), "UTF-8"));
                try {
                        super.process(story, targetDir, targetNameOrig);
                } finally {
@@ -39,7 +42,7 @@ class Text extends BasicOutput {
        }
 
        @Override
-       public String getDefaultExtension() {
+       public String getDefaultExtension(boolean readerTarget) {
                return ".txt";
        }
 
@@ -59,7 +62,7 @@ class Text extends BasicOutput {
                writer.write(title);
                writer.write("\n");
                if (author != null && !author.isEmpty()) {
-                       writer.write(" + author);
+                       writer.write(Instance.getInstance().getTrans().getString(StringId.BY) + " " + author);
                }
                if (date != null && !date.isEmpty()) {
                        writer.write(" (");
@@ -78,11 +81,9 @@ class Text extends BasicOutput {
        protected void writeChapterHeader(Chapter chap) throws IOException {
                String txt;
                if (chap.getName() != null && !chap.getName().isEmpty()) {
-                       txt = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
-                                       chap.getNumber(), chap.getName());
+                       txt = Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(), chap.getName());
                } else {
-                       txt = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
-                                       chap.getNumber());
+                       txt = Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber());
                }
 
                writer.write("\n" + txt + "\n");
@@ -101,8 +102,14 @@ class Text extends BasicOutput {
        protected void writeParagraphHeader(Paragraph para) throws IOException {
                if (para.getType() == ParagraphType.IMAGE) {
                        File file = new File(targetDir, getCurrentImageBestName(true));
-                       Instance.getCache().saveAsImage(new URL(para.getContent()), file);
+                       try {
+                               Instance.getInstance().getCache().saveAsImage(para.getContentImage(), file, nextParaIsCover);
+                       } catch (IOException e) {
+                               Instance.getInstance().getTraceHandler().error(new IOException("Cannot save an image", e));
+                       }
                }
+
+               nextParaIsCover = false;
        }
 
        @Override