/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠQ M UI _ Android Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 8 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ċ Ġ* Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// opensource . org / licenses / MIT Ċ Ġ* Ċ Ġ* Ġ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 . qm uite am . qm ui . type . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . qm uite am . qm ui . type . Line Layout Ċ import Ġcom . qm uite am . qm ui . type . Type Model Ċ import Ġcom . qm uite am . qm ui . type . parser . Plain Text Parser Ċ import Ġcom . qm uite am . qm ui . type . parser . Text Parser Ċ Ċ open Ġclass ĠLine Type View Ġ: ĠBase Type View Ġ{ ĊĊĠĠĠ Ġval Ġline Layout Ġ= ĠLine Layout () ĊĊĠĠĠ Ġvar Ġtext Parser : ĠText Parser Ġ= ĠPlain Text Parser . instance ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Layout . type Model Ġ= Ġvalue . parse ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ): Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?): Ġsuper ( context , Ġattrs ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ): Ġsuper ( context , Ġattrs , Ġdef Style Attr ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġenvironment . set Measure Limit ( width Size , Ġheight Size ) ĊĠĠĠĠĠĠĠ Ġline Layout . measure And Layout ( environment ) ĊĠĠĠĠĠĠĠ Ġval Ġused Width Ġ= Ġif Ġ( width Mode Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Layout . max Layout Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġwidth Size ĊĠĠĠĠĠĠĠ Ġval Ġused Height Ġ= Ġif Ġ( height Mode Ġ== ĠMeasure Spec . AT _ MO ST Ġ|| Ġheight Mode Ġ== ĠMeasure Spec . UNSPECIFIED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Layout . content Height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġheight Size ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( used Width , Ġused Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtext : ĠCharSequence ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Layout . type Model Ġ= Ġtext Parser . parse ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġel lips ized : ĠText Utils . Truncate At ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġline Layout . el lip size ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Layout . el lip size Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Layout . el lip size Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġadd Bg Effect ( start : ĠInt , Ġend : ĠInt , Ġ@ Color Int Ġcolor : ĠInt ): ĠType Model . Effect Rem over ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Model Ġ= Ġline Layout . type Model Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= Ġtype Model . add Bg Effect ( start , Ġend , Ġcolor ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġreturn Ġremo ver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd TextColor Effect ( start : ĠInt , Ġend : ĠInt , Ġ@ Color Int Ġcolor : ĠInt ): ĠType Model . Effect Rem over ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Model Ġ= Ġline Layout . type Model Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= Ġtype Model . add TextColor Effect ( start , Ġend , Ġcolor ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġreturn Ġremo ver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Under Line Effect ( start : ĠInt , Ġend : ĠInt , Ġ@ Color Int Ġcolor : ĠInt , Ġheight : ĠInt ): ĠType Model . Effect Rem over ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Model Ġ= Ġline Layout . type Model Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= Ġtype Model . add Under Line Effect ( start , Ġend , Ġcolor , Ġheight ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġreturn Ġremo ver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Type face Effect ( start : ĠInt , Ġend : ĠInt , Ġtype face : ĠType face ): ĠType Model . Effect Rem over ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Model Ġ= Ġline Layout . type Model Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= Ġtype Model . add Type face Effect ( start , Ġend , Ġtype face ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġreturn Ġremo ver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Text Size Effect ( start : ĠInt , Ġend : ĠInt , Ġtext Size : ĠFloat ): ĠType Model . Effect Rem over ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Model Ġ= Ġline Layout . type Model Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġremo ver Ġ= Ġtype Model . add Text Size Effect ( start , Ġend , Ġtext Size ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġreturn Ġremo ver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġline Layout . draw ( canvas , Ġenvironment ) ĊĠĠĠ Ġ} Ċ }