/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠRol and ĠW ie se Ċ Ġ* ĠThis Ġsoftware Ġis Ġlicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġsoftware Ġ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 Ġk ray on . editor . base . style Ċ Ċ import Ġcom . y works . y files . geometry . Point D Ċ import Ġcom . y works . y files . geometry . Rect D Ċ import Ġk ray on . editor . base . util . minus Ċ import Ġk ray on . editor . base . util . plus Ċ import Ġjava . awt .* Ċ import Ġjava . awt . geom . Affine Transform Ċ import Ġjava . awt . geom . Point 2 D Ċ import Ġjava . awt . geom . Rectangle 2 D Ċ import Ġjava . awt . image . Color Model Ċ import Ġjava . util .* Ċ Ċ class ĠOrient ed Gradient Paint ( val Ġdeg Angle : Double , Ġval Ġfr actions : Float Array , Ġval Ġcolors : Array < Color >) Ġ: ĠPaint Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ tr ansparency : Int ĊĠĠĠ Ġprivate Ġval Ġstart Point : Point 2 D ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġopaque Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcolors . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopaque Ġ= Ġopaque Ġ&& Ġcolors [ i ]. alpha Ġ== Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ tr ansparency Ġ= Ġif Ġ( opaque ) ĠTr ansparency . OP A QUE Ġelse ĠTr ansparency . TRANSL UC ENT ĊĊĠĠĠĠĠĠĠ Ġstart Point Ġ= ĠPoint 2 D . Double (- 1 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ ĠAff ine Transform . get Rotate Instance ( Math . to Radians ( deg Angle )). transform ( start Point , Ġstart Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Context ( cm : ĠColor Model , Ġdevice Bounds : ĠRectangle , Ġuser Bounds : ĠRectangle 2 D , Ġx form : ĠAff ine Transform , Ġhints : ĠRendering Hints ): ĠPaint Context Ġ{ ĊĠĠĠĠĠĠĠ Ġ// println (" create Context ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtransform To Rect ( Rect D ( user Bounds . x , Ġuser Bounds . y , Ġuser Bounds . width , Ġuser Bounds . height )). create Context ( cm , Ġdevice Bounds , Ġuser Bounds , Ġx form , Ġhints ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Transparency (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// println (" get Transparency ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ tr ansparency ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransform To Rect ( rect : ĠRect D ): ĠLinear Gradient Paint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġrect . width * rect . height ĊĠĠĠĠĠĠĠ Ġval Ġrotated Start Ġ= ĠPoint D ( start Point . x * scale , Ġ Ġstart Point . y * scale ) ĊĠĠĠĠĠĠĠ Ġval Ġboundary Start Ġ= Ġrect . find Line Intersection ( rect . center , Ġrotated Start + ĠPoint D ( rect . width * 0 . 5 , Ġrect . height * 0 . 5 )) Ġ?: Ġrect . top Left ĊĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġrect . center Ġ- Ġboundary Start ĊĠĠĠĠĠĠĠ Ġval Ġboundary End Ġ= Ġrect . center Ġ+ Ġdelta ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠPoint 2 D . Float ( boundary Start . x . toFloat (), Ġboundary Start . y . toFloat ()) ĊĠĠĠĠĠĠĠ Ġval Ġend Ġ= ĠPoint 2 D . Float ( boundary End . x . toFloat (), Ġboundary End . y . toFloat ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠLinear Gradient Paint ( start , end , Ġfr actions , colors ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( other Ġ! is ĠOrient ed Gradient Paint ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif ( other . deg Angle Ġ!= Ġdeg Angle Ġ|| Ġother . colors . size Ġ!= Ġcolors . size ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. colors . last Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( other . colors [ i ] Ġ!= Ġcolors [ i ] Ġ|| Ġother . fr actions [ i ] Ġ!= Ġfr actions [ i ]) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġdeg Angle . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ ĠArrays . hashCode ( fr actions ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ ĠArrays . hashCode ( colors ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ