mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-16 00:26:07 +09:00
btex: part page fixed
This commit is contained in:
@@ -6,17 +6,14 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
|||||||
import com.jme3.math.FastMath.DEG_TO_RAD
|
import com.jme3.math.FastMath.DEG_TO_RAD
|
||||||
import net.torvald.colourutil.OKLch
|
import net.torvald.colourutil.OKLch
|
||||||
import net.torvald.colourutil.tosRGB
|
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.BTeXBatchDrawCall
|
||||||
import net.torvald.terrarum.btex.BTeXDocument
|
import net.torvald.terrarum.btex.BTeXDocument
|
||||||
import net.torvald.terrarum.btex.BTeXDocument.Companion.DEFAULT_ORNAMENTS_COL
|
import net.torvald.terrarum.btex.BTeXDocument.Companion.DEFAULT_ORNAMENTS_COL
|
||||||
import net.torvald.terrarum.btex.BTeXDrawCall
|
import net.torvald.terrarum.btex.BTeXDrawCall
|
||||||
import net.torvald.terrarum.btex.TypesetDrawCall
|
import net.torvald.terrarum.btex.TypesetDrawCall
|
||||||
import net.torvald.terrarum.ceilToFloat
|
|
||||||
import net.torvald.terrarum.gameitems.ItemID
|
import net.torvald.terrarum.gameitems.ItemID
|
||||||
import net.torvald.terrarum.langpack.Lang
|
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.terrarum.ui.Toolkit
|
||||||
import net.torvald.terrarumsansbitmap.MovableType
|
import net.torvald.terrarumsansbitmap.MovableType
|
||||||
import net.torvald.terrarumsansbitmap.TypesettingStrategy
|
import net.torvald.terrarumsansbitmap.TypesettingStrategy
|
||||||
@@ -762,24 +759,14 @@ object BTeXParser {
|
|||||||
|
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemMANUSCRIPT(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
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 TOC page size, renumber indexMap and cptSectMap if needed, then typeset the toc
|
||||||
if (tocPage != null) {
|
if (tocPage != null) {
|
||||||
// estimate the number of TOC pages
|
// 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
|
// renumber things
|
||||||
if (tocSizeInPages > 1) {
|
if (tocSizeInPages > 1) {
|
||||||
@@ -1032,7 +1019,7 @@ object BTeXParser {
|
|||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemPART(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
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()
|
if (doc.currentPageObj.isNotEmpty()) doc.addNewPage()
|
||||||
|
|
||||||
val partOrder = cptSectMap.count { it.type.startsWith("part") } + 1
|
val partOrder = cptSectMap.count { it.type.startsWith("part") } + 1
|
||||||
@@ -1220,7 +1207,8 @@ object BTeXParser {
|
|||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc.currentPage % 2 == 0)
|
// make sure page after the part always openright
|
||||||
|
if (doc.currentPage % 2 == 1)
|
||||||
doc.addNewPage()
|
doc.addNewPage()
|
||||||
|
|
||||||
doc.addNewPage()
|
doc.addNewPage()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import kotlin.system.measureTimeMillis
|
|||||||
*/
|
*/
|
||||||
class BTeXTest : ApplicationAdapter() {
|
class BTeXTest : ApplicationAdapter() {
|
||||||
|
|
||||||
val filePath = "btex_ko.xml"
|
val filePath = "btex.xml"
|
||||||
// val filePath = "test.xml"
|
// val filePath = "test.xml"
|
||||||
// val filePath = "literature/en/daniel_defoe_robinson_crusoe.xml"
|
// val filePath = "literature/en/daniel_defoe_robinson_crusoe.xml"
|
||||||
// val filePath = "literature/ruRU/anton_chekhov_palata_no_6.xml"
|
// val filePath = "literature/ruRU/anton_chekhov_palata_no_6.xml"
|
||||||
|
|||||||
Reference in New Issue
Block a user