package Ġcom . mir age . ui . widgets Ċ Ċ import Ġcom . mir age . utils . data structures . Point Ċ import Ġcom . mir age . utils . data structures . Rectangle Ċ import Ġcom . mir age . utils . data structures . range Between Ċ import Ġcom . mir age . utils . virtual screen . Virtual Screen Ċ Ċ class ĠCircle Button ( ĊĠĠĠĠĠĠĠ Ġvar Ġtexture Name : ĠString , ĊĠĠĠĠĠĠĠ Ġvar Ġhighlighted Texture Name : ĠString Ġ= Ġtexture Name , ĊĠĠĠĠĠĠĠ Ġvar Ġpressed Texture Name : ĠString Ġ= Ġhighlighted Texture Name , ĊĠĠĠĠĠĠĠ Ġvar Ġcenter : ĠPoint Ġ= ĠPoint ( 0 f , Ġ 0 f ), ĊĠĠĠĠĠĠĠ Ġvar Ġradius : ĠFloat Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠ Ġvar Ġbounded Label : ĠVirtual Screen . Label ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġsize Updater : Ġ(( Float , ĠFloat ) Ġ-> ĠPair < Point , ĠFloat >) ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar ĠonPressed : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġvar Ġborder Size : ĠFloat Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠ Ġvar Ġborder Texture Name : ĠString Ġ= Ġ" ui / circle - border " Ċ ) Ġ: ĠWidget Ġ{ ĊĊĠĠĠ Ġvar Ġis Pressed Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Highlight ed Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Visible Ġ= Ġtrue ĊĠĠĠ Ġvar Ġkey Pressed Ġ= Ġfalse Ġ// ĠÐĶ Ð»Ñı ĠÑģÐ» ÑĥÑĩ Ð° ÐµÐ² , ĠÐº Ð¾Ð³Ð´Ð° ĠÐº Ð½ Ð¾Ð¿ ÐºÐ° ĠÐ¼Ð¾Ð¶ÐµÑĤ ĠÐ½ Ð°Ð¶ Ð¸Ð¼ Ð°ÑĤÑĮÑģÑı ĠÐºÐ°Ðº ĠÐº ÑĥÑĢ Ñģ Ð¾ÑĢ Ð¾Ð¼ , ĠÑĤÐ°Ðº ĠÐ¸ ĠÑģ ĠÐº Ð» Ð°Ð² Ð¸ Ð°ÑĤ Ñĥ ÑĢÑĭ . ĊĊĠĠĠ Ġprivate Ġval Ġrect : ĠRectangle ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠRectangle ( center . x , Ġcenter . y , Ġradius Ġ* Ġ 2 f , Ġradius Ġ* Ġ 2 f ) ĊĊĠĠĠ Ġprivate Ġval Ġinner Rect : ĠRectangle ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠRectangle ( center . x , Ġcenter . y , Ġ( radius Ġ- Ġborder Size ) Ġ* Ġ 2 f , Ġ( radius Ġ- Ġborder Size ) Ġ* Ġ 2 f ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbounded Label ?. rect Ġ= Ġinner Rect ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Texture Name () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Pressed Ġ|| Ġkey Pressed Ġ-> Ġpressed Texture Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Highlight ed Ġ-> Ġhighlighted Texture Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtexture Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresize ( virtual Width : ĠFloat , Ġvirtual Height : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsize Updater ?. invoke ( virtual Width , Ġvirtual Height )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Ġ= Ġit . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġit . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbounded Label ?. rect Ġ= Ġinner Rect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbounded Label ?. resize Font ( virtual Width , Ġvirtual Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Up ( virtual Point : ĠPoint ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isVisible ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( range Between ( center , Ġvirtual Point ) Ġ< Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonPressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Highlight ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Down ( virtual Point : ĠPoint ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isVisible ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġrange Between ( center , Ġvirtual Point ) Ġ< Ġradius ĊĠĠĠĠĠĠĠ Ġis Highlight ed Ġ= Ġis Pressed ĊĠĠĠĠĠĠĠ Ġreturn Ġis Pressed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Moved ( virtual Point : ĠPoint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isVisible ) Ġreturn ĊĠĠĠĠĠĠĠ Ġis Highlight ed Ġ= Ġrange Between ( center , Ġvirtual Point ) Ġ< Ġradius ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( virtual Screen : ĠVirtual Screen ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isVisible ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( border Size Ġ!= Ġ 0 f ) Ġvirtual Screen . draw ( border Texture Name , Ġrect ) ĊĠĠĠĠĠĠĠ Ġvirtual Screen . draw ( getCurrent Texture Name (), Ġinner Rect ) ĊĠĠĠĠĠĠĠ Ġbounded Label ?. draw () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun press () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Pressed Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ Ċ }