/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . ui . paint ing Ċ Ċ import Ġandroidx . ui . engine . geometry . Offset Ċ import Ġandroidx . ui . graphics . Color Ċ import Ġandroidx . ui . vect orm ath 6 4 . Matrix 4 Ċ import Ġandroidx . ui . vect orm ath 6 4 . PI Ċ Ċ // ĠA Ġshader Ġ( as Ġused Ġby Ġ[ Paint . shader ]) Ġthat Ġrenders Ġa Ġcolor Ġgradient . Ċ // Ċ // ĠThere Ġare Ġseveral Ġtypes Ġof Ġgradients , Ġrepresented Ġby Ġthe Ġvarious Ġconstructors Ċ // Ġon Ġthis Ġclass . Ċ class ĠGradient Ġprivate Ġconstructor ( private Ġval Ġshader : Ġandroid . graphics . Shader ) Ġ: ĠShader () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġlinear Ġgradient Ġfrom Ġ` from ` Ġto Ġ` to `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` color Stops ` Ġis Ġprovided , Ġ` color Stops [ i ]` Ġis Ġa Ġnumber Ġfrom Ġ 0 . 0 Ġto Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġspecifies Ġwhere Ġ` color [ i ]` Ġbegins Ġin Ġthe Ġgradient . ĠIf Ġ` color Stops ` Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġnot Ġprovided , Ġthen Ġonly Ġtwo Ġstops , Ġat Ġ 0 . 0 Ġand Ġ 1 . 0 , Ġare Ġimplied Ġ( and ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` color ` Ġmust Ġtherefore Ġonly Ġhave Ġtwo Ġentries ). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbehavior Ġbefore Ġ` from ` Ġand Ġafter Ġ` to ` Ġis Ġdescribed Ġby Ġthe Ġ` tile Mode ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġargument . ĠFor Ġdetails , Ġsee Ġthe Ġ[ Tile Mode ] Ġenum . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ clamp _ linear . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ mirror _ linear . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ repeated _ linear . png ) ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` from `, Ġ` to `, Ġ` colors `, Ġor Ġ` tile Mode ` Ġare Ġnull , Ġor Ġif Ġ` colors ` Ġor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` color Stops ` Ġcontain Ġnull Ġvalues , Ġthis Ġconstructor Ġwill Ġthrow Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ NoSuch Method Error ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠ ĠGradient . linear ( ĊĠĠĠĠĠĠĠ Ġfun Ġlinear ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom : ĠOffset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto : ĠOffset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors : ĠList < Color >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Stops : ĠList < Float >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Mode : ĠTile Mode Ġ= ĠTile Mode . clamp ĊĠĠĠĠĠĠĠ Ġ): ĠGradient Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ validate Color Stops ( colors , Ġcolor Stops ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear Gradient Ġ= Ġandroid . graphics . Linear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . dx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . dy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto . dx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto . dy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto IntArray ( colors ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Float Array ( color Stops ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Framework Tile Mode ( tile Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGradient ( linear Gradient ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġradial Ġgradient Ġcentered Ġat Ġ` center ` Ġthat Ġends Ġat Ġ` radius ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġdistance Ġfrom Ġthe Ġcenter . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` color Stops ` Ġis Ġprovided , Ġ` color Stops [ i ]` Ġis Ġa Ġnumber Ġfrom Ġ 0 . 0 Ġto Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġspecifies Ġwhere Ġ` color [ i ]` Ġbegins Ġin Ġthe Ġgradient . ĠIf Ġ` color Stops ` Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġnot Ġprovided , Ġthen Ġonly Ġtwo Ġstops , Ġat Ġ 0 . 0 Ġand Ġ 1 . 0 , Ġare Ġimplied Ġ( and ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` color ` Ġmust Ġtherefore Ġonly Ġhave Ġtwo Ġentries ). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbehavior Ġbefore Ġand Ġafter Ġthe Ġradius Ġis Ġdescribed Ġby Ġthe Ġ` tile Mode ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġargument . ĠFor Ġdetails , Ġsee Ġthe Ġ[ Tile Mode ] Ġenum . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ clamp _ radial . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ mirror _ radial . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ repeated _ radial . png ) ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` center `, Ġ` radius `, Ġ` colors `, Ġor Ġ` tile Mode ` Ġare Ġnull , Ġor Ġif Ġ` colors ` Ġor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` color Stops ` Ġcontain Ġnull Ġvalues , Ġthis Ġconstructor Ġwill Ġthrow Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ NoSuch Method Error ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` matrix 4 ` Ġis Ġprovided , Ġthe Ġgradient Ġfill Ġwill Ġbe Ġtransformed Ġby Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġspecified Ġ 4 x 4 Ġmatrix Ġrelative Ġto Ġthe Ġlocal Ġcoordinate Ġsystem . Ġ` matrix 4 ` Ġmust ĊĠĠĠĠĠĠĠĠ Ġ* Ġbe Ġa Ġcolumn - major Ġmatrix Ġpacked Ġinto Ġa Ġlist Ġof Ġ 1 6 Ġvalues . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` focal ` Ġis Ġprovided Ġand Ġnot Ġequal Ġto Ġ` center ` Ġand Ġ` focal Radius ` Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġprovided Ġand Ġnot Ġequal Ġto Ġ 0 . 0 , Ġthe Ġgenerated Ġshader Ġwill Ġbe Ġa Ġtwo Ġpoint ĊĠĠĠĠĠĠĠĠ Ġ* Ġcon ical Ġradial Ġgradient , Ġwith Ġ` focal ` Ġbeing Ġthe Ġcenter Ġof Ġthe Ġf ocal ĊĠĠĠĠĠĠĠĠ Ġ* Ġcircle Ġand Ġ` focal Radius ` Ġbeing Ġthe Ġradius Ġof Ġthat Ġcircle . ĠIf Ġ` focal ` Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġprovided Ġand Ġnot Ġequal Ġto Ġ` center `, Ġat Ġleast Ġone Ġof Ġthe Ġtwo Ġoffsets Ġmust ĊĠĠĠĠĠĠĠĠ Ġ* Ġnot Ġbe Ġequal Ġto Ġ[ Offset . zero ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ( Migration / nj aw ad Ġchange Ġmatrix 4 Ġparameter Ġto ĠFloat 6 4 List Ġto Ġmatch ĠFlutter Ġimplementation ) ĊĠĠĠĠĠĠĠ Ġfun Ġradial ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter : ĠOffset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor : ĠList < Color >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Stops : ĠList < Float > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Mode : ĠTile Mode Ġ= ĠTile Mode . clamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") Ġmatrix 4 : ĠMatrix 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ocal : ĠOffset ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ocal Radius : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠGradient Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ validate Color Stops ( color , Ġcolor Stops ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focal Ġ== Ġnull Ġ|| Ġ( focal Ġ== Ġcenter Ġ&& Ġf ocal Radius Ġ== Ġ 0 . 0 f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Migration / nj aw ad : Ġadd Ġf ocal Ġsupport Ġto ĠRad ial Gradient Ġin Ġframework ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ( Migration / nj aw ad Ġuse Ġmatrix Ġparameter Ġin Ġcreation Ġof ĠRad ial Gradient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradial Ġ= Ġandroid . graphics . Rad ial Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter . dx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter . dy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto IntArray ( color ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Float Array ( color Stops ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Framework Tile Mode ( tile Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGradient ( radial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġsweep Ġgradient Ġcentered Ġat Ġ` center ` Ġthat Ġstarts Ġat Ġ` start Angle ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġand Ġends Ġat Ġ` end Angle `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` start Angle ` Ġand Ġ` end Angle ` Ġshould Ġbe Ġprovided Ġin Ġradians , Ġwith Ġzero ĊĠĠĠĠĠĠĠĠ Ġ* Ġradians Ġbeing Ġthe Ġhorizontal Ġline Ġto Ġthe Ġright Ġof Ġthe Ġ` center ` Ġand Ġwith ĊĠĠĠĠĠĠĠĠ Ġ* Ġpositive Ġangles Ġgoing Ġclock wise Ġaround Ġthe Ġ` center `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` color Stops ` Ġis Ġprovided , Ġ` color Stops [ i ]` Ġis Ġa Ġnumber Ġfrom Ġ 0 . 0 Ġto Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġspecifies Ġwhere Ġ` color [ i ]` Ġbegins Ġin Ġthe Ġgradient . ĠIf Ġ` color Stops ` Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġnot Ġprovided , Ġthen Ġonly Ġtwo Ġstops , Ġat Ġ 0 . 0 Ġand Ġ 1 . 0 , Ġare Ġimplied Ġ( and ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` color ` Ġmust Ġtherefore Ġonly Ġhave Ġtwo Ġentries ). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbehavior Ġbefore Ġ` start Angle ` Ġand Ġafter Ġ` end Angle ` Ġis Ġdescribed Ġby Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` tile Mode ` Ġargument . ĠFor Ġdetails , Ġsee Ġthe Ġ[ Tile Mode ] Ġenum . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ clamp _ sweep . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ mirror _ sweep . png ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ![]( https :// flutter . github . io / assets - for - api - docs / assets / dart - ui / tile _ mode _ repeated _ sweep . png ) ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` center `, Ġ` colors `, Ġ` tile Mode `, Ġ` start Angle `, Ġor Ġ` end Angle ` Ġare Ġnull , ĊĠĠĠĠĠĠĠĠ Ġ* Ġor Ġif Ġ` colors ` Ġor Ġ` color Stops ` Ġcontain Ġnull Ġvalues , Ġthis Ġconstructor Ġwill ĊĠĠĠĠĠĠĠĠ Ġ* Ġthrow Ġa Ġ[ NoSuch Method Error ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ` matrix 4 ` Ġis Ġprovided , Ġthe Ġgradient Ġfill Ġwill Ġbe Ġtransformed Ġby Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġspecified Ġ 4 x 4 Ġmatrix Ġrelative Ġto Ġthe Ġlocal Ġcoordinate Ġsystem . Ġ` matrix 4 ` Ġmust ĊĠĠĠĠĠĠĠĠ Ġ* Ġbe Ġa Ġcolumn - major Ġmatrix Ġpacked Ġinto Ġa Ġlist Ġof Ġ 1 6 Ġvalues . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ( Migration / nj aw ad Ġchange Ġmatrix 4 Ġparameter Ġto ĠFloat 6 4 List Ġto Ġmatch ĠFlutter Ġimplementation ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠĠĠĠĠ Ġfun Ġsweep ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter : ĠOffset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors : ĠList < Color >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Stops : ĠList < Float >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Mode : ĠTile Mode Ġ= ĠTile Mode . clamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Angle : ĠFloat Ġ= ĠPI Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix 4 : ĠMatrix 4 ĊĠĠĠĠĠĠĠ Ġ): ĠGradient Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ validate Color Stops ( colors , Ġcolor Stops ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ( Migration / nj aw ad Ġframework ĠS weep Gradient Ġdoes Ġnot Ġsupport Ġangle Ġranges / Tile Modes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsweep Ġ= Ġandroid . graphics . Sweep Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter . dx , Ġcenter . dy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto IntArray ( colors ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Float Array ( color Stops ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGradient ( sweep ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Framework Tile Mode ( tile Mode : ĠTile Mode ): Ġandroid . graphics . Shader . Tile Mode Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( tile Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTile Mode . clamp Ġ-> Ġandroid . graphics . Shader . Tile Mode . CLAMP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTile Mode . mirror Ġ-> Ġandroid . graphics . Shader . Tile Mode . MIR ROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTile Mode . repeated Ġ-> Ġandroid . graphics . Shader . Tile Mode . REPEAT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Float Array ( stops : ĠList < Float >? ): ĠFloat Array ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( stops Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat Array ( stops . size ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstops [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto IntArray ( colors : ĠList < Color >): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInt Array ( colors . size ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors [ i ]. to Argb () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ_ validate Color Stops ( colors : ĠList < Color >, Ġcolor Stops : ĠList < Float > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( color Stops Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( colors . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" colors Ġmust Ġhave Ġlength Ġ 2 Ġif Ġcolor Stops Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Ġomitted ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( colors . size Ġ!= Ġcolor Stops . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" colors Ġand Ġcolor Stops Ġarguments Ġmust Ġhave " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġequal Ġlength ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Framework Shader (): Ġandroid . graphics . Shader Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshader ĊĠĠĠ Ġ} Ċ } Ċ