mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-17 00:56:07 +09:00
stateless span and such
This commit is contained in:
@@ -80,21 +80,12 @@ object BTeXParser {
|
|||||||
|
|
||||||
private var btexOpened = false
|
private var btexOpened = false
|
||||||
|
|
||||||
// private var pageWidth = doc.textWidth
|
|
||||||
// private var pageLines = doc.pageLines
|
|
||||||
// private var pageHeight = doc.textHeight
|
|
||||||
|
|
||||||
private val blockLut = HashMap<String, ItemID>()
|
private val blockLut = HashMap<String, ItemID>()
|
||||||
|
|
||||||
private val tagStack = ArrayList<String>() // index zero should be "btex"
|
private val tagStack = ArrayList<String>() // index zero should be "btex"
|
||||||
private var tagHistory = ArrayList<String>()
|
private var tagHistory = ArrayList<String>()
|
||||||
|
|
||||||
private var currentTheme = ""
|
private var currentTheme = ""
|
||||||
private var spanColour: String? = null
|
|
||||||
private var codeMode: Boolean = false
|
|
||||||
private var hrefMode: Boolean = false
|
|
||||||
private var bucksMode: Boolean = false
|
|
||||||
|
|
||||||
|
|
||||||
private val elemOpeners: HashMap<String, KFunction<*>> = HashMap()
|
private val elemOpeners: HashMap<String, KFunction<*>> = HashMap()
|
||||||
private val elemClosers: HashMap<String, KFunction<*>> = HashMap()
|
private val elemClosers: HashMap<String, KFunction<*>> = HashMap()
|
||||||
@@ -105,10 +96,6 @@ object BTeXParser {
|
|||||||
fun clearParBuffer() {
|
fun clearParBuffer() {
|
||||||
paragraphBuffer.clear()
|
paragraphBuffer.clear()
|
||||||
currentAlign = "justify"
|
currentAlign = "justify"
|
||||||
codeMode = false
|
|
||||||
hrefMode = false
|
|
||||||
bucksMode = false
|
|
||||||
spanColour = null
|
|
||||||
currentTheme = ""
|
currentTheme = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,26 +205,6 @@ object BTeXParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private fun getOrPutCodeTagRef(width: Int): ((BTeXDrawCall) -> BTeXBatchDrawCall)? {
|
|
||||||
val tagname = "TAG@CODE-$width"
|
|
||||||
if (!objDict.contains(tagname)) {
|
|
||||||
objWidthDict[tagname] = 0
|
|
||||||
objDict[tagname] = { text: BTeXDrawCall ->
|
|
||||||
object : BTeXBatchDrawCall(0, 0, text) {
|
|
||||||
override fun draw(doc: BTeXDocument, batch: SpriteBatch, x: Float, y: Float, font: TerrarumSansBitmap?) {
|
|
||||||
val oldcol = batch.color.cpy()
|
|
||||||
batch.color = Color(0xccccccff.toInt())
|
|
||||||
Toolkit.fillArea(batch, x - 2, y, width + 4f, doc.lineHeightInPx.toFloat())
|
|
||||||
batch.color = Color(0x999999ff.toInt())
|
|
||||||
Toolkit.drawBoxBorder(batch, x - 2, y, width + 4f, doc.lineHeightInPx.toFloat())
|
|
||||||
batch.color = oldcol
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return objDict[tagname]
|
|
||||||
}*/
|
|
||||||
|
|
||||||
fun dispose() {
|
fun dispose() {
|
||||||
if (::testFont.isInitialized) testFont.tryDispose()
|
if (::testFont.isInitialized) testFont.tryDispose()
|
||||||
if (::titleFont.isInitialized) titleFont.tryDispose()
|
if (::titleFont.isInitialized) titleFont.tryDispose()
|
||||||
@@ -342,13 +309,27 @@ object BTeXParser {
|
|||||||
private var oldBucksMode = false
|
private var oldBucksMode = false
|
||||||
private val CODE_TAG_MARGIN = 2
|
private val CODE_TAG_MARGIN = 2
|
||||||
|
|
||||||
private fun spanColToColourCode(): String? {
|
private val CODEMODE_BEGIN = "${glueToString(CODE_TAG_MARGIN)}$ccCode${TerrarumSansBitmap.charsetOverrideCodestyle}"
|
||||||
val spanGdxCol = getSpanColourOrNull()
|
private val CODEMODE_END = "${TerrarumSansBitmap.charsetOverrideDefault}$ccDefault${glueToString(CODE_TAG_MARGIN)}"
|
||||||
if (spanGdxCol == null) return null
|
|
||||||
|
private val HREF_BEGIN = "$ccHref"
|
||||||
|
private val HREF_END = "$ccDefault"
|
||||||
|
|
||||||
|
private val BUCKS_BEGIN = "$ccBucks"
|
||||||
|
private val BUCKS_END = "$ccDefault"
|
||||||
|
|
||||||
|
private val EMPH_BEGIN = "$ccEmph"
|
||||||
|
private val EMPH_END = "$ccDefault"
|
||||||
|
private val ITEMNAME_BEGIN = "$ccItemName"
|
||||||
|
private val TARGETNAME_BEGIN = "$ccTargetName"
|
||||||
|
|
||||||
|
private val SPAN_END = "$ccDefault${TerrarumSansBitmap.charsetOverrideDefault}"
|
||||||
|
|
||||||
|
private fun Color.toCC(): String {
|
||||||
return TerrarumSansBitmap.toColorCode(
|
return TerrarumSansBitmap.toColorCode(
|
||||||
spanGdxCol.r.times(15f).roundToInt(),
|
this.r.times(15f).roundToInt(),
|
||||||
spanGdxCol.g.times(15f).roundToInt(),
|
this.g.times(15f).roundToInt(),
|
||||||
spanGdxCol.b.times(15f).roundToInt()
|
this.b.times(15f).roundToInt()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,74 +339,10 @@ object BTeXParser {
|
|||||||
|
|
||||||
if (str.isNotEmpty()) {
|
if (str.isNotEmpty()) {
|
||||||
// printdbg("Characters [col:${spanColour}] \t\"$str\"")
|
// printdbg("Characters [col:${spanColour}] \t\"$str\"")
|
||||||
// process span request
|
|
||||||
val spanCC = spanColToColourCode()
|
|
||||||
|
|
||||||
if (spanColour != oldSpanColour || spanColour != null) {
|
|
||||||
paragraphBuffer.append(spanCC ?: ccDefault)
|
|
||||||
}
|
|
||||||
|
|
||||||
// process code request
|
|
||||||
if (codeMode != oldCodeMode || codeMode) {
|
|
||||||
if (!codeMode) {
|
|
||||||
paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideDefault)
|
|
||||||
paragraphBuffer.append(ccDefault)
|
|
||||||
paragraphBuffer.append(glueToString(CODE_TAG_MARGIN))
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// println("CODE tag for str '$str'")
|
|
||||||
// val w = getFont().getWidth(str) + 2*CODE_TAG_MARGIN
|
|
||||||
// getOrPutCodeTagRef(w)
|
|
||||||
// paragraphBuffer.appendObjectPlaceholder("TAG@CODE-${w}")
|
|
||||||
paragraphBuffer.append(glueToString(CODE_TAG_MARGIN))
|
|
||||||
paragraphBuffer.append(spanCC ?: ccCode)
|
|
||||||
paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideCodestyle)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// process href request
|
|
||||||
if (hrefMode != oldHrefMode || hrefMode) {
|
|
||||||
if (!hrefMode) {
|
|
||||||
paragraphBuffer.append(ccDefault)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
paragraphBuffer.append(ccHref)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// process bucks request
|
|
||||||
if (bucksMode != oldBucksMode || bucksMode) {
|
|
||||||
if (!bucksMode) {
|
|
||||||
paragraphBuffer.append(ccDefault)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
paragraphBuffer.append(ccBucks)
|
|
||||||
str = str.replace(' ', '\u00A0')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
paragraphBuffer.append(str)
|
paragraphBuffer.append(str)
|
||||||
|
|
||||||
oldSpanColour = spanColour
|
|
||||||
oldCodeMode = codeMode
|
|
||||||
oldHrefMode = hrefMode
|
|
||||||
oldBucksMode = bucksMode
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private fun Color?.toInternalColourCodeStr(): String {
|
|
||||||
return if (this == null) "\u000E"
|
|
||||||
else {
|
|
||||||
val rgba = this.toRGBA()
|
|
||||||
val r = rgba.ushr(24).and(255) + 0xF800
|
|
||||||
val g = rgba.ushr(16).and(255) + 0xF800
|
|
||||||
val b = rgba.ushr(8).and(255) + 0xF800
|
|
||||||
|
|
||||||
return "\u000F" + Char(r) + Char(g) + Char(b)
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private fun getFont() = when (cover) {
|
private fun getFont() = when (cover) {
|
||||||
"typewriter" -> TODO()
|
"typewriter" -> TODO()
|
||||||
else -> {
|
else -> {
|
||||||
@@ -452,13 +369,11 @@ object BTeXParser {
|
|||||||
private val hexColRegexRGBshort = Regex("#[0-9a-fA-F]{3,3}")
|
private val hexColRegexRGBshort = Regex("#[0-9a-fA-F]{3,3}")
|
||||||
private val hexColRegexRGB = Regex("#[0-9a-fA-F]{6,6}")
|
private val hexColRegexRGB = Regex("#[0-9a-fA-F]{6,6}")
|
||||||
|
|
||||||
private fun getSpanColourOrNull() = if (spanColour == null) null else getSpanColour()
|
private fun getSpanColour(spanColour: String): Color =
|
||||||
|
if (spanColour.matches(hexColRegexRGB)) {
|
||||||
private fun getSpanColour(): Color = if (spanColour == null) Color.BLACK
|
val rs = spanColour.substring(1,3)
|
||||||
else if (spanColour!!.matches(hexColRegexRGB)) {
|
val gs = spanColour.substring(3,5)
|
||||||
val rs = spanColour!!.substring(1,3)
|
val bs = spanColour.substring(5,7)
|
||||||
val gs = spanColour!!.substring(3,5)
|
|
||||||
val bs = spanColour!!.substring(5,7)
|
|
||||||
|
|
||||||
val r = rs.toInt(16) / 255f
|
val r = rs.toInt(16) / 255f
|
||||||
val g = gs.toInt(16) / 255f
|
val g = gs.toInt(16) / 255f
|
||||||
@@ -466,10 +381,10 @@ object BTeXParser {
|
|||||||
|
|
||||||
Color(r, g, b, 1f)
|
Color(r, g, b, 1f)
|
||||||
}
|
}
|
||||||
else if (spanColour!!.matches(hexColRegexRGBshort)) {
|
else if (spanColour.matches(hexColRegexRGBshort)) {
|
||||||
val rs = spanColour!!.substring(1,2)
|
val rs = spanColour.substring(1,2)
|
||||||
val gs = spanColour!!.substring(2,3)
|
val gs = spanColour.substring(2,3)
|
||||||
val bs = spanColour!!.substring(3,4)
|
val bs = spanColour.substring(3,4)
|
||||||
|
|
||||||
val r = rs.toInt(16) / 15f
|
val r = rs.toInt(16) / 15f
|
||||||
val g = gs.toInt(16) / 15f
|
val g = gs.toInt(16) / 15f
|
||||||
@@ -658,22 +573,18 @@ object BTeXParser {
|
|||||||
"examination" to 18,
|
"examination" to 18,
|
||||||
)
|
)
|
||||||
|
|
||||||
private val ccEmph = "#C11"// TerrarumSansBitmap.toColorCode(0xfd44)
|
|
||||||
private val ccItemName = "#03B" // TerrarumSansBitmap.toColorCode(0xf37d)
|
|
||||||
private val ccTargetName = "#170" // TerrarumSansBitmap.toColorCode(0xf3c4)
|
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemBTEXDOC(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemBTEXDOC(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
if (handler.btexOpened) {
|
if (btexOpened) {
|
||||||
throw BTeXParsingException("BTEXDOC tag has already opened")
|
throw BTeXParsingException("BTEXDOC tag has already opened")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribs.containsKey("def"))
|
if (attribs.containsKey("def"))
|
||||||
handler.def = attribs["def"]!!
|
def = attribs["def"]!!
|
||||||
else {
|
else {
|
||||||
handler.cover = attribs["cover"] ?: "printout"
|
cover = attribs["cover"] ?: "printout"
|
||||||
handler.inner = attribs["inner"] ?: "standard"
|
inner = attribs["inner"] ?: "standard"
|
||||||
handler.papersize = attribs["papersize"] ?: "standard"
|
papersize = attribs["papersize"] ?: "standard"
|
||||||
|
|
||||||
//change the "default values" of the document
|
//change the "default values" of the document
|
||||||
|
|
||||||
@@ -681,7 +592,7 @@ object BTeXParser {
|
|||||||
doc.pageLines = pageHeightMap[papersize]!!
|
doc.pageLines = pageHeightMap[papersize]!!
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.btexOpened = true
|
btexOpened = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
@@ -701,45 +612,47 @@ object BTeXParser {
|
|||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemSUBTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemSUBTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemAUTHOR(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemAUTHOR(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemEDITION(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemEDITION(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemEMPH(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemEMPH(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.spanColour = ccEmph
|
paragraphBuffer.append(EMPH_BEGIN)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemITEMNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemITEMNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.spanColour = ccItemName
|
paragraphBuffer.append(ITEMNAME_BEGIN)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemTARGETNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemTARGETNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.spanColour = ccTargetName
|
paragraphBuffer.append(TARGETNAME_BEGIN)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemSPAN(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemSPAN(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.spanColour = attribs["colour"] ?: attribs["color"]
|
val col = attribs["colour"] ?: attribs["color"]
|
||||||
|
|
||||||
if (attribs["class"] == "code") {
|
if (col != null)
|
||||||
handler.codeMode = true
|
paragraphBuffer.append(getSpanColour(col).toCC())
|
||||||
}
|
|
||||||
|
if (attribs["class"] == "code")
|
||||||
|
paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideCodestyle)
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag
|
@CloseTag
|
||||||
@@ -748,51 +661,51 @@ object BTeXParser {
|
|||||||
fun closeElemITEMNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) = closeElemEMPH(handler, doc, uri, siblingIndex)
|
fun closeElemITEMNAME(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) = closeElemEMPH(handler, doc, uri, siblingIndex)
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemEMPH(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemEMPH(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
handler.spanColour = null
|
paragraphBuffer.append(EMPH_END)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemBTEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemBTEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.paragraphBuffer.appendObjectPlaceholder("TAG@BTEX")
|
paragraphBuffer.appendObjectPlaceholder("TAG@BTEX")
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemLATEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemLATEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.paragraphBuffer.appendObjectPlaceholder("TAG@LATEX")
|
paragraphBuffer.appendObjectPlaceholder("TAG@LATEX")
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemTEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemTEX(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.paragraphBuffer.appendObjectPlaceholder("TAG@TEX")
|
paragraphBuffer.appendObjectPlaceholder("TAG@TEX")
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemCODE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemCODE(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.codeMode = true
|
paragraphBuffer.append(CODEMODE_BEGIN)
|
||||||
}
|
}
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemCODE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemCODE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
handler.codeMode = false
|
paragraphBuffer.append(CODEMODE_END)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemA(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemA(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.hrefMode = true
|
paragraphBuffer.append(HREF_BEGIN)
|
||||||
}
|
}
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemA(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemA(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
handler.hrefMode = false
|
paragraphBuffer.append(HREF_END)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.bucksMode = true
|
paragraphBuffer.append(BUCKS_BEGIN)
|
||||||
handler.paragraphBuffer.append("$ccBucks$CURRENCY\u00A0")
|
paragraphBuffer.append("$ccBucks$CURRENCY\u00A0")
|
||||||
}
|
}
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemBUCKS(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
handler.bucksMode = false
|
paragraphBuffer.append(BUCKS_END)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -804,7 +717,6 @@ object BTeXParser {
|
|||||||
val (r, g, b) = coverColLCH.tosRGB()
|
val (r, g, b) = coverColLCH.tosRGB()
|
||||||
coverCol = Color(r, g, b, 1f)
|
coverCol = Color(r, g, b, 1f)
|
||||||
doc.addNewPage(coverCol!!)
|
doc.addNewPage(coverCol!!)
|
||||||
// handler.spanColour = "white"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
@@ -824,12 +736,12 @@ object BTeXParser {
|
|||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemTABLEOFCONTENTS(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemTABLEOFCONTENTS(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
tocPage = doc.currentPage
|
tocPage = doc.currentPage
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemTABLEOFINDICES(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemTABLEOFINDICES(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
// prepare contents
|
// prepare contents
|
||||||
val pageWidth = doc.textWidth
|
val pageWidth = doc.textWidth
|
||||||
@@ -918,12 +830,12 @@ object BTeXParser {
|
|||||||
else if (hasID) {
|
else if (hasID) {
|
||||||
val it = attribs["id"]!!
|
val it = attribs["id"]!!
|
||||||
val value = varMap[it] ?: throw NullPointerException("No variable definition of '$it'")
|
val value = varMap[it] ?: throw NullPointerException("No variable definition of '$it'")
|
||||||
handler.paragraphBuffer.append(value)
|
paragraphBuffer.append(value)
|
||||||
}
|
}
|
||||||
else if (hasFROMGAME) {
|
else if (hasFROMGAME) {
|
||||||
val it = attribs["fromgame"]!!
|
val it = attribs["fromgame"]!!
|
||||||
val value = Lang.get(it, true)
|
val value = Lang.get(it, true)
|
||||||
handler.paragraphBuffer.append(value)
|
paragraphBuffer.append(value)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw IllegalStateException("One of following attribute required: id, fromgame")
|
throw IllegalStateException("One of following attribute required: id, fromgame")
|
||||||
@@ -938,7 +850,7 @@ object BTeXParser {
|
|||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemBR(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemBR(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.paragraphBuffer.append("\n")
|
paragraphBuffer.append("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
@@ -974,38 +886,34 @@ object BTeXParser {
|
|||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemP(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemP(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
currentAlign = attribs["align"] ?: "justify"
|
currentAlign = attribs["align"] ?: "justify"
|
||||||
|
|
||||||
if (attribs["class"] == "code") {
|
if (attribs["class"] == "code")
|
||||||
handler.codeMode = true
|
paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideCodestyle)
|
||||||
handler.spanColour = "black"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemCALLOUT(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemCALLOUT(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
currentAlign = attribs["align"] ?: "justify"
|
currentAlign = attribs["align"] ?: "justify"
|
||||||
|
|
||||||
if (attribs["class"] == "code") {
|
if (attribs["class"] == "code")
|
||||||
handler.codeMode = true
|
paragraphBuffer.append(TerrarumSansBitmap.charsetOverrideCodestyle)
|
||||||
handler.spanColour = "black"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemCALLOUT(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemCALLOUT(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
// if this P is a very first P without chapters, leave two lines before typesetting
|
// if this P is a very first P without chapters, leave two lines before typesetting
|
||||||
val penultTag = tagHistory.getOrNull(tagHistory.lastIndex - 1)
|
val penultTag = tagHistory.getOrNull(tagHistory.lastIndex - 1)
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
if (penultTag == "MANUSCRIPT")
|
if (penultTag == "MANUSCRIPT")
|
||||||
doc.linesPrintedOnPage[doc.currentPage] += 2
|
doc.linesPrintedOnPage[doc.currentPage] += 2
|
||||||
|
|
||||||
|
|
||||||
typesetParagraphs("$ccDefault$thePar", handler, width = doc.textWidth - 2*MARGIN_PARBOX_H, align = handler.currentAlign).forEachIndexed { index, it ->
|
typesetParagraphs("$ccDefault$thePar", handler, width = doc.textWidth - 2*MARGIN_PARBOX_H, align = currentAlign).forEachIndexed { index, it ->
|
||||||
it.posX += MARGIN_PARBOX_H
|
it.posX += MARGIN_PARBOX_H
|
||||||
it.deltaX += MARGIN_PARBOX_H
|
it.deltaX += MARGIN_PARBOX_H
|
||||||
|
|
||||||
@@ -1043,7 +951,7 @@ object BTeXParser {
|
|||||||
if (doc.linesPrintedOnPage[doc.currentPage] < doc.pageLines)
|
if (doc.linesPrintedOnPage[doc.currentPage] < doc.pageLines)
|
||||||
doc.linesPrintedOnPage[doc.currentPage] += 1
|
doc.linesPrintedOnPage[doc.currentPage] += 1
|
||||||
|
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag
|
@CloseTag
|
||||||
@@ -1051,13 +959,11 @@ object BTeXParser {
|
|||||||
typesetParagraphs("${ccDefault}――――――――――――", handler, align = "left").also {it.first().let {
|
typesetParagraphs("${ccDefault}――――――――――――", handler, align = "left").also {it.first().let {
|
||||||
it.posX += (doc.textWidth - it.width) / 2
|
it.posX += (doc.textWidth - it.width) / 2
|
||||||
} }
|
} }
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag
|
@CloseTag
|
||||||
fun closeElemCOVER(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemCOVER(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
handler.spanColour = null
|
|
||||||
|
|
||||||
if (hasCover) {
|
if (hasCover) {
|
||||||
doc.addNewPage()
|
doc.addNewPage()
|
||||||
}
|
}
|
||||||
@@ -1065,33 +971,33 @@ object BTeXParser {
|
|||||||
|
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
typesetBookTitle(thePar, handler)
|
typesetBookTitle(thePar, handler)
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
doc.theTitle = thePar.replace("\n", " ")
|
doc.theTitle = thePar.replace("\n", " ")
|
||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemSUBTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemSUBTITLE(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
typesetBookEdition(thePar, handler)
|
typesetBookEdition(thePar, handler)
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
doc.theSubtitle = thePar.replace("\n", " ")
|
doc.theSubtitle = thePar.replace("\n", " ")
|
||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemAUTHOR(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemAUTHOR(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
typesetBookAuthor(thePar, handler)
|
typesetBookAuthor(thePar, handler)
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
doc.theAuthor = thePar.replace("\n", " ")
|
doc.theAuthor = thePar.replace("\n", " ")
|
||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemEDITION(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemEDITION(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
typesetBookEdition(thePar, handler)
|
typesetBookEdition(thePar, handler)
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
doc.theEdition = thePar.replace("\n", " ")
|
doc.theEdition = thePar.replace("\n", " ")
|
||||||
}
|
}
|
||||||
@@ -1099,7 +1005,7 @@ object BTeXParser {
|
|||||||
|
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemPART(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemPART(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
if (attribs["hide"] == null)
|
if (attribs["hide"] == null)
|
||||||
cptSectStack.add(CptSect("part", attribs["alt"], attribs["type"] ?: "I", attribs["start"]?.toInt()))
|
cptSectStack.add(CptSect("part", attribs["alt"], attribs["type"] ?: "I", attribs["start"]?.toInt()))
|
||||||
@@ -1108,7 +1014,7 @@ object BTeXParser {
|
|||||||
}
|
}
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemCHAPTER(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemCHAPTER(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
if (attribs["hide"] == null)
|
if (attribs["hide"] == null)
|
||||||
cptSectStack.add(CptSect("chapter", attribs["alt"], attribs["type"] ?: "1", attribs["start"]?.toInt()))
|
cptSectStack.add(CptSect("chapter", attribs["alt"], attribs["type"] ?: "1", attribs["start"]?.toInt()))
|
||||||
@@ -1117,7 +1023,7 @@ object BTeXParser {
|
|||||||
}
|
}
|
||||||
@OpenTag // reflective access is impossible with 'private'
|
@OpenTag // reflective access is impossible with 'private'
|
||||||
fun processElemSECTION(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
fun processElemSECTION(handler: BTeXHandler, doc: BTeXDocument, uri: String, attribs: HashMap<String, String>) {
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
|
|
||||||
if (attribs["hide"] == null)
|
if (attribs["hide"] == null)
|
||||||
cptSectStack.add(CptSect("section", attribs["alt"], attribs["type"] ?: "1", attribs["start"]?.toInt()))
|
cptSectStack.add(CptSect("section", attribs["alt"], attribs["type"] ?: "1", attribs["start"]?.toInt()))
|
||||||
@@ -1130,7 +1036,7 @@ object BTeXParser {
|
|||||||
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
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
|
|
||||||
val cptSectInfo = cptSectStack.removeLast()
|
val cptSectInfo = cptSectStack.removeLast()
|
||||||
val partNumStr = partOrder.toListNumStr(cptSectInfo.style)
|
val partNumStr = partOrder.toListNumStr(cptSectInfo.style)
|
||||||
@@ -1139,7 +1045,7 @@ object BTeXParser {
|
|||||||
if (!cptSectInfo.type.endsWith("-hidden"))
|
if (!cptSectInfo.type.endsWith("-hidden"))
|
||||||
cptSectMap.add(CptSectInfo("part", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, null, null))
|
cptSectMap.add(CptSectInfo("part", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, null, null))
|
||||||
|
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemCHAPTER(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemCHAPTER(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
@@ -1149,7 +1055,7 @@ object BTeXParser {
|
|||||||
val partOrder = cptSectMap.count { it.type.startsWith("part") }
|
val partOrder = cptSectMap.count { it.type.startsWith("part") }
|
||||||
val cptOrder = cptSectMap.count { it.type.startsWith("chapter") } + 1
|
val cptOrder = cptSectMap.count { it.type.startsWith("chapter") } + 1
|
||||||
|
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
|
|
||||||
val cptSectInfo = cptSectStack.removeLast()
|
val cptSectInfo = cptSectStack.removeLast()
|
||||||
val partNumStr = partOrder.toListNumStr(cptSectStack.findLast { it.type.startsWith("part") }?.type ?: "1")
|
val partNumStr = partOrder.toListNumStr(cptSectStack.findLast { it.type.startsWith("part") }?.type ?: "1")
|
||||||
@@ -1159,7 +1065,7 @@ object BTeXParser {
|
|||||||
if (!cptSectInfo.type.endsWith("-hidden"))
|
if (!cptSectInfo.type.endsWith("-hidden"))
|
||||||
cptSectMap.add(CptSectInfo("chapter", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, cptNumStr, null))
|
cptSectMap.add(CptSectInfo("chapter", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, cptNumStr, null))
|
||||||
|
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemSECTION(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemSECTION(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
@@ -1181,7 +1087,7 @@ object BTeXParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
|
|
||||||
val cptSectInfo = cptSectStack.removeLast()
|
val cptSectInfo = cptSectStack.removeLast()
|
||||||
val partNumStr = partOrder.toListNumStr(cptSectStack.findLast { it.type.startsWith("part") }?.type ?: "1")
|
val partNumStr = partOrder.toListNumStr(cptSectStack.findLast { it.type.startsWith("part") }?.type ?: "1")
|
||||||
@@ -1192,7 +1098,7 @@ object BTeXParser {
|
|||||||
if (!cptSectInfo.type.endsWith("-hidden"))
|
if (!cptSectInfo.type.endsWith("-hidden"))
|
||||||
cptSectMap.add(CptSectInfo("section", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, cptNumStr, sectNumStr))
|
cptSectMap.add(CptSectInfo("section", cptSectInfo.alt ?: thePar, doc.currentPage, partNumStr, cptNumStr, sectNumStr))
|
||||||
|
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1201,7 +1107,7 @@ object BTeXParser {
|
|||||||
fun closeElemP(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemP(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
// if this P is a very first P without chapters, leave two lines before typesetting
|
// if this P is a very first P without chapters, leave two lines before typesetting
|
||||||
val penultTag = tagHistory.getOrNull(tagHistory.lastIndex - 1)
|
val penultTag = tagHistory.getOrNull(tagHistory.lastIndex - 1)
|
||||||
val thePar = handler.paragraphBuffer.toString().trim()
|
val thePar = paragraphBuffer.toString().trim()
|
||||||
|
|
||||||
val text =
|
val text =
|
||||||
// DON't indent on centering context
|
// DON't indent on centering context
|
||||||
@@ -1213,14 +1119,14 @@ object BTeXParser {
|
|||||||
// else, print the text normally
|
// else, print the text normally
|
||||||
else thePar
|
else thePar
|
||||||
|
|
||||||
typesetParagraphs("$ccDefault$text", handler, align = handler.currentAlign)
|
typesetParagraphs("$ccDefault$text", handler, align = currentAlign)
|
||||||
|
|
||||||
handler.clearParBuffer()
|
clearParBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag // reflective access is impossible with 'private'
|
@CloseTag // reflective access is impossible with 'private'
|
||||||
fun closeElemSPAN(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
fun closeElemSPAN(handler: BTeXHandler, doc: BTeXDocument, uri: String, siblingIndex: Int) {
|
||||||
spanColour = null
|
paragraphBuffer.append(SPAN_END)
|
||||||
}
|
}
|
||||||
|
|
||||||
@CloseTag
|
@CloseTag
|
||||||
@@ -1275,7 +1181,6 @@ object BTeXParser {
|
|||||||
private fun typesetPartHeading(num: String, thePar: String, handler: BTeXHandler, indent: Int = PAR_INDENTATION, width: Int = doc.textWidth) {
|
private fun typesetPartHeading(num: String, thePar: String, handler: BTeXHandler, indent: Int = PAR_INDENTATION, width: Int = doc.textWidth) {
|
||||||
typesetParagraphs("${ccDefault}⁃ $num ⁃", handler, align = "left")
|
typesetParagraphs("${ccDefault}⁃ $num ⁃", handler, align = "left")
|
||||||
typesetParagraphs(" ", handler, align = "left")
|
typesetParagraphs(" ", handler, align = "left")
|
||||||
// typesetParagraphs(getTitleFont(), "$ccDefault$thePar", handler)
|
|
||||||
typesetParagraphs(getSubtitleFont(), "$ccDefault$thePar", handler, align = "left")
|
typesetParagraphs(getSubtitleFont(), "$ccDefault$thePar", handler, align = "left")
|
||||||
|
|
||||||
// get global yDelta
|
// get global yDelta
|
||||||
@@ -1291,16 +1196,6 @@ object BTeXParser {
|
|||||||
page.drawCalls.forEach {
|
page.drawCalls.forEach {
|
||||||
val text = it.text?.getText()
|
val text = it.text?.getText()
|
||||||
val batchCall = it.cmd
|
val batchCall = it.cmd
|
||||||
/*if (text != null) {
|
|
||||||
println("Part draw call (${text.size} lines, pos: ${it.posX}, ${it.posY}, width: ${it.width}):" +
|
|
||||||
"\n${text.joinToString("\n") { it.toReadable() }}")
|
|
||||||
}
|
|
||||||
else if (batchCall != null) {
|
|
||||||
println("Part draw call (batch, pos: ${it.posX}, ${it.posY}, width: ${it.width})")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
println("wtf?")
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// set posX
|
// set posX
|
||||||
//// if the batchcall has parent text, use parent's delta value to move things around
|
//// if the batchcall has parent text, use parent's delta value to move things around
|
||||||
@@ -1325,29 +1220,6 @@ object BTeXParser {
|
|||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*doc.currentPageObj.let { page ->
|
|
||||||
val yStart = page.drawCalls.minOf { it.posY }
|
|
||||||
val yEnd = page.drawCalls.maxOf { it.posY + it.lineCount * doc.lineHeightInPx }
|
|
||||||
val pageHeight = doc.textHeight
|
|
||||||
|
|
||||||
val newYpos = (pageHeight - (yEnd - yStart)) / 2
|
|
||||||
val yDelta = newYpos - yStart
|
|
||||||
|
|
||||||
val xStart = page.drawCalls.minOf { it.posX }
|
|
||||||
val xEnd = page.drawCalls.maxOf { it.posX + it.width }
|
|
||||||
val pageWidth = doc.textWidth
|
|
||||||
|
|
||||||
val newXpos = (pageWidth - (xEnd - xStart)) / 2
|
|
||||||
val xDelta = newXpos - xStart
|
|
||||||
|
|
||||||
page.drawCalls.forEach {
|
|
||||||
it.posX += xDelta
|
|
||||||
it.posY += yDelta
|
|
||||||
}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
if (doc.currentPage % 2 == 0)
|
if (doc.currentPage % 2 == 0)
|
||||||
doc.addNewPage()
|
doc.addNewPage()
|
||||||
|
|
||||||
@@ -1459,7 +1331,7 @@ object BTeXParser {
|
|||||||
doc,
|
doc,
|
||||||
0,
|
0,
|
||||||
posYline * doc.lineHeightInPx,
|
posYline * doc.lineHeightInPx,
|
||||||
handler.currentTheme,
|
currentTheme,
|
||||||
TypesetDrawCall(slugs, lineStart, lineCount)
|
TypesetDrawCall(slugs, lineStart, lineCount)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -1488,7 +1360,7 @@ object BTeXParser {
|
|||||||
doc,
|
doc,
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
handler.currentTheme,
|
currentTheme,
|
||||||
cmd = objDict[idbuf.toString()]?.invoke(textDrawCall) ?: throw NullPointerException("No OBJ with id '$idbuf' exists"),
|
cmd = objDict[idbuf.toString()]?.invoke(textDrawCall) ?: throw NullPointerException("No OBJ with id '$idbuf' exists"),
|
||||||
font = font,
|
font = font,
|
||||||
)
|
)
|
||||||
@@ -1575,6 +1447,9 @@ object BTeXParser {
|
|||||||
val ccBucks = TerrarumSansBitmap.toColorCode(5,0,0)
|
val ccBucks = TerrarumSansBitmap.toColorCode(5,0,0)
|
||||||
val ccCode = TerrarumSansBitmap.toColorCode(0,4,8)
|
val ccCode = TerrarumSansBitmap.toColorCode(0,4,8)
|
||||||
val ccHref = TerrarumSansBitmap.toColorCode(0,3,11)
|
val ccHref = TerrarumSansBitmap.toColorCode(0,3,11)
|
||||||
|
val ccEmph = TerrarumSansBitmap.toColorCode(0xfc11)
|
||||||
|
val ccItemName = TerrarumSansBitmap.toColorCode(0xf03b)
|
||||||
|
val ccTargetName = TerrarumSansBitmap.toColorCode(0xf170)
|
||||||
|
|
||||||
private const val ZWSP = 0x200B
|
private const val ZWSP = 0x200B
|
||||||
private const val SHY = 0xAD
|
private const val SHY = 0xAD
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import kotlin.system.measureTimeMillis
|
|||||||
*/
|
*/
|
||||||
class BTeXTest : ApplicationAdapter() {
|
class BTeXTest : ApplicationAdapter() {
|
||||||
|
|
||||||
val filePath = "btex.xml"
|
val filePath = "btex_ko.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