package Ġcom . github . gr ish berg . profiler . chart Ċ Ċ import Ġjava . awt . Font Metrics Ċ import Ġjava . awt . Graphics 2 D Ċ Ċ class ĠMethods Name Drawer ( ĊĠĠĠ Ġprivate Ġval Ġleft Symbol Offset : ĠInt Ġ= Ġ 4 Ċ ) Ġ: ĠCell Paint Delegate Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmethods Collapsed Width Ġ= Ġmutable Map Of < String , ĠMethod Name Delegate >() ĊĠĠĠ Ġprivate Ġvar Ġdot Width Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġname Buffer Ġ= ĠName Buffer () ĊĊĠĠĠ Ġfun Ġreset FontSize () Ġ{ ĊĠĠĠĠĠĠĠ Ġmethods Collapsed Width . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Label ( ĊĠĠĠĠĠĠĠ Ġg : ĠGraphics 2 D , ĊĠĠĠĠĠĠĠ Ġfm : ĠFont Metrics , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġleft : ĠDouble , Ġright : ĠDouble , Ġtop : ĠInt , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dot Width Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdot Width Ġ= Ġfm . char Width ('.') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Package Info Ġ= Ġmethods Collapsed Width . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMethod Name Delegate ( dot Width , Ġname , Ġfm , Ġleft Symbol Offset , Ġname Buffer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Package Info . draw Package ( g , Ġleft . toInt (), Ġright . toInt (), Ġtop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMethod Name Delegate ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdot Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpkg : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfm : ĠFont Metrics , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġleft Symbol Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbuffer : ĠName Buffer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfull Width Ġ= Ġfm . string Width ( pkg ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwords Ġ= Ġpkg . split ('.') ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwords Width Ġ= ĠInt Array ( words . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . string Width ( words [ it ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcollapsed Left Ġ= ĠInt Array ( words . size ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġshortest Pkg : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġshortest Pkg Width : ĠInt ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcollapsed Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġwords . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Char Ġ= Ġwords [ index ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add Char ( first Char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add Char ('.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfm . char Width ( first Char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollapsed Left [ index ] Ġ= Ġcollapsed Width Ġ+ Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollapsed Width Ġ+= Ġwidth Ġ+ Ġdot Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollapsed Left [ words . size Ġ- Ġ 1 ] Ġ= Ġcollapsed Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( words . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortest Pkg Ġ= Ġbuffer . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortest Pkg Width Ġ= Ġfm . string Width ( short est Pkg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdraw Package ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg : ĠGraphics 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft : ĠInt , Ġright : ĠInt , Ġtop : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Width Ġ= Ġright Ġ- Ġleft Ġ- Ġleft Symbol Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġleft Position : ĠInt Ġ= Ġleft Ġ+ Ġleft Symbol Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left Position Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfull Ġpackage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible Width Ġ>= Ġfull Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw String ( pkg , Ġleft Position , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshort Ġpackage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible Width Ġ< Ġshortest Pkg Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġwords . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġmethod ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġfm . char Width ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left Position Ġ+ Ġw Ġ> Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw String ( c . toString (), Ġleft Position , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Position Ġ+= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcollapsed Ġpackage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . reset (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshould Collapse Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġwords . size Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollapsed Width Left Ġ= Ġcollapsed Left [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! should Collapse Ġ&& Ġcurrent Width Ġ+ Ġwords Width [ index ] Ġ+ Ġcollapsed Width Left Ġ> Ġvisible Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Collapse Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Collapse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add From End ( words [ index ][ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add From End ('.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add From End ( words [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Width Ġ+= Ġwords Width [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . add From End ('.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Width Ġ+= Ġdot Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw Chars ( buffer . buf , Ġbuffer . startIndex , Ġbuffer . size , Ġleft Position , Ġtop ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠName Buffer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuf : ĠChar Array Ġ= ĠChar Array ( 1 0 2 4 ) Ġ{ Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġvar ĠstartIndex Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartIndex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset ( offset From End : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartIndex Ġ= Ġbuf . size Ġ+ Ġoffset From End Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Char ( char : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuf [ size ++] Ġ= Ġchar ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd From End ( word : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġword . length Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf [ -- startIndex ] Ġ= Ġword [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd From End ( c : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuf [ -- startIndex ] Ġ= Ġc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( index : ĠInt ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuf [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġappend ( last : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġlast ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Char ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( buf , ĠstartIndex , Ġsize ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ