X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Foutput%2FHtml.java;h=6e0bb6d22d0d0e706e99b7dc605bdc590c1b596b;hp=29a0f32b6404e6b1c0822e6e45d11b6783601905;hb=333f0e7b5e333e8f6222881ce35398f403fc4121;hpb=a6395bef99a8e917f67341ef1906917b87df24a4 diff --git a/src/be/nikiroo/fanfix/output/Html.java b/src/be/nikiroo/fanfix/output/Html.java index 29a0f32..6e0bb6d 100644 --- a/src/be/nikiroo/fanfix/output/Html.java +++ b/src/be/nikiroo/fanfix/output/Html.java @@ -3,16 +3,22 @@ package be.nikiroo.fanfix.output; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; + +import javax.imageio.ImageIO; import be.nikiroo.fanfix.Instance; -import be.nikiroo.fanfix.bundles.StringId; +import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.Chapter; +import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Paragraph; import be.nikiroo.fanfix.data.Paragraph.ParagraphType; import be.nikiroo.fanfix.data.Story; +import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.StringUtils; class Html extends BasicOutput { + private File dir; protected FileWriter writer; private boolean inDialogue = false; private boolean inNormal = false; @@ -20,12 +26,13 @@ class Html extends BasicOutput { @Override public File process(Story story, File targetDir, String targetName) throws IOException { + String targetNameOrig = targetName; + File target = new File(targetDir, targetName); target.mkdir(); + dir = target; targetName = new File(targetName, "index").getPath(); - - String targetNameOrig = targetName; targetName += getDefaultExtension(); target = new File(targetDir, targetName); @@ -38,6 +45,13 @@ class Html extends BasicOutput { writer = null; } + String format = Instance.getConfig() + .getString(Config.IMAGE_FORMAT_COVER).toLowerCase(); + if (story.getMeta().getCover() != null) { + ImageIO.write(story.getMeta().getCover(), format, new File(dir, + "cover." + format)); + } + return target; } @@ -49,8 +63,39 @@ class Html extends BasicOutput { @Override protected void writeStoryHeader(Story story) throws IOException { String title = ""; + String tags = ""; + String author = ""; + Chapter resume = null; if (story.getMeta() != null) { - title = story.getMeta().getTitle(); + MetaData meta = story.getMeta(); + title = meta.getTitle(); + resume = meta.getResume(); + if (meta.getTags() != null) { + for (String tag : meta.getTags()) { + if (!tags.isEmpty()) { + tags += ", "; + } + tags += tag; + } + + if (!tags.isEmpty()) { + tags = "(" + tags + ")"; + } + } + author = meta.getAuthor(); + } + + String format = Instance.getConfig() + .getString(Config.IMAGE_FORMAT_COVER).toLowerCase(); + + InputStream inStyle = getClass().getResourceAsStream("html.style.css"); + if (inStyle == null) { + throw new IOException("Cannot find style.css resource"); + } + try { + IOUtils.write(inStyle, new File(dir, "style.css")); + } finally { + inStyle.close(); } writer.write(""); @@ -58,11 +103,39 @@ class Html extends BasicOutput { writer.write("\n"); writer.write("\n "); writer.write("\n "); + writer.write("\n "); writer.write("\n " + StringUtils.xmlEscape(title) + ""); writer.write("\n"); writer.write("\n\n"); - writer.write("

" + StringUtils.xmlEscape(title) + "

\n\n"); + writer.write("\n
"); + writer.write("\n

" + StringUtils.xmlEscape(title) + "

"); + writer.write("\n
" + StringUtils.xmlEscape(tags) + + "
"); + writer.write("\n
"); + writer.write("\n "); + writer.write("\n
"); + writer.write("\n
" + + StringUtils.xmlEscape(author) + "
"); + writer.write("\n
"); + + writer.write("\n

"); + + if (resume != null) { + for (Paragraph para : resume) { + writeParagraph(para); + } + if (inDialogue) { + writer.write(" \n"); + inDialogue = false; + } + if (inNormal) { + writer.write(" \n"); + inNormal = false; + } + } + + writer.write("\n
"); } @Override @@ -72,21 +145,40 @@ class Html extends BasicOutput { @Override protected void writeChapterHeader(Chapter chap) throws IOException { - String txt; + String nameOrNumber; if (chap.getName() != null && !chap.getName().isEmpty()) { - txt = Instance.getTrans().getString(StringId.CHAPTER_NAMED, - chap.getNumber(), chap.getName()); + nameOrNumber = chap.getName(); } else { - txt = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED, - chap.getNumber()); + nameOrNumber = Integer.toString(chap.getNumber()); } - writer.write("

" + StringUtils.xmlEscape(txt) + "

\n\n"); + writer.write("\n

"); + writer.write("\n Chapter " + + chap.getNumber() + ": "); + writer.write("\n " + + StringUtils.xmlEscape(nameOrNumber) + ""); + writer.write("\n

"); + writer.write("\n "); + writer.write("\n
\n"); inDialogue = false; inNormal = false; } + @Override + protected void writeChapterFooter(Chapter chap) throws IOException { + if (inDialogue) { + writer.write("
\n"); + inDialogue = false; + } + if (inNormal) { + writer.write(" \n"); + inNormal = false; + } + + writer.write("\n "); + } + @Override protected void writeParagraphHeader(Paragraph para) throws IOException { if (para.getType() == ParagraphType.QUOTE && !inDialogue) {