package Ġme . anno . ui . debug Ċ Ċ import Ġme . anno . config . Default Config Ċ import Ġme . anno . gpu . GFX Ċ import Ġme . anno . gpu . drawing . Draw Rect angles . draw Rect Ċ import Ġme . anno . gpu . drawing . GFX x 2 D Ċ import Ġme . anno . gpu . shader . Base Shader Ċ import Ġme . anno . gpu . shader . Shader Lib . simple Vertex Shader Ċ import Ġme . anno . gpu . shader . Shader Lib . uv List Ċ import Ġme . anno . gpu . texture . Clamp ing Ċ import Ġme . anno . gpu . texture . GPU Filtering Ċ import Ġme . anno . gpu . texture . Texture 2 D Ċ import Ġme . anno . ui . Panel Ċ import Ġme . anno . ui . base . text . Text Panel Ċ import Ġme . anno . utils . OS Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ import Ġkotlin . math . max Ċ Ċ object ĠFrame Times Ġ: ĠPanel ( Default Config . style . getChild (" fps ")) Ġ{ ĊĊĠĠĠ Ġval Ġwidth Ġ= Ġ 2 0 0 Ġ* Ġmax ( Default Config . style . getSize (" fontSize ", Ġ 1 2 ), Ġ 1 2 ) Ġ/ Ġ 1 2 ĊĠĠĠ Ġval Ġheight Ġ= Ġwidth Ġ/ Ġ 4 ĊĊĠĠĠ Ġprivate Ġval Ġtexture Ġ= ĠTexture 2 D (" frame Times ", Ġwidth , Ġ 1 , Ġ 1 ) ĊĠĠĠ Ġprivate Ġval Ġfloats Ġ= ĠByteBuffer ĊĠĠĠĠĠĠĠ Ġ. allocate Direct ( 4 Ġ* Ġwidth ) ĊĠĠĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠĠĠ Ġ. as Float Buffer () ĊĊĠĠĠ Ġprivate Ġval Ġshader Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" frame Times ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Vertex Shader , Ġuv List , Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġcolor , Ġbackground ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġsampler 2 D Ġtex ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġfloat Ġv Ġ= Ġmin (( texture ( tex , Ġuv ). x Ġ+ Ġuv . y Ġ- Ġ 1 . 0 ) Ġ* Ġ$ height . 0 Ġ+ Ġ 0 . 5 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( v Ġ<= Ġ 0 . 0 ) Ġdiscard ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġmix ( background , Ġcolor , Ġv );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġcolors Ġ= ĠText Panel ("", Ġstyle ) ĊĠĠĠ Ġval ĠtextColor Ġ= Ġcolors . textColor ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate Size ( w : ĠInt , Ġh : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmin W Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġmin H Ġ= Ġheight ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtime Container Ġ= ĠTime Container ( width , ĠtextColor ) ĊĠĠĠ Ġval Ġcontainers Ġ= Ġarray ListOf ( time Container ) ĊĊĠĠĠ Ġfun Ġput Time ( value : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġput Value ( value , ĠtextColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Value ( value : ĠFloat , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontainers Ġ= Ġcontainers ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcontainers . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġcontainers [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( container . color Ġ== Ġcolor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . put Value ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= ĠTime Container ( width , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġcontainers . add ( container ) ĊĠĠĠĠĠĠĠ Ġcontainer . put Value ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġcan Be Seen Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdraw ( x , Ġy , Ġx Ġ+ Ġw , Ġy Ġ+ Ġh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġwithout Interpolation Ġget () Ġ= ĠOS . is Android ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( x 0 : ĠInt , Ġy 0 : ĠInt , Ġx 1 : ĠInt , Ġy 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Background ( x 0 , Ġy 0 , Ġx 1 , Ġy 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontainers Ġ= Ġcontainers ĊĠĠĠĠĠĠĠ Ġif Ġ( containers . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġcontainers . sort Descending () ĊĠĠĠĠĠĠĠ Ġval ĠmaxValue Ġ= Ġcontainers [ 0 ]. max Value ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġcontainers . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġcontainers [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Index Ġ= Ġcontainer . next Index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġcontainer . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbar Color Ġ= Ġcontainer . color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Offset Ġ= Ġnext Index Ġ- Ġ 1 Ġ+ Ġwidth ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( without Interpolation ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast X Ġ= Ġx 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Bar Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġheight Ġ/ ĠmaxValue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġx 0 Ġuntil Ġx 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġx Ġ- Ġthis . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvalues [( index Offset Ġ+ Ġi ) Ġ% Ġwidth ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbar Height Ġ= Ġ( v Ġ* Ġscale ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bar Height Ġ!= Ġlast Bar Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Line ( last X , Ġx , Ġlast Bar Height , Ġbar Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Bar Height Ġ= Ġbar Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Line ( last X , Ġx 1 , Ġlast Bar Height , Ġbar Color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġ 1 f Ġ/ ĠmaxValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġx 0 Ġuntil Ġx 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġx Ġ- Ġthis . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvalues [( index Offset Ġ+ Ġi ) Ġ% Ġwidth ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloats . put ( x Ġ- Ġx 0 , Ġmax ( v Ġ* Ġscale , Ġ 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . create Mono chrome ( float s , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG FX . check () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshader Ġ= Ġshader . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshader . use () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG FX x 2 D . pos Size ( shader , Ġx , Ġy , Ġw , Ġh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshader . v 4 f (" color ", Ġbar Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshader . v 4 f (" background ", ĠbackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG FX x 2 D . no T iling ( shader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . bind ( 0 , ĠGPU Filtering . TR UL Y _ NE ARE ST , ĠCl amping . CLAMP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG FX . flat 0 1 . draw ( shader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG FX . check () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġto Ġreduce Ġdraw Ġcalls Ġby Ġbund ling Ġstacks Ġof Ġthe Ġsame Ġheight ĊĠĠĠ Ġfun Ġdraw Line ( last X : ĠInt , Ġnext X : ĠInt , Ġbar Height : ĠInt , Ġbar Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last X Ġ< Ġnext X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Rect ( last X , Ġy Ġ+ Ġheight Ġ- Ġbar Height , Ġnext X Ġ- Ġlast X , Ġbar Height , Ġbar Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }