/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠJ ason ĠMon k Ċ Ġ* ĠĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . mon kop edia . dynamic layout Ċ Ċ import Ġcom . google code . lan tern a . Terminal Position Ċ import Ġcom . google code . lan tern a . Terminal Size Ċ Ċ data Ġclass ĠPadding ( ĊĠĠĠ Ġval Ġleft : ĠInt , ĊĠĠĠ Ġval Ġtop : ĠInt , ĊĠĠĠ Ġval Ġright : ĠInt , ĊĠĠĠ Ġval Ġbottom : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġval Ġhorizontal Ġget () Ġ= Ġleft Ġ+ Ġright ĊĠĠĠ Ġval Ġvertical Ġget () Ġ= Ġtop Ġ+ Ġbottom ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( size : ĠTerminal Size ): ĠTerminal Size Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTerminal Size ( size . columns Ġ+ Ġleft Ġ+ Ġright , Ġsize . rows Ġ+ Ġtop Ġ+ Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( size : ĠTerminal Position ): ĠTerminal Position Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTerminal Position ( size . column Ġ+ Ġleft , Ġsize . row Ġ+ Ġtop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠZERO Ġ= ĠPadding ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ operator Ġfun ĠTerminal Size . plus ( padding : ĠPadding ) Ġ= Ġpadding Ġ+ Ġthis Ċ operator Ġfun ĠTerminal Size . minus ( padding : ĠPadding ) Ġ= ĊĠĠĠ ĠTerminal Size ( ĊĠĠĠĠĠĠĠ Ġ( columns Ġ- Ġpadding . left Ġ- Ġpadding . right ). coerce At Least ( 0 ), ĊĠĠĠĠĠĠĠ Ġ( rows Ġ- Ġpadding . top Ġ- Ġpadding . bottom ). coerce At Least ( 0 ) ĊĠĠĠ Ġ) Ċ Ċ operator Ġfun ĠTerminal Position . plus ( padding : ĠPadding ) Ġ= Ġpadding Ġ+ Ġthis Ċ operator Ġfun ĠTerminal Position . minus ( padding : ĠPadding ) Ġ= ĊĠĠĠ ĠTerminal Size ( column Ġ- Ġpadding . left , Ġrow Ġ- Ġpadding . top ) Ċ Ċ operator Ġfun ĠTerminal Position . minus ( terminal Position : ĠTerminal Position ) Ġ= ĊĠĠĠ ĠTerminal Position ( column Ġ- Ġterminal Position . column , Ġrow Ġ- Ġterminal Position . column ) Ċ