.class public final Landroidx/core/text/BidiFormatter; .super Ljava/lang/Object; .source "BidiFormatter.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Landroidx/core/text/BidiFormatter$DirectionalityEstimator;, Landroidx/core/text/BidiFormatter$Builder; } .end annotation # static fields .field private static final DEFAULT_FLAGS:I = 0x2 .field static final DEFAULT_LTR_INSTANCE:Landroidx/core/text/BidiFormatter; .field static final DEFAULT_RTL_INSTANCE:Landroidx/core/text/BidiFormatter; .field static final DEFAULT_TEXT_DIRECTION_HEURISTIC:Landroidx/core/text/TextDirectionHeuristicCompat; .field private static final DIR_LTR:I = -0x1 .field private static final DIR_RTL:I = 0x1 .field private static final DIR_UNKNOWN:I = 0x0 .field private static final EMPTY_STRING:Ljava/lang/String; = "" .field private static final FLAG_STEREO_RESET:I = 0x2 .field private static final LRE:C = '\u202a' .field private static final LRM:C = '\u200e' .field private static final LRM_STRING:Ljava/lang/String; .field private static final PDF:C = '\u202c' .field private static final RLE:C = '\u202b' .field private static final RLM:C = '\u200f' .field private static final RLM_STRING:Ljava/lang/String; # instance fields .field private final mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; .field private final mFlags:I .field private final mIsRtlContext:Z # direct methods .method static constructor ()V .registers 4 .line 85 sget-object v0, Landroidx/core/text/TextDirectionHeuristicsCompat;->FIRSTSTRONG_LTR:Landroidx/core/text/TextDirectionHeuristicCompat; sput-object v0, Landroidx/core/text/BidiFormatter;->DEFAULT_TEXT_DIRECTION_HEURISTIC:Landroidx/core/text/TextDirectionHeuristicCompat; const/16 v1, 0x200e .line 115 invoke-static {v1}, Ljava/lang/Character;->toString(C)Ljava/lang/String; move-result-object v1 sput-object v1, Landroidx/core/text/BidiFormatter;->LRM_STRING:Ljava/lang/String; const/16 v1, 0x200f .line 120 invoke-static {v1}, Ljava/lang/Character;->toString(C)Ljava/lang/String; move-result-object v1 sput-object v1, Landroidx/core/text/BidiFormatter;->RLM_STRING:Ljava/lang/String; .line 217 new-instance v1, Landroidx/core/text/BidiFormatter; const/4 v2, 0x0 const/4 v3, 0x2 invoke-direct {v1, v2, v3, v0}, Landroidx/core/text/BidiFormatter;->(ZILandroidx/core/text/TextDirectionHeuristicCompat;)V sput-object v1, Landroidx/core/text/BidiFormatter;->DEFAULT_LTR_INSTANCE:Landroidx/core/text/BidiFormatter; .line 222 new-instance v1, Landroidx/core/text/BidiFormatter; const/4 v2, 0x1 invoke-direct {v1, v2, v3, v0}, Landroidx/core/text/BidiFormatter;->(ZILandroidx/core/text/TextDirectionHeuristicCompat;)V sput-object v1, Landroidx/core/text/BidiFormatter;->DEFAULT_RTL_INSTANCE:Landroidx/core/text/BidiFormatter; return-void .end method .method constructor (ZILandroidx/core/text/TextDirectionHeuristicCompat;)V .registers 4 .line 262 invoke-direct {p0}, Ljava/lang/Object;->()V .line 263 iput-boolean p1, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z .line 264 iput p2, p0, Landroidx/core/text/BidiFormatter;->mFlags:I .line 265 iput-object p3, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; return-void .end method .method private static getEntryDir(Ljava/lang/CharSequence;)I .registers 3 .line 558 new-instance v0, Landroidx/core/text/BidiFormatter$DirectionalityEstimator; const/4 v1, 0x0 invoke-direct {v0, p0, v1}, Landroidx/core/text/BidiFormatter$DirectionalityEstimator;->(Ljava/lang/CharSequence;Z)V invoke-virtual {v0}, Landroidx/core/text/BidiFormatter$DirectionalityEstimator;->getEntryDir()I move-result p0 return p0 .end method .method private static getExitDir(Ljava/lang/CharSequence;)I .registers 3 .line 541 new-instance v0, Landroidx/core/text/BidiFormatter$DirectionalityEstimator; const/4 v1, 0x0 invoke-direct {v0, p0, v1}, Landroidx/core/text/BidiFormatter$DirectionalityEstimator;->(Ljava/lang/CharSequence;Z)V invoke-virtual {v0}, Landroidx/core/text/BidiFormatter$DirectionalityEstimator;->getExitDir()I move-result p0 return p0 .end method .method public static getInstance()Landroidx/core/text/BidiFormatter; .registers 1 .line 236 new-instance v0, Landroidx/core/text/BidiFormatter$Builder; invoke-direct {v0}, Landroidx/core/text/BidiFormatter$Builder;->()V invoke-virtual {v0}, Landroidx/core/text/BidiFormatter$Builder;->build()Landroidx/core/text/BidiFormatter; move-result-object v0 return-object v0 .end method .method public static getInstance(Ljava/util/Locale;)Landroidx/core/text/BidiFormatter; .registers 2 .line 254 new-instance v0, Landroidx/core/text/BidiFormatter$Builder; invoke-direct {v0, p0}, Landroidx/core/text/BidiFormatter$Builder;->(Ljava/util/Locale;)V invoke-virtual {v0}, Landroidx/core/text/BidiFormatter$Builder;->build()Landroidx/core/text/BidiFormatter; move-result-object p0 return-object p0 .end method .method public static getInstance(Z)Landroidx/core/text/BidiFormatter; .registers 2 .line 245 new-instance v0, Landroidx/core/text/BidiFormatter$Builder; invoke-direct {v0, p0}, Landroidx/core/text/BidiFormatter$Builder;->(Z)V invoke-virtual {v0}, Landroidx/core/text/BidiFormatter$Builder;->build()Landroidx/core/text/BidiFormatter; move-result-object p0 return-object p0 .end method .method static isRtlLocale(Ljava/util/Locale;)Z .registers 2 .line 516 invoke-static {p0}, Landroidx/core/text/TextUtilsCompat;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I move-result p0 const/4 v0, 0x1 if-ne p0, v0, :cond_8 goto :goto_9 :cond_8 const/4 v0, 0x0 :goto_9 return v0 .end method .method private markAfter(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/String; .registers 5 const/4 v0, 0x0 .line 300 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v1 invoke-interface {p2, p1, v0, v1}, Landroidx/core/text/TextDirectionHeuristicCompat;->isRtl(Ljava/lang/CharSequence;II)Z move-result p2 .line 302 iget-boolean v0, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z if-nez v0, :cond_19 if-nez p2, :cond_16 invoke-static {p1}, Landroidx/core/text/BidiFormatter;->getExitDir(Ljava/lang/CharSequence;)I move-result v0 const/4 v1, 0x1 if-ne v0, v1, :cond_19 .line 303 :cond_16 sget-object p1, Landroidx/core/text/BidiFormatter;->LRM_STRING:Ljava/lang/String; return-object p1 .line 305 :cond_19 iget-boolean v0, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z if-eqz v0, :cond_29 if-eqz p2, :cond_26 invoke-static {p1}, Landroidx/core/text/BidiFormatter;->getExitDir(Ljava/lang/CharSequence;)I move-result p1 const/4 p2, -0x1 if-ne p1, p2, :cond_29 .line 306 :cond_26 sget-object p1, Landroidx/core/text/BidiFormatter;->RLM_STRING:Ljava/lang/String; return-object p1 .line 308 :cond_29 const-string p1, "" return-object p1 .end method .method private markBefore(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/String; .registers 5 const/4 v0, 0x0 .line 328 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v1 invoke-interface {p2, p1, v0, v1}, Landroidx/core/text/TextDirectionHeuristicCompat;->isRtl(Ljava/lang/CharSequence;II)Z move-result p2 .line 330 iget-boolean v0, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z if-nez v0, :cond_19 if-nez p2, :cond_16 invoke-static {p1}, Landroidx/core/text/BidiFormatter;->getEntryDir(Ljava/lang/CharSequence;)I move-result v0 const/4 v1, 0x1 if-ne v0, v1, :cond_19 .line 331 :cond_16 sget-object p1, Landroidx/core/text/BidiFormatter;->LRM_STRING:Ljava/lang/String; return-object p1 .line 333 :cond_19 iget-boolean v0, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z if-eqz v0, :cond_29 if-eqz p2, :cond_26 invoke-static {p1}, Landroidx/core/text/BidiFormatter;->getEntryDir(Ljava/lang/CharSequence;)I move-result p1 const/4 p2, -0x1 if-ne p1, p2, :cond_29 .line 334 :cond_26 sget-object p1, Landroidx/core/text/BidiFormatter;->RLM_STRING:Ljava/lang/String; return-object p1 .line 336 :cond_29 const-string p1, "" return-object p1 .end method # virtual methods .method public getStereoReset()Z .registers 2 .line 280 iget v0, p0, Landroidx/core/text/BidiFormatter;->mFlags:I and-int/lit8 v0, v0, 0x2 if-eqz v0, :cond_8 const/4 v0, 0x1 goto :goto_9 :cond_8 const/4 v0, 0x0 :goto_9 return v0 .end method .method public isRtl(Ljava/lang/CharSequence;)Z .registers 5 .line 358 iget-object v0, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; const/4 v1, 0x0 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v2 invoke-interface {v0, p1, v1, v2}, Landroidx/core/text/TextDirectionHeuristicCompat;->isRtl(Ljava/lang/CharSequence;II)Z move-result p1 return p1 .end method .method public isRtl(Ljava/lang/String;)Z .registers 2 .line 347 invoke-virtual {p0, p1}, Landroidx/core/text/BidiFormatter;->isRtl(Ljava/lang/CharSequence;)Z move-result p1 return p1 .end method .method public isRtlContext()Z .registers 2 .line 272 iget-boolean v0, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z return v0 .end method .method public unicodeWrap(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; .registers 4 .line 506 iget-object v0, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; const/4 v1, 0x1 invoke-virtual {p0, p1, v0, v1}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/CharSequence; .registers 4 const/4 v0, 0x1 .line 456 invoke-virtual {p0, p1, p2, v0}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/CharSequence; .registers 6 if-nez p1, :cond_4 const/4 p1, 0x0 return-object p1 :cond_4 const/4 v0, 0x0 .line 412 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v1 invoke-interface {p2, p1, v0, v1}, Landroidx/core/text/TextDirectionHeuristicCompat;->isRtl(Ljava/lang/CharSequence;II)Z move-result p2 .line 413 new-instance v0, Landroid/text/SpannableStringBuilder; invoke-direct {v0}, Landroid/text/SpannableStringBuilder;->()V .line 414 invoke-virtual {p0}, Landroidx/core/text/BidiFormatter;->getStereoReset()Z move-result v1 if-eqz v1, :cond_28 if-eqz p3, :cond_28 if-eqz p2, :cond_1f .line 415 sget-object v1, Landroidx/core/text/TextDirectionHeuristicsCompat;->RTL:Landroidx/core/text/TextDirectionHeuristicCompat; goto :goto_21 :cond_1f sget-object v1, Landroidx/core/text/TextDirectionHeuristicsCompat;->LTR:Landroidx/core/text/TextDirectionHeuristicCompat; :goto_21 invoke-direct {p0, p1, v1}, Landroidx/core/text/BidiFormatter;->markBefore(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; .line 418 :cond_28 iget-boolean v1, p0, Landroidx/core/text/BidiFormatter;->mIsRtlContext:Z if-eq p2, v1, :cond_3f if-eqz p2, :cond_31 const/16 v1, 0x202b goto :goto_33 :cond_31 const/16 v1, 0x202a .line 419 :goto_33 invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; .line 420 invoke-virtual {v0, p1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; const/16 v1, 0x202c .line 421 invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; goto :goto_42 .line 423 :cond_3f invoke-virtual {v0, p1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; :goto_42 if-eqz p3, :cond_52 if-eqz p2, :cond_49 .line 426 sget-object p2, Landroidx/core/text/TextDirectionHeuristicsCompat;->RTL:Landroidx/core/text/TextDirectionHeuristicCompat; goto :goto_4b :cond_49 sget-object p2, Landroidx/core/text/TextDirectionHeuristicsCompat;->LTR:Landroidx/core/text/TextDirectionHeuristicCompat; :goto_4b invoke-direct {p0, p1, p2}, Landroidx/core/text/BidiFormatter;->markAfter(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/String; move-result-object p1 invoke-virtual {v0, p1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; :cond_52 return-object v0 .end method .method public unicodeWrap(Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; .registers 4 .line 483 iget-object v0, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; invoke-virtual {p0, p1, v0, p2}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/String;)Ljava/lang/String; .registers 4 .line 494 iget-object v0, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; const/4 v1, 0x1 invoke-virtual {p0, p1, v0, v1}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/String; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/String;Landroidx/core/text/TextDirectionHeuristicCompat;)Ljava/lang/String; .registers 4 const/4 v0, 0x1 .line 441 invoke-virtual {p0, p1, p2, v0}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/String; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/String;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/String; .registers 4 if-nez p1, :cond_4 const/4 p1, 0x0 return-object p1 .line 392 :cond_4 invoke-virtual {p0, p1, p2, p3}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/CharSequence; move-result-object p1 invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object p1 return-object p1 .end method .method public unicodeWrap(Ljava/lang/String;Z)Ljava/lang/String; .registers 4 .line 469 iget-object v0, p0, Landroidx/core/text/BidiFormatter;->mDefaultTextDirectionHeuristicCompat:Landroidx/core/text/TextDirectionHeuristicCompat; invoke-virtual {p0, p1, v0, p2}, Landroidx/core/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroidx/core/text/TextDirectionHeuristicCompat;Z)Ljava/lang/String; move-result-object p1 return-object p1 .end method