package Ġru . surf studio . android . recycler . decorator . sample . pager . controllers Ċ Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . view . get Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġru . surf studio . android . easy adapter . Easy Adapter Ċ import Ġru . surf studio . android . recycler . decorator . Decorator Ċ import Ġru . surf studio . android . recycler . decorator . sample . to Px Ċ import Ġkotlin . math . abs Ċ Ċ const Ġval ĠMIN _ SHOW _ IND IC ATOR _ VALUE Ġ= Ġ 1 Ċ Ċ /** Ċ Ġ* ĠÐĶ ÐµÐº Ð¾ÑĢ Ð°ÑĤÐ¾ÑĢ , ĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÐ¹ ĠÐ´Ð¾Ð±Ð°Ð² Ð»Ñı ÐµÑĤ ĠÐ¾ÑĤ ÑĢ Ð¸Ñģ Ð¾Ð² ÐºÑĥ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° ĠÑĤÐµÐº ÑĥÑī ÐµÐ³Ð¾ ĠÐ²ÑĭÐ± ÑĢÐ°Ð½ Ð½Ð¾Ð³Ð¾ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð° . Ċ Ġ* ĠÐĺ Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ ĠÐ¸Ð¼ Ðµ ÐµÑĤ ĠÐ²Ð¸Ð´ ĠÐ» Ð¸Ð½ Ð¸Ð¸ , ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð°Ñı ĠÐ¸Ð· Ð¼ÐµÐ½ Ñı ÐµÑĤ ĠÑģÐ² Ð¾ Ñİ ĠÐ´ Ð»Ð¸ Ð½ Ñĥ ĠÐ´Ð»Ñı ĠÐ° Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¸ ĠÐ½Ðµ Ð°Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÑģ Ð¾ÑģÑĤ Ð¾Ñı Ð½Ð¸ Ð¹ Ċ Ġ* ĠÐľ Ð¾Ð¶ Ð½Ð¾ ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°ÑĤÑĮ ĠÑģ ĠView Pager 2 ĠÐ¸ ĠRecyclerView ĠÑģ ĠP ager Snap Helper Ċ Ġ* Ċ Ġ* Ġ@ property Ġhas Infinite Scroll ĠÐµ ÑģÑĤÑĮ ĠÐ» Ð¸ ĠÑĥ ĠÐ² ÑĮÑİ ĠÐ± ÐµÑģ Ðº Ð¾Ð½ ÐµÑĩ Ð½ÑĭÐ¹ ĠÑģÐº ÑĢ Ð¾Ð» Ð» Ċ Ġ* Ġ@ property Ġvertical Align ĠÑĢÐ°Ñģ Ð¿ Ð¾Ð» Ð¾Ð¶ ÐµÐ½Ð¸Ðµ ĠÐ¸Ð½ Ð´ Ð¸ Ð°Ðº ÑĤÐ¾ÑĢ Ð° Ġ( Ñģ Ð½Ð¸ Ð· Ñĥ / Ñģ Ð²ÐµÑĢ Ñħ Ñĥ ) Ċ Ġ* Ġ@ property Ġhorizontal Align ĠÐ²Ñĭ ÑĢÐ°Ð² Ð½Ð¸ Ð² Ð°Ð½Ð¸Ðµ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ġ( ÑģÐ» ÐµÐ² Ð° / ÑģÐ¿ ÑĢÐ°Ð² Ð° / Ð¿ Ð¾ ĠÑĨ ÐµÐ½ÑĤ ÑĢÑĥ ) Ċ Ġ* Ġ@ property Ġwidth Inactive ĠÐ´ Ð»Ð¸ Ð½Ð° ĠÐ½Ðµ Ð°Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ċ Ġ* Ġ@ property Ġwidth Active ĠÐ´ Ð»Ð¸ Ð½Ð° ĠÐ° Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ċ Ġ* Ġ@ property Ġpadding Between ĠÐ¾ÑĤ ÑģÑĤ ÑĥÐ¿ ĠÐ¼ ÐµÐ¶ Ð´Ñĥ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð°Ð¼Ð¸ Ċ Ġ* Ġ@ property Ġindicator Height ĠÐ²Ñĭ Ñģ Ð¾ÑĤ Ð° ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ċ Ġ* Ġ@ property Ġpadding Horizontal ĠÐ¾ÑĤ ÑģÑĤ ÑĥÐ¿ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĠÑģÐ» ÐµÐ² Ð° ĠÐ¸ ĠÑģÐ¿ ÑĢÐ°Ð² Ð° Ċ Ġ* Ġ@ property Ġindicator Radius ĠÑĢÐ°Ð ´ Ð¸ ÑĥÑģ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĠÐ´Ð»Ñı ĠÐ¾ÑĤ ÑĢ Ð¸Ñģ Ð¾Ð² ÐºÐ¸ ĠÐ·Ð°Ðº ÑĢÑĥÐ³ Ð»ÐµÐ½ Ð½ÑĭÑħ ĠÑĥ Ð³ Ð» Ð¾Ð² . ĠÐķÑģÐ»Ð¸ ĠÐ½ Ð¾Ð»ÑĮ , ĠÐ±ÑĥÐ´ ÑĥÑĤ ĠÐ¾ÑĤ ÑĢ Ð¸Ñģ Ð¾Ð² Ð°Ð½ Ñĭ ĠÐ¿ÑĢ Ñı Ð¼ Ð¾ Ñĥ Ð³ Ð¾Ð»ÑĮ Ð½ÑĭÐµ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ñĭ Ċ Ġ* Ġ@ property Ġpadding Bottom ĠÐ¾ÑĤ ÑģÑĤ ÑĥÐ¿ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĠÑģ Ð½Ð¸ Ð· Ñĥ ĠÐ¾ÑĤ ĠÐ³ ÑĢ Ð°Ð½Ð¸ÑĨ ĠÐ² Ð½ ÑĥÑĤ ÑĢÐ¸ (! ) ĠÐ² ÑĮÑİ . ĠÐŁ Ð¾ ĠÑĥ Ð¼ Ð¾Ð» Ñĩ Ð°Ð½Ð¸ Ñİ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ ĠÑĢ Ð¸Ñģ Ñĥ ÐµÑĤÑģÑı ĠÐ¿ Ð¾Ð²ÐµÑĢ Ñħ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² ĠÑĢ ÐµÑģ Ð°Ð¹ Ðº Ð» ÐµÑĢ / Ð² ÑĮÑİ Ð¿ ÐµÐ¹ Ð´ Ð¶ ÐµÑĢ Ċ Ġ* ĠÐĴ Ð½ Ð¸Ð¼ Ð°Ð½Ð¸Ðµ , ĠÐµÑģÐ»Ð¸ ĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ , ĠÑĩÑĤÐ¾Ð±Ñĭ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ ĠÑĢ Ð¸Ñģ Ð¾Ð² Ð°Ð» ÑģÑı ĠÐ½Ðµ ĠÐ¿ Ð¾Ð²ÐµÑĢ Ñħ ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ Ð¾Ð² , ĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼ Ð¾ ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°ÑĤÑĮ ĠÐ¾ ÑĦ Ñģ ÐµÑĤ ĠÐ´ ÐµÐº Ð¾ÑĢ Ð°ÑĤÐ¾ÑĢ , ĠÐ° ĠÐ´Ð°Ð½ Ð½ÑĭÐ¹ ĠÐ¿Ð°ÑĢÐ°Ð¼ÐµÑĤ ÑĢ ĠÐ¾ ÑģÑĤÐ°Ð² Ð¸ÑĤÑĮ ĠÐ½ Ñĥ Ð»ÐµÐ¼ ! Ċ Ġ* Ġ@ property Ġcolor Active ĠÑĨ Ð²ÐµÑĤ ĠÐ° Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ċ Ġ* Ġ@ property Ġcolor Inactive ĠÑĨ Ð²ÐµÑĤ ĠÐ½Ðµ Ð°Ðº ÑĤ Ð¸Ð² Ð½Ð¾Ð³Ð¾ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð° Ċ Ġ*/ Ċ class ĠScale Line Page Indicator Decoration ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhas Infinite Scroll : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvertical Align : ĠVertical Align Ġ= ĠVertical Align . BOTTOM , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhorizontal Align : ĠHorizontal Align Ġ= ĠHorizontal Align . CENTER , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwidth Inactive : ĠInt Ġ= Ġ 8 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwidth Active : ĠInt Ġ= Ġ 3 2 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpadding Between : ĠInt Ġ= Ġ 1 6 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġindicator Height : ĠInt Ġ= Ġ 8 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġindicator Radius : ĠInt Ġ= Ġ 0 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpadding Top : ĠInt Ġ= Ġ 0 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpadding Bottom : ĠInt Ġ= Ġ 0 . to Px , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpadding Horizontal : ĠInt Ġ= Ġ 3 2 . to Px , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġval Ġcolor Active : ĠInt Ġ= Ġ- 0 x 1 , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġval Ġcolor Inactive : ĠInt Ġ= Ġ 0 x 6 6 FFFFFF Ċ ) Ġ: ĠDecor ator . RecyclerView Decor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġindicator Paint Ġ= ĠPaint (). apply Ġ{ Ġis Anti Alias Ġ= Ġtrue Ġ} ĊĠĠĠ Ġprivate Ġval Ġcolor Evaluator Ġ= ĠArg b Evaluator () ĊĠĠĠ Ġprivate Ġval Ġindicator Diff Ġ= Ġwidth Active Ġ- Ġwidth Inactive ĊĠĠĠ Ġprivate Ġval Ġrect Ġ= ĠRect () ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġre cyclerView . adapter Ġas ĠEasy Adapter ĊĠĠĠĠĠĠĠ Ġval Ġitems Count Ġ= Ġif Ġ( has Infinite Scroll ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . item Count Ġ/ ĠEasy Adapter . INF IN ITE _ SCROLL _ LO OPS _ COUNT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . item Count ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( items Count Ġ<= ĠMIN _ SHOW _ IND IC ATOR _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Length Ġ= Ġwidth Inactive Ġ* Ġ( items Count Ġ- Ġ 1 ) Ġ+ Ġwidth Active ĊĠĠĠĠĠĠĠ Ġval Ġpadding Between Items Ġ= Ġ( items Count Ġ- Ġ 1 ) Ġ* Ġpadding Between ĊĠĠĠĠĠĠĠ Ġval Ġindicator Total Width Ġ= Ġtotal Length Ġ+ Ġpadding Between Items ĊĠĠĠĠĠĠĠ Ġval Ġindicator Start X Ġ= Ġwhen Ġ( horizontal Align ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Align . LEFT Ġ-> Ġpadding Horizontal . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Align . CENTER Ġ-> Ġ( re cyclerView . width Ġ- Ġindicator Total Width ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Align . RIGHT Ġ-> Ġre cyclerView . width Ġ- Ġindicator Total Width Ġ- Ġpadding Horizontal . toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġindicator Pos Y Ġ= Ġwhen Ġ( vertical Align ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Align . BOTTOM Ġ-> Ġre cyclerView . height Ġ- Ġpadding Bottom . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Align . TOP Ġ-> Ġpadding Top . toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġre cyclerView . layout Manager Ġas ĠLinearLayoutManager ? ĊĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Position Ġ= Ġlayout Manager ?. findFirst Visible Item Position () ĊĠĠĠĠĠĠĠ Ġval Ġactive Position Ġ= Ġif Ġ( first Visible Item Position Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Visible Item Position Ġ% Ġitems Count ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . NO _ POSITION ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( active Position Ġ== ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . get Decorated Bounds With Margins ( re cyclerView [ 0 ], Ġrect ) ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġabs ( rect . left . toFloat () Ġ/ Ġrect . width ()) ĊĠĠĠĠĠĠĠ Ġdraw Indicators ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Start X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Pos Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Align ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Indicators ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Y : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Count : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Align : ĠVertical Align ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġindicator Diff Ġ* Ġprogress ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Start X Ġ= Ġstart X ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġitems Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Width Ġ= Ġcalculate Indicator Width ( index , Ġactive Position , Ġitems Count , Ġdiff ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Paint . color Ġ= Ġcalculate Color ( index , Ġactive Position , Ġitems Count , Ġprogress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġwhen Ġ( vertical Align ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Align . BOTTOM Ġ-> Ġstart Y Ġ- Ġindicator Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Align . TOP Ġ-> Ġstart Y Ġ+ Ġindicator Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect F ( current Start X , Ġbottom , Ġcurrent Start X Ġ+ Ġindicator Width , Ġstart Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( rect , Ġindicator Radius . toFloat (), Ġindicator Radius . toFloat (), Ġindicator Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Start X Ġ+= Ġ( indicator Width Ġ+ Ġpadding Between ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Indicator Width ( index : ĠInt , Ġactive Position : ĠInt , Ġitems Count : ĠInt , Ġdiff : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Position Ġ% Ġitems Count Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Active Ġ- Ġdiff ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( active Position Ġ+ Ġ 1 ) Ġ% Ġitems Count Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Inactive Ġ+ Ġdiff ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Inactive . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġfun Ġcalculate Color ( index : ĠInt , Ġactive Position : ĠInt , Ġitems Count : ĠInt , Ġprogress : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Position Ġ% Ġitems Count Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Evaluator . evaluate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Active , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Inactive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( active Position Ġ+ Ġ 1 ) Ġ% Ġitems Count Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Evaluator . evaluate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Inactive , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Active ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Inactive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠÐĴ Ñĭ ÑĢÐ°Ð² Ð½Ð¸ Ð² Ð°Ð½Ð¸Ðµ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĠÐ² Ð¾ ĠÐ² ÑĮÑİ Ċ Ġ*/ Ċ enum Ġclass ĠHorizontal Align Ġ{ ĊĠĠĠ ĠLEFT , ĠC ENTER , ĠRIGHT Ċ } Ċ Ċ /** Ċ Ġ* ĠÐł Ð°Ñģ Ð¿ Ð¾Ð» Ð¾Ð¶ ÐµÐ½Ð¸Ðµ ĠÐ¸Ð½ Ð´ Ð¸Ðº Ð°ÑĤÐ¾ÑĢ Ð¾Ð² ĠÐ² ĠÑģÐ¿Ð¸Ñģ ÐºÐµ Ċ Ġ*/ Ċ enum Ġclass ĠVertical Align Ġ{ ĊĠĠĠ ĠTOP , ĠBOTTOM Ċ }