package Ġgithub . com . st 2 3 5 . lib _ chart io Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroidx . annotation . Float Range Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . animation . do On Start Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . background . Background Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . background . Gradient Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . background . No Background Drawing Gradient Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . grid . Grid Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . grid . Horizontal Grid Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . internal . events . Chart Touch Listener Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . highlight . Highlight Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . highlight . Simple Dot Highlight Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . line . Line Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . drawing deleg ates . line . Stroke Solid Drawing Delegate Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . internal . Points Transformation Helper Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . internal . Points Processor Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . internal . utils .* Ċ import Ġgithub . com . st 2 3 5 . lib _ chart io . internal . utils . to Px Ċ import Ġkotlin . math . max Ċ Ċ class ĠChart io View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfill Path Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġval Ġstroke Path Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġval Ġstroke Path Measure Ġ= ĠPath Measure ( stroke Path , Ġfalse ) ĊĠĠĠ Ġprivate Ġval Ġanimated Path Ġ= ĠPath () ĊĊĠĠĠ Ġprivate Ġval Ġchart Bounds Ġ= ĠRect F () ĊĠĠĠ Ġprivate Ġval Ġviewport Bounds Ġ= ĠRect F () ĊĊĠĠĠ Ġprivate Ġvar Ġhighlighted Point : ĠPoint F ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsize Resolver : ĠPoints Transformation Helper ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġline Drawing Delegate : ĠLine Drawing Delegate ĊĠĠĠ Ġprivate Ġval Ġbackground Drawing Delegate : ĠBackground Drawing Delegate ĊĠĠĠ Ġprivate Ġval Ġgrid Drawing Delegate : ĠGrid Drawing Delegate ĊĊĠĠĠ Ġprivate Ġval Ġline Round Radius : ĠFloat ĊĊĠĠĠ Ġprivate Ġval Ġline Chart Processor Ġ= ĠPoints Processor () ĊĠĠĠ Ġprivate Ġval Ġline Chart ClickListener Ġ= ĊĠĠĠĠĠĠĠ ĠChart Touch Listener (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġline Chart Processor . find Nearest To ( it . first , Ġit . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( point Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighlighted Point Ġ= ĠPoint F ( point . first , Ġpoint . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Selection Observer s . notify With ( point . third ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpoint Selection Observer s Ġ= ĠObservable Model < Any >() ĊĊĠĠĠ Ġprivate Ġvar Ġis Animated : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Float Range ( from Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ) ĊĠĠĠ Ġprivate Ġvar Ġanimation Progress : ĠFloat Ġ= Ġ 1 F ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġshould Animate On New Data : ĠBoolean ĊĠĠĠ Ġprivate Ġval Ġanimation Duration : ĠLong ĊĊĠĠĠ Ġvar Ġhighlight Drawing Delegate : ĠHighlight Drawing Delegate Ġ= ĠSimple Dot Highlight Drawing Delegate () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġadapter : ĠChart io Ad aper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. setOn Data Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon New Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon New Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Chart io View ) ĊĊĠĠĠĠĠĠĠ Ġval Ġline Color Ġ= Ġtyped Array . getColor ( R . style able . Chart io View _ cv _ line Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġval ĠlineWidth Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ lineWidth , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġline Round Radius Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ line Round Radius , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġline Drawing Delegate Ġ= ĠSt roke Solid Drawing Delegate ( line Color , ĠlineWidth , ĠCor ner Path Effect ( line Round Radius ). take If Ġ{ Ġline Round Radius Ġ> Ġ 0 F Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġcolor Id Ġ= Ġtyped Array . getResource Id ( R . style able . Chart io View _ cv _ chart Fill Colors , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġposition Id Ġ= Ġtyped Array . getResource Id ( R . style able . Chart io View _ cv _ chart Fill Positions , Ġ- 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= Ġif Ġ( color Id Ġ== Ġ- 1 ) Ġint ArrayOf () Ġelse Ġcontext . resources . getString Array ( color Id ). map Ġ{ ĠColor . parse Color ( it ) Ġ}. to IntArray () ĊĠĠĠĠĠĠĠ Ġval Ġpositions Ġ= Ġif Ġ( position Id Ġ== Ġ- 1 ) Ġfloat ArrayOf () Ġelse Ġcontext . resources . getInt Array ( position Id ). map Ġ{ Ġit Ġ/ Ġ 1 0 0 F Ġ}. toFloat Array () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( color Id Ġ!= Ġ- 1 Ġ&& Ġposition Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Drawing Delegate Ġ= ĠGradient Drawing Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor ner Path Effect ( line Round Radius ). take If Ġ{ Ġline Round Radius Ġ> Ġ 0 F Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Drawing Delegate Ġ= ĠNo Background Drawing Gradient () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid Color Ġ= Ġtyped Array . getColor ( R . style able . Chart io View _ cv _ grid Color , ĠColor . DK GRAY ) ĊĠĠĠĠĠĠĠ Ġval Ġgrid Stroke Width Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ grid LineWidth , Ġ 0 F ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgap Width Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ grid Gap Width , Ġ 0 F ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid TextColor Ġ= Ġtyped Array . getColor ( R . style able . Chart io View _ cv _ grid TextColor , ĠColor . GRAY ) ĊĠĠĠĠĠĠĠ Ġval Ġgrid Text Size Size Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ grid Text Size , Ġ 1 2 F . to Px ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġshould Disable Grid Ġ= Ġ! typed Array . getBoolean ( R . style able . Chart io View _ cv _ grid Enabled , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid Step Gap Ġ= Ġtyped Array . get Dimension ( R . style able . Chart io View _ cv _ grid Step Gap , Ġ 0 F ) ĊĊĠĠĠĠĠĠĠ Ġgrid Drawing Delegate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Drawing Delegate . retrieve Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Ġ= ĠHorizontal Grid Drawing Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid TextColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Step Gap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Stroke Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Text Size Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDash Path Effect ( float ArrayOf ( gap Width , Ġgap Width ), Ġ 0 F ). take If Ġ{ Ġgap Width Ġ> Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Disable Ġ= Ġshould Disable Grid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġshould Animate On New Data Ġ= Ġtyped Array . getBoolean ( R . style able . Chart io View _ cv _ animate On New Data , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġanimation Duration Ġ= Ġtyped Array . getInteger ( R . style able . Chart io View _ cv _ animation Duration , Ġ 1 5 0 0 ). to Long () ĊĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset On Touch Listener ( line Chart ClickListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd On Point Selected Observer ( listener : ĠListener < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpoint Selection Observer s . addListener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremoved On Point Selected Observer ( listener : ĠListener < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpoint Selection Observer s . remove Listener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġviewport Bounds . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Left . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . toFloat () Ġ- Ġpadding Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh . toFloat () Ġ- Ġpadding Bottom ) ĊĊĠĠĠĠĠĠĠ Ġbackground Drawing Delegate . prepare ( w , Ġh ) ĊĊĠĠĠĠĠĠĠ Ġpopulate Path () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġif Ġ( canvas Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġ!= Ġnull Ġ&& Ġadapter ?. getSize () Ġ?: Ġ 0 Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Drawing Delegate . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Animated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Path Measure . get Segment ( 0 F , Ġstroke Path Measure . length Ġ* Ġanimation Progress , Ġanimated Path , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Drawing Delegate . draw ( canvas , Ġanimated Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġline Drawing Delegate . draw ( canvas , Ġstroke Path ) ĊĠĠĠĠĠĠĠ Ġbackground Drawing Delegate . draw ( canvas , Ġfill Path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhighlighted Point Ġ= Ġhighlighted Point ĊĠĠĠĠĠĠĠ Ġif Ġ( highlighted Point Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhighlight Drawing Delegate . draw ( at Ġ= Ġhighlighted Point , Ġon Ġ= Ġcanvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon New Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġpopulate Path () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( should Animate On New Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Data () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Path () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġ== Ġnull Ġ|| Ġviewport Bounds . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( adapter . getSize () Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclear State () ĊĊĠĠĠĠĠĠĠ Ġchart Bounds . set ( adapter . calculate Bounds ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġadditional Padding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighlight Drawing Delegate . get Padding (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Drawing Delegate . get Padding () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsize Resolver Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoints Transformation Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchart Bounds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect F ( viewport Bounds ). padding From ( additional Padding ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect F ( padding Left . toFloat (), Ġpadding Top . toFloat (), Ġpadding Right . toFloat (), Ġpadding Bottom . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( additional Padding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġthis . size Resolver Ġ= Ġsize Resolver ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġadapter . getSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġsize Resolver . scale X ( adapter . getX ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscaled Y Ġ= Ġsize Resolver . scale Y ( adapter . getY ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġsize Resolver . reverse Y Axis ( scaled Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Chart Processor . add Point ( x , Ġy , Ġadapter . getData ( i )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġstroke Path . moveTo ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġstroke Path . lineTo ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Point Ġ= Ġline Chart Processor . first () ĊĠĠĠĠĠĠĠ Ġval Ġlast Point Ġ= Ġline Chart Processor . last () ĊĊĠĠĠĠĠĠĠ Ġhighlighted Point Ġ= ĠPoint F ( last Point . first , Ġlast Point . second ) ĊĠĠĠĠĠĠĠ Ġpoint Selection Observer s . notify With ( last Point . third ) ĊĊĠĠĠĠĠĠĠ Ġstroke Path Measure . set Path ( stroke Path , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfill Path . add Path ( stroke Path ) ĊĊĠĠĠĠĠĠĠ Ġfill Path . lineTo ( last Point . first , Ġheight Ġ+ Ġline Round Radius ) ĊĠĠĠĠĠĠĠ Ġfill Path . lineTo ( Ġfirst Point . first , Ġheight Ġ+ Ġline Round Radius ) ĊĠĠĠĠĠĠĠ Ġfill Path . lineTo ( first Point . first , Ġfirst Point . second ) ĊĊĠĠĠĠĠĠĠ Ġgrid Drawing Delegate . prepare ( chart Bounds , Ġviewport Bounds , Ġsize Resolver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear State () Ġ{ ĊĠĠĠĠĠĠĠ Ġhighlighted Point Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsize Resolver Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfill Path . reset () ĊĠĠĠĠĠĠĠ Ġstroke Path . reset () ĊĠĠĠĠĠĠĠ Ġanimated Path . reset () ĊĠĠĠĠĠĠĠ Ġline Chart Processor . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Float ( 0 F , Ġ 1 F ) ĊĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Progress Ġ= Ġ( it . animated Value Ġas ĠFloat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanim ator . do On Start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Animated Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanim ator . do On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Animated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmax Padding ( var arg Ġrect s : ĠRect F ): ĠRect F Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠRect F () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( rect Ġin Ġrect s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . left Ġ= Ġmax ( result . left , Ġrect . left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . right Ġ= Ġmax ( result . right , Ġrect . right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . top Ġ= Ġmax ( result . top , Ġrect . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . bottom Ġ= Ġmax ( result . bottom , Ġrect . bottom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRect F . padding From ( another : ĠRect F ): ĠRect F Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Ġ+= Ġanother . left ĊĠĠĠĠĠĠĠ Ġright Ġ-= Ġanother . right ĊĠĠĠĠĠĠĠ Ġtop Ġ+= Ġanother . top ĊĠĠĠĠĠĠĠ Ġbottom Ġ-= Ġanother . bottom ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRect F . add ( another : ĠRect F ): ĠRect F Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Ġ+= Ġanother . left ĊĠĠĠĠĠĠĠ Ġright Ġ+= Ġanother . right ĊĠĠĠĠĠĠĠ Ġtop Ġ+= Ġanother . top ĊĠĠĠĠĠĠĠ Ġbottom Ġ+= Ġanother . bottom ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPoints Processor . first (): ĠTrip le < Float , ĠFloat , ĠAny > Ġ= Ġget ( 0 ) ĊĊĠĠĠ Ġprivate Ġfun ĠPoints Processor . last (): ĠTrip le < Float , ĠFloat , ĠAny > Ġ= ĊĠĠĠĠĠĠĠ Ġget (( adapter ?. getSize () Ġ?: Ġ 1 ) Ġ- Ġ 1 ) Ċ } Ċ