package Ġk dent icon Ċ Ċ import Ġkotlin . math . floor Ċ Ċ class ĠGraphics ( renderer : ĠRenderer ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ renderer Ġ= Ġrenderer ĊĠĠĠ Ġvar Ġno Transform Ġ= ĠTransform . no Transform () ĊĊĠĠĠ Ġfun Ġadd Polygon ( points : ĠList < Point >, Ġinvert : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransform Ġ= Ġthis . no Transform ĊĠĠĠĠĠĠĠ Ġval Ġtransformed Points Ġ= ĠArrayList < Point >() ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġif Ġ( invert ) Ġpoints . size Ġ- Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ(! invert ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġi Ġuntil Ġpoints . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransformed Points . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform . transform Point ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints [ x ]. x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints [ x ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġi Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransformed Points . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform . transform Point ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints [ x ]. x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints [ x ]. y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis ._ renderer . add Polygon ( transformed Points ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Circle ( x : ĠFloat , Ġy : ĠFloat , Ġsize : ĠFloat , Ġinvert : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġthis . no Transform . transform Point ( x , Ġy , Ġsize , Ġsize ) ĊĠĠĠĠĠĠĠ Ġthis ._ renderer . add Circle ( p , Ġsize , Ġinvert ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Rectangle ( x : ĠFloat , Ġy : ĠFloat , Ġw : ĠFloat , Ġh : ĠFloat , Ġinvert : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add Polygon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw , Ġy ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw , Ġy Ġ+ Ġh ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy Ġ+ Ġh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvert ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Triangle ( x : ĠFloat , Ġy : ĠFloat , Ġw : ĠFloat , Ġh : ĠFloat , Ġr : ĠFloat , Ġinvert : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoints Ġ= ĠArrayList < Point >( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw , Ġy ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw , Ġy Ġ+ Ġh ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy Ġ+ Ġh ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ// original Ġsp lice Ġmethod Ġdid Ġnot Ġuse Ġpoint Ġobjects , Ġand Ġneeded Ġto Ġdelete Ġtwo Ġelements ĊĠĠĠĠĠĠĠ Ġpoints . remove At ( floor ( r ). toInt () Ġ% Ġ 4 ); ĊĠĠĠĠĠĠĠ Ġthis . add Polygon ( points , Ġinvert ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd R hom bus ( x : ĠFloat , Ġy : ĠFloat , Ġw : ĠFloat , Ġh : ĠFloat , Ġinvert : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add Polygon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw Ġ/ Ġ 2 f , Ġy ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw , Ġy Ġ+ Ġh Ġ/ Ġ 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x Ġ+ Ġw Ġ/ Ġ 2 f , Ġy Ġ+ Ġh ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint ( x , Ġy Ġ+ Ġh Ġ/ Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvert ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }