/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . liv emap . core . rendering . primitives Ċ Ċ import Ġjet brains . datal ore . base . geometry . Double Vector Ċ import Ġjet brains . datal ore . vis . canvas . Context 2 d Ċ import Ġkotlin . math . max Ċ Ċ class ĠFrame Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġposition : ĠDouble Vector , ĊĠĠĠ Ġprivate Ġval Ġrender Boxes : ĠList < Render Box > Ċ ) Ġ: ĊĠĠĠ ĠRender Box Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġorigin Ġget () Ġ= Ġposition ĊĠĠĠ Ġoverride Ġval Ġdimension Ġget () Ġ= Ġcalculate Dimension () ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( ctx : ĠContext 2 d ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Boxes . forEach Ġ{ Ġprimitive Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . save () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= Ġprimitive . origin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . translate ( origin . x , Ġorigin . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprimitive . render ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . restore () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Dimension (): ĠDouble Vector Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġget Right ( render Boxes [ 0 ]) ĊĠĠĠĠĠĠĠ Ġvar Ġbottom Ġ= Ġget Bottom ( render Boxes [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( render Box Ġin Ġrender Boxes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġmax ( right , Ġget Right ( render Box )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġmax ( bottom , Ġget Bottom ( render Box )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Vector ( right , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Right ( render Object : ĠRender Box ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrender Object . origin . x Ġ+ Ġrender Boxes [ 0 ]. dimension . x ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Bottom ( render Object : ĠRender Box ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrender Object . origin . y Ġ+ Ġrender Boxes [ 0 ]. dimension . y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( position : ĠDouble Vector , Ġvar arg Ġrender Boxes : ĠRender Box ): ĠFrame Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFrame ( position , Ġrender Boxes . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }