package Ġcz . v ut br . fit . x fl a js 0 0 . f yo . drawing Ċ Ċ import Ġjavafx . scene . canvas . Canvas Ċ import Ġjavafx . scene . paint . Color Ċ Ċ /** Ċ Ġ* ĠClear s Ġcanvas Ġand Ġdraw s Ġprovided Ġdata Ġon Ġit Ċ Ġ*/ Ċ class ĠSimple Plot Drawer ( private Ġval Ġcanvas : ĠCanvas ) Ġ{ ĊĠĠĠ Ġinner Ġclass ĠValue Set ( val Ġvalues : ĠArray < Double >, Ġval Ġcolor : ĠColor ) ĊĠĠĠ Ġinner Ġclass ĠAxis Info ( val Ġvalue : ĠString , Ġval Ġpos : ĠDouble ) ĊĊĠĠĠ Ġprivate Ġvar Ġvalues Ġ= Ġmutable ListOf < Value Set >() ĊĠĠĠ Ġprivate Ġvar Ġx Axis Text Ġ= Ġmutable ListOf < Axis Info >() ĊĠĠĠ Ġprivate Ġvar Ġy Axis Text Ġ= Ġmutable ListOf < Axis Info >() ĊĊĠĠĠ Ġprivate Ġval Ġx Axis Info Height Ġ= Ġ 3 0 . 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġall Ġsaved Ġdatasets Ġand Ġaxis Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalues . clear () ĊĠĠĠĠĠĠĠ Ġx Axis Text . clear () ĊĠĠĠĠĠĠĠ Ġy Axis Text . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠAdd Ġrow Ġto Ġdraw ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Values ( values : ĠArray < Double >, Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . values . add ( Value Set ( values , Ġcolor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd X Axis Text ( value : ĠString , Ġpos : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġx Axis Text . add ( Axis Info ( value , Ġpos )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Y Axis Text ( value : ĠString , Ġpos : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġy Axis Text . add ( Axis Info ( value , Ġpos )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġcanvas Ġand Ġdraw ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . clear Rect ( 0 . 0 , Ġ 0 . 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠ Ġdraw Background () ĊĠĠĠĠĠĠĠ Ġdraw Axis Info () ĊĠĠĠĠĠĠĠ Ġdraw Values () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdraw ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Values () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( values . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġvalues ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġcanvas . width Ġ/ Ġrow . values . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . fill Ġ= Ġrow . color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Ġ= Ġrow . color ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġcanvas . height Ġ- Ġx Axis Info Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġrow . values . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Line ( x , Ġh Ġ- Ġh Ġ* Ġrow . values [ i ], Ġx Ġ+ Ġstep , Ġh Ġ- Ġh Ġ* Ġrow . values [ i Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Axis Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . fill Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Line ( 0 . 0 , Ġcanvas . height Ġ- Ġx Axis Info Height , Ġcanvas . width , Ġcanvas . height Ġ- Ġx Axis Info Height ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( info Ġin Ġx Axis Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġinfo . pos Ġ* Ġcanvas . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . fill Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Text ( info . value , Ġpos , Ġcanvas . height Ġ- Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . fill Ġ= ĠColor . GRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Ġ= ĠColor . GRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . graphics Context 2 D . stroke Line ( pos , Ġcanvas . height Ġ- Ġx Axis Info Height Ġ- Ġ 1 0 , Ġpos , Ġcanvas . height Ġ- Ġx Axis Info Height Ġ+ Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }