package Ġdev . the code war ri or . bit font . font editor Ċ Ċ import Ġdev . the code war ri or . bit font . font editor . data . Bit font Editor Data Ċ import Ġdev . the code war ri or . bit font . font editor . utils . key stroke Symbol Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk _ quick _ keys Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk util _ max _ text _ width Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk util _ menu Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk util _ menu _ bar Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk util _ menu _ item Ċ import Ġdev . the code war ri or . bit font . font editor . utils . nk util _ text _ width Ċ import Ġdev . the code war ri or . bit font . font editor . utils . stack Push Ċ import Ġdev . the code war ri or . bit font . font editor . utils . set Ċ import Ġorg . lwjgl . n uk lear . Nk Context Ċ import Ġorg . lwjgl . n uk lear . Nk Rect Ċ import Ġorg . lwjgl . n uk lear . N uk lear .* Ċ import Ġorg . lwjgl . system . Memory Util Ċ import Ġorg . lwjgl . util . n fd . Native FileDialog Ċ import Ġorg . lwjgl . util . n fd . Native FileDialog . N FD _ CANCEL Ċ import Ġorg . lwjgl . util . n fd . Native FileDialog . N FD _ OK AY Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . text . NumberFormat Ċ Ċ class ĠMain Menu : ĠWindow ( 0 f , Ġ 0 f ) Ġ{ ĊĠĠĠ Ġvar Ġfull Width Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġfull Height Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġpush ( ctx : ĠN k Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstack Push Ġ{ Ġstack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠN k Rect . malloc Stack ( stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect . set ( 0 , Ġ 0 , Ġfull Width , Ġ 2 5 Ġ+ Ġctx . style (). window (). menu _ padding (). y ()* 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nk _ begin ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN K _ WINDOW _ BACKGROUND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k _ window _ set _ bounds ( ctx , Ġuuid , Ġrect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Contents ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn k _ end ( ctx ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpush Contents ( ctx : ĠN k Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġn k util _ menu _ bar ( ctx , Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ menu ( ctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" File ", Ġn k util _ text _ width ( ctx , Ġ" File "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ max _ text _ width ( ctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Open Ġ${ key stroke Symbol (" prim + o ") }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Save " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ menu _ item ( ctx , Ġ" Open Ġ${ key stroke Symbol (" prim + o ") }", Ġ:: open File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ menu _ item ( ctx , Ġ" Save ", Ġ:: save File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ menu ( ctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tools ", Ġn k util _ text _ width ( ctx , Ġ" Tools "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ max _ text _ width ( ctx , Ġ" Memory ĠReport "), Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn k util _ menu _ item ( ctx , Ġ" Memory ĠReport ", Ġ:: print Memory Report ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġn k _ quick _ keys Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" prim + o " Ġpressed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen File () Ġ{ ĊĠĠĠĠĠĠĠ Ġstack Push Ġ{ Ġstack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Out Ġ= Ġstack . malloc Pointer ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Native FileDialog . N FD _ Open Dialog (" bit font ", ĠP refs [ LAST _ PATH _ KEY ], Ġpath Out )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN FD _ OK AY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġpath Out . getString UTF 8 ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNative FileDialog . n N FD _ Free ( path Out . get ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Selected : Ġ$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP refs [ LAST _ PATH _ KEY ] Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠBit font Editor Data . open ( Files . new InputStream ( Paths . get ( path ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . getInstance (). windows . add ( Font Window ( data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN FD _ CANCEL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Canceled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave File () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// todo Ġfile Ġsaving ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprint Memory Report () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġthread Report Ġ= ĠMemory Report < String >() ĊĠĠĠĠĠĠĠ Ġval Ġstack Depth Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġstack Report Ġ= ĠMemory Report < List < StackTrace Element >>() ĊĊĠĠĠĠĠĠĠ Ġprintln ("") ĊĠĠĠĠĠĠĠ Ġprintln ("# ĠGenerating Ġmemory Ġreport ") ĊĊĠĠĠĠĠĠĠ ĠMemory Util . mem Report Ġ{ Ġaddress , Ġmemory , Ġthread Id , Ġthread Name , Ġstack trace Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Report . add ( thread Name Ġ?: Ġ" ID : Ġ$ thread Id ", Ġmemory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack Report . add ( stack trace . take ( stack Depth ), Ġmemory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" Threads :") ĊĠĠĠĠĠĠĠ Ġthread Report . entries . sorted By Descending Ġ{ Ġit . size Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ Ġ`${ it . key }` : Ġ${ it . summary () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" Stack s :") ĊĠĠĠĠĠĠĠ Ġstack Report . entries . sorted By Descending Ġ{ Ġit . size Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ Ġ${ it . summary () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . key . forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ĠĠĠ Ġ$ element ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfree () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ PATH _ KEY Ġ= Ġ" dialog . open file . last path " ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMemory Report < T >() Ġ{ ĊĠĠĠ Ġdata Ġclass ĠEntry < T >( val Ġkey : ĠT , Ġvar Ġcount : ĠInt , Ġvar Ġsize : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġsummary (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnf Ġ= ĠNumber Format . getInteger Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"${ nf . format ( count )} Ġbuffer ${ if ( count Ġ== Ġ 1 ) Ġ"" Ġelse Ġ" s "}, Ġ${ nf . format ( size )} Ġbyte ${ if ( size Ġ== Ġ 1 L ) Ġ"" Ġelse Ġ" s "} " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ entries : ĠMutable Map < T , ĠEntry < T >> Ġ= Ġmutable Map Of () ĊĠĠĠ Ġval Ġentries : ĠCollection < Entry < T >> Ġget () Ġ= Ġ_ entries . values ĊĊĠĠĠ Ġfun Ġadd ( key : ĠT , Ġsize : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġ_ entries . get Or Put ( key ) Ġ{ ĠEntry ( key , Ġ 0 , Ġ 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġentry . count ++ ĊĠĠĠĠĠĠĠ Ġentry . size Ġ+= Ġsize ĊĠĠĠ Ġ} Ċ } Ċ