/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . compose . foundation . layout Ċ Ċ import Ġandroidx . compose . runtime . Stable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . layout . Layout Modifier Ċ import Ġandroidx . compose . ui . layout . Meas ur able Ċ import Ġandroidx . compose . ui . layout . Measure Scope Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Intr insic Meas ur able Ċ import Ġandroidx . compose . ui . layout . Intr insic Measure Scope Ċ import Ġandroidx . compose . ui . layout . Measure Result Ċ import Ġandroidx . compose . ui . platform . Inspector Info Ċ import Ġandroidx . compose . ui . platform . Inspector Value Info Ċ import Ġandroidx . compose . ui . platform . debug Inspector Info Ċ import Ġandroidx . compose . ui . unit . Constraints Ċ import Ġandroidx . compose . ui . unit . Density Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . Int Size Ċ import Ġandroidx . compose . ui . unit . Layout Direction Ċ import Ġandroidx . compose . ui . unit . constr ain Ċ import Ġandroidx . compose . ui . unit . constr ain Height Ċ import Ġandroidx . compose . ui . unit . constr ain Width Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġpreferred Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ width ] dp . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġmay Ġoverride Ġthis Ġvalue , Ġforcing Ġthe Ġcontent Ġto Ġbe Ġeither Ġsmaller Ġor Ġlarger . Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġmodifier Ġthat Ġsets Ġthe Ġwidth Ġof Ġthe Ġcontent Ġregardless Ġof Ġthe Ġincoming Ġconstraints Ġsee Ċ Ġ* Ġ[ Modifier . required Width ]. ĠSee Ġ[ height ] Ġor Ġ[ size ] Ġto Ġset Ġother Ġpreferred Ġdimensions . Ċ Ġ* ĠSee Ġ[ width In ], Ġ[ height In ] Ġor Ġ[ size In ] Ġto Ġset Ġa Ġpreferred Ġsize Ġrange . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Width Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . width ( width : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" width " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġpreferred Ġheight Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ height ] dp . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġmay Ġoverride Ġthis Ġvalue , Ġforcing Ġthe Ġcontent Ġto Ġbe Ġeither Ġsmaller Ġor Ġlarger . Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġmodifier Ġthat Ġsets Ġthe Ġheight Ġof Ġthe Ġcontent Ġregardless Ġof Ġthe Ġincoming Ġconstraints Ġsee Ċ Ġ* Ġ[ Modifier . required Height ]. ĠSee Ġ[ width ] Ġor Ġ[ size ] Ġto Ġset Ġother Ġpreferred Ġdimensions . Ċ Ġ* ĠSee Ġ[ width In ], Ġ[ height In ] Ġor Ġ[ size In ] Ġto Ġset Ġa Ġpreferred Ġsize Ġrange . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Height Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . height ( height : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" height " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġpreferred Ġsize Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ size ] dp Ġsquare . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġmay Ġoverride Ġthis Ġvalue , Ġforcing Ġthe Ġcontent Ġto Ġbe Ġeither Ġsmaller Ġor Ġlarger . Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġmodifier Ġthat Ġsets Ġthe Ġsize Ġof Ġthe Ġcontent Ġregardless Ġof Ġthe Ġincoming Ġconstraints , Ġsee Ċ Ġ* Ġ[ Modifier . required Size ]. ĠSee Ġ[ width ] Ġor Ġ[ height ] Ġto Ġset Ġwidth Ġor Ġheight Ġalone . Ċ Ġ* ĠSee Ġ[ width In ], Ġ[ height In ] Ġor Ġ[ size In ] Ġto Ġset Ġa Ġpreferred Ġsize Ġrange . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Size Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . size ( size : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġsize , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġpreferred Ġsize Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ width ] dp Ġby Ġ[ height ] dp . ĠThe Ġincoming Ċ Ġ* Ġmeasurement Ġ[ Constraints ] Ġmay Ġoverride Ġthis Ġvalue , Ġforcing Ġthe Ġcontent Ġto Ġbe Ġeither Ġsmaller Ġor Ċ Ġ* Ġlarger . Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġmodifier Ġthat Ġsets Ġthe Ġsize Ġof Ġthe Ġcontent Ġregardless Ġof Ġthe Ġincoming Ġconstraints , Ġsee Ċ Ġ* Ġ[ Modifier . required Size ]. ĠSee Ġ[ width ] Ġor Ġ[ height ] Ġto Ġset Ġwidth Ġor Ġheight Ġalone . Ċ Ġ* ĠSee Ġ[ width In ], Ġ[ height In ] Ġor Ġ[ size In ] Ġto Ġset Ġa Ġpreferred Ġsize Ġrange . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Size Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . size ( width : ĠD p , Ġheight : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" width "] Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" height "] Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min ] dp Ġand Ġ[ max ] dp Ġas Ġpermitted Ċ Ġ* Ġby Ġthe Ġincoming Ġmeasurement Ġ[ Constraints ]. ĠIf Ġthe Ġincoming Ġconstraints Ġare Ġmore Ġrestrict ive Ċ Ġ* Ġthe Ġrequested Ġsize Ġwill Ġo bey Ġthe Ġincoming Ġconstraints Ġand Ġattempt Ġto Ġbe Ġas Ġclose Ġas Ġpossible Ċ Ġ* Ġto Ġthe Ġpreferred Ġsize . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . width In ( ĊĠĠĠ Ġmin : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġmax : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġmin , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġmax , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" width In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min "] Ġ= Ġmin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max "] Ġ= Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġheight Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min ] dp Ġand Ġ[ max ] dp Ġas Ġpermitted Ċ Ġ* Ġby Ġthe Ġincoming Ġmeasurement Ġ[ Constraints ]. ĠIf Ġthe Ġincoming Ġconstraints Ġare Ġmore Ġrestrict ive Ċ Ġ* Ġthe Ġrequested Ġsize Ġwill Ġo bey Ġthe Ġincoming Ġconstraints Ġand Ġattempt Ġto Ġbe Ġas Ġclose Ġas Ġpossible Ċ Ġ* Ġto Ġthe Ġpreferred Ġsize . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . height In ( ĊĠĠĠ Ġmin : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġmax : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġmin , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġmax , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" height In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min "] Ġ= Ġmin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max "] Ġ= Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min Width ] dp Ġand Ġ[ maxWidth ] dp Ġand Ġthe Ġheight Ċ Ġ* Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min Height ] dp Ġand Ġ[ max Height ] dp Ġas Ġpermitted Ġby Ġthe Ġincoming Ċ Ġ* Ġmeasurement Ġ[ Constraints ]. ĠIf Ġthe Ġincoming Ġconstraints Ġare Ġmore Ġrestrict ive Ġthe Ġrequested Ġsize Ċ Ġ* Ġwill Ġo bey Ġthe Ġincoming Ġconstraints Ġand Ġattempt Ġto Ġbe Ġas Ġclose Ġas Ġpossible Ġto Ġthe Ġpreferred Ġsize . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . size In ( ĊĠĠĠ ĠminWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠminHeight : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠmaxWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠmaxHeight : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= ĠminWidth , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= ĠminHeight , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= ĠmaxWidth , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= ĠmaxHeight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" size In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Width "] Ġ= ĠminWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Height "] Ġ= ĠminHeight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" maxWidth "] Ġ= ĠmaxWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max Height "] Ġ= ĠmaxHeight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ width ] dp . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġwill Ġnot Ġoverride Ġthis Ġvalue . ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ċ Ġ* Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ċ Ġ* Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ċ Ġ* Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ċ Ġ* Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ* Ċ Ġ* ĠSee Ġ[ required Width In ] Ġand Ġ[ required Size In ] Ġto Ġset Ġa Ġsize Ġrange . Ċ Ġ* ĠSee Ġ[ width ] Ġto Ġset Ġa Ġpreferred Ġwidth , Ġwhich Ġis Ġonly Ġrespect ed Ġwhen Ġthe Ġincoming Ċ Ġ* Ġconstraints Ġallow Ġit . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Required Width Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Width ( width : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Width " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġheight Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ height ] dp . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġwill Ġnot Ġoverride Ġthis Ġvalue . ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ċ Ġ* Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ċ Ġ* Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ċ Ġ* Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ċ Ġ* Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ* Ċ Ġ* ĠSee Ġ[ required Height In ] Ġand Ġ[ required Size In ] Ġto Ġset Ġa Ġsize Ġrange . Ċ Ġ* ĠSee Ġ[ height ] Ġto Ġset Ġa Ġpreferred Ġheight , Ġwhich Ġis Ġonly Ġrespect ed Ġwhen Ġthe Ġincoming Ċ Ġ* Ġconstraints Ġallow Ġit . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Required Height Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Height ( height : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Height " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġsize Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ size ] dp Ġwidth Ġand Ġheight . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġwill Ġnot Ġoverride Ġthis Ġvalue . ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ċ Ġ* Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ċ Ġ* Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ċ Ġ* Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ċ Ġ* Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ* Ċ Ġ* ĠSee Ġ[ required Size In ] Ġto Ġset Ġa Ġsize Ġrange . Ċ Ġ* ĠSee Ġ[ size ] Ġto Ġset Ġa Ġpreferred Ġsize , Ġwhich Ġis Ġonly Ġrespect ed Ġwhen Ġthe Ġincoming Ċ Ġ* Ġconstraints Ġallow Ġit . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Required Size Modifier Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Size ( size : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġsize , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġsize , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠDeclare Ġthe Ġsize Ġof Ġthe Ġcontent Ġto Ġbe Ġexactly Ġ[ width ] dp Ġand Ġ[ height ] dp . ĠThe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ Constraints ] Ġwill Ġnot Ġoverride Ġthis Ġvalue . ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ċ Ġ* Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ċ Ġ* Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ċ Ġ* Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ċ Ġ* Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ* Ċ Ġ* ĠSee Ġ[ required Size In ] Ġto Ġset Ġa Ġsize Ġrange . Ċ Ġ* ĠSee Ġ[ size ] Ġto Ġset Ġa Ġpreferred Ġsize , Ġwhich Ġis Ġonly Ġrespect ed Ġwhen Ġthe Ġincoming Ċ Ġ* Ġconstraints Ġallow Ġit . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Size ( width : ĠD p , Ġheight : ĠD p ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" width "] Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" height "] Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min ] dp Ġand Ġ[ max ] dp . Ċ Ġ* ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ċ Ġ* Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ċ Ġ* Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ċ Ġ* Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Width In ( ĊĠĠĠ Ġmin : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġmax : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġmin , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġmax , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Width In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min "] Ġ= Ġmin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max "] Ġ= Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġheight Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min ] dp Ġand Ġ[ max ] dp . Ċ Ġ* ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ċ Ġ* Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ċ Ġ* Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ċ Ġ* Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Height In ( ĊĠĠĠ Ġmin : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġmax : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġmin , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġmax , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Height In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min "] Ġ= Ġmin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max "] Ġ= Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġwidth Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min Width ] dp Ġand Ġ[ maxWidth ] dp , Ġand Ġthe Ċ Ġ* Ġheight Ġof Ġthe Ġcontent Ġto Ġbe Ġbetween Ġ[ min Height ] dp Ġand Ġ[ max Height ] dp . Ċ Ġ* ĠIf Ġthe Ġcontent Ġch oo ses Ġa Ġsize Ġthat Ġdoes Ġnot Ġsatisfy Ġthe Ġincoming Ġ[ Constraints ], Ġthe Ċ Ġ* Ġparent Ġlayout Ġwill Ġbe Ġreported Ġa Ġsize Ġco er ced Ġin Ġthe Ġ[ Constraints ], Ġand Ġthe Ġposition Ċ Ġ* Ġof Ġthe Ġcontent Ġwill Ġbe Ġautomatically Ġoffset Ġto Ġbe Ġcentered Ġon Ġthe Ġspace Ġassigned Ġto Ċ Ġ* Ġthe Ġchild Ġby Ġthe Ġparent Ġlayout Ġunder Ġthe Ġassumption Ġthat Ġ[ Constraints ] Ġwere Ġrespect ed . Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . required Size In ( ĊĠĠĠ ĠminWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠminHeight : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠmaxWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠmaxHeight : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠSize Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= ĠminWidth , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= ĠminHeight , ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ= ĠmaxWidth , ĊĠĠĠĠĠĠĠ ĠmaxHeight Ġ= ĠmaxHeight , ĊĠĠĠĠĠĠĠ Ġenforce Incoming Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" required Size In " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Width "] Ġ= ĠminWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Height "] Ġ= ĠminHeight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" maxWidth "] Ġ= ĠmaxWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" max Height "] Ġ= ĠmaxHeight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠHave Ġthe Ġcontent Ġfill Ġ( possibly Ġonly Ġpartially ) Ġthe Ġ[ Constraints . maxWidth ] Ġof Ġthe Ġincoming Ċ Ġ* Ġmeasurement Ġconstraints , Ġby Ġsetting Ġthe Ġ[ minimum Ġwidth ][ Constraints . min Width ] Ġand Ġthe Ċ Ġ* Ġ[ maximum Ġwidth ][ Constraints . maxWidth ] Ġto Ġbe Ġequal Ġto Ġthe Ġ[ maximum Ġwidth ][ Constraints . maxWidth ] Ċ Ġ* Ġmultip lied Ġby Ġ[ fraction ]. ĠNote Ġthat , Ġby Ġdefault , Ġthe Ġ[ fraction ] Ġis Ġ 1 , Ġso Ġthe Ġmodifier Ġwill Ċ Ġ* Ġmake Ġthe Ġcontent Ġfill Ġthe Ġwhole Ġavailable Ġwidth . ĠIf Ġthe Ġincoming Ġmaximum Ġwidth Ġis Ċ Ġ* Ġ[ Constraints . Infinity ] Ġthis Ġmodifier Ġwill Ġhave Ġno Ġeffect . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfraction ĠThe Ġfraction Ġof Ġthe Ġmaximum Ġwidth Ġto Ġuse , Ġbetween Ġ` 0 ` Ġand Ġ` 1 `, Ġinclusive . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Fill Width Modifier Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Fill Half Width Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . fill Max Width (/* @ Float Range ( from Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ) */ Ġfraction : ĠFloat Ġ= Ġ 1 f ) Ġ= ĊĠĠĠ Ġthis . then ( if Ġ( fraction Ġ== Ġ 1 f ) ĠFill Whole Max Width Ġelse Ġcreate Fill Width Modifier ( fraction )) Ċ Ċ private Ġval ĠFill Whole Max Width Ġ= Ġcreate Fill Width Modifier ( 1 f ) Ċ Ċ /** Ċ Ġ* ĠHave Ġthe Ġcontent Ġfill Ġ( possibly Ġonly Ġpartially ) Ġthe Ġ[ Constraints . max Height ] Ġof Ġthe Ġincoming Ċ Ġ* Ġmeasurement Ġconstraints , Ġby Ġsetting Ġthe Ġ[ minimum Ġheight ][ Constraints . min Height ] Ġand Ġthe Ċ Ġ* Ġ[ maximum Ġheight ][ Constraints . max Height ] Ġto Ġbe Ġequal Ġto Ġthe Ċ Ġ* Ġ[ maximum Ġheight ][ Constraints . max Height ] Ġmultip lied Ġby Ġ[ fraction ]. ĠNote Ġthat , Ġby Ġdefault , Ċ Ġ* Ġthe Ġ[ fraction ] Ġis Ġ 1 , Ġso Ġthe Ġmodifier Ġwill Ġmake Ġthe Ġcontent Ġfill Ġthe Ġwhole Ġavailable Ġheight . Ċ Ġ* ĠIf Ġthe Ġincoming Ġmaximum Ġheight Ġis Ġ[ Constraints . Infinity ] Ġthis Ġmodifier Ġwill Ġhave Ġno Ġeffect . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfraction ĠThe Ġfraction Ġof Ġthe Ġmaximum Ġheight Ġto Ġuse , Ġbetween Ġ` 0 ` Ġand Ġ` 1 `, Ġinclusive . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Fill Height Modifier Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Fill Half Height Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . fill Max Height (/* @ Float Range ( from Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ) */ Ġfraction : ĠFloat Ġ= Ġ 1 f ) Ġ= ĊĠĠĠ Ġthis . then ( if Ġ( fraction Ġ== Ġ 1 f ) ĠFill Whole Max Height Ġelse Ġcreate Fill Height Modifier ( fraction )) Ċ Ċ private Ġval ĠFill Whole Max Height Ġ= Ġcreate Fill Height Modifier ( 1 f ) Ċ Ċ /** Ċ Ġ* ĠHave Ġthe Ġcontent Ġfill Ġ( possibly Ġonly Ġpartially ) Ġthe Ġ[ Constraints . maxWidth ] Ġand Ċ Ġ* Ġ[ Constraints . max Height ] Ġof Ġthe Ġincoming Ġmeasurement Ġconstraints , Ġby Ġsetting Ġthe Ċ Ġ* Ġ[ minimum Ġwidth ][ Constraints . min Width ] Ġand Ġthe Ġ[ maximum Ġwidth ][ Constraints . maxWidth ] Ġto Ġbe Ċ Ġ* Ġequal Ġto Ġthe Ġ[ maximum Ġwidth ][ Constraints . maxWidth ] Ġmultip lied Ġby Ġ[ fraction ], Ġas Ġwell Ġas Ċ Ġ* Ġthe Ġ[ minimum Ġheight ][ Constraints . min Height ] Ġand Ġthe Ġ[ maximum Ġheight ][ Constraints . min Height ] Ċ Ġ* Ġto Ġbe Ġequal Ġto Ġthe Ġ[ maximum Ġheight ][ Constraints . max Height ] Ġmultip lied Ġby Ġ[ fraction ]. Ċ Ġ* ĠNote Ġthat , Ġby Ġdefault , Ġthe Ġ[ fraction ] Ġis Ġ 1 , Ġso Ġthe Ġmodifier Ġwill Ġmake Ġthe Ġcontent Ġfill Ċ Ġ* Ġthe Ġwhole Ġavailable Ġspace . Ċ Ġ* ĠIf Ġthe Ġincoming Ġmaximum Ġwidth Ġor Ġheight Ġis Ġ[ Constraints . Infinity ] Ġthis Ġmodifier Ġwill Ġhave Ġno Ċ Ġ* Ġeffect Ġin Ġthat Ġdimension . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfraction ĠThe Ġfraction Ġof Ġthe Ġmaximum Ġsize Ġto Ġuse , Ġbetween Ġ` 0 ` Ġand Ġ` 1 `, Ġinclusive . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Fill Modifier Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Fill Half Size Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . fill MaxSize (/* @ Float Range ( from Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ) */ Ġfraction : ĠFloat Ġ= Ġ 1 f ) Ġ= ĊĠĠĠ Ġthis . then ( if Ġ( fraction Ġ== Ġ 1 f ) ĠFill Whole MaxSize Ġelse Ġcreate Fill Size Modifier ( fraction )) Ċ Ċ private Ġval ĠFill Whole MaxSize Ġ= Ġcreate Fill Size Modifier ( 1 f ) Ċ Ċ /** Ċ Ġ* ĠAllow Ġthe Ġcontent Ġto Ġmeasure Ġat Ġits Ġdesired Ġwidth Ġwithout Ġregard Ġfor Ġthe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ minimum Ġwidth Ġconstraint ][ Constraints . min Width ], Ġand , Ġif Ġ[ un bounded ] Ġis Ġtrue , Ġalso Ġwithout Ċ Ġ* Ġregard Ġfor Ġthe Ġincoming Ġmeasurement Ġ[ maximum Ġwidth Ġconstraint ][ Constraints . maxWidth ]. ĠIf Ċ Ġ* Ġthe Ġcontent 's Ġmeasured Ġsize Ġis Ġsmaller Ġthan Ġthe Ġminimum Ġwidth Ġconstraint , Ġ[ align ] Ċ Ġ* Ġit Ġwithin Ġthat Ġminimum Ġwidth Ġspace . ĠIf Ġthe Ġcontent 's Ġmeasured Ġsize Ġis Ġlarger Ġthan Ġthe Ġmaximum Ċ Ġ* Ġwidth Ġconstraint Ġ( only Ġpossible Ġwhen Ġ[ un bounded ] Ġis Ġtrue ), Ġ[ align ] Ġover Ġthe Ġmaximum Ċ Ġ* Ġwidth Ġspace . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Wrap Content H orizontally Aligned Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . wrap Content Width ( ĊĠĠĠ Ġalign : ĠAlignment . Horizontal Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠ Ġun bounded : ĠBoolean Ġ= Ġfalse Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ Ġif Ġ( align Ġ== ĠAlignment . Center H orizontally Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Width Center ĊĠĠĠ Ġ} Ġelse Ġif Ġ( align Ġ== ĠAlignment . Start Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Width Start ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Wrap Content Width Modifier ( align , Ġun bounded ) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ private Ġval ĠWrap Content Width Center Ġ= ĊĠĠĠ Ġcreate Wrap Content Width Modifier ( Alignment . Center H orizontally , Ġfalse ) Ċ private Ġval ĠWrap Content Width Start Ġ= Ġcreate Wrap Content Width Modifier ( Alignment . Start , Ġfalse ) Ċ Ċ /** Ċ Ġ* ĠAllow Ġthe Ġcontent Ġto Ġmeasure Ġat Ġits Ġdesired Ġheight Ġwithout Ġregard Ġfor Ġthe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ minimum Ġheight Ġconstraint ][ Constraints . min Height ], Ġand , Ġif Ġ[ un bounded ] Ġis Ġtrue , Ġalso Ġwithout Ċ Ġ* Ġregard Ġfor Ġthe Ġincoming Ġmeasurement Ġ[ maximum Ġheight Ġconstraint ][ Constraints . max Height ]. ĠIf Ġthe Ċ Ġ* Ġcontent 's Ġmeasured Ġsize Ġis Ġsmaller Ġthan Ġthe Ġminimum Ġheight Ġconstraint , Ġ[ align ] Ġit Ġwithin Ċ Ġ* Ġthat Ġminimum Ġheight Ġspace . ĠIf Ġthe Ġcontent 's Ġmeasured Ġsize Ġis Ġlarger Ġthan Ġthe Ġmaximum Ġheight Ċ Ġ* Ġconstraint Ġ( only Ġpossible Ġwhen Ġ[ un bounded ] Ġis Ġtrue ), Ġ[ align ] Ġover Ġthe Ġmaximum Ġheight Ġspace . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Wrap Content Vert ically Aligned Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . wrap Content Height ( ĊĠĠĠ Ġalign : ĠAlignment . Vertical Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠ Ġun bounded : ĠBoolean Ġ= Ġfalse Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ Ġif Ġ( align Ġ== ĠAlignment . Center Vert ically Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Height Center ĊĠĠĠ Ġ} Ġelse Ġif Ġ( align Ġ== ĠAlignment . Top Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Height Top ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Wrap Content Height Modifier ( align , Ġun bounded ) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ private Ġval ĠWrap Content Height Center Ġ= ĊĠĠĠ Ġcreate Wrap Content Height Modifier ( Alignment . Center Vert ically , Ġfalse ) Ċ private Ġval ĠWrap Content Height Top Ġ= Ġcreate Wrap Content Height Modifier ( Alignment . Top , Ġfalse ) Ċ Ċ /** Ċ Ġ* ĠAllow Ġthe Ġcontent Ġto Ġmeasure Ġat Ġits Ġdesired Ġsize Ġwithout Ġregard Ġfor Ġthe Ġincoming Ġmeasurement Ċ Ġ* Ġ[ minimum Ġwidth ][ Constraints . min Width ] Ġor Ġ[ minimum Ġheight ][ Constraints . min Height ] Ġconstraints , Ċ Ġ* Ġand , Ġif Ġ[ un bounded ] Ġis Ġtrue , Ġalso Ġwithout Ġregard Ġfor Ġthe Ġincoming Ġmaximum Ġconstraints . Ċ Ġ* ĠIf Ġthe Ġcontent 's Ġmeasured Ġsize Ġis Ġsmaller Ġthan Ġthe Ġminimum Ġsize Ġconstraint , Ġ[ align ] Ġit Ċ Ġ* Ġwithin Ġthat Ġminimum Ġsized Ġspace . ĠIf Ġthe Ġcontent 's Ġmeasured Ġsize Ġis Ġlarger Ġthan Ġthe Ġmaximum Ċ Ġ* Ġsize Ġconstraint Ġ( only Ġpossible Ġwhen Ġ[ un bounded ] Ġis Ġtrue ), Ġ[ align ] Ġwithin Ġthe Ġmaximum Ġspace . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Simple Wrap Content Aligned Modifier Ċ Ġ*/ Ċ @ Stable Ċ @ Suppress (" Modifier Inspector Info ") Ċ fun ĠModifier . wrap Content Size ( ĊĠĠĠ Ġalign : ĠAlignment Ġ= ĠAlignment . Center , ĊĠĠĠ Ġun bounded : ĠBoolean Ġ= Ġfalse Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ Ġif Ġ( align Ġ== ĠAlignment . Center Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Size Center ĊĠĠĠ Ġ} Ġelse Ġif Ġ( align Ġ== ĠAlignment . Top Start Ġ&& Ġ! un bounded ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWrap Content Size Top Start ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Wrap Content Size Modifier ( align , Ġun bounded ) ĊĠĠĠ Ġ} Ċ ) Ċ Ċ private Ġval ĠWrap Content Size Center Ġ= Ġcreate Wrap Content Size Modifier ( Alignment . Center , Ġfalse ) Ċ private Ġval ĠWrap Content Size Top Start Ġ= Ġcreate Wrap Content Size Modifier ( Alignment . Top Start , Ġfalse ) Ċ Ċ /** Ċ Ġ* ĠCon str ain Ġthe Ġsize Ġof Ġthe Ġwrapped Ġlayout Ġonly Ġwhen Ġit Ġwould Ġbe Ġotherwise Ġun constrained : Ċ Ġ* Ġthe Ġ[ min Width ] Ġand Ġ[ min Height ] Ġconstraints Ġare Ġonly Ġapplied Ġwhen Ġthe Ġincoming Ġcorresponding Ċ Ġ* Ġconstraint Ġis Ġ` 0 `. Ċ Ġ* ĠThe Ġmodifier Ġcan Ġbe Ġused , Ġfor Ġexample , Ġto Ġdefine Ġa Ġdefault Ġmin Ġsize Ġof Ġa Ġcomponent , Ċ Ġ* Ġwhile Ġstill Ġallowing Ġit Ġto Ġbe Ġover idden Ġwith Ġsmaller Ġmin Ġsizes Ġacross Ġusage s . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . compose . foundation . layout . samples . Default Min Size Sample Ċ Ġ*/ Ċ @ Stable Ċ fun ĠModifier . default Min Size ( ĊĠĠĠ ĠminWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ ĠminHeight : ĠD p Ġ= ĠD p . Unspecified Ċ ) Ġ= Ġthis . then ( ĊĠĠĠ ĠUn specified Constraints Modifier ( ĊĠĠĠĠĠĠĠ ĠminWidth Ġ= ĠminWidth , ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= ĠminHeight , ĊĠĠĠĠĠĠĠ Ġinspector Info Ġ= Ġdebug Inspector Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" default Min Size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Width "] Ġ= ĠminWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [" min Height "] Ġ= ĠminHeight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ ) Ċ Ċ private Ġclass ĠFill Modifier ( ĊĠĠĠ Ġprivate Ġval Ġdirection : ĠDirection , ĊĠĠĠ Ġprivate Ġval Ġfraction : ĠFloat , ĊĠĠĠ Ġinspector Info : ĠIns pector Info . () Ġ-> ĠUnit Ċ ) Ġ: ĠLayout Modifier , ĠIns pector Value Info ( inspector Info ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠMeasure Scope . measure ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠMe as ur able , ĊĠĠĠĠĠĠĠ Ġconstraints : ĠConstraints ĊĠĠĠ Ġ): ĠMeasure Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠminWidth : ĠInt ĊĠĠĠĠĠĠĠ Ġval ĠmaxWidth : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( constraints . has Bounded Width Ġ&& Ġdirection Ġ!= ĠDirection . Vertical ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ( constraints . maxWidth Ġ* Ġfraction ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce In ( constraints . min Width , Ġconstraints . maxWidth ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġconstraints . min Width ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġconstraints . maxWidth ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠminHeight : ĠInt ĊĠĠĠĠĠĠĠ Ġval ĠmaxHeight : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( constraints . has Bounded Height Ġ&& Ġdirection Ġ!= ĠDirection . Horizontal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ( constraints . max Height Ġ* Ġfraction ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce In ( constraints . min Height , Ġconstraints . max Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġconstraints . min Height ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġconstraints . max Height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints ( min Width , ĠmaxWidth , ĠminHeight , ĠmaxHeight ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlayout ( place able . width , Ġplace able . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠ Ġother Ġis ĠFill Modifier Ġ&& Ġdirection Ġ== Ġother . direction Ġ&& Ġfraction Ġ== Ġother . fraction ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġdirection . hashCode () Ġ* Ġ 3 1 Ġ+ Ġfraction . hashCode () Ċ } Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Fill Width Modifier ( fraction : ĠFloat ) Ġ= ĠFill Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Horizontal , ĊĠĠĠ Ġfraction Ġ= Ġfraction , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" fill Max Width " ĊĠĠĠĠĠĠĠ Ġproperties [" fraction "] Ġ= Ġfraction ĊĠĠĠ Ġ} Ċ ) Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Fill Height Modifier ( fraction : ĠFloat ) Ġ= ĠFill Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Vertical , ĊĠĠĠ Ġfraction Ġ= Ġfraction , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" fill Max Height " ĊĠĠĠĠĠĠĠ Ġproperties [" fraction "] Ġ= Ġfraction ĊĠĠĠ Ġ} Ċ ) Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Fill Size Modifier ( fraction : ĠFloat ) Ġ= ĠFill Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Both , ĊĠĠĠ Ġfraction Ġ= Ġfraction , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" fill MaxSize " ĊĠĠĠĠĠĠĠ Ġproperties [" fraction "] Ġ= Ġfraction ĊĠĠĠ Ġ} Ċ ) Ċ Ċ private Ġclass ĠSize Modifier ( ĊĠĠĠ Ġprivate Ġval ĠminWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġprivate Ġval ĠminHeight : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġprivate Ġval ĠmaxWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġprivate Ġval ĠmaxHeight : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġprivate Ġval Ġenforce Incoming : ĠBoolean , ĊĠĠĠ Ġinspector Info : ĠIns pector Info . () Ġ-> ĠUnit Ċ ) Ġ: ĠLayout Modifier , ĠIns pector Value Info ( inspector Info ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠD ensity . target Constraints : ĠConstraints ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxWidth Ġ= Ġif Ġ( maxWidth Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth . coerce At Least ( 0 . dp ). round To Px () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Infinity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxHeight Ġ= Ġif Ġ( max Height Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight . coerce At Least ( 0 . dp ). round To Px () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Infinity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠminWidth Ġ= Ġif Ġ( min Width Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth . round To Px (). coerce At Most ( maxWidth ). coerce At Least ( 0 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠConstraints . Infinity ) Ġit Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠminHeight Ġ= Ġif Ġ( min Height Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight . round To Px (). coerce At Most ( max Height ). coerce At Least ( 0 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠConstraints . Infinity ) Ġit Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= ĠminWidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= ĠminHeight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= ĠmaxWidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= ĠmaxHeight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠMeasure Scope . measure ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠMe as ur able , ĊĠĠĠĠĠĠĠ Ġconstraints : ĠConstraints ĊĠĠĠ Ġ): ĠMeasure Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwrapped Constraints Ġ= Ġtarget Constraints . let Ġ{ Ġtarget Constraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enforce Incoming ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . constr ain ( target Constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Min Width Ġ= Ġif Ġ( min Width Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Constraints . min Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . min Width . coerce At Most ( target Constraints . maxWidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Max Width Ġ= Ġif Ġ( maxWidth Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Constraints . maxWidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . maxWidth . coerce At Least ( target Constraints . min Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Min Height Ġ= Ġif Ġ( min Height Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Constraints . min Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . min Height . coerce At Most ( target Constraints . max Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Max Height Ġ= Ġif Ġ( max Height Ġ!= ĠD p . Unspecified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Constraints . max Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . max Height . coerce At Least ( target Constraints . min Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Min Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Max Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Min Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Max Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( wrapped Constraints ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout ( place able . width , Ġplace able . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . min Intr insic Width ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġtarget Constraints ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( constraints . has Fixed Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . maxWidth ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . constr ain Width ( meas ur able . min Intr insic Width ( height )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . min Intr insic Height ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġtarget Constraints ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( constraints . has Fixed Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . max Height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . constr ain Height ( meas ur able . min Intr insic Height ( width )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . max Intr insic Width ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġtarget Constraints ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( constraints . has Fixed Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . maxWidth ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . constr ain Width ( meas ur able . max Intr insic Width ( height )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . max Intr insic Height ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġtarget Constraints ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( constraints . has Fixed Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . max Height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . constr ain Height ( meas ur able . max Intr insic Height ( width )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠSize Modifier ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn ĠminWidth Ġ== Ġother . min Width Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ== Ġother . min Height Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ== Ġother . maxWidth Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ== Ġother . max Height Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenforce Incoming Ġ== Ġother . enforce Incoming ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= ĊĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ((( min Width . hashCode () Ġ* Ġ 3 1 Ġ+ ĠminHeight . hashCode ()) Ġ* Ġ 3 1 ) Ġ+ ĠmaxWidth . hashCode ()) Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ ĠmaxHeight . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ* Ġ 3 1 Ċ } Ċ Ċ private Ġclass ĠWrap Content Modifier ( ĊĠĠĠ Ġprivate Ġval Ġdirection : ĠDirection , ĊĠĠĠ Ġprivate Ġval Ġun bounded : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġalignment Callback : Ġ( Int Size , ĠLayout Direction ) Ġ-> ĠInt Offset , ĊĠĠĠ Ġprivate Ġval Ġalign : ĠAny , Ġ// Ġonly Ġused Ġfor Ġequals Ġand Ġhash code ĊĠĠĠ Ġinspector Info : ĠIns pector Info . () Ġ-> ĠUnit Ċ ) Ġ: ĠLayout Modifier , ĠIns pector Value Info ( inspector Info ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠMeasure Scope . measure ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠMe as ur able , ĊĠĠĠĠĠĠĠ Ġconstraints : ĠConstraints ĊĠĠĠ Ġ): ĠMeasure Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwrapped Constraints Ġ= ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth Ġ= Ġif Ġ( direction Ġ!= ĠDirection . Vertical ) Ġ 0 Ġelse Ġconstraints . min Width , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġif Ġ( direction Ġ!= ĠDirection . Horizontal ) Ġ 0 Ġelse Ġconstraints . min Height , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġif Ġ( direction Ġ!= ĠDirection . Vertical Ġ&& Ġun bounded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Infinity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . maxWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġif Ġ( direction Ġ!= ĠDirection . Horizontal Ġ&& Ġun bounded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Infinity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . max Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( wrapped Constraints ) ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Width Ġ= Ġplace able . width . coerce In ( constraints . min Width , Ġconstraints . maxWidth ) ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Height Ġ= Ġplace able . height . coerce In ( constraints . min Height , Ġconstraints . max Height ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper Width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper Height ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġalignment Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Size ( wrapper Width Ġ- Ġplace able . width , Ġwrapper Height Ġ- Ġplace able . height ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Direction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠWrap Content Modifier ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġdirection Ġ== Ġother . direction Ġ&& Ġun bounded Ġ== Ġother . un bounded Ġ&& Ġalign Ġ== Ġother . align ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= ĊĠĠĠĠĠĠĠ Ġ( direction . hashCode () Ġ* Ġ 3 1 Ġ+ Ġun bounded . hashCode ()) Ġ* Ġ 3 1 Ġ+ Ġalign . hashCode () Ċ } Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Wrap Content Width Modifier ( ĊĠĠĠ Ġalign : ĠAlignment . Horizontal , ĊĠĠĠ Ġun bounded : ĠBoolean Ċ ) Ġ= ĠWrap Content Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Horizontal , ĊĠĠĠ Ġun bounded Ġ= Ġun bounded , ĊĠĠĠ Ġalignment Callback Ġ= Ġ{ Ġsize , Ġlayout Direction Ġ-> ĊĠĠĠĠĠĠĠ ĠInt Offset ( align . align ( 0 , Ġsize . width , Ġlayout Direction ), Ġ 0 ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġalign , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" wrap Content Width " ĊĠĠĠĠĠĠĠ Ġproperties [" align "] Ġ= Ġalign ĊĠĠĠĠĠĠĠ Ġproperties [" un bounded "] Ġ= Ġun bounded ĊĠĠĠ Ġ} Ċ ) Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Wrap Content Height Modifier ( ĊĠĠĠ Ġalign : ĠAlignment . Vertical , ĊĠĠĠ Ġun bounded : ĠBoolean Ċ ) Ġ= ĠWrap Content Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Vertical , ĊĠĠĠ Ġun bounded Ġ= Ġun bounded , ĊĠĠĠ Ġalignment Callback Ġ= Ġ{ Ġsize , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ ĠInt Offset ( 0 , Ġalign . align ( 0 , Ġsize . height )) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġalign , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" wrap Content Height " ĊĠĠĠĠĠĠĠ Ġproperties [" align "] Ġ= Ġalign ĊĠĠĠĠĠĠĠ Ġproperties [" un bounded "] Ġ= Ġun bounded ĊĠĠĠ Ġ} Ċ ) Ċ Ċ @ Suppress (" Modifier Factory Extension Function ", Ġ" Modifier Factory ReturnType ") Ċ private Ġfun Ġcreate Wrap Content Size Modifier ( ĊĠĠĠ Ġalign : ĠAlignment , ĊĠĠĠ Ġun bounded : ĠBoolean Ċ ) Ġ= ĠWrap Content Modifier ( ĊĠĠĠ Ġdirection Ġ= ĠDirection . Both , ĊĠĠĠ Ġun bounded Ġ= Ġun bounded , ĊĠĠĠ Ġalignment Callback Ġ= Ġ{ Ġsize , Ġlayout Direction Ġ-> ĊĠĠĠĠĠĠĠ Ġalign . align ( Int Size . Zero , Ġsize , Ġlayout Direction ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġalign , ĊĠĠĠ Ġinspector Info Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" wrap Content Size " ĊĠĠĠĠĠĠĠ Ġproperties [" align "] Ġ= Ġalign ĊĠĠĠĠĠĠĠ Ġproperties [" un bounded "] Ġ= Ġun bounded ĊĠĠĠ Ġ} Ċ ) Ċ Ċ private Ġclass ĠUn specified Constraints Modifier ( ĊĠĠĠ Ġval ĠminWidth : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġval ĠminHeight : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠ Ġinspector Info : ĠIns pector Info . () Ġ-> ĠUnit Ċ ) Ġ: ĠLayout Modifier , ĠIns pector Value Info ( inspector Info ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠMeasure Scope . measure ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠMe as ur able , ĊĠĠĠĠĠĠĠ Ġconstraints : ĠConstraints ĊĠĠĠ Ġ): ĠMeasure Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwrapped Constraints Ġ= ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Width Ġ!= ĠD p . Unspecified Ġ&& Ġconstraints . min Width Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminWidth . round To Px (). coerce At Most ( constraints . maxWidth ). coerce At Least ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . min Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . maxWidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Height Ġ!= ĠD p . Unspecified Ġ&& Ġconstraints . min Height Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight . round To Px (). coerce At Most ( constraints . max Height ). coerce At Least ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . min Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . max Height ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( wrapped Constraints ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout ( place able . width , Ġplace able . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . min Intr insic Width ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠ Ġ) Ġ= Ġmeas ur able . min Intr insic Width ( height ). coerce At Least ( ĊĠĠĠĠĠĠĠ Ġif Ġ( min Width Ġ!= ĠD p . Unspecified ) ĠminWidth . round To Px () Ġelse Ġ 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . max Intr insic Width ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠ Ġ) Ġ= Ġmeas ur able . max Intr insic Width ( height ). coerce At Least ( ĊĠĠĠĠĠĠĠ Ġif Ġ( min Width Ġ!= ĠD p . Unspecified ) ĠminWidth . round To Px () Ġelse Ġ 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . min Intr insic Height ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt ĊĠĠĠ Ġ) Ġ= Ġmeas ur able . min Intr insic Height ( width ). coerce At Least ( ĊĠĠĠĠĠĠĠ Ġif Ġ( min Height Ġ!= ĠD p . Unspecified ) ĠminHeight . round To Px () Ġelse Ġ 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠIntr insic Measure Scope . max Intr insic Height ( ĊĠĠĠĠĠĠĠ Ġmeas ur able : ĠIntr insic Meas ur able , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt ĊĠĠĠ Ġ) Ġ= Ġmeas ur able . max Intr insic Height ( width ). coerce At Least ( ĊĠĠĠĠĠĠĠ Ġif Ġ( min Height Ġ!= ĠD p . Unspecified ) ĠminHeight . round To Px () Ġelse Ġ 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠUn specified Constraints Modifier ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn ĠminWidth Ġ== Ġother . min Width Ġ&& ĠminHeight Ġ== Ġother . min Height ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= ĠminWidth . hashCode () Ġ* Ġ 3 1 Ġ+ ĠminHeight . hashCode () Ċ } Ċ Ċ internal Ġenum Ġclass ĠDirection Ġ{ ĊĠĠĠ ĠVertical , ĠHorizontal , ĠBoth Ċ } Ċ