/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġ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 . ui . layout Ċ Ċ import Ġandroidx . compose . ui . modifier . Pro vid able Modifier Local Ċ import Ġandroidx . compose . ui . modifier . modifier Local Of Ċ import Ġkotlin . jvm . Jvm Inline Ċ Ċ /** Ċ Ġ* ĠA Ġmodifier Ġlocal Ġthat Ġprovides Ġaccess Ġto Ġa Ġ[ B ey ond Bounds Layout ] Ġthat Ġa Ġchild Ġcan Ġuse Ġto Ċ Ġ* Ġask Ġa Ġparent Ġto Ġlayout Ġmore Ġitems Ġthat Ġare Ġbeyond Ġits Ġvisible Ġbounds . Ċ Ġ*/ Ċ val ĠModifier Local B ey ond Bounds Layout : ĠPro vid able Modifier Local < B ey ond Bounds Layout ?> Ġ= ĊĠĠĠ Ġmodifier Local Of Ġ{ Ġnull Ġ} Ċ Ċ /** Ċ Ġ* ĠLayout Ġextra Ġitems Ġin Ġthe Ġspecified Ġdirection . Ċ Ġ* Ċ Ġ* ĠA Ġ[ B ey ond Bounds Layout ] Ġinstance Ġcan Ġbe Ġobtained Ġby Ġconsuming Ġthe Ċ Ġ* Ġ[ B ey ond Bounds Layout Ġmodifier Ġlocal ][ Modifier Local B ey ond Bounds Layout ]. Ċ Ġ* ĠIt Ġcan Ġbe Ġused Ġto Ġsend Ġa Ġrequest Ġto Ġlayout Ġmore Ġitems Ġin Ġa Ġparticular Ċ Ġ* Ġ[ direction ][ Layout Direction ]. ĠThis Ġcan Ġbe Ġuseful Ġwhen Ġcomposition Ġor Ġlayout Ġis Ġdetermined Ġl az ily , Ċ Ġ* Ġas Ġwith Ġa ĠLazy Column . ĠThe Ġrequest Ġis Ġreceived Ġby Ġany Ġparent Ġup Ġthe Ġhierarchy Ġthat Ġprovides Ġthis Ċ Ġ* Ġmodifier Ġlocal . Ċ Ġ*/ Ċ interface ĠB ey ond Bounds Layout Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġa Ġrequest Ġto Ġlayout Ġmore Ġitems Ġin Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġ[ direction ][ Layout Direction ]. ĠThe Ġrequest Ġis Ġreceived Ġby Ġa Ġparent Ġup Ġthe ĊĠĠĠĠ Ġ* Ġhierarchy . ĠThe Ġparent Ġadds Ġone Ġitem Ġat Ġa Ġtime Ġand Ġcalls Ġ[ block ] Ġafter Ġeach Ġitem Ġis Ġadded . ĊĠĠĠĠ Ġ* ĠThe Ġparent Ġcontinues Ġadding Ġnew Ġitems Ġas Ġlong Ġas Ġ[ block ] Ġreturns Ġnull . ĠOnce Ġyou Ġhave Ġall ĊĠĠĠĠ Ġ* Ġthe Ġitems Ġyou Ġneed , Ġyou Ġcan Ġperform Ġsome Ġoperation Ġand Ġreturn Ġa Ġnon - null Ġvalue . ĠReturn ing ĊĠĠĠĠ Ġ* Ġthis Ġvalue Ġstops Ġthe Ġlay ing Ġout Ġof Ġbeyond Ġbounds Ġitems . Ġ( Note Ġthat Ġyou Ġhave Ġto Ġreturn Ġa ĊĠĠĠĠ Ġ* Ġnon - null Ġvalue Ġstop Ġiter ating ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdirection ĠThe Ġdirection Ġfrom Ġthe Ġvisible Ġbounds Ġin Ġwhich Ġmore Ġitems Ġare Ġrequested . ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠContinue Ġto Ġlayout Ġmore Ġitems Ġuntil Ġthis Ġblock Ġreturns Ġa Ġnon Ġnull Ġitem . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġreturned Ġby Ġthe Ġlast Ġrun Ġof Ġ[ block ]. ĠIf Ġwe Ġlayout Ġall Ġthe Ġavailable ĊĠĠĠĠ Ġ* Ġitems Ġthen Ġthe Ġreturned Ġvalue Ġis Ġnull . ĠWhen Ġthis Ġfunction Ġreturns Ġall Ġthe Ġbeyond Ġbounds Ġitems ĊĠĠĠĠ Ġ* Ġmay Ġbe Ġdisposed . ĠTherefore Ġyou Ġhave Ġto Ġperform Ġany Ġcustom Ġlogic Ġwithin Ġthe Ġ[ block ] Ġand Ġreturn ĊĠĠĠĠ Ġ* Ġthe Ġvalue Ġyou Ġneed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġlayout ( ĊĠĠĠĠĠĠĠ Ġdirection : ĠLayout Direction , ĊĠĠĠĠĠĠĠ Ġblock : ĠB ey ond Bounds Scope . () Ġ-> ĠT ? ĊĠĠĠ Ġ): ĠT ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġscope Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠB ey ond Bounds Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhether Ġwe Ġhave Ġmore Ġcontent Ġto Ġlay Ġout Ġin Ġthe Ġspecified Ġdirection . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġhas More Content : ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdirection Ġ( from Ġthe Ġvisible Ġbounds ) Ġthat Ġa Ġ[ B ey ond Bounds Layout ] Ġis Ġrequesting Ġmore Ġitems ĊĠĠĠĠ Ġ* Ġto Ġbe Ġla id . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Inline ĊĠĠĠ Ġvalue Ġclass ĠLayout Direction Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") Ġprivate Ġval Ġvalue : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġbefore Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBefore Ġ= ĠLayout Direction ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġafter Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠAfter Ġ= ĠLayout Direction ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġto Ġthe Ġleft Ġof Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠLeft Ġ= ĠLayout Direction ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġto Ġthe Ġright Ġof Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠRight Ġ= ĠLayout Direction ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġabove Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠA bove Ġ= ĠLayout Direction ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDirection Ġused Ġin Ġ[ B ey ond Bounds Layout . layout ] Ġto Ġrequest Ġthe Ġlayout Ġof Ġextra Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġbelow Ġthe Ġcurrent Ġbounds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBelow Ġ= ĠLayout Direction ( 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBefore Ġ-> Ġ" Before " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAfter Ġ-> Ġ" After " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLeft Ġ-> Ġ" Left " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRight Ġ-> Ġ" Right " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA bove Ġ-> Ġ" Above " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBelow Ġ-> Ġ" Below " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" invalid ĠLayout Direction " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ