/* Ċ Ġ* Ċ Ġ* Ġ ĠCopyright ( c ) Ġ 2 0 1 8 ĠVer st Si u Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . i jo ic . k tx . widget . autos ize . mode Ċ Ċ import Ġandroid . text . Text Paint Ċ import Ġcom . i jo ic . k tx . test . debug . print State Message Ċ import Ġkotlin . reflect . K Mutable Property 0 Ċ Ċ /** Ċ Ġ* ĠWrap Ġmax Ġprovider . Ċ Ġ* Ċ Ġ* Ġ@ author Ġver st si u Ġon Ġ 2 0 1 8 / 7 / 3 1 . Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ*/ Ċ internal Ġclass ĠWrap Max Provider : ĠMode Provider Ġ{ ĊĠ Ġoverride Ġvar Ġdebug Enabled Ġ= Ġfalse ĊĊĠ Ġprivate Ġvar Ġmax Layout Width : ĠInt ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġmax Layout Height : ĠInt ? Ġ= Ġnull ĊĊĠ Ġprivate Ġvar Ġmeasured Width Changed Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġmax Measured Width : ĠInt ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠ Ġupdate History Size ( this :: max Layout Width , Ġwidth ) ĊĠĠĠ Ġupdate History Size ( this :: max Layout Height , Ġheight ) ĊĊĠĠĠ Ġmeasured Width Changed Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate History Size ( property : ĠK Mutable Property 0 < Int ? >, Ġsize : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġold Size Ġ= Ġproperty . get () ĊĊĠĠĠ Ġif Ġ( size Ġ> Ġ 0 Ġ&& Ġ( old Size Ġ== Ġnull Ġ|| Ġsize Ġ> Ġold Size )) Ġ{ ĊĠĠĠĠĠ Ġproperty . set ( size ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Expected View Width ( meas ured Width : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠMath . max ( meas ured Width , Ġmax Layout Width Ġ?: Ġ 0 ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Expected View Height ( meas ured Height : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠMath . max ( meas ured Height , Ġmax Layout Height Ġ?: Ġ 0 ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġis Re setText Size Enabled ( on Layout : ĠBoolean , Ġtext : ĠCharSequence , Ġpaint : ĠText Paint , Ġcurr Text Size : ĠInt , Ġmax Text Size : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġwidth Changed Ġ= Ġmeasured Width Changed ĊĊĠĠĠ Ġpaint . text Size Ġ= Ġmax Text Size . toFloat () ĊĠĠĠ Ġval Ġmeasured Width Ġ= ĠMath . round ( paint . measure Text ( text . toString ())) ĊĠĠĠ Ġval Ġhistory Width Ġ= Ġmax Measured Width ĊĊĠĠĠ Ġif Ġ( history Width Ġ== Ġnull Ġ|| Ġmeasured Width Ġ> Ġhistory Width ) Ġ{ ĊĠĠĠĠĠ Ġmax Measured Width Ġ= Ġmeasured Width ĊĠĠĠĠĠ Ġmeasured Width Changed Ġ= Ġcurr Text Size Ġ!= Ġmax Text Size ĊĠĠĠĠĠ Ġwidth Changed Ġ= Ġtrue ĊĠĠĠĠĠ Ġprint State Message (" upgrade Ġmax Ġmeasured Ġwidth ") Ġ{ Ġ" text Ġ- Ġ$ text , Ġhistory Ġwidth Ġ- Ġ$ history Width , Ġmeasured Ġwidth Ġ- Ġ$ meas ured Width , Ġchanged Ġ- Ġ$ width Changed " Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( on Layout Ġ&& Ġcurr Text Size Ġ== Ġmax Text Size ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġwidth Changed ĊĠ Ġ} Ċ Ċ }