|
|
|
@ -129,12 +129,13 @@ object ChapterProvider { |
|
|
|
|
matcher.appendTail(sb) |
|
|
|
|
text = sb.toString() |
|
|
|
|
val isTitle = index == 0 |
|
|
|
|
val isVolumeTitle = isTitle && contents.size == 1 |
|
|
|
|
val isTitleWithNoContent = isTitle && contents.size == 1 |
|
|
|
|
val isVolumeTitle = isTitle && bookChapter.isVolume |
|
|
|
|
val textPaint = if (isTitle) titlePaint else contentPaint |
|
|
|
|
if (!(isTitle && ReadBookConfig.titleMode == 2)) { |
|
|
|
|
setTypeText( |
|
|
|
|
absStartX, durY, text, textPages, stringBuilder, |
|
|
|
|
isTitle, isVolumeTitle, textPaint, srcList |
|
|
|
|
isTitle, isTitleWithNoContent, isVolumeTitle, textPaint, srcList |
|
|
|
|
).let { |
|
|
|
|
absStartX = it.first |
|
|
|
|
durY = it.second |
|
|
|
@ -147,12 +148,13 @@ object ChapterProvider { |
|
|
|
|
val text = content.substring(start, matcher.start()) |
|
|
|
|
if (text.isNotBlank()) { |
|
|
|
|
val isTitle = index == 0 |
|
|
|
|
val isVolumeTitle = isTitle && contents.size == 1 |
|
|
|
|
val isTitleWithNoContent = isTitle && contents.size == 1 |
|
|
|
|
val isVolumeTitle = isTitle && bookChapter.isVolume |
|
|
|
|
val textPaint = if (isTitle) titlePaint else contentPaint |
|
|
|
|
if (!(isTitle && ReadBookConfig.titleMode == 2)) { |
|
|
|
|
setTypeText( |
|
|
|
|
absStartX, durY, text, textPages, |
|
|
|
|
stringBuilder, isTitle, isVolumeTitle, textPaint |
|
|
|
|
absStartX, durY, text, textPages, stringBuilder, |
|
|
|
|
isTitle, isTitleWithNoContent, isVolumeTitle, textPaint |
|
|
|
|
).let { |
|
|
|
|
absStartX = it.first |
|
|
|
|
durY = it.second |
|
|
|
@ -169,12 +171,13 @@ object ChapterProvider { |
|
|
|
|
val text = content.substring(start, content.length) |
|
|
|
|
if (text.isNotBlank()) { |
|
|
|
|
val isTitle = index == 0 |
|
|
|
|
val isVolumeTitle = isTitle && contents.size == 1 |
|
|
|
|
val isTitleWithNoContent = isTitle && contents.size == 1 |
|
|
|
|
val isVolumeTitle = isTitle && bookChapter.isVolume |
|
|
|
|
val textPaint = if (isTitle) titlePaint else contentPaint |
|
|
|
|
if (!(isTitle && ReadBookConfig.titleMode == 2)) { |
|
|
|
|
setTypeText( |
|
|
|
|
absStartX, durY, text, textPages, |
|
|
|
|
stringBuilder, isTitle, isVolumeTitle, textPaint |
|
|
|
|
absStartX, durY, text, textPages, stringBuilder, |
|
|
|
|
isTitle, isTitleWithNoContent, isVolumeTitle, textPaint |
|
|
|
|
).let { |
|
|
|
|
absStartX = it.first |
|
|
|
|
durY = it.second |
|
|
|
@ -277,6 +280,7 @@ object ChapterProvider { |
|
|
|
|
textPages: ArrayList<TextPage>, |
|
|
|
|
stringBuilder: StringBuilder, |
|
|
|
|
isTitle: Boolean, |
|
|
|
|
isTitleWithNoContent: Boolean, |
|
|
|
|
isVolumeTitle: Boolean, |
|
|
|
|
textPaint: TextPaint, |
|
|
|
|
srcList: LinkedList<String>? = null |
|
|
|
@ -288,7 +292,8 @@ object ChapterProvider { |
|
|
|
|
text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true |
|
|
|
|
) |
|
|
|
|
var durY = when { |
|
|
|
|
isVolumeTitle -> ((visibleHeight - layout.lineCount * textPaint.textHeight) / 2).toFloat() |
|
|
|
|
//标题y轴居中 |
|
|
|
|
isTitleWithNoContent -> ((visibleHeight - layout.lineCount * textPaint.textHeight) / 2).toFloat() |
|
|
|
|
isTitle -> y + titleTopSpacing |
|
|
|
|
else -> y |
|
|
|
|
} |
|
|
|
@ -334,8 +339,8 @@ object ChapterProvider { |
|
|
|
|
//最后一行 |
|
|
|
|
textLine.text = "$words\n" |
|
|
|
|
isLastLine = true |
|
|
|
|
//标题居中 |
|
|
|
|
val startX = if (isTitle && ReadBookConfig.titleMode == 1 || isVolumeTitle) |
|
|
|
|
//标题x轴居中 |
|
|
|
|
val startX = if (isTitle && ReadBookConfig.titleMode == 1 || isTitleWithNoContent || isVolumeTitle) |
|
|
|
|
(visibleWidth - layout.getLineWidth(lineIndex)) / 2 |
|
|
|
|
else 0f |
|
|
|
|
addCharsToLineLast( |
|
|
|
@ -368,7 +373,7 @@ object ChapterProvider { |
|
|
|
|
durY += textPaint.textHeight * lineSpacingExtra |
|
|
|
|
textPages.last().height = durY |
|
|
|
|
} |
|
|
|
|
if (isTitle && !isVolumeTitle) durY += titleBottomSpacing |
|
|
|
|
if (isTitle && !isTitleWithNoContent) durY += titleBottomSpacing |
|
|
|
|
durY += textPaint.textHeight * paragraphSpacing / 10f |
|
|
|
|
return Pair(absStartX, durY) |
|
|
|
|
} |
|
|
|
|