import Ġdiagram .* Ċ import Ġli bui . k tx . Draw Context Ċ import Ġli bui . k tx . draw . Point Ċ import Ġli bui . k tx . draw . Size Ċ import Ġli bui . k tx . draw . fill Ċ import Ġli bui . k tx . draw . stroke Ċ import Ġli bui . ui Draw Default M iter Limit Ċ import Ġli bui . ui Draw Line Cap Flat Ċ import Ġli bui . ui Draw Line Join M iter Ċ import Ġkotlin . math . PI Ċ import Ġkotlin . math . min Ċ import Ġkotlin . random . Random Ċ Ċ data Ġclass ĠBox ( ĊĠĠĠ Ġvar Ġrectangle : ĠRectangle , ĊĠĠĠ Ġvar Ġcolor : ĠInt Ġ= Ġcolor Dod ger Blue , ĊĠĠĠ Ġvar Ġradius : ĠDouble Ġ= Ġ 5 . 0 Ċ ) Ċ Ċ class ĠBox Element ( override Ġval Ġmodel : ĠBox ): ĠDiagram Element < Box > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġbounds Ġ= Ġmodel . rectangle . expanded ( 1 0 . 0 , Ġ 1 0 . 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay ( context : ĠDraw Context , Ġdiagram : ĠDiagram Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . fill ( diagram . brush . solid ( model . color )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrectangle Ġ= Ġmodel . rectangle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġmodel . radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . radius Ġ<= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle ( rectangle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Radius Ġ= Ġrectangle . top Left . x Ġ+ Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Radius Ġ= Ġrectangle . top Left . y Ġ+ Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Radius Ġ= Ġrectangle . bottom Right . x Ġ- Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Radius Ġ= Ġrectangle . bottom Right . y Ġ- Ġradius ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfigure ( rectangle . top Left . x , Ġtop Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( left Radius , Ġtop Radius , Ġradius , ĠPI , ĠPI Ġ/ 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( right Radius , Ġtop Radius , Ġradius , ĠPI Ġ* 3 . 0 / 2 . 0 , ĠPI Ġ/ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( right Radius , Ġbottom Radius , Ġradius , Ġ 0 . 0 , ĠPI Ġ/ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( left Radius , Ġbottom Radius , Ġradius , ĠPI Ġ/ 2 , ĠPI Ġ/ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Figure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhit Testing ( zone : ĠRectangle , Ġtype : ĠHit Type , Ġcontext : ĠDiagram Context , Ġresult : ĠMutable List < Diagram Element < Box >>) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġrandom Boxes ( size : ĠInt Ġ= Ġ 1 0 , ĠmaxWidth : ĠDouble Ġ= Ġ 2 0 0 0 . 0 , ĠmaxHeight : ĠDouble Ġ= Ġ 2 0 0 0 . 0 ) Ġ= ĠList ( size ) Ġ{ ĊĠĠĠ Ġval Ġcolor Ġ= ĠRandom . nextInt () ĊĠĠĠ Ġval Ġradius Ġ= ĠRandom . next Double ( 0 . 0 , Ġ 1 0 . 0 ) ĊĠĠĠ Ġval Ġleft Ġ= ĠRandom . next Double ( maxWidth Ġ- Ġ 2 0 . 0 ) ĊĠĠĠ Ġval Ġtop Ġ= ĠRandom . next Double ( max Height Ġ- Ġ 2 0 . 0 ) ĊĠĠĠ Ġval Ġwidth Ġ= ĠRandom . next Double ( 2 Ġ* Ġradius , Ġmin ( maxWidth Ġ- Ġleft , Ġ 1 0 0 . 0 )) ĊĠĠĠ Ġval Ġheight Ġ= ĠRandom . next Double ( 2 Ġ* Ġradius , Ġmin ( max Height Ġ- Ġtop , Ġ 1 0 0 . 0 )) ĊĠĠĠ ĠBox ( Rectangle ( Point ( left , Ġtop ), ĠSize ( width , Ġheight )), Ġcolor , Ġradius ) Ċ } Ċ