package Ġmodel . elements Ċ Ċ import Ġmodel . Path Converter Ċ import Ġmodel . Svg Element Ċ import Ġmodel . Transform Ċ import Ġmodel . style . Style Ċ Ċ data Ġclass ĠRectangle ( ĊĠĠĠ Ġval Ġx : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġy : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġrx : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġry : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġwidth : ĠDouble , ĊĠĠĠ Ġval Ġheight : ĠDouble , ĊĠĠĠ Ġoverride Ġvar Ġstyle : ĠStyle Ġ= ĠStyle (), ĊĠĠĠ Ġoverride Ġvar Ġtransform : ĠList < Transform > Ġ= Ġempty List () Ċ ) Ġ: ĠSvg Element ( style , Ġtransform ), ĠPath Converter Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNode Name Ġ= Ġ" rect " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Path (): ĠPath Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactions Ġ= ĠArrayList < Path . Action >() ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġx Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġy Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġis Rounded Ġ= Ġrx Ġ!= Ġnull Ġ|| Ġry Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( is Rounded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrx Ġ= Ġrx Ġ?: Ġry Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġry Ġ= Ġry Ġ?: Ġrx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Move ( x Ġ+ Ġrx , Ġy )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( x Ġ+ Ġwidth Ġ- Ġrx , Ġy )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Arc ( rx , Ġry , Ġ 0 . 0 , Ġ 0 , Ġ 1 , Ġx Ġ+ Ġwidth , Ġy Ġ+ Ġry )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( x Ġ+ Ġwidth , Ġy Ġ+ Ġheight Ġ- Ġry )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Arc ( rx , Ġry , Ġ 0 . 0 , Ġ 0 , Ġ 1 , Ġx Ġ+ Ġwidth Ġ- Ġrx , Ġy Ġ+ Ġheight )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( x Ġ+ Ġrx , Ġy Ġ+ Ġheight )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Arc ( rx , Ġry , Ġ 0 . 0 , Ġ 0 , Ġ 1 , Ġx , Ġy Ġ+ Ġheight Ġ- Ġry )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( x , Ġy Ġ+ Ġry )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Arc ( rx , Ġry , Ġ 0 . 0 , Ġ 0 , Ġ 1 , Ġx Ġ+ Ġrx , Ġy )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( transform . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠTransform . Matrix Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠTransform . Rotate Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠTransform . Sk ew X Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠTransform . Sk ew Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Move ( x , Ġy )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( width , Ġ 0 . 0 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To ( 0 . 0 , Ġheight , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Line To (- width , Ġ 0 . 0 , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Move ( x , Ġy )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Horizontal Line ( width , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add (( Path . Action . Vertical Line ( height , Ġtrue ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add (( Path . Action . Horizontal Line (- width , Ġtrue ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactions . add ( Path . Action . Close ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPath ( actions , Ġstyle , Ġtransform ). get Trans formed Path () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Xml (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"< $ NodeName ${ x ?. let Ġ{ Ġ" Ġx =\" $ it \"" Ġ} Ġ?: Ġ"" }${ y ?. let Ġ{ Ġ" Ġy =\" $ it \"" Ġ} Ġ?: Ġ"" }${ rx ?. let Ġ{ Ġ" Ġrx =\" $ it \"" Ġ} Ġ?: Ġ"" }${ ry ?. let Ġ{ Ġ" Ġry =\" $ it \"" Ġ} Ġ?: Ġ"" } Ġwidth =\" $ width \" Ġheight =\" $ height \" Ġ/> " ĊĠĠĠ Ġ} Ċ }