From 0e1dbdf5a4cccb727a6a402ec355f389a00d0f90 Mon Sep 17 00:00:00 2001 From: tateisu Date: Sun, 4 Nov 2018 11:40:28 +0900 Subject: [PATCH] =?UTF-8?q?Misskey=E3=81=AE=E3=82=AB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=A0=E7=B5=B5=E6=96=87=E5=AD=97=E3=82=92=E5=A4=A7=E3=81=8D?= =?UTF-8?q?=E3=81=8F=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jp/juggler/subwaytooter/span/NetworkEmojiSpan.kt | 10 ++++++---- .../jp/juggler/subwaytooter/util/CustomEmojiLister.kt | 11 +++-------- .../jp/juggler/subwaytooter/util/DecodeOptions.kt | 3 ++- .../java/jp/juggler/subwaytooter/util/EmojiDecoder.kt | 2 +- .../subwaytooter/util/MisskeyMarkdownDecoder.kt | 5 +++++ 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/jp/juggler/subwaytooter/span/NetworkEmojiSpan.kt b/app/src/main/java/jp/juggler/subwaytooter/span/NetworkEmojiSpan.kt index 33f69cf5..e4c37fae 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/span/NetworkEmojiSpan.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/span/NetworkEmojiSpan.kt @@ -13,7 +13,10 @@ import jp.juggler.subwaytooter.Pref import jp.juggler.subwaytooter.util.LogCategory import java.lang.ref.WeakReference -class NetworkEmojiSpan internal constructor(private val url : String) : ReplacementSpan(),AnimatableSpan { +class NetworkEmojiSpan internal constructor( + private val url : String, + private val scale : Float = 1f +) : ReplacementSpan(),AnimatableSpan { companion object { @@ -54,8 +57,7 @@ class NetworkEmojiSpan internal constructor(private val url : String) : Replacem @IntRange(from = 0) end : Int, fm : Paint.FontMetricsInt? ) : Int { - val size = (0.5f + scale_ratio * paint.textSize).toInt() - + val size = (paint.textSize * scale_ratio * scale + 0.5f).toInt() if(fm != null) { val c_descent = (0.5f + size * descent_ratio).toInt() val c_ascent = c_descent - size @@ -111,7 +113,7 @@ class NetworkEmojiSpan internal constructor(private val url : String) : Replacem rect_src.set(0, 0, srcWidth, srcHeight ) // 絵文字の正方形のサイズ - val dstSize = scale_ratio * textPaint.textSize + val dstSize = textPaint.textSize * scale_ratio * scale // ベースラインから上下方向にずらすオフセット val c_descent = dstSize * descent_ratio diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/CustomEmojiLister.kt b/app/src/main/java/jp/juggler/subwaytooter/util/CustomEmojiLister.kt index 0bfead71..62b28c8a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/CustomEmojiLister.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/CustomEmojiLister.kt @@ -3,20 +3,15 @@ package jp.juggler.subwaytooter.util import android.content.Context import android.os.Handler import android.os.SystemClock - -import java.util.ArrayList -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.ConcurrentLinkedQueue - import jp.juggler.subwaytooter.App1 import jp.juggler.subwaytooter.api.TootApiClient import jp.juggler.subwaytooter.api.entity.CustomEmoji -import jp.juggler.subwaytooter.api.entity.TootInstance -import jp.juggler.subwaytooter.api.entity.parseItem import jp.juggler.subwaytooter.api.entity.parseList import okhttp3.RequestBody import org.json.JSONObject -import java.util.HashMap +import java.util.* +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.ConcurrentLinkedQueue class CustomEmojiLister(internal val context : Context) { diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/DecodeOptions.kt b/app/src/main/java/jp/juggler/subwaytooter/util/DecodeOptions.kt index 1c2fa40c..f5645a3f 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/DecodeOptions.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/DecodeOptions.kt @@ -20,7 +20,8 @@ class DecodeOptions( var emojiMapCustom : HashMap? = null, var emojiMapProfile : HashMap? = null, var highlightTrie : WordTrieTree? = null, - var unwrapEmojiImageTag :Boolean = false + var unwrapEmojiImageTag :Boolean = false, + var enlargeCustomEmoji :Float = 1f ) { internal fun isMediaAttachment(url : String?) : Boolean { diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/EmojiDecoder.kt b/app/src/main/java/jp/juggler/subwaytooter/util/EmojiDecoder.kt index 1931f25c..cbb030cd 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/EmojiDecoder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/EmojiDecoder.kt @@ -106,7 +106,7 @@ object EmojiDecoder { sb.append(text) val end = sb.length sb.setSpan( - NetworkEmojiSpan(url), + NetworkEmojiSpan(url,scale = options.enlargeCustomEmoji), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/MisskeyMarkdownDecoder.kt b/app/src/main/java/jp/juggler/subwaytooter/util/MisskeyMarkdownDecoder.kt index 701054c4..f5e887da 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/MisskeyMarkdownDecoder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/MisskeyMarkdownDecoder.kt @@ -970,7 +970,10 @@ object MisskeyMarkdownDecoder { // このファイルのエントリーポイント fun decodeMarkdown(options : DecodeOptions, src : String?) = SpannableStringBuilderEx().apply { + val save = options.enlargeCustomEmoji + options.enlargeCustomEmoji = 2.5f try { + val env = SpanOutputEnv(options, this) if(src != null) ParseEnv(src).parse { node -> @@ -990,6 +993,8 @@ object MisskeyMarkdownDecoder { } catch(ex : Throwable) { log.trace(ex) log.e(ex, "decodeMarkdown failed") + }finally { + options.enlargeCustomEmoji = save } } }