package Ġgg . essential . element a . font Ċ Ċ import Ġgg . essential . element a . UI Component Ċ import Ġgg . essential . element a . constraints . Constraint Type Ċ import Ġgg . essential . element a . constraints . resolution . Constraint Visitor Ċ import Ġgg . essential . element a . font . data . Font Ċ import Ġgg . essential . element a . font . data . Glyph Ċ import Ġgg . essential . element a . utils . read From Legacy Shader Ċ import Ġgg . essential . universal . U Graphics Ċ import Ġgg . essential . universal . UM at rix Stack Ċ import Ġgg . essential . universal . U Resolution Ċ import Ġgg . essential . universal . shader . Blend State Ċ import Ġgg . essential . universal . shader . Float 2 Uniform Ċ import Ġgg . essential . universal . shader . Float 4 Uniform Ċ import Ġgg . essential . universal . shader . Float Uniform Ċ import Ġgg . essential . universal . shader . Sampler Uniform Ċ import Ġgg . essential . universal . shader . U Shader Ċ import Ġnet . minecraft . client . renderer . vertex . Default Vertex Formats Ċ import Ġorg . lwjgl . opengl . GL 1 1 Ċ import Ġjava . awt . Color Ċ import Ġkotlin . math . ceil Ċ import Ġkotlin . math . floor Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* Ġ[ MS DF ]( https :// github . com / Ch lum sky / ms df gen ) ĠFont ĠRenderer Ċ Ġ*/ Ċ class ĠFont Renderer ( ĊĠĠĠ Ġprivate Ġval Ġregular Font : ĠFont , ĊĠĠĠ Ġprivate Ġval Ġbold Font : ĠFont Ġ= Ġregular Font Ċ ) Ġ: ĠFont Provider Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġunderline : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġstrike through : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġbold : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġit al ics : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġob fuscated : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar ĠtextColor : ĠColor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshadow Color : ĠColor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdrawing Shadow Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġactive Font : ĠFont Ġ= Ġregular Font ĊĠĠĠ Ġoverride Ġvar Ġcached Value : ĠFont Provider Ġ= Ġthis ĊĠĠĠ Ġoverride Ġvar Ġre calculate : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġvar Ġconstr ain To : ĠUI Component ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠgetString Width ( string : ĠString , Ġpoint Size : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString Information ( string , Ġpoint Size ). first ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetString Height ( string : ĠString , Ġpoint Size : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString Information ( string , Ġpoint Size ). second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetString Information ( string : ĠString , Ġpoint Size : ĠFloat ): ĠPair < Float , ĠFloat > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Point Size Ġ= Ġpoint Size Ġ* Ġ 1 . 3 6 2 3 0 5 9 8 6 7 f ĊĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġstring . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= Ġstring [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġparse Ġformatting Ġcodes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ== Ġ'\ u 0 0 a 7 ' Ġ&& Ġi Ġ+ Ġ 1 Ġ< Ġstring . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġ(" 0 1 2 3 4 5 6 7 8 9 abcdef kl m " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nor "). indexOf ( string [ i Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġ 1 7 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Point Size Ġ= Ġpoint Size Ġ* Ġ 1 . 1 0 8 1 f Ġ// Adjust Ġbold Ġbeing Ġsmaller ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Font Ġ= Ġbold Font ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Point Size Ġ= Ġpoint Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Font Ġ= Ġregular Font ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġglyph Ġ= Ġactive Font . font Info . glyph s [ char . code ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( glyph Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplane Bounds Ġ= Ġglyph . plane Bounds ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( plane Bounds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġmax (( plane Bounds . top Ġ- Ġplane Bounds . bottom ) Ġ* Ġcurrent Point Size , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ+= Ġ( glyph . advance Ġ* Ġcurrent Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Line Height ( point Size : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġactive Font . font Info . metrics . line Height Ġ* Ġpoint Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChanges Ġfont Ġcontext . ĠUse Ġ 1 Ġfor Ġregular Ġand Ġ 2 Ġfor Ġbold ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġswitch Font ( type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġactive Font ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Font Ġ= Ġregular Font ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Font Ġ= Ġbold Font ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsampler Uniform . setValue ( active Font . get Texture (). gl Texture Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( active Font Ġ!= Ġtmp ) Ġ{ Ġ// Font Ġcontext Ġswitch ĊĠĠĠĠĠĠĠĠĠĠĠ ĠU Graphics . configure Texture ( active Font . get Texture (). gl Texture Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL 1 1 . gl TexParameter i ( GL 1 1 . GL _ TEXTURE _ 2 D , ĠGL 1 1 . GL _ TEXTURE _ MIN _ FILTER , ĠGL 1 1 . GL _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL 1 1 . gl TexParameter i ( GL 1 1 . GL _ TEXTURE _ 2 D , ĠGL 1 1 . GL _ TEXTURE _ MAG _ FILTER , ĠGL 1 1 . GL _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdf Tex el . setValue ( 1 f Ġ/ Ġactive Font . font Info . atlas . width , Ġ 1 f Ġ/ Ġactive Font . font Info . atlas . height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw String ( ĊĠĠĠĠĠĠĠ Ġmatrix Stack : ĠU Matrix Stack , ĊĠĠĠĠĠĠĠ Ġstring : ĠString , ĊĠĠĠĠĠĠĠ Ġcolor : ĠColor , ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġoriginal Point Size : ĠFloat , ĊĠĠĠĠĠĠĠ Ġscale : ĠFloat , ĊĠĠĠĠĠĠĠ Ġshadow : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġshadow Color : ĠColor ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeffective Size Ġ= Ġoriginal Point Size Ġ* Ġscale Ġ* Ġ 1 . 3 6 2 3 0 5 9 8 6 7 f ĊĠĠĠĠĠĠĠ Ġval Ġadjusted Y Ġ= Ġy Ġ- Ġeffective Size Ġ/ Ġ 5 ĊĠĠĠĠĠĠĠ Ġif Ġ( shadow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawing Shadow Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeffective Shadow : ĠColor ? Ġ= Ġshadow Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbase Color Ġ= Ġcolor . rgb ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( effective Shadow Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( base Color Ġand Ġ- 6 7 1 0 8 8 6 4 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Color Ġ= Ġbase Color Ġor Ġ- 1 6 7 7 7 2 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Color Ġ= Ġbase Color Ġand Ġ 0 xF CF CF C Ġshr Ġ 2 Ġor Ġ( base Color Ġand Ġ- 1 6 7 7 7 2 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . shadow Color Ġ= ĠColor ( base Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshadow Offset Ġ= Ġeffective Size Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix Stack . translate ( shadow Offset , Ġshadow Offset , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw String Now ( matrix Stack , Ġstring , ĠColor ( base Color ), Ġx , Ġadjusted Y , Ġeffective Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix Stack . translate (- shadow Offset , Ġ- shadow Offset , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawing Shadow Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġdraw String Now ( matrix Stack , Ġstring , Ġcolor , Ġx , Ġadjusted Y , Ġeffective Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Impl ( visitor : ĠConstraint Visitor , Ġtype : ĠConstraint Type ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Color ( point Size : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġif Ġ( drawing Shadow ) Ġshadow Color Ġelse ĠtextColor ĊĠĠĠĠĠĠĠ Ġval Ġamt Ġ= ĠColor . RGB to H SB ( current !!. red , Ġcurrent . green , Ġcurrent . blue , Ġnull )[ 2 ] ĊĠĠĠĠĠĠĠ Ġhint Amount Uniform . setValue ( 0 f ) Ċ // ĠĠĠĠĠĠĠ Ġsub pixel Amount Uniform . setValue ( 0 f ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġif ( point Size Ġ< Ġ 7 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsub pixel Amount Uniform . setValue ( amt ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsub pixel Amount Uniform . setValue ( 0 f ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw String Now ( matrix Stack : ĠU Matrix Stack , Ġstring : ĠString , Ġcolor : ĠColor , Ġx : ĠFloat , Ġy : ĠFloat , Ġoriginal Point Size : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! are Shaders Initialized () Ġ|| Ġ! shader . usable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Point Size Ġ= Ġoriginal Point Size ĊĊĠĠĠĠĠĠĠ Ġshader . bind () ĊĠĠĠĠĠĠĠ Ġswitch Font ( 1 ) ĊĠĠĠĠĠĠĠ Ġ// shadow Color Uniform . setValue ( Vector 4 f ( 0 . 1 f , Ġ 0 . 1 f , Ġ 0 . 1 f , Ġ 1 f )) ĊĊĠĠĠĠĠĠĠ Ġdo ffset Uniform . setValue ( 3 . 5 f Ġ/ Ġcurrent Point Size ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġgui Scale Ġ= ĠU Resolution . scale Factor . toFloat () ĊĊĠĠĠĠĠĠĠ Ġ// Reset ĊĠĠĠĠĠĠĠ Ġob fuscated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbold Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġit al ics Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġstrike through Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġunderline Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġcolor ĊĊĠĠĠĠĠĠĠ Ġrefresh Color ( original Point Size ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġcurrent X Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġstring . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// for Ġ( i Ġin Ġstring . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// string . forEach Ġ{ Ġchar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= Ġstring [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġparse Ġformatting Ġcodes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ== Ġ'\ u 0 0 a 7 ' Ġ&& Ġi Ġ+ Ġ 1 Ġ< Ġstring . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 abcdef kl mn or ". indexOf ( string [ i Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ< Ġ 1 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Font ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġob fuscated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbold Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit al ics Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrike through Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunderline Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġcolors [ 1 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Color Ġ= Ġcolors [ 3 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġcolors [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Color Ġ= Ġcolors [ j Ġ+ Ġ 1 6 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Point Size Ġ= Ġoriginal Point Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo ffset Uniform . setValue ( 3 . 5 f Ġ/ Ġcurrent Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Color ( original Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 1 6 Ġ-> Ġob fuscated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 1 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Font ( 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Point Size Ġ= Ġoriginal Point Size Ġ* Ġ 1 . 1 0 8 1 f Ġ// Adjust Ġbold Ġbeing Ġsmaller ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo ffset Uniform . setValue ( 3 . 5 f Ġ/ Ġcurrent Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbold Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 1 8 Ġ-> Ġstrike through Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 1 9 Ġ-> Ġunderline Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 2 0 Ġ-> Ġit al ics Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Point Size Ġ= Ġoriginal Point Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Font ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo ffset Uniform . setValue ( 3 . 5 f Ġ/ Ġcurrent Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġob fuscated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbold Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit al ics Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrike through Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunderline Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Color ( original Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġglyph Ġ= Ġactive Font . font Info . glyph s [ char . code ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( glyph Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ob fuscated Ġ&& Ġchar Ġ!= Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadvance Ġ= Ġglyph . advance ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( iter Ġin Ġ 1 .. 1 0 0 ) Ġ{ Ġ// 1 0 0 Ġtries Ġmax ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ" abcdefgh ijkl mnopqrst uvw xyz ABCDEF GH IJ KL MN OP Q RST UV W XYZ ". random () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( advance Ġ== Ġactive Font . font Info . glyph s [ tmp . code ]?. advance Ġ?: Ġcontinue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglyph Ġ= Ġactive Font . font Info . glyph s [ tmp . code ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( glyph Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplane Bounds Ġ= Ġglyph . plane Bounds ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( plane Bounds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġactive Font . font Info . metrics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbaseline Ġ= Ġy Ġ+ Ġ(( metrics . line Height Ġ+ Ġmetrics . desc ender ) Ġ* Ġcurrent Point Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhint ed Baseline Ġ= Ġfloor ( baseline Ġ* Ġgui Scale ) Ġ/ Ġgui Scale ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ( plane Bounds . right Ġ- Ġplane Bounds . left ) Ġ* Ġcurrent Point Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ( plane Bounds . top Ġ- Ġplane Bounds . bottom ) Ġ* Ġcurrent Point Size ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhint ed Height Ġ= Ġceil ( height Ġ* Ġgui Scale ) Ġ/ Ġgui Scale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhint ed Y Ġ= Ġhint ed Baseline Ġ- Ġceil ( plane Bounds . top Ġ* Ġcurrent Point Size Ġ* Ġgui Scale ) Ġ/ Ġgui Scale ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Glyph ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglyph , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint ed Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint ed Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent X Ġ+= Ġ( glyph . advance Ġ* Ġcurrent Point Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshader . unbind () ĊĠĠĠĠĠĠĠ Ġactive Font Ġ= Ġbold Font ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdraw Glyph ( matrix Stack : ĠU Matrix Stack , Ġglyph : ĠGlyph , Ġcolor : ĠColor , Ġx : ĠFloat , Ġy : ĠFloat , Ġwidth : ĠFloat , Ġheight : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġatlas Bounds Ġ= Ġglyph . atlas Bounds Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġatlas Ġ= Ġactive Font . font Info . atlas ĊĠĠĠĠĠĠĠ Ġval Ġtexture Top Ġ= Ġ 1 . 0 Ġ- Ġ( atlas Bounds . top Ġ/ Ġatlas . height ) ĊĠĠĠĠĠĠĠ Ġval Ġtexture Bottom Ġ= Ġ 1 . 0 Ġ- Ġ( atlas Bounds . bottom Ġ/ Ġatlas . height ) ĊĠĠĠĠĠĠĠ Ġval Ġtexture Left Ġ= Ġ( atlas Bounds . left Ġ/ Ġatlas . width ). toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Right Ġ= Ġ( atlas Bounds . right Ġ/ Ġatlas . width ). toDouble () ĊĊĠĠĠĠĠĠĠ Ġval Ġdraw Color Ġ= Ġif Ġ( drawing Shadow ) Ġ( shadow Color Ġ?: Ġcolor ) Ġelse Ġ( textColor Ġ?: Ġcolor ) ĊĠĠĠĠĠĠĠ Ġfg Color Uniform . setValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Color . red Ġ/ Ġ 2 5 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Color . green Ġ/ Ġ 2 5 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Color . blue Ġ/ Ġ 2 5 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġworld Renderer Ġ= ĠU Graphics . get From Tes sell ator () ĊĠĠĠĠĠĠĠ Ġworld Renderer . begin With Active Shader ( U Graphics . Draw Mode . QU ADS , ĠDefault Vertex Formats . POSITION _ TEX ) ĊĠĠĠĠĠĠĠ Ġval Ġdouble X Ġ= Ġx . toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġdouble Y Ġ= Ġy . toDouble () ĊĠĠĠĠĠĠĠ Ġworld Renderer . pos ( matrix Stack , Ġdouble X , Ġdouble Y Ġ+ Ġheight , Ġ 0 . 0 ). tex ( texture Left , Ġtexture Bottom ). end Vertex () ĊĠĠĠĠĠĠĠ Ġworld Renderer . pos ( matrix Stack , Ġdouble X Ġ+ Ġwidth , Ġdouble Y Ġ+ Ġheight , Ġ 0 . 0 ). tex ( texture Right , Ġtexture Bottom ). end Vertex () ĊĠĠĠĠĠĠĠ Ġworld Renderer . pos ( matrix Stack , Ġdouble X Ġ+ Ġwidth , Ġdouble Y , Ġ 0 . 0 ). tex ( texture Right , Ġtexture Top ). end Vertex () ĊĠĠĠĠĠĠĠ Ġworld Renderer . pos ( matrix Stack , Ġdouble X , Ġdouble Y , Ġ 0 . 0 ). tex ( texture Left , Ġtexture Top ). end Vertex () ĊĠĠĠĠĠĠĠ Ġworld Renderer . draw Direct () Ċ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( underline ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( bold ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( ital ics ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġtrust ing Ġthese Ġare Ġright ... Ġthank Ġyou Ġm inecraft Ġwiki ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolors : ĠMap < Int , ĠColor > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġto ĠColor . BLACK , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġto ĠColor ( 0 , Ġ 0 , Ġ 1 7 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġto ĠColor ( 0 , Ġ 1 7 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġto ĠColor ( 0 , Ġ 1 7 0 , Ġ 1 7 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġto ĠColor ( 1 7 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġto ĠColor ( 1 7 0 , Ġ 0 , Ġ 1 7 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġto ĠColor ( 2 5 5 , Ġ 1 7 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġto ĠColor ( 1 7 0 , Ġ 1 7 0 , Ġ 1 7 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġto ĠColor ( 8 5 , Ġ 8 5 , Ġ 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġto ĠColor ( 8 5 , Ġ 8 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġto ĠColor ( 8 5 , Ġ 2 5 5 , Ġ 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġto ĠColor ( 8 5 , Ġ 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġto ĠColor ( 2 5 5 , Ġ 8 5 , Ġ 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 3 Ġto ĠColor ( 2 5 5 , Ġ 8 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 Ġto ĠColor ( 2 5 5 , Ġ 2 5 5 , Ġ 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 5 Ġto ĠColor ( 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshadow s Ġfor Ġ( i Ġ- Ġ 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 Ġto ĠColor . BLACK , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 7 Ġto ĠColor ( 0 , Ġ 0 , Ġ 4 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 Ġto ĠColor ( 0 , Ġ 4 2 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 9 Ġto ĠColor ( 0 , Ġ 4 2 , Ġ 4 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 Ġto ĠColor ( 4 2 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 1 Ġto ĠColor ( 4 2 , Ġ 0 , Ġ 4 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 2 Ġto ĠColor ( 4 2 , Ġ 4 2 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 3 Ġto ĠColor ( 4 2 , Ġ 4 2 , Ġ 4 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 Ġto ĠColor ( 2 1 , Ġ 2 1 , Ġ 2 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 Ġto ĠColor ( 2 1 , Ġ 2 1 , Ġ 6 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 6 Ġto ĠColor ( 2 1 , Ġ 6 3 , Ġ 2 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 7 Ġto ĠColor ( 2 1 , Ġ 6 3 , Ġ 6 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 8 Ġto ĠColor ( 6 3 , Ġ 2 1 , Ġ 2 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 9 Ġto ĠColor ( 6 3 , Ġ 2 1 , Ġ 6 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 Ġto ĠColor ( 6 3 , Ġ 6 3 , Ġ 2 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 1 Ġto ĠColor ( 6 3 , Ġ 6 3 , Ġ 6 3 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġshader : ĠU Shader ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġsampler Uniform : ĠSampler Uniform ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġdo ffset Uniform : ĠFloat Uniform ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġhint Amount Uniform : ĠFloat Uniform ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġsub pixel Amount Uniform : ĠFloat Uniform ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġsdf Tex el : ĠFloat 2 Uniform ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġfg Color Uniform : ĠFloat 4 Uniform ĊĠĠĠĠĠĠĠ Ġ// internal Ġlateinit Ġvar Ġshadow Color Uniform : ĠFloat 4 Uniform ĊĊĠĠĠĠĠĠĠ Ġfun Ġare Shaders Initialized () Ġ= Ġ:: shader . isInitialized ĊĊĠĠĠĠĠĠĠ Ġfun Ġinit Shaders () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( are Shaders Initialized ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshader Ġ= ĠU Shader . read From Legacy Shader (" font ", Ġ" font ", ĠBlend State . NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! shader . usable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Failed Ġto Ġload ĠElement a Ġfont Ġshader ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsampler Uniform Ġ= Ġshader . get Sampler Uniform (" ms df ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo ffset Uniform Ġ= Ġshader . get Float Uniform (" do ffset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhint Amount Uniform Ġ= Ġshader . get Float Uniform (" hint _ amount ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsub pixel Amount Uniform Ġ= Ġshader . get Float Uniform (" sub pixel _ amount ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdf Tex el Ġ= Ġshader . get Float 2 Uniform (" sdf _ tex el ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfg Color Uniform Ġ= Ġshader . get Float 4 Uniform (" fg Color ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// shadow Color Uniform Ġ= Ġshader . get Float 4 Uniform (" shadow Color ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }