/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 , ĠAlibaba ĠGroup ĠHold ing ĠLimited ; Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// 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 . alibaba . g ai ax . template . utils Ċ Ċ import Ġapp . vis ly . stretch . Dimension Ċ import Ġapp . vis ly . stretch . Rect Ċ import Ġapp . vis ly . stretch . Size Ċ import Ġcom . alibaba . g ai ax . template . GX Size Ċ Ċ /** Ċ Ġ* Ġ@ suppress Ċ Ġ*/ Ċ object ĠG X Template Utils Ġ{ ĊĊĠĠĠ Ġfun Ġupdate Dimension ( it : ĠRect < Dimension >, Ġtarget Dimension : ĠRect < Dimension >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . start Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . start Ġ= Ġit . start ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( it . end Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . end Ġ= Ġit . end ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( it . top Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . top Ġ= Ġit . top ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( it . bottom Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . bottom Ġ= Ġit . bottom ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Size ( it : ĠSize < Dimension >, Ġtarget Dimension : ĠSize < Dimension >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . width Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . width Ġ= Ġit . width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( it . height Ġ! is ĠDimension . Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Dimension . height Ġ= Ġit . height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Rect GX Size By Priority ( height Priority : ĠRect < GX Size > ?, Ġlow Priority : ĠRect < GX Size >? ): ĠRect < GX Size >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( low Priority Ġ!= Ġnull Ġ&& Ġheight Priority Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġif Ġ( height Priority . start Ġ! is ĠG X Size . Undefined Ġ&& Ġheight Priority . start Ġ! is ĠG X Size . Auto ) Ġheight Priority . start Ġelse Ġlow Priority . start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġif Ġ( height Priority . end Ġ! is ĠG X Size . Undefined Ġ&& Ġheight Priority . end Ġ! is ĠG X Size . Auto ) Ġheight Priority . end Ġelse Ġlow Priority . end , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġif Ġ( height Priority . top Ġ! is ĠG X Size . Undefined Ġ&& Ġheight Priority . top Ġ! is ĠG X Size . Auto ) Ġheight Priority . top Ġelse Ġlow Priority . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġif Ġ( height Priority . bottom Ġ! is ĠG X Size . Undefined Ġ&& Ġheight Priority . bottom Ġ! is ĠG X Size . Auto ) Ġheight Priority . bottom Ġelse Ġlow Priority . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( height Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( low Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Rect Dimension By Priority ( height Priority : ĠRect < Dimension > ?, Ġlow Priority : ĠRect < Dimension >? ): ĠRect < Dimension >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( low Priority Ġ!= Ġnull Ġ&& Ġheight Priority Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġif Ġ( height Priority . start Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . start Ġ! is ĠDimension . Auto ) Ġheight Priority . start Ġelse Ġlow Priority . start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġif Ġ( height Priority . end Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . end Ġ! is ĠDimension . Auto ) Ġheight Priority . end Ġelse Ġlow Priority . end , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġif Ġ( height Priority . top Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . top Ġ! is ĠDimension . Auto ) Ġheight Priority . top Ġelse Ġlow Priority . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġif Ġ( height Priority . bottom Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . bottom Ġ! is ĠDimension . Auto ) Ġheight Priority . bottom Ġelse Ġlow Priority . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( height Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( low Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Size Dimension By Priority ( height Priority : ĠSize < Dimension > ?, Ġlow Priority : ĠSize < Dimension >? ): ĠSize < Dimension >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( low Priority Ġ!= Ġnull Ġ&& Ġheight Priority Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġif Ġ( height Priority . width Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . width Ġ! is ĠDimension . Auto ) Ġheight Priority . width Ġelse Ġlow Priority . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġif Ġ( height Priority . height Ġ! is ĠDimension . Undefined Ġ&& Ġheight Priority . height Ġ! is ĠDimension . Auto ) Ġheight Priority . height Ġelse Ġlow Priority . height , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( height Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( low Priority Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Priority ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }