package Ġio . nac ular . do od le . layout Ċ Ċ import Ġio . nac ular . do od le . core . Layout Ċ import Ġio . nac ular . do od le . core . Position able Container Ċ import Ġio . nac ular . do od le . drawing . Affine Transform . Companion . Identity Ċ import Ġio . nac ular . do od le . geometry . Point Ċ import Ġio . nac ular . do od le . geometry . Rectangle Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠN ich olas ĠE ddy Ġon Ġ 3 / 2 9 / 1 9 . Ċ Ġ*/ Ċ public Ġclass ĠZ oo med Layout ( private Ġval Ġindex : ĠInt , Ġprivate Ġval Ġtarget Bounds : ĠRectangle ? Ġ= Ġnull , Ġprivate Ġval Ġlayout : ĠLayout ? Ġ= Ġnull ): ĠLayout Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlayout ( container : ĠPosition able Container ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠNeed Ġto Ġfirst Ġlayout Ġthe Ġchildren ĊĠĠĠĠĠĠĠ Ġlayout ?. layout ( container ) ĊĊĠĠĠĠĠĠĠ Ġcontainer . children . get OrNull ( index )?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen Ġwe Ġcan Ġadjust Ġtheir Ġbounds Ġusing Ġa Ġtransform ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Bounds Ġ Ġ= Ġtarget Bounds Ġ?: ĠRectangle ( size Ġ= Ġcontainer . size ). in set ( container . in sets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Bounds Ġ= Ġview . bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaround ĠĠĠĠĠĠĠ Ġ= ĠPoint ( container . in sets . left , Ġcontainer . in sets . top ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Ġ= ĠIdentity . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate ( around ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale ĠĠĠ Ġ( target Bounds . width Ġ/ Ġcurrent Bounds . width , Ġtarget Bounds . height Ġ/ Ġcurrent Bounds . height ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate ( target Bounds . position Ġ- Ġcurrent Bounds . position ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate (- around ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . children . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 1 Ġ= Ġtransform ( it . position ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 2 Ġ= Ġtransform ( Point ( it . x Ġ+ Ġit . width , Ġit . y Ġ+ Ġit . height )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounds Ġ= ĠRectangle ( p 1 . x , Ġp 1 . y , Ġp 2 . x Ġ- Ġp 1 . x , Ġp 2 . y Ġ- Ġp 1 . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }