package Ġcom . and res _ k . lib . library . core . property Ċ Ċ import Ġcom . and res _ k . lib . library . core . component . ComponentType Ċ Ċ /** Ċ Ġ* ĠCreated Ġon Ġ 2 0 2 0 / 0 7 / 2 0 . Ċ Ġ* Ċ Ġ* Ġ@ author ĠKevin ĠAnd res Ċ Ġ*/ ĊĊ Ċ /** ĠPIX EL Ġ**/ Ċ data Ġclass ĠBox Size ( val Ġwidth : ĠFloat ?, Ġval Ġheight : ĠFloat ?, Ġval Ġtype : ĠComponent Type ) Ċ Ċ data Ġclass ĠSize Result ( val Ġwidth : ĠFloat , Ġval Ġheight : ĠFloat ) ĊĊ Ċ /** ĠGENER IC Ġ**/ Ċ Ċ data Ġclass ĠSize Attr ( val Ġv : ĠFloat , Ġval Ġis Percentage : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġpercent ( v : ĠFloat ): ĠSize Attr Ġ= ĠSize Attr ( v , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġfun Ġpixel ( v : ĠFloat ): ĠSize Attr Ġ= ĠSize Attr ( v , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfun Ġfull (): ĠSize Attr Ġ= Ġpercent ( 1 0 0 f ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠSize ( val Ġwidth : ĠSize Attr ? Ġ= Ġnull , Ġval Ġheight : ĠSize Attr ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġconstructor ( width : ĠFloat ?, Ġheight : ĠFloat ?) Ġ: Ġthis ( get ( width ), Ġget ( height )) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠFULL Ġ= ĠSize ( Size Attr . full (), ĠSize Attr . full ()) ĊĠĠĠĠĠĠĠ Ġval ĠNULL Ġ= ĠSize () ĊĠĠĠĠĠĠĠ Ġval ĠNONE Ġ= ĠSize ( get ( 0 f ), Ġget ( 0 f )) ĊĠĠĠĠĠĠĠ Ġfun Ġget ( value : ĠFloat ?, Ġis Percentage : ĠBoolean Ġ= Ġfalse ): ĠSize Attr ? Ġ= Ġif Ġ( value Ġ!= Ġnull ) ĠSize Attr ( value , Ġis Percentage ) Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Size (" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" width =" Ġ+ Ġwidth Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height =" Ġ+ Ġheight Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ")" ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠReq Size ( width : ĠSize Attr , Ġheight : ĠSize Attr ) Ġ: ĠSize ( width , Ġheight ) Ċ class ĠReq Width Size ( width : ĠSize Attr , Ġheight : ĠSize Attr ? Ġ= Ġnull ) Ġ: ĠSize ( width , Ġheight ) Ċ class ĠReq Height Size ( width : ĠSize Attr ? Ġ= Ġnull , Ġheight : ĠSize Attr ) Ġ: ĠSize ( width , Ġheight ) ĊĊĊ