/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSquare ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 (" Same Parameter Value ", Ġ" DE PREC ATION ") Ċ Ċ package Ġcom . squareup . workflow . ui . compose . tool ing Ċ Ċ import Ġandroidx . compose . Composable Ċ import Ġandroidx . ui . core . Modifier Ċ import Ġandroidx . ui . core . clip To Bounds Ċ import Ġandroidx . ui . core . draw Be hind Ċ import Ġandroidx . ui . foundation . Box Ċ import Ġandroidx . ui . foundation . Text Ċ import Ġandroidx . ui . foundation . draw Border Ċ import Ġandroidx . ui . geometry . Offset Ċ import Ġandroidx . ui . geometry . to Rect Ċ import Ġandroidx . ui . graphics . Color Ċ import Ġandroidx . ui . graphics . Paint Ċ import Ġandroidx . ui . graphics . Shadow Ċ import Ġandroidx . ui . graphics . draw scope . Draw Scope Ċ import Ġandroidx . ui . graphics . draw scope . draw Canvas Ċ import Ġandroidx . ui . graphics . draw scope . rotate Ċ import Ġandroidx . ui . graphics . with Save Layer Ċ import Ġandroidx . ui . layout . fill MaxSize Ċ import Ġandroidx . ui . text . TextStyle Ċ import Ġandroidx . ui . text . style . Text Align Ċ import Ġandroidx . ui . tool ing . preview . Preview Ċ import Ġandroidx . ui . unit . Dp Ċ import Ġandroidx . ui . unit . dp Ċ import Ġcom . squareup . workflow . ui . View Factory Ċ import Ġcom . squareup . workflow . ui . compose . composed View Factory Ċ Ċ /** Ċ Ġ* ĠA Ġ[ View Factory ] Ġthat Ġwill Ġbe Ġused Ġany Ġtime Ġa Ġ[ Preview View Registry ] Ġis Ġasked Ġto Ġshow Ġa Ġrendering . Ċ Ġ* ĠIt Ġdisplays Ġa Ġplaceholder Ġgraphic Ġand Ġthe Ġrendering 's Ġ` toString ()` Ġresult . Ċ Ġ*/ Ċ internal Ġfun Ġplaceholder View Factory ( modifier : ĠModifier ): ĠView Factory < Any > Ġ= ĊĠ Ġcomposed View Factory Ġ{ Ġrendering , Ġ_ Ġ-> ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip To Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. draw Be hind Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Canvas Ġ{ Ġcanvas , Ġsize Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . with Save Layer ( size . to Rect (), ĠPaint (). apply Ġ{ Ġalpha Ġ= Ġ. 2 f Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( size . to Rect (), ĠPaint (). apply Ġ{ Ġcolor Ġ= ĠColor . Gray Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Cross H atch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Red , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 2 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspace Width Ġ= Ġ 5 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= Ġ 4 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġrendering . toString (), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . White , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Ġ= ĠShadow ( blur Radius Ġ= Ġ 5 f , Ġcolor Ġ= ĠColor . Black ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ Ċ @ Preview ( width Dp Ġ= Ġ 2 0 0 , Ġheight Dp Ġ= Ġ 2 0 0 ) Ċ @ Composable Ġprivate Ġfun ĠPreview Stub View Binding On White () Ġ{ ĊĠ ĠBox ( backgroundColor Ġ= ĠColor . White ) Ġ{ ĊĠĠĠ ĠPreview Stub Binding Preview Template () ĊĠ Ġ} Ċ } Ċ Ċ @ Preview ( width Dp Ġ= Ġ 2 0 0 , Ġheight Dp Ġ= Ġ 2 0 0 ) Ċ @ Composable Ġprivate Ġfun ĠPreview Stub View Binding On Black () Ġ{ ĊĠ ĠBox ( backgroundColor Ġ= ĠColor . Black ) Ġ{ ĊĠĠĠ ĠPreview Stub Binding Preview Template () ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ġprivate Ġfun ĠPreview Stub Binding Preview Template () Ġ{ ĊĠ Ġplaceholder View Factory ( Modifier ). preview ( ĊĠĠĠĠĠ Ġrendering Ġ= Ġ" preview ", ĊĠĠĠĠĠ Ġplaceholder Modifier Ġ= ĠModifier . fill MaxSize () ĊĠĠĠĠĠĠĠĠĠ Ġ. draw Border ( size Ġ= Ġ 1 . dp , Ġcolor Ġ= ĠColor . Red ) ĊĠ Ġ) Ċ } Ċ Ċ private Ġfun ĠDraw Scope . draw Cross H atch ( ĊĠ Ġcolor : ĠColor , ĊĠ ĠstrokeWidth : ĠD p , ĊĠ Ġspace Width : ĠD p , ĊĠ Ġangle : ĠFloat Ċ ) Ġ{ ĊĠ Ġdraw H atch ( color , ĠstrokeWidth , Ġspace Width , Ġangle ) ĊĠ Ġdraw H atch ( color , ĠstrokeWidth , Ġspace Width , Ġangle Ġ+ Ġ 9 0 ) Ċ } Ċ Ċ private Ġfun ĠDraw Scope . draw H atch ( ĊĠ Ġcolor : ĠColor , ĊĠ ĠstrokeWidth : ĠD p , ĊĠ Ġspace Width : ĠD p , ĊĠ Ġangle : ĠFloat Ċ ) Ġ{ ĊĠ Ġval ĠstrokeWidth Px Ġ= ĠstrokeWidth . to Px () ĊĠ Ġval Ġspace Width Px Ġ= Ġspace Width . to Px () ĊĠ Ġval Ġstroke Color Ġ= Ġcolor . scale Colors (. 5 f ) ĊĊĠ Ġrotate ( angle ) Ġ{ ĊĠĠĠ Ġ// ĠDraw Ġoutside Ġour Ġbounds Ġto Ġfill Ġthe Ġspace Ġeven Ġwhen Ġrotated . ĊĠĠĠ Ġval Ġleft Ġ= Ġ- size . width ĊĠĠĠ Ġval Ġright Ġ= Ġsize . width Ġ* Ġ 2 ĊĠĠĠ Ġval Ġtop Ġ= Ġ- size . height ĊĠĠĠ Ġval Ġbottom Ġ= Ġsize . height Ġ* Ġ 2 ĊĊĠĠĠ Ġvar Ġy Ġ= Ġtop Ġ+ ĠstrokeWidth Px Ġ* Ġ 2 f ĊĠĠĠ Ġwhile Ġ( y Ġ< Ġbottom ) Ġ{ ĊĠĠĠĠĠ Ġdraw Line ( ĊĠĠĠĠĠĠĠĠĠ Ġstroke Color , ĊĠĠĠĠĠĠĠĠĠ ĠOffset ( left , Ġy ), ĊĠĠĠĠĠĠĠĠĠ ĠOffset ( right , Ġy ), ĊĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Px ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġy Ġ+= Ġspace Width Px Ġ* Ġ 2 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠColor . scale Colors ( factor : ĠFloat ) Ġ= ĊĠ Ġcopy ( red Ġ= Ġred Ġ* Ġfactor , Ġgreen Ġ= Ġgreen Ġ* Ġfactor , Ġblue Ġ= Ġblue Ġ* Ġfactor ) Ċ