package Ġcom . fx n . p ixed itor . image edit engine . views Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . fx n . p ixed itor . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMark Ġon Ġ 1 1 / 0 8 / 2 0 1 6 . Ċ Ġ*/ Ċ Ċ class ĠVertical Slide Color Picker Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġvar Ġdefault Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġpaint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġstroke Paint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpath : ĠPath ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġview Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġview Height : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcenter X : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcolor Picker Radius : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġvar Ġon Color ChangeListener : ĠOn Color ChangeListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcolor Picker Body : ĠRect F ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġselector Y Pos : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġvar ĠborderColor : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠborderWidth : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġvar Ġcolors : ĠInt Array ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcache Bitmap Ġ= Ġtrue ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . theme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. obtain Styled Attributes ( attrs , ĠR . style able . Vertical Slide Color Picker , Ġ 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠborderColor Ġ= Ġa . getColor ( R . style able . Vertical Slide Color Picker _ border Color , ĠColor . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Color Ġ= Ġa . getColor ( R . style able . Vertical Slide Color Picker _ default Color , ĠColor . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠborderWidth Ġ= Ġa . get Dimension ( R . style able . Vertical Slide Color Picker _ border Width , Ġ 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors ResourceId Ġ= Ġa . getResource Id ( R . style able . Vertical Slide Color Picker _ colors , ĠR . array . default _ colors ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= Ġa . resources . getInt Array ( colors ResourceId ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt , ĊĠĠĠĠĠĠĠ Ġdef Style Res : ĠInt ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĠĠĠĠĠĠĠ Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġpaint !!. style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġpaint !!. is Anti Alias Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġpath Ġ= ĠPath () ĊĊĠĠĠĠĠĠĠ Ġstroke Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġstroke Paint !!. style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġstroke Paint !!. color Ġ= ĠborderColor ĊĠĠĠĠĠĠĠ Ġstroke Paint !!. is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġstroke Paint !!. stroke Width Ġ= ĠborderWidth ĊĊĠĠĠĠĠĠĠ Ġis Drawing Cache Enabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġpath !!. add Circle ( center X . toFloat (), ĠborderWidth Ġ+ Ġcolor Picker Radius , Ġcolor Picker Radius , ĠPath . Direction . CW ) ĊĠĠĠĠĠĠĠ Ġpath !!. add Rect ( color Picker Body , ĠPath . Direction . CW ) ĊĠĠĠĠĠĠĠ Ġpath !!. add Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X . toFloat (), Ġview Height Ġ- Ġ( border Width Ġ+ Ġcolor Picker Radius ), Ġcolor Picker Radius , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath . Direction . CW ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( path !! , Ġstroke Paint !! ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Path ( path !! , Ġpaint !! ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cache Bitmap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġdrawing Cache ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Bitmap Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// canvas . draw Line ( color Picker Body . left , Ġselector Y Pos , Ġcolor Picker Body . right , Ġselector Y Pos , Ġstroke Paint ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġy Pos Ġ= ĠMath . min ( event . y , Ġcolor Picker Body !!. bottom ) ĊĠĠĠĠĠĠĠ Ġy Pos Ġ= ĠMath . max ( color Picker Body !!. top , Ġy Pos ) ĊĊĠĠĠĠĠĠĠ Ġselector Y Pos Ġ= Ġy Pos ĊĠĠĠĠĠĠĠ Ġdefault Color Ġ= Ġbitmap !!. get Pixel ( view Width Ġ/ Ġ 2 , Ġselector Y Pos . toInt ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( on Color ChangeListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Color ChangeListener !!. on Color Change ( default Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// invalidate (); ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ) ĊĊĠĠĠĠĠĠĠ Ġview Width Ġ= Ġw ĊĠĠĠĠĠĠĠ Ġview Height Ġ= Ġh ĊĊĠĠĠĠĠĠĠ Ġcenter X Ġ= Ġview Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġcolor Picker Radius Ġ= Ġview Width Ġ/ Ġ 2 Ġ- ĠborderWidth ĊĊĠĠĠĠĠĠĠ Ġcolor Picker Body Ġ= ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ- Ġcolor Picker Radius , ĠborderWidth Ġ+ Ġcolor Picker Radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ+ Ġcolor Picker Radius , Ġview Height Ġ- Ġ( border Width Ġ+ Ġcolor Picker Radius ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgradient Ġ= ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , Ġcolor Picker Body !!. top , Ġ 0 f , Ġcolor Picker Body !!. bottom , Ġcolors !! , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShader . Tile Mode . CLAMP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpaint !!. shader Ġ= Ġgradient ĊĊĠĠĠĠĠĠĠ Ġreset To Default () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset BorderColor ( border Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . border Color Ġ= ĠborderColor ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Border Width ( border Width : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . border Width Ġ= ĠborderWidth ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Colors ( colors : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . colors Ġ= Ġcolors ĊĠĠĠĠĠĠĠ Ġcache Bitmap Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset To Default () Ġ{ ĊĠĠĠĠĠĠĠ Ġselector Y Pos Ġ= ĠborderWidth Ġ+ Ġcolor Picker Radius ĊĊĠĠĠĠĠĠĠ Ġif Ġ( on Color ChangeListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Color ChangeListener !!. on Color Change ( default Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Color ChangeListener ( on Color ChangeListener : ĠOn Color ChangeListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Color ChangeListener Ġ= Ġon Color ChangeListener ĊĠĠĠĠĠĠĠ Ġon Color ChangeListener ?. on Color Change ( default Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Color ChangeListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Color Change ( selected Color : ĠInt ) ĊĠĠĠ Ġ} Ċ }