From 68f5d5c5dad0914c19fee7f1a79c0be9ea877834 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 8 May 2024 17:49:46 +0900 Subject: [PATCH] btex: part page fixed --- src/net/torvald/btex/BTeXParser.kt | 30 +++++++--------------- src/net/torvald/terrarum/tests/BTeXTest.kt | 2 +- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/net/torvald/btex/BTeXParser.kt b/src/net/torvald/btex/BTeXParser.kt index ffceae1ae..542b41f34 100644 --- a/src/net/torvald/btex/BTeXParser.kt +++ b/src/net/torvald/btex/BTeXParser.kt @@ -6,17 +6,14 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.jme3.math.FastMath.DEG_TO_RAD import net.torvald.colourutil.OKLch import net.torvald.colourutil.tosRGB -import net.torvald.terrarum.App +import net.torvald.terrarum.* import net.torvald.terrarum.btex.BTeXBatchDrawCall import net.torvald.terrarum.btex.BTeXDocument import net.torvald.terrarum.btex.BTeXDocument.Companion.DEFAULT_ORNAMENTS_COL import net.torvald.terrarum.btex.BTeXDrawCall import net.torvald.terrarum.btex.TypesetDrawCall -import net.torvald.terrarum.ceilToFloat import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.toHex -import net.torvald.terrarum.tryDispose import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarumsansbitmap.MovableType import net.torvald.terrarumsansbitmap.TypesettingStrategy @@ -762,24 +759,14 @@ object BTeXParser { @CloseTag fun closeElemMANUSCRIPT(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) { - // setup pages such that: - // toc: openright (done on processElemTOCPAGE) - // first chapter: openright - // second+ chapter: openany - if (cptSectMap.isNotEmpty() && cptSectMap.first().pagenum % 2 == 1) { - doc.addNewPageAt(cptSectMap.first().pagenum) - cptSectMap.forEach { it.pagenum += 1 } - } - else if (cptSectMap.isNotEmpty()) { - doc.addNewPageAt(cptSectMap.first().pagenum) - doc.addNewPageAt(cptSectMap.first().pagenum) - cptSectMap.forEach { it.pagenum += 2 } - } - // if tocPage != null, estimate TOC page size, renumber indexMap and cptSectMap if needed, then typeset the toc if (tocPage != null) { // estimate the number of TOC pages - val tocSizeInPages = (cptSectMap.size + 2) / doc.pageLines + // TOC page always takes up a full paper, therefore tocSizeInPages is always multiple of 2 + var tocSizeInPages = (cptSectMap.size + 2) / doc.pageLines + if (tocSizeInPages == 0) tocSizeInPages = 2 + if (tocSizeInPages % 2 == 1) tocSizeInPages += 1 + // renumber things if (tocSizeInPages > 1) { @@ -1032,7 +1019,7 @@ object BTeXParser { } @CloseTag // reflective access is impossible with 'private' fun closeElemPART(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) { - // if the last page is not empty, create new oen + // if the last page is not empty, create new one if (doc.currentPageObj.isNotEmpty()) doc.addNewPage() val partOrder = cptSectMap.count { it.type.startsWith("part") } + 1 @@ -1220,7 +1207,8 @@ object BTeXParser { println() } - if (doc.currentPage % 2 == 0) + // make sure page after the part always openright + if (doc.currentPage % 2 == 1) doc.addNewPage() doc.addNewPage() diff --git a/src/net/torvald/terrarum/tests/BTeXTest.kt b/src/net/torvald/terrarum/tests/BTeXTest.kt index bf36218c7..7309134b4 100644 --- a/src/net/torvald/terrarum/tests/BTeXTest.kt +++ b/src/net/torvald/terrarum/tests/BTeXTest.kt @@ -24,7 +24,7 @@ import kotlin.system.measureTimeMillis */ class BTeXTest : ApplicationAdapter() { - val filePath = "btex_ko.xml" + val filePath = "btex.xml" // val filePath = "test.xml" // val filePath = "literature/en/daniel_defoe_robinson_crusoe.xml" // val filePath = "literature/ruRU/anton_chekhov_palata_no_6.xml"