(cherry picked from commit f0eb42e72d1e267049777a303bd97d96517a9a1f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt # app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
57 lines
1.4 KiB
Kotlin
57 lines
1.4 KiB
Kotlin
package eu.kanade.tachiyomi.widget
|
|
|
|
import android.graphics.Canvas
|
|
import android.graphics.Paint
|
|
import android.text.style.ReplacementSpan
|
|
import androidx.annotation.ColorInt
|
|
import androidx.annotation.Dimension
|
|
|
|
/**
|
|
* Source: https://github.com/santaevpavel
|
|
*
|
|
* A class that draws the outlines of a text when given a stroke color and stroke width.
|
|
*/
|
|
class OutlineSpan(
|
|
@ColorInt private val strokeColor: Int,
|
|
@Dimension private val strokeWidth: Float,
|
|
) : ReplacementSpan() {
|
|
|
|
override fun getSize(
|
|
paint: Paint,
|
|
text: CharSequence,
|
|
start: Int,
|
|
end: Int,
|
|
fm: Paint.FontMetricsInt?,
|
|
): Int {
|
|
return paint.measureText(text.toString().substring(start until end)).toInt()
|
|
}
|
|
|
|
override fun draw(
|
|
canvas: Canvas,
|
|
text: CharSequence,
|
|
start: Int,
|
|
end: Int,
|
|
x: Float,
|
|
top: Int,
|
|
y: Int,
|
|
bottom: Int,
|
|
paint: Paint,
|
|
) {
|
|
val originTextColor = paint.color
|
|
|
|
paint.apply {
|
|
color = strokeColor
|
|
style = Paint.Style.STROKE
|
|
this.strokeWidth = this@OutlineSpan.strokeWidth
|
|
}
|
|
canvas.drawText(text, start, end, x, y.toFloat(), paint)
|
|
|
|
paint.apply {
|
|
color = originTextColor
|
|
style = Paint.Style.FILL
|
|
}
|
|
|
|
canvas.drawText(text, start, end, x, y.toFloat(), paint)
|
|
}
|
|
}
|