package Ġcom . yy . mobile . rolling text view . strategy Ċ Ċ import Ġcom . yy . mobile . rolling text view . Text Manager Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* Ġ@ author ĠY ves Che ung Ċ Ġ* Ġ 2 0 1 9 / 4 / 2 9 Ċ Ġ*/ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ open Ġclass ĠAlign Animation Strategy ( val Ġalignment : ĠText Alignment ) Ġ: ĠNormal Animation Strategy () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind Char Order ( ĊĠĠĠĠĠĠĠ Ġsource Text : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġtarget Text : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠ Ġchar Pool : ĠChar Pool ĊĠĠĠ Ġ): ĠPair < List < Char >, ĠDirection > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Len Ġ= Ġmax ( source Text . length , Ġtarget Text . length ) ĊĠĠĠĠĠĠĠ Ġvar Ġsrc Char Ġ= ĠText Manager . EMPTY ĊĠĠĠĠĠĠĠ Ġvar Ġtgt Char Ġ= ĠText Manager . EMPTY ĊĊĠĠĠĠĠĠĠ Ġval Ġsrc Range Ġ= ĠgetText Range ( source Text , Ġmax Len ) ĊĠĠĠĠĠĠĠ Ġval Ġtgt Range Ġ= ĠgetText Range ( target Text , Ġmax Len ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġin Ġsrc Range ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Char Ġ= Ġsource Text [ index Ġ- Ġsrc Range . first ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġin Ġtgt Range ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtgt Char Ġ= Ġtarget Text [ index Ġ- Ġtgt Range . first ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfind Char Order ( src Char , Ġtgt Char , Ġindex , Ġchar Pool ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetText Range ( text : ĠCharSequence , Ġmax Len : ĠInt ): ĠInt Range Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom : ĠInt Ġ= Ġwhen Ġ( alignment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Alignment . Left Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Alignment . Center Ġ-> Ġ(( max Len Ġ- Ġtext . length ) Ġ/ Ġ 2 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Alignment . Right Ġ-> Ġmax Len Ġ- Ġtext . length ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġto : ĠInt Ġ= Ġfrom Ġ+ Ġtext . length ĊĠĠĠĠĠĠĠ Ġreturn Ġfrom Ġuntil Ġto ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠText Alignment Ġ{ ĊĠĠĠĠĠĠĠ ĠLeft , ĠRight , ĠCenter ĊĠĠĠ Ġ} Ċ }