package Ġcom . github . io jj j . bootstrap . q at ool kit . r uler Ċ Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . core . Anim atable Ċ import Ġandroidx . compose . animation . core . Animation Vector 1 D Ċ import Ġandroidx . compose . animation . core . animate Float As State Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . Mutable State Ċ import Ġandroidx . compose . runtime . State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . remember Updated State Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . draw Be hind Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . draw scope . Draw Scope Ċ import Ġandroidx . compose . ui . input . pointer . pointer Input Ċ import Ġandroidx . compose . ui . platform . Local Layout Direction Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . Int Size Ċ import Ġandroidx . compose . ui . unit . Layout Direction Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . github . io jj j . bootstrap . pub . core . exhaustive Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . compose . core . Local Percent Formatter Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . compose . core . Local Screen Size Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . compose . core . Local Size Formatter Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . compose . core . graphics . draw scope . vert ically Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . core . Dimension Type Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . core . Orientation Ċ import Ġcom . github . io jj j . bootstrap . q at ool kit . settings . remember Scale Formatter Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlin . time . Duration . Companion . seconds Ċ import Ġkotlin . time . Experimental Time Ċ Ċ internal Ġconst Ġval ĠOFFSET _ START Ġ= Ġ 0 . 0 f Ċ internal Ġconst Ġval ĠOFFSET _ END Ġ= Ġ 1 . 0 f Ċ internal Ġconst Ġval ĠOFFSET _ RANGE Ġ= ĠOFFSET _ END Ġ- ĠOFFSET _ START Ċ Ċ @ Opt In ( Experimental Time :: class , ĠExperimental Animation Api :: class ) Ċ @ Composable Ċ fun ĠR uler ( ĊĠĠĠ Ġorientation : ĠOrientation , ĊĠĠĠ Ġon Orientation Change : Ġ( Orientation ) Ġ-> ĠUnit , ĊĠĠĠ Ġun pinned Position : ĠFloat , ĊĠĠĠ Ġon Un pinned Position Change : Ġ( Float ) Ġ-> ĠUnit , ĊĠĠĠ Ġpinned Positions : ĠList < Float >, ĊĠĠĠ Ġstroke Scale : ĠFloat , ĊĠĠĠ Ġstroke Color : ĠColor , ĊĠĠĠ Ġtext Scale : ĠFloat , ĊĠĠĠ ĠtextColor : ĠColor , ĊĠĠĠ Ġsensitivity : ĠFloat , ĊĠĠĠ Ġon Sensitivity Change : Ġ( Float ) Ġ-> ĠUnit , ĊĠĠĠ Ġmin Sensitivity : ĠFloat , ĊĠĠĠ Ġmax Sensitivity : ĠFloat , ĊĠĠĠ Ġis Percent Visible : ĠBoolean , ĊĠĠĠ Ġdimension Type : ĠDimension Type , ĊĠĠĠ Ġnumber Formatter : Ġ( Float ) Ġ-> ĠString Ġ= ĠLocal Size Formatter . current , ĊĠĠĠ Ġpercent Formatter : Ġ( Float ) Ġ-> ĠString Ġ= ĠLocal Percent Formatter . current , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsensitivity Changed State Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State Of ( false ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġorientation State Ġ= Ġremember Updated State ( orientation ) ĊĠĠĠ Ġval Ġun pinned Position State Ġ= Ġremember Updated State ( un pinned Position ) ĊĠĠĠ Ġval Ġlayout Direction State Ġ= Ġremember Layout Direction State () ĊĠĠĠ Ġval Ġon Sensitivity Change State Ġ= Ġremember Updated State ( on Sensitivity Change ) ĊĠĠĠ Ġval Ġlocal On Sensitivity Change State Ġ= Ġremember <( Float ) Ġ-> ĠUnit > Ġ{ ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sensitivity Change State . value . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsensitivity Changed State . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpointer Input Handler Ġ= Ġremember Pointer Input Handler ( ĊĠĠĠĠĠĠĠ Ġorientation State , ĊĠĠĠĠĠĠĠ Ġon Orientation Change , ĊĠĠĠĠĠĠĠ Ġun pinned Position State , ĊĠĠĠĠĠĠĠ Ġon Un pinned Position Change , ĊĠĠĠĠĠĠĠ Ġsensitivity , ĊĠĠĠĠĠĠĠ Ġlocal On Sensitivity Change State , ĊĠĠĠĠĠĠĠ Ġmin Sensitivity , ĊĠĠĠĠĠĠĠ Ġmax Sensitivity , ĊĠĠĠĠĠĠĠ Ġlayout Direction State , ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġr uler Lines Drawer Ġ= Ġremember R uler Lines Drawer ( ĊĠĠĠĠĠĠĠ Ġpinned Positions , ĊĠĠĠĠĠĠĠ Ġon Un pinned Position Change , ĊĠĠĠĠĠĠĠ Ġstroke Scale , ĊĠĠĠĠĠĠĠ Ġstroke Color , ĊĠĠĠĠĠĠĠ Ġun pinned Position State ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġscreen Size Ġ= ĠLocal Screen Size . current ĊĠĠĠ Ġval Ġscreen Size State Ġ= Ġremember Updated State ( ĊĠĠĠĠĠĠĠ Ġwhen Ġ( orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOrientation . HORIZONTAL Ġ-> Ġscreen Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOrientation . VERTICAL Ġ-> ĠInt Size ( screen Size . height , Ġscreen Size . width ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġr uler Text Drawer Ġ= Ġremember R uler Text Drawer ( ĊĠĠĠĠĠĠĠ ĠtextColor , ĊĠĠĠĠĠĠĠ Ġnumber Formatter , ĊĠĠĠĠĠĠĠ Ġpercent Formatter , ĊĠĠĠĠĠĠĠ Ġis Percent Visible , ĊĠĠĠĠĠĠĠ Ġtext Scale , ĊĠĠĠĠĠĠĠ Ġdimension Type , ĊĠĠĠĠĠĠĠ Ġlayout Direction State , ĊĠĠĠĠĠĠĠ Ġun pinned Position State , ĊĠĠĠĠĠĠĠ Ġscreen Size State , ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġon Draw Ġ= Ġremember On Draw ( ĊĠĠĠĠĠĠĠ Ġorientation State , ĊĠĠĠĠĠĠĠ Ġr uler Lines Drawer , ĊĠĠĠĠĠĠĠ Ġr uler Text Drawer ĊĠĠĠ Ġ) ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pointer Input ( Unit , Ġpointer Input Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. draw Be hind ( on Draw ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠS ensitivity ( s ensitivity , Ġsensitivity Changed State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( s ensitivity Changed State . value ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLa unched Effect ( s ensitivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( seconds ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsensitivity Changed State . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Time :: class ) Ċ @ Composable Ċ private Ġfun ĠS ensitivity ( ĊĠĠĠ Ġsensitivity : ĠFloat , ĊĠĠĠ Ġsensitivity Changed State : ĠMutable State < Boolean > Ċ ) Ġ{ ĊĠĠĠ Ġval Ġoverlay Alpha State Ġ= Ġanimate Float As State ( if Ġ( s ensitivity Changed State . value ) Ġ 1 . 0 f Ġelse Ġ 0 . 0 f ) ĊĠĠĠ Ġval Ġoverlay Color Ġ= ĠColor . Black . copy ( alpha Ġ= Ġoverlay Alpha State . value Ġ* Ġ 0 . 5 f ) ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( overlay Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale Formatter Ġ= Ġremember Scale Formatter () ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġscale Formatter ( s ensitivity ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . White . copy ( alpha Ġ= Ġoverlay Alpha State . value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( s ensitivity Changed State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLa unched Effect ( s ensitivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( seconds ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensitivity Changed State . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġremember On Draw ( ĊĠĠĠ Ġorientation State : ĠState < Orientation >, ĊĠĠĠ Ġr uler Lines Drawer : ĠR uler Lines Drawer , ĊĠĠĠ Ġr uler Text Drawer : ĠR uler Text Drawer , Ċ ): ĠDraw Scope . () Ġ-> ĠUnit Ġ{ ĊĠĠĠ Ġreturn Ġremember Ġ{ ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Orientation ( orientation State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw Ġr ul ers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoints Ġ= Ġr uler Lines Drawer . draw ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr uler Text Drawer . draw ( this , Ġpoints ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġremember Layout Direction State (): ĠAnim atable < Float , ĠAnimation Vector 1 D > Ġ{ ĊĠĠĠ Ġval Ġlayout Direction Ġ= ĠLocal Layout Direction . current ĊĠĠĠ Ġval Ġlayout Direction State Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ ĠAnim atable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( layout Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout Direction . L tr Ġ-> ĠOFFSET _ START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout Direction . R tl Ġ-> ĠOFFSET _ END ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠLa unched Effect ( layout Direction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Direction State . animate To ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( layout Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout Direction . L tr Ġ-> ĠOFFSET _ START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout Direction . R tl Ġ-> ĠOFFSET _ END ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlayout Direction State Ċ } Ċ Ċ private Ġfun ĠDraw Scope . with Orientation ( ĊĠĠĠ Ġorientation : ĠOrientation , ĊĠĠĠ Ġon Draw : ĠDraw Scope . () Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġex haustive .. when Ġ( orientation ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOrientation . HORIZONTAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Draw () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOrientation . VERTICAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ically ( on Draw ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠPreview () Ġ{ ĊĠĠĠ Ġval Ġ( un pinned Position , Ġon Un pinned Position Change ) Ġ= Ġremember Ġ{ Ġmutable State Of ( Float . NaN ) Ġ} ĊĠĠĠ Ġval Ġ( s ensitivity , Ġon Sensitivity Change ) Ġ= Ġremember Ġ{ Ġmutable State Of ( 1 . 0 f ) Ġ} ĊĠĠĠ ĠR uler ( ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠOrientation . HORIZONTAL , ĊĠĠĠĠĠĠĠ Ġon Orientation Change Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġun pinned Position Ġ= Ġun pinned Position , ĊĠĠĠĠĠĠĠ Ġon Un pinned Position Change Ġ= Ġon Un pinned Position Change , ĊĠĠĠĠĠĠĠ Ġpinned Positions Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġstroke Scale Ġ= Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠ Ġstroke Color Ġ= ĠColor . Red , ĊĠĠĠĠĠĠĠ Ġtext Scale Ġ= Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= ĠColor . White , ĊĠĠĠĠĠĠĠ Ġsensitivity Ġ= Ġsensitivity , ĊĠĠĠĠĠĠĠ Ġon Sensitivity Change Ġ= Ġon Sensitivity Change , ĊĠĠĠĠĠĠĠ Ġis Percent Visible Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġdimension Type Ġ= ĠDimension Type . DP , ĊĠĠĠĠĠĠĠ Ġmin Sensitivity Ġ= Ġ 0 . 1 f , ĊĠĠĠĠĠĠĠ Ġmax Sensitivity Ġ= Ġ 1 . 0 f , ĊĠĠĠ Ġ) Ċ }