/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . datal ore . plot . config Ċ Ċ import Ġjet brains . datal ore . base . string Format . String Format Ċ import Ġjet brains . datal ore . plot . base . Geom Kind Ċ import Ġjet brains . datal ore . plot . base . geom .* Ċ import Ġjet brains . datal ore . plot . builder . assemble . geom . Geom Provider Ċ import Ġjet brains . datal ore . plot . builder . coord . Coord Provider Ċ import Ġjet brains . datal ore . plot . builder . coord . Coord Providers Ċ import Ġjet brains . datal ore . plot . config . Live Map Options Parser . Companion . parseFrom Layer Options Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Box plot Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Box plot Out lier Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Cross Bar Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Image Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Path Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Point Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Point Range Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Segment Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Step Ċ import Ġjet brains . datal ore . plot . config . Option . Geom . Text ĊĊ Ċ class ĠGe om Proto Client Side ( geom Kind : ĠGe om Kind ) Ġ: ĠGe om Proto ( geom Kind ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpreferred Coordinate System : ĠCoord Provider ? Ġ= Ġwhen Ġ( geom Kind ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGe om Kind . TILE , ĊĠĠĠĠĠĠĠ ĠGe om Kind . BIN _ 2 D , ĊĠĠĠĠĠĠĠ ĠGe om Kind . CON TO UR , ĊĠĠĠĠĠĠĠ ĠGe om Kind . CON TO UR F , ĊĠĠĠĠĠĠĠ ĠGe om Kind . D ENS ITY 2 D , ĊĠĠĠĠĠĠĠ ĠGe om Kind . D ENS ITY 2 DF , ĊĠĠĠĠĠĠĠ ĠGe om Kind . R ASTER , ĊĠĠĠĠĠĠĠ ĠGe om Kind . IMAGE Ġ-> ĠCoord Providers . fixed ( 1 . 0 ) ĊĊĠĠĠĠĠĠĠ ĠGe om Kind . MAP Ġ-> ĠCoord Providers . map () ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Preferred Coordinate System (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpreferred Coordinate System Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpreferred Coordinate System (): ĠCoord Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpreferred Coordinate System !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgeom Provider ( opts : ĠOptions Accessor ): ĠGe om Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( geom Kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . CROSS _ BAR Ġ-> Ġreturn ĠGe om Provider . cross Bar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠCross Bar Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Cross Bar . F ATT EN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . fat ten Mid line Ġ= Ġopts . getDouble ( Cross Bar . F ATT EN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . POINT _ RANGE Ġ-> Ġreturn ĠGe om Provider . point Range Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠPoint Range Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Point Range . F ATT EN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . fat ten Mid Point Ġ= Ġopts . getDouble ( Point Range . F ATT EN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . BOX _ PLOT Ġ-> Ġreturn ĠGe om Provider . box plot Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠBox plot Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Box plot . F ATT EN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . fat ten Mid line Ġ= Ġopts . getDouble ( Box plot . F ATT EN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Box plot Out lier . COLOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . out lier Color Ġ= Ġopts . getColor ( Box plot Out lier . COLOR ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Box plot Out lier . FILL )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . out lier Fill Ġ= Ġopts . getColor ( Box plot Out lier . FILL ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . out lier Shape Ġ= Ġopts . get Shape ( Box plot Out lier . SHAPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . out lier Size Ġ= Ġopts . getDouble ( Box plot Out lier . SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . LI VE _ MAP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGe om Provider . liv emap ( parseFrom Layer Options ( opts )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . STEP Ġ-> Ġreturn ĠGe om Provider . step Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠStep Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has Own ( Step . DIRECTION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . set Direction ( opts . getString ( Step . DIRECTION ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . SEGMENT Ġ-> Ġreturn ĠGe om Provider . segment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠSegment Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Segment . ARROW )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcfg 1 Ġ= ĠArrow Spec Config . create ( opts [ Segment . ARROW ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . arrow Spec Ġ= Ġcfg 1 . create Arrow Spec () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Segment . ANIM ATION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . animation Ġ= Ġopts [ Segment . ANIM ATION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . PATH Ġ-> Ġreturn ĠGe om Provider . path Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠPath Geom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Path . ANIM ATION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . animation Ġ= Ġopts [ Path . ANIM ATION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . POINT Ġ-> Ġreturn ĠGe om Provider . point Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠPoint Geom () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Point . ANIM ATION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . animation Ġ= Ġopts [ Point . ANIM ATION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . size Unit Ġ= Ġopts . getString ( Point . SIZE _ UNIT )?. lowercase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . TEXT Ġ-> Ġreturn ĠGe om Provider . text Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeom Ġ= ĠText Geom () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Text . LABEL _ FORMAT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Format Ġ= Ġopts [ Text . LABEL _ FORMAT ] Ġas ? ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( label Format Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . formatter Ġ= ĠString Format . for One Arg ( label Format ):: format ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Expected : Ġlabel _ format Ġ= Ġ' format Ġstring '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opts . has ( Text . NA _ TEXT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġna Value Ġ= Ġopts [ Text . NA _ TEXT ] Ġas ? ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( na Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . na Value Ġ= Ġna Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Expected : Ġna _ value Ġ= Ġ' some Ġstring '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom . size Unit Ġ= Ġopts . getString ( Text . SIZE _ UNIT )?. lowercase () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGe om Kind . IMAGE Ġ-> Ġreturn ĠGe om Provider . image Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( opts . has Own ( Image . H REF )) Ġ{ Ġ" Image Ġreference ĠURL Ġ( href ) Ġis Ġnot Ġspecified " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Geom ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopts . getString ( Image . H REF ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( PROVIDER . containsKey ( geom Kind )) Ġ{ Ġ" Provider Ġdoesn 't Ġsupport Ġgeom Ġkind : Ġ'$ geom Kind '" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPRO VIDER [ geom Kind ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPRO VIDER Ġ= ĠHashMap < Geom Kind , ĠGe om Provider >() ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . POINT ] Ġ= ĠGe om Provider . point () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . PATH ] Ġ= ĠGe om Provider . path () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . LINE ] Ġ= ĠGe om Provider . line () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . S MO OTH ] Ġ= ĠGe om Provider . smooth () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . BAR ] Ġ= ĠGe om Provider . bar () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . HIST O GRAM ] Ġ= ĠGe om Provider . histogram () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . TILE ] Ġ= ĠGe om Provider . tile () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . BIN _ 2 D ] Ġ= ĠGe om Provider . bin 2 d () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . ERROR _ BAR ] Ġ= ĠGe om Provider . error Bar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcross bar Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġp oin tr ange Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . LINE _ RANGE ] Ġ= ĠGe om Provider . line Range () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . CON TO UR ] Ġ= ĠGe om Provider . contour () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . CON TO UR F ] Ġ= ĠGe om Provider . contour f () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . POLYGON ] Ġ= ĠGe om Provider . polygon () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . MAP ] Ġ= ĠGe om Provider . map () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . AB _ LINE ] Ġ= ĠGe om Provider . ab line () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . H _ LINE ] Ġ= ĠGe om Provider . hline () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . V _ LINE ] Ġ= ĠGe om Provider . v line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbox plot Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . VI OL IN ] Ġ= ĠGe om Provider . vi olin () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . R IB B ON ] Ġ= ĠGe om Provider . ribbon () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . AREA ] Ġ= ĠGe om Provider . area () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . D ENS ITY ] Ġ= ĠGe om Provider . density () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . D ENS ITY 2 D ] Ġ= ĠGe om Provider . density 2 d () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . D ENS ITY 2 DF ] Ġ= ĠGe om Provider . density 2 df () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . JIT TER ] Ġ= ĠGe om Provider . j itter () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . FREQ POLY ] Ġ= ĠGe om Provider . freq poly () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstep Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . RECT ] Ġ= ĠGe om Provider . rect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsegment Ġ- Ġspecial Ġcase ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRO VIDER [ Geom Kind . R ASTER ] Ġ= ĠGe om Provider . raster () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġimage Ġ- Ġspecial Ġcase ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }