/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ġ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 . builder . layout Ċ Ċ import Ġjet brains . datal ore . base . g common . collect . Closed Range Ċ import Ġjet brains . datal ore . base . geometry . Double Rectangle Ċ import Ġjet brains . datal ore . base . geometry . Double Vector Ċ import Ġjet brains . datal ore . base . values . Pair Ċ import Ġjet brains . datal ore . plot . base . Scale Ċ import Ġjet brains . datal ore . plot . builder . layout . axis . Axis Break s Util Ċ import Ġjet brains . datal ore . plot . builder . layout . axis . Axis Layout er Ċ import Ġjet brains . datal ore . plot . builder . presentation . Plot Label Spec Ċ import Ġjet brains . datal ore . plot . builder . theme . Axis Theme Ċ Ċ class ĠPlot Axis Layout Ġprivate Ġconstructor ( private Ġval Ġmy Scale : ĠScale < Double >, Ġprivate Ġval Ġmy X Domain : ĠClosed Range < Double >, Ġprivate Ġval Ġmy Y Domain : ĠClosed Range < Double >, Ġprivate Ġval Ġmy Coord Provider : Ġjet brains . datal ore . plot . builder . coord . Coord Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmy Theme : ĠAxis Theme , Ġprivate Ġval Ġmy Orientation : Ġjet brains . datal ore . plot . builder . guide . Orientation Ċ ) Ġ: ĠAxis Layout Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinitial Thickness (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Theme . show Tick Marks () Ġ|| Ġmy Theme . show Tick Labels ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġmy Theme . tick Label Distance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( my Theme . show Tick Labels ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ+ Ġinitial Tick Label Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Orientation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġv ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Layout ( display Size : ĠDouble Vector , Ġmax Tick Labels Bounds St ret ched : ĠDouble Rectangle ?): ĠAxis Layout Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout er Ġ= Ġcreate Layout er ( display Size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout er . do Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaxis Length ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Orientation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġmax Tick Labels Bounds St ret ched ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Layout er ( display Size : ĠDouble Vector ): ĠAxis Layout er Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdomains Ġ= Ġmy Coord Provider . adjust Domains ( my X Domain , Ġmy Y Domain , Ġdisplay Size ) ĊĠĠĠĠĠĠĠ Ġval Ġaxis Domain Ġ= Ġaxis Domain ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdomains , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Orientation ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbreaks Provider Ġ= ĠAxis Break s Util . create Axis Break s Provider ( my Scale , Ġaxis Domain ) ĊĠĠĠĠĠĠĠ Ġreturn ĠAxis Layout er . create ( my Orientation , Ġaxis Domain , Ġbreaks Provider , Ġmy Theme ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠT ICK _ LABEL _ SPEC Ġ= ĠPlot Label Spec . AXIS _ TICK ĊĊĠĠĠĠĠĠĠ Ġfun Ġbottom ( scale : ĠScale < Double >, Ġx Domain : ĠClosed Range < Double >, Ġy Domain : ĠClosed Range < Double >, Ġcoord Provider : Ġjet brains . datal ore . plot . builder . coord . Coord Provider , Ġtheme : ĠAxis Theme ): ĠAxis Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPlot Axis Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale , Ġx Domain , Ġy Domain , Ġcoord Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjet brains . datal ore . plot . builder . guide . Orientation . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġleft ( scale : ĠScale < Double >, Ġx Domain : ĠClosed Range < Double >, Ġy Domain : ĠClosed Range < Double >, Ġcoord Provider : Ġjet brains . datal ore . plot . builder . coord . Coord Provider , Ġtheme : ĠAxis Theme ): ĠAxis Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPlot Axis Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale , Ġx Domain , Ġy Domain , Ġcoord Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjet brains . datal ore . plot . builder . guide . Orientation . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinitial Tick Label Size ( orientation : Ġjet brains . datal ore . plot . builder . guide . Orientation ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( orientation . is Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT ICK _ LABEL _ SPEC . height () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT ICK _ LABEL _ SPEC . width ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġaxis Length ( display Size : ĠDouble Vector , Ġorientation : Ġjet brains . datal ore . plot . builder . guide . Orientation ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( orientation . is Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Size . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Size . y ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġaxis Domain ( xy Domains : ĠPair < Closed Range < Double >, ĠClosed Range < Double >>, Ġorientation : Ġjet brains . datal ore . plot . builder . guide . Orientation ): ĠClosed Range < Double > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( orientation . is Horizontal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxy Domains . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxy Domains . second ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ