/* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" PLUGIN _ WARNING ") Ċ Ċ package Ġde . j ens k ling en berg . jet pack compose playground . demos Ċ Ċ import Ġandroidx . ui . core . Constraints Ċ import Ġandroidx . ui . core . Cr ane Wrapper Ċ import Ġandroidx . ui . core . Dp Ċ import Ġandroidx . ui . core . Draw Ċ import Ġandroidx . ui . core . Layout Ċ import Ġandroidx . ui . core . coerce In Ċ import Ġandroidx . ui . core . ip x Ċ import Ġandroidx . ui . core . to Rect Ċ import Ġandroidx . ui . core . vector graphics . Brush Ċ import Ġandroidx . ui . core . vector graphics . Solid Color Ċ import Ġandroidx . ui . graphics . Color Ċ import Ġandroidx . ui . paint ing . Paint Ċ import Ġandroidx . compose . Children Ċ import Ġandroidx . compose . Composable Ċ Ċ @ Composable Ċ fun ĠCo lo red Rect ( brush : ĠBr ush , Ġwidth : ĠD p ? Ġ= Ġnull , Ġheight : ĠD p ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ ĠLayout ( children Ġ= Ġ{ ĠDraw Fill Rect ( brush Ġ= Ġbrush ) Ġ}, Ġlayout Block Ġ= Ġ{ Ġ_, Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠ Ġlayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth ?. toInt Px ()?. coerce In ( constraints . min Width , Ġconstraints . maxWidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġconstraints . maxWidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ?. toInt Px ()?. coerce In ( constraints . min Height , Ġconstraints . max Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġconstraints . max Height ĊĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ @ Composable Ċ fun ĠCo lo red Rect ( color : ĠColor , Ġwidth : ĠD p ? Ġ= Ġnull , Ġheight : ĠD p ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ ĠCo lo red Rect ( brush Ġ= ĠSolid Color ( color ), Ġwidth Ġ= Ġwidth , Ġheight Ġ= Ġheight ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠDraw Fill Rect ( brush : ĠBr ush ) Ġ{ ĊĠĠĠ ĠDraw Ġ{ Ġcanvas , Ġparent Size Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġbrush . apply Brush ( paint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( parent Size . to Rect (), Ġpaint ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHeader Footer Layout ( ĊĠĠĠ Ġheader : Ġ@ Composable () Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġfooter : Ġ@ Composable () Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġ@ Children Ġcontent : Ġ@ Composable () Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġ@ Suppress (" USE LESS _ CAST ") ĊĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠ Ġchildren Array Ġ= ĠarrayOf ( header , Ġcontent , Ġfooter ), ĊĠĠĠĠĠĠĠ Ġlayout Block Ġ= Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Place able Ġ= Ġmeas ur ables [ header Ġas Ġ() Ġ-> ĠUnit ]. first (). measure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . tight Constraints ( constraints . maxWidth , Ġ 1 0 0 . ip x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfooter Padding Ġ= Ġ 5 0 . ip x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfooter Place able Ġ= Ġmeas ur ables [ footer Ġas Ġ() Ġ-> ĠUnit ]. first (). measure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . tight Constraints ( constraints . maxWidth Ġ- Ġfooter Padding Ġ* Ġ 2 , Ġ 1 0 0 . ip x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( constraints . max Height Ġ- Ġheader Place able . height Ġ- Ġfooter Place able . height ) Ġ/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeas ur ables [ content Ġas Ġ() Ġ-> ĠUnit ]. size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Place ables Ġ= Ġmeas ur ables [ content Ġas Ġ() Ġ-> ĠUnit ]. map Ġ{ Ġmeas ur able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeas ur able . measure ( Constraints . tight Constraints ( constraints . maxWidth , Ġitem Height )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( constraints . maxWidth , Ġconstraints . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Place able . place ( 0 . ip x , Ġ 0 . ip x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Place able . place ( footer Padding , Ġconstraints . max Height Ġ- Ġfooter Place able . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtop Ġ= Ġheader Place able . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Place ables . forEach Ġ{ Ġplace able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place ( 0 . ip x , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ+= Ġitem Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ċ } Ċ Ċ @ Composable Ċ fun ĠMultiple Collect Test () Ġ{ ĊĠĠĠ ĠCr ane Wrapper Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġ@ Composable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCo lo red Rect ( color Ġ= ĠColor ( android . graphics . Color . GRAY )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfooter Ġ= Ġ@ Composable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCo lo red Rect ( color Ġ= ĠColor ( android . graphics . Color . BLUE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHeader Footer Layout ( header Ġ= Ġheader , Ġfooter Ġ= Ġfooter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCo lo red Rect ( color Ġ= ĠColor ( android . graphics . Color . GREEN )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCo lo red Rect ( color Ġ= ĠColor ( android . graphics . Color . YELLOW )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ