package Ġimg ui . api Ċ Ċ import Ġglm _. i Ċ import Ġglm _. vec 2 . Vec 2 Ċ import Ġimg ui .* Ċ import Ġimg ui . ImGui . begin Ċ import Ġimg ui . ImGui . begin Child Frame Ċ import Ġimg ui . ImGui . begin Combo Ċ import Ġimg ui . ImGui . begin Tooltip Ċ import Ġimg ui . ImGui . bullet Text Ċ import Ġimg ui . ImGui . button Ċ import Ġimg ui . ImGui . checkbox Ċ import Ġimg ui . ImGui . clear Ini Settings Ċ import Ġimg ui . ImGui . combo Ċ import Ġimg ui . ImGui . debug Node Draw List Ċ import Ġimg ui . ImGui . debug Node TabBar Ċ import Ġimg ui . ImGui . debug Node Window Settings Ċ import Ġimg ui . ImGui . debug Node Windows List Ċ import Ġimg ui . ImGui . debug Start Item Picker Ċ import Ġimg ui . ImGui . end Ċ import Ġimg ui . ImGui . end Child Frame Ċ import Ġimg ui . ImGui . end Combo Ċ import Ġimg ui . ImGui . end Tooltip Ċ import Ġimg ui . ImGui . font Ċ import Ġimg ui . ImGui . fontSize Ċ import Ġimg ui . ImGui . foreground Draw List Ċ import Ġimg ui . ImGui . get Foreground Draw List Ċ import Ġimg ui . ImGui . getID Ċ import Ġimg ui . ImGui . indent Ċ import Ġimg ui . ImGui . input Text Mult iline Ċ import Ġimg ui . ImGui . io Ċ import Ġimg ui . ImGui . is Item Hover ed Ċ import Ġimg ui . ImGui . log Finish Ċ import Ġimg ui . ImGui . log Text Ċ import Ġimg ui . ImGui . log To Clipboard Ċ import Ġimg ui . ImGui . pop ID Ċ import Ġimg ui . ImGui . pop Text Wrap Pos Ċ import Ġimg ui . ImGui . push ID Ċ import Ġimg ui . ImGui . push Text Wrap Pos Ċ import Ġimg ui . ImGui . same Line Ċ import Ġimg ui . ImGui . save Ini Settings To Disk Ċ import Ġimg ui . ImGui . save Ini Settings To Memory Ċ import Ġimg ui . ImGui . selectable Ċ import Ġimg ui . ImGui . separator Ċ import Ġimg ui . ImGui . set Next Item Width Ċ import Ġimg ui . ImGui . small Button Ċ import Ġimg ui . ImGui . style Ċ import Ġimg ui . ImGui . style Colors Classic Ċ import Ġimg ui . ImGui . style Colors Dark Ċ import Ġimg ui . ImGui . style Colors Light Ċ import Ġimg ui . ImGui . text Ċ import Ġimg ui . ImGui . text Disabled Ċ import Ġimg ui . ImGui . text Ex Ċ import Ġimg ui . ImGui . text Line Height With Spacing Ċ import Ġimg ui . ImGui . text Un formatted Ċ import Ġimg ui . ImGui . tree Node Ċ import Ġimg ui . ImGui . tree Pop Ċ import Ġimg ui . ImGui . un indent Ċ import Ġimg ui . classes . Style Ċ import Ġimg ui . demo . Example App Ċ import Ġimg ui . demo . show Example App . Style Editor Ċ import Ġimg ui . dsl . indent Ċ import Ġimg ui . dsl . tree Node Ċ import Ġimg ui . internal .* Ċ import Ġimg ui . internal . classes .* Ċ import Ġk ool . BYTES Ċ import Ġkotlin . reflect . K Mutable Property 0 Ċ import Ġimg ui . Window Flag Ġas ĠW f Ċ Ċ /** Ċ Ġ* Ġ ĠMessage Ġto Ġthe Ġperson Ġtemp ted Ġto Ġdelete Ġthis Ġfile Ġwhen Ġintegr ating ĠImGui Ġinto Ġtheir Ġcode Ġbase : Ċ Ġ* Ġ ĠDo ĠNOT Ġremove Ġthis Ġfile Ġfrom Ġyour Ġproject ! ĠIt Ġis Ġuseful Ġreference Ġcode Ġthat Ġyou Ġand Ġother Ġusers Ġwill Ġwant Ġto Ġrefer Ġto . Ċ Ġ* Ġ ĠDon 't Ġdo Ġit ! ĠDo ĠNOT Ġremove Ġthis Ġfile Ġfrom Ġyour Ġproject ! ĠIt Ġis Ġuseful Ġreference Ġcode Ġthat Ġyou Ġand Ġother Ġusers Ġwill Ġwant Ġto Ġrefer Ġto . Ċ Ġ* Ġ ĠEverything Ġin Ġthis Ġfile Ġwill Ġbe Ġstripped Ġout Ġby Ġthe Ġlinker Ġif Ġyou Ġdon 't Ġcall ĠImGui :: Show Demo Window (). Ċ Ġ* Ġ ĠDuring Ġdevelopment , Ġyou Ġcan Ġcall ĠImGui :: Show Demo Window () Ġin Ġyour Ġcode Ġto Ġlearn Ġabout Ġvarious Ġfeatures Ġof ĠImGui . Ċ Ġ* Ġ ĠRemoving Ġthis Ġfile Ġfrom Ġyour Ġproject Ġis Ġh inder ing Ġyour Ġaccess Ġto Ġdocumentation , Ġlikely Ġleading Ġyou Ġto Ġpo orer Ġusage Ġof Ġthe Ġlibrary . Ċ Ġ* Ġ ĠDuring Ġdevelopment , Ġyou Ġcan Ġcall ĠImGui :: Show Demo Window () Ġin Ġyour Ġcode Ġto Ġlearn Ġabout Ġvarious Ġfeatures Ġof ĠImGui . ĠHave Ġit Ġw ired Ġin Ġa Ġdebug Ġmenu ! Ċ Ġ* Ġ ĠRemoving Ġthis Ġfile Ġfrom Ġyour Ġproject Ġis Ġh inder ing Ġaccess Ġto Ġdocumentation Ġfor Ġeveryone Ġin Ġyour Ġteam , Ġlikely Ġleading Ġyou Ġto Ġpo orer Ġusage Ġof Ġthe Ġlibrary . Ċ Ġ* Ċ Ġ* Ġ ĠNote Ġthat Ġyou Ġcan Ġ# define ĠIM GUI _ DISABLE _ DEMO _ WINDOWS Ġin Ġim config . h Ġfor Ġthe Ġsame Ġeffect . Ċ Ġ* Ġ ĠIf Ġyou Ġwant Ġto Ġlink Ġcore ĠImGui Ġin Ġyour Ġfinal Ġbuilds Ġbut Ġnot Ġthose Ġdemo Ġwindows , Ġ# define ĠIM GUI _ DISABLE _ DEMO _ WINDOWS Ġin Ġim config . h Ġand Ġthose Ġfunctions Ġwill Ġbe Ġempty . Ċ Ġ* Ġ ĠIn Ġother Ġsituation , Ġwhen Ġyou Ġhave ĠImGui Ġavailable Ġyou Ġprobably Ġwant Ġthis Ġto Ġbe Ġavailable Ġfor Ġreference Ġand Ġexecution . Ċ Ġ* Ċ Ġ* Ġ ĠThank Ġyou , Ċ Ġ* Ġ Ġ- Your Ġbe lo ved Ġfriend , Ġimg ui _ demo . cpp Ġ( that Ġyou Ġwon 't Ġdelete ) Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ ĠDemo , ĠDebug , ĠInformation Ċ Ġ*/ Ċ interface Ġdemo Debug Inform ations Ġ{ ĊĊĠĠĠ Ġ// ----------------------------------------------------------------------------- ĊĠĠĠ Ġ// Ġ[ SECTION ] ĠAbout ĠWindow Ġ/ ĠShow About Window () ĊĠĠĠ Ġ// ĠAccess Ġfrom ĠDe ar ĠImGui ĠDemo Ġ-> ĠTools Ġ-> ĠAbout ĊĠĠĠ Ġ// ----------------------------------------------------------------------------- ĊĊĠĠĠ Ġ/** ĠCreate ĠDemo Ġwindow . ĊĠĠĠĠ Ġ* Ġ ĠD emon strate Ġmost ĠDe ar ĠImGui Ġfeatures Ġ( this Ġis Ġbig Ġfunction !) ĊĠĠĠĠ Ġ* Ġ ĠYou Ġmay Ġexecute Ġthis Ġfunction Ġto Ġexperiment Ġwith Ġthe ĠUI Ġand Ġunderstand Ġwhat Ġit Ġdoes . ĊĠĠĠĠ Ġ* Ġ ĠYou Ġmay Ġthen Ġsearch Ġfor Ġkeywords Ġin Ġthe Ġcode Ġwhen Ġyou Ġare Ġinterested Ġby Ġa Ġspecific Ġfeature . Ġ*/ ĊĠĠĠ Ġfun Ġshow Demo Window ( open : ĠBoolean Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Window Ġ= Ġopen [ 0 ] ĊĠĠĠĠĠĠĠ Ġshow Demo Window ( Companion :: show Window ) ĊĠĠĠĠĠĠĠ Ġopen [ 0 ] Ġ= Ġshow Window ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġcreate ĠDemo Ġwindow . Ġdemonstrate Ġmost ĠImGui Ġfeatures . Ġcall Ġthis Ġto Ġlearn Ġabout Ġthe Ġlibrary ! Ġtry Ġto Ġmake Ġit Ġalways Ġavailable Ġin Ġyour Ġapplication ! Ġ*/ ĊĠĠĠ Ġfun Ġshow Demo Window ( open : ĠK Mutable Property 0 < Boolean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠException ally Ġadd Ġan Ġextra Ġassert Ġhere Ġfor Ġpeople Ġconfused Ġabout Ġinitial ĠDe ar ĠImGui Ġsetup ĊĠĠĠĠĠĠĠ Ġ// ĠMost ĠImGui Ġfunctions Ġwould Ġnormally Ġjust Ġcrash Ġif Ġthe Ġcontext Ġis Ġmissing . ĊĠĠĠĠĠĠĠ Ġassert ( g ImGui Ġ!= Ġnull ) Ġ{ Ġ" Missing Ġde ar Ġimg ui Ġcontext . ĠRefer Ġto Ġexamples Ġapp !" Ġ} ĊĠĠĠĠĠĠĠ ĠExample App ( open ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġcreate ĠMetrics / Debugger Ġwindow . Ġdisplay ĠDe ar ĠImGui Ġinternals : Ġwindows , Ġdraw Ġcommands , Ġvarious Ġinternal Ġstate , Ġetc . Ġ*/ ĊĠĠĠ Ġfun Ġshow Metrics Window ( open : ĠK Mutable Property 0 < Boolean >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! begin (" De ar ĠImGui ĠMetrics / Debugger ", Ġopen )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= Ġg . debug Metrics Config ĊĊĠĠĠĠĠĠĠ Ġ// ĠBasic Ġinfo ĊĠĠĠĠĠĠĠ Ġtext (" De ar ĠImGui Ġ$ version ") ĊĠĠĠĠĠĠĠ Ġtext (" Application Ġaverage Ġ%. 3 f Ġms / frame Ġ(% . 1 f ĠF PS )", Ġ 1 0 0 0 f Ġ/ Ġio . fram erate , Ġio . fram erate ) ĊĠĠĠĠĠĠĠ Ġtext ("${ io . metrics Render Vertices } Ġvertices , Ġ${ io . metrics Render Indices } Ġindices Ġ(${ io . metrics Render Indices Ġ/ Ġ 3 } Ġtriangles )") ĊĠĠĠĠĠĠĠ Ġtext ("${ io . metrics Active Windows } Ġactive Ġwindows Ġ(${ io . metrics Render Windows } Ġvisible )") ĊĠĠĠĠĠĠĠ Ġtext ("${ io . metrics Alloc s } Ġactive Ġallocations ") ĊĠĠĠĠĠĠĠ Ġ// Same Line (); Ġif Ġ( Small Button (" GC ")) Ġ{ Ġg . Gc Compact All Ġ= Ġtrue ; Ġ} ĊĊĠĠĠĠĠĠĠ Ġseparator () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDebug ging Ġenums ĊĠĠĠĠĠĠĠ Ġif Ġ( cfg . show Windows Rect sType Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . show Windows Rect sType Ġ= ĠW RT . Work Rect . ordinal ĊĠĠĠĠĠĠĠ Ġif Ġ( cfg . show Tables Rect sType Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . show Tables Rect sType Ġ= ĠT RT . Work Rect . ordinal ĊĊĠĠĠĠĠĠĠ Ġ// ĠHelper Ġfunctions Ġto Ġdisplay Ġcommon Ġstructures : ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Draw List () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Columns () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Window () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Windows () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode TabBar () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Storage () ĊĠĠĠĠĠĠĠ Ġ// Ġ-> ĠFunc s Ġobjects ĊĊĠĠĠĠĠĠĠ Ġ// ĠTools ĊĠĠĠĠĠĠĠ Ġtree Node (" Tools ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠItem ĠP icker Ġtool Ġis Ġsuper Ġuseful Ġto Ġvis ually Ġselect Ġan Ġitem Ġand Ġbreak Ġinto Ġthe Ġcall - stack Ġof Ġwhere Ġit Ġwas Ġsubmitted . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button (" Item ĠP icker .. ")) Ġdebug Start Item Picker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Marker (" Will Ġcall Ġthe ĠIM _ DEBUG _ BREAK () Ġmacro Ġto Ġbreak Ġin Ġdebugger .\ n Warning : ĠIf Ġyou Ġdon 't Ġhave Ġa Ġdebugger Ġattached , Ġthis Ġwill Ġprobably Ġcrash .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Show Ġwindows Ġbegin Ġorder ", Ġ:: show Windows Begin Order ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Show Ġwindows Ġrect angles ", Ġ:: show Windows Rects ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Next Item Width ( fontSize Ġ* Ġ 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ i Ġ= Ġshow Windows Rect Type . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Windows Rects Ġ= Ġshow Windows Rects Ġ|| Ġcombo (" ## show _ windows _ rect _ type ", Ġ:: _ i , ĠW RT . names , ĠW RT . names . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Windows Rect Type Ġ= ĠW RT . values ()[ _ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Windows Rects ) Ġg . nav Window ?. let Ġ{ Ġnav Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text ("' ${ nav . name } ': ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( rect N Ġin ĠW RT . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getWindow Rect ( nav , Ġrect N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" (% 6 . 1 f ,% 6 . 1 f ) Ġ(% 6 . 1 f ,% 6 . 1 f ) ĠSize Ġ(% 6 . 1 f ,% 6 . 1 f ) Ġ${ WR T . names [ rect N . ordinal ] }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . min . x , Ġr . min . y , Ġr . max . x , Ġr . max . y , Ġr . width , Ġr . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Show ĠIm Draw Cmd Ġmesh Ġwhen Ġhover ing ", Ġ:: show Draw cmd Mesh ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Show ĠIm Draw Cmd Ġbounding Ġboxes Ġwhen Ġhover ing ", Ġ:: show Draw cmd A abb ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Show Ġtables Ġrect angles ", Ġcfg :: show Tables Rects ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Next Item Width ( fontSize Ġ* Ġ 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . show Tables Rects Ġ= Ġcombo (" ## show _ table _ rect s _ type ", Ġcfg :: show Tables Rect sType , ĠT RT . names , ĠT RT . names . size ) Ġor Ġcfg . show Tables Rects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Ġ= Ġg . nav Window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cfg . show Tables Rects Ġ&& Ġnav Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( table N Ġin Ġ 0 Ġuntil Ġg . tables . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġg . tables . getBy Index ( table N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table . last Frame Active Ġ< Ġg . frame Count Ġ- Ġ 1 Ġ|| Ġ( table . outer Window Ġ!== Ġnav Ġ&& Ġtable . inner Window Ġ!== Ġnav )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Table Ġ 0 x % 0 8 X Ġ(${ table . columns Count } Ġcolumns , Ġin Ġ'${ table . outer Window !!. name }') ", Ġtable . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Item Hover ed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Draw List . add Rect ( table . outer Rect . min Ġ- Ġ 1 , Ġtable . outer Rect . max Ġ+ Ġ 1 , ĠCOL 3 2 ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), Ġ 0 f , Ġ 0 . inv (), Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( rect N Ġin ĠT RT . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect N Ġ>= ĠT RT . Columns Rect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect N Ġ!= ĠT RT . Columns Rect Ġ&& Ġrect N Ġ!= ĠT RT . Columns Clip Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( column N Ġin Ġ 0 Ġuntil Ġtable . columns Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getTable Rect ( table , Ġrect N , Ġcolumn N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= Ġ" (% 6 . 1 f ,% 6 . 1 f ) Ġ(% 6 . 1 f ,% 6 . 1 f ) ĠSize Ġ(% 6 . 1 f ,% 6 . 1 f ) ĠCol Ġ$ column N Ġ${ rect N . name }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( r . min . x , Ġr . min . y , Ġr . max . x , Ġr . max . y , Ġr . width , Ġr . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect able ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Item Hover ed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Draw List . add Rect ( r . min Ġ- Ġ 1 , Ġr . max Ġ+ Ġ 1 , ĠCOL 3 2 ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), Ġ 0 f , Ġ 0 . inv (), Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getTable Rect ( table , Ġrect N , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= Ġ" (% 6 . 1 f ,% 6 . 1 f ) Ġ(% 6 . 1 f ,% 6 . 1 f ) ĠSize Ġ(% 6 . 1 f ,% 6 . 1 f ) Ġ${ rect N . name }". format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . min . x , Ġr . min . y , Ġr . max . x , Ġr . max . y , Ġr . width , Ġr . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect able ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Item Hover ed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Draw List . add Rect ( r . min Ġ- Ġ 1 , Ġr . max Ġ+ Ġ 1 , ĠCOL 3 2 ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), Ġ 0 f , Ġ 0 . inv (), Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠContents ĊĠĠĠĠĠĠĠ Ġdebug Node Windows List ( g . windows , Ġ" Windows ") ĊĠĠĠĠĠĠĠ Ġ// Debug Node Window List (& g . Windows Focus Order , Ġ" Windows Focus Order "); ĊĠĠĠĠĠĠĠ Ġtree Node (" Draw Lists ", Ġ" Active ĠDraw Lists Ġ(${ g . draw Data Builder . layers [ 0 ]. size }) ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( layer Ġin Ġg . draw Data Builder . layers [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Node Draw List ( null , Ġlayer , Ġ" Draw List ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDetails Ġfor ĠPop ups ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Node (" Pop ups ", Ġ" Pop ups Ġ(${ g . open Popup Stack . size }) ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( popup Ġin Ġg . open Popup Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġpopup . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Window Ġ= Ġif Ġ( window Ġ!= Ġnull Ġ&& Ġwindow . flags Ġhas ĠW f ._ Child Window ) Ġ" ĠChild Window " Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Menu Ġ= Ġif Ġ( window Ġ!= Ġnull Ġ&& Ġwindow . flags Ġhas ĠW f ._ Child Menu ) Ġ" ĠChild Menu " Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Popup ID : Ġ% 0 8 x , ĠWindow : Ġ'${ window ?. name }' $ child Window $ child Menu ", Ġpopup . popup Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Pop () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDetails Ġfor ĠTab Bars ĊĠĠĠĠĠĠĠ Ġtree Node (" Tab Bars ", Ġ" Tab ĠB ars Ġ(${ g . tab Bars . size }) ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ 0 Ġuntil Ġg . tab Bars . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Node TabBar ( g . tab Bars [ n ] !! , Ġ" TabBar ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ# ifdef ĠIM GUI _ HAS _ TABLE ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ImGui :: TreeNode (" Tables ", Ġ" Tables Ġ(% d )", Ġg . Tables . GetSize ())) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( int Ġn Ġ= Ġ 0 ; Ġn Ġ< Ġg . Tables . GetSize (); Ġn ++) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFunc s :: Node Table ( g . Tables . Get ByIndex ( n )); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImGui :: Tree Pop (); ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ# endif Ġ// Ġ# define ĠIM GUI _ HAS _ TABLE ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠDetails Ġfor ĠDock ing ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ# ifdef ĠIM GUI _ HAS _ DO CK ĊĠĠĠĠĠĠĠ Ġtree Node (" Dock Ġnodes ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġ// ĠĠĠĠĠĠĠ Ġ# endif Ġ// Ġ# define ĠIM GUI _ HAS _ DO CK ĊĊĠĠĠĠĠĠĠ Ġ// ĠSettings ĊĠĠĠĠĠĠĠ Ġtree Node (" Settings ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( small Button (" Clear ")) Ġclear Ini Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( small Button (" Save Ġto Ġmemory ")) Ġsave Ini Settings To Memory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( small Button (" Save Ġto Ġdisk ")) Ġsave Ini Settings To Disk ( io . ini Filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . ini Filename Ġ!= Ġnull ) Ġtext ("\" ${ io . ini Filename }\" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtext Un formatted ("< NULL >") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Settings Dirty Timer Ġ%. 2 f ", Ġg . settings Dirty Timer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Settings Handlers ", Ġ" Settings Ġhandlers : Ġ(${ g . settings Handlers . size }) ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . settings Handlers . forEach Ġ{ Ġbullet Text ( it . typeName ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Settings Windows ", Ġ" Settings Ġpacked Ġdata : ĠWindows : Ġ${ g . settings Windows . size } Ġbytes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . settings Windows . forEach (:: debug Node Window Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ# ifdef ĠIM GUI _ HAS _ TABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Settings Tables ", Ġ" Settings Ġpacked Ġdata : ĠTables : Ġ${ g . settings Tables . size } Ġbytes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . settings Tables . forEach ( Funcs :: node Table Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ# ifdef ĠIM GUI _ HAS _ DO CK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Settings Ini Data ", Ġ" Settings Ġunpack ed Ġdata Ġ(. ini ): Ġ${ g . settings Ini Data . toByteArray (). size } Ġbytes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠVec 2 (- Float . MIN _ VALUE , ĠImGui . text Line Height Ġ* Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text Mult iline (" ## Ini ", Ġg . settings Ini Data , Ġsize , ĠInput Text Flag . ReadOnly . i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMisc ĠDetails ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Node (" Internal Ġstate ")) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" WINDOW ING ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Hover ed Window : Ġ'${ g . hover ed Window ?. name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Hover ed Root Window : Ġ'${ g . hover ed Window ?. name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Hover ed Window Under Moving Window : Ġ'${ g . hover ed Window Under Moving Window ?. name }' ") /* Ġ ĠData Ġis Ġ" in - flight " Ġso Ġdepending Ġon Ġwhen Ġthe ĠMetrics Ġwindow Ġis Ġcalled Ġwe Ġmay Ġsee Ġcurrent Ġframe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation Ġor Ġnot ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Moving Window : Ġ'${ g . moving Window ?. name Ġ?: Ġ" NULL "} '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" ITEMS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Active Id : Ġ 0 x % 0 8 X / 0 x % 0 8 X Ġ(% . 2 f Ġsec ), ĠAllow Overlap : Ġ${ g . active Id Allow Overlap }, ĠSource : Ġ${ g . active Id Source }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . active Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . active Id Previous Frame , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . active Id Timer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Active Id Window : Ġ'${ g . active Id Window ?. name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Hover ed Id : Ġ 0 x % 0 8 X / 0 x % 0 8 X Ġ(% . 2 f Ġsec ), ĠAllow Overlap : Ġ${ g . hover ed Id Allow Overlap . i }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . hover ed Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . hover ed Id Previous Frame , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . hover ed Id Timer ) Ġ// ĠData Ġis Ġ" in - flight " Ġso Ġdepending Ġon Ġwhen Ġthe ĠMetrics Ġwindow Ġis Ġcalled Ġwe Ġmay Ġsee Ġcurrent Ġframe Ġinformation Ġor Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Drag Drop : Ġ${ g . drag Drop Active . i }, ĠSource Id Ġ= Ġ 0 x % 0 8 X , ĠPayload Ġ\" ${ g . drag Drop Payload . dataType }\" Ġ(${ g . drag Drop Payload . data Size } Ġbytes )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . drag Drop Payload . source Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" NAV , FOCUS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Window : Ġ'${ g . nav Window ?. name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Id : Ġ 0 x % 0 8 X , ĠNav Layer : Ġ${ g . nav Layer }", Ġg . nav Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Input Source : Ġ${ g . nav Input Source }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Active : Ġ${ io . nav Active }, ĠNav Visible : Ġ${ io . nav Visible }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Activate Id : Ġ 0 x % 0 8 X , ĠNav Input Id : Ġ 0 x % 0 8 X ", Ġg . nav Activate Id , Ġg . nav Input Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Disable Highlight : Ġ${ g . nav Disable Highlight }, ĠNav Disable Mouse Hover : Ġ${ g . nav Disable Mouse Hover }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Focus Scope Id Ġ= Ġ 0 x % 0 8 X ", Ġg . nav Focus Scope Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Nav Window ing Target : Ġ'${ g . nav Window ing Target ?. name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Pop () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOverlay : ĠDisplay Ġwindows ĠRect angles Ġand ĠBegin ĠOrder ĊĠĠĠĠĠĠĠ Ġif Ġ( show Windows Rects Ġ|| Ġshow Windows Begin Order ) Ġfor Ġ( window Ġin Ġg . windows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! window . was Active ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw List Ġ= Ġget Foreground Draw List ( window ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Windows Rects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getWindow Rect ( window , Ġshow Windows Rect Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw List . add Rect ( r . min , Ġr . max , ĠCOL 3 2 ( 2 5 5 , Ġ 0 , Ġ 1 2 8 , Ġ 2 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Windows Begin Order Ġ&& Ġwindow . flags Ġhas nt ĠW f ._ Child Window ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= Ġ"${ window . begin Order Within Context }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw List . add Rect Filled ( window . pos , Ġwindow . pos Ġ+ ĠVec 2 ( fontSize ), ĠCOL 3 2 ( 2 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 2 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw List . add Text ( window . pos , ĠCOL 3 2 ( 2 5 5 ), Ġbuf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOverlay : ĠDisplay ĠTables ĠRect angles ĊĠĠĠĠĠĠĠ Ġif Ġ( cfg . show Tables Rects ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( table N Ġin Ġ 0 Ġuntil Ġg . tables . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġg . tables . getBy Index ( table N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table . last Frame Active Ġ< Ġg . frame Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw List Ġ= Ġget Foreground Draw List ( table . outer Window ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cfg . show Tables Rect sType Ġ>= ĠT RT . Columns Rect . ordinal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( column N Ġin Ġ 0 Ġuntil Ġtable . columns Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getTable Rect ( table , ĠT RT . values ()[ cfg . show Tables Rect sType ], Ġcolumn N ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġif Ġ( table . hover ed Column Body Ġ== Ġcolumn N ) ĠCOL 3 2 ( 2 5 5 , Ġ 2 5 5 , Ġ 1 2 8 , Ġ 2 5 5 ) Ġelse ĠCOL 3 2 ( 2 5 5 , Ġ 0 , Ġ 1 2 8 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthickness Ġ= Ġif Ġ( table . hover ed Column Body Ġ== Ġcolumn N ) Ġ 3 f Ġelse Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw List . add Rect ( r . min , Ġr . max , Ġcol , Ġ 0 f , Ġ 0 . inv (), Ġthickness ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠFunc s . getTable Rect ( table , ĠT RT . values ()[ cfg . show Tables Rect sType ], Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw List . add Rect ( r . min , Ġr . max , ĠCOL 3 2 ( 2 5 5 , Ġ 0 , Ġ 1 2 8 , Ġ 2 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ# ifdef ĠIM GUI _ HAS _ DO CK ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ// ĠOverlay : ĠDisplay ĠDock ing Ġinfo ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġif Ġ( show _ dock ing _ nodes Ġ&& Ġg . IO . Key Ctrl ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ# endif Ġ// Ġ# define ĠIM GUI _ HAS _ DO CK ĊĊĠĠĠĠĠĠĠ Ġend () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġcreate ĠAbout Ġwindow . Ġdisplay ĠDe ar ĠImGui Ġversion , Ġcredits Ġand Ġbuild / system Ġinformation . Ġ*/ ĊĠĠĠ Ġobject ĠShow About Window Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġshow Config Info Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( open : ĠK Mutable Property 0 < Boolean >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! begin (" About ĠDe ar ĠImGui ", Ġopen , ĠW f . Always Auto Resize . i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBasic Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" De ar ĠImGui Ġ${ ImGui . version }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" By ĠO mar ĠC orn ut Ġand Ġall ĠDe ar ĠIm gui Ġcontributors .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" De ar ĠImGui Ġis Ġlicensed Ġunder Ġthe ĠMIT ĠLicense , Ġsee ĠLICENSE Ġfor Ġmore Ġinformation .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" Config / Build ĠInformation ", Ġ:: show Config Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Config Info ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy To Clipboard Ġ= Ġbutton (" Copy Ġto Ġclipboard ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Size Ġ= ĠVec 2 ( 0 f , Ġtext Line Height With Spacing Ġ* Ġ 1 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Child Frame ( getID (" cf gin fos "), Ġchild Size , ĠW f . No Move . i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( copy To Clipboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog To Clipboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Text (" ``` \ n ") Ġ// ĠBack Ġquotes Ġwill Ġmake Ġtext Ġappears Ġwithout Ġformatting Ġwhen Ġpast ing Ġon ĠGitHub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" De ar ĠImGui Ġ${ ImGui . version } Ġ($ IM GUI _ VERSION _ NUM )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" sizeof ( size _ t ): Ġ${ Int . BYTES }, Ġsizeof ( Draw Idx ): Ġ${ Draw Idx . BYTES }, Ġsizeof ( Draw Vert ): Ġ${ Draw Vert . SIZE }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" IM GUI _ USE _ BGR A _ PACK ED _ COLOR : Ġ$ USE _ BGR A _ PACK ED _ COLOR ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . backend Platform Name : Ġ${ io . backend Platform Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . backend Renderer Name : Ġ${ io . backend Renderer Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . config Flags : Ġ 0 x % 0 8 X ", Ġio . config Flags ) Ġ// Ġ@ formatter : off ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . Nav Enable Keyboard ) Ġtext (" ĠNav Enable Keyboard ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . Nav Enable Gamepad ) Ġtext (" ĠNav Enable Gamepad ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . Nav Enable Set Mouse Pos ) Ġtext (" ĠNav Enable Set Mouse Pos ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . Nav No Capture Keyboard ) Ġtext (" ĠNav No Capture Keyboard ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . No Mouse ) Ġtext (" ĠNo Mouse ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Flags Ġhas ĠConfig Flag . No Mouse Cursor Change ) Ġtext (" ĠNo Mouse Cursor Change ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . mouse Draw Cursor ) Ġtext (" io . mouse Draw Cursor ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Mac OSX Be haviors ) Ġtext (" io . config Mac OSX Be haviors ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Input Text Cursor B link ) Ġtext (" io . config Input Text Cursor B link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Windows Resize From Edges ) Ġtext (" io . config Windows Resize From Edges ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Windows Move From Title Bar Only ) Ġtext (" io . config Windows Move From Title Bar Only ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . config Memory Compact Timer Ġ>= Ġ 0 f ) Ġtext (" io . Config Memory Compact Timer Ġ= Ġ%. 1 f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio . config Memory Compact Timer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . backend Flags : Ġ 0 x % 0 8 X ", Ġio . backend Flags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . backend Flags Ġhas ĠBackend Flag . Has Gamepad ) Ġtext (" ĠHas Gamepad ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . backend Flags Ġhas ĠBackend Flag . Has Mouse Cur s ors ) Ġtext (" ĠHas Mouse Cur s ors ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . backend Flags Ġhas ĠBackend Flag . Has Set Mouse Pos ) Ġtext (" ĠHas Set Mouse Pos ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( io . backend Flags Ġhas ĠBackend Flag . Renderer Has V tx Offset ) Ġtext (" ĠRenderer Has V tx Offset ") Ġ// Ġ@ formatter : on ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . fonts : Ġ${ io . fonts . fonts . size } Ġfonts , ĠFlags : Ġ 0 x % 0 8 X , ĠTex Size : Ġ${ io . fonts . tex Size . x }, ${ io . fonts . tex Size . y }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio . fonts . flags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . display Size : Ġ${ io . display Size . x }, ${ io . display Size . y }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" io . display Framebuffer Scale : Ġ%. 2 f ,% . 2 f ". format ( io . display Framebuffer Scale . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio . display Framebuffer Scale . y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . window Padding : Ġ%. 2 f ,% . 2 f ", Ġstyle . window Padding . x , Ġstyle . window Padding . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . window Border Size : Ġ%. 2 f ", Ġstyle . window Border Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . frame Padding : Ġ%. 2 f ,% . 2 f ", Ġstyle . frame Padding . x , Ġstyle . frame Padding . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . frame Round ing : Ġ%. 2 f ", Ġstyle . frame Round ing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . frame Border Size : Ġ%. 2 f ", Ġstyle . frame Border Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . item Spacing : Ġ%. 2 f ,% . 2 f ", Ġstyle . item Spacing . x , Ġstyle . item Spacing . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" style . item Inner Spacing : Ġ%. 2 f ,% . 2 f ", Ġstyle . item Inner Spacing . x , Ġstyle . item Inner Spacing . y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( copy To Clipboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Text ("\ n ``` \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Child Frame () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġadd Ġstyle Ġeditor Ġblock Ġ( not Ġa Ġwindow ). Ġyou Ġcan Ġpass Ġin Ġa Ġreference ĠImGui Style Ġstructure Ġto Ġcompare Ġto , ĊĠĠĠĠ Ġ* Ġ Ġrevert Ġto Ġand Ġsave Ġto Ġ( else Ġit Ġuses Ġthe Ġdefault Ġstyle ) Ġ Ġ*/ ĊĠĠĠ Ġfun Ġshow Style Editor ( ref : ĠStyle ? Ġ= Ġnull ) Ġ= ĠStyle Editor . invoke ( ref ) ĊĊĠĠĠ Ġobject ĠShow Style Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstyle Idx Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ/** ĠDemo Ġhelper Ġfunction Ġto Ġselect Ġamong Ġdefault Ġcolors . ĠSee Ġshow Style Editor () Ġfor Ġmore Ġadvanced Ġoptions . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ĠHere Ġwe Ġuse Ġthe Ġsimplified ĠCombo () Ġapi Ġthat Ġpack s Ġitems Ġinto Ġa Ġsingle Ġliteral Ġstring . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ĠUseful Ġfor Ġquick Ġcombo Ġboxes Ġwhere Ġthe Ġchoices Ġare Ġknown Ġlocally . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġadd Ġstyle Ġselector Ġblock Ġ( not Ġa Ġwindow ), Ġessentially Ġa Ġcombo Ġlisting Ġthe Ġdefault Ġstyles . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( label : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( combo ( label , Ġ:: style Idx , Ġ" Dark \ u 0 0 0 0 Light \ u 0 0 0 0 Classic \ u 0 0 0 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( style Idx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġstyle Colors Dark () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġstyle Colors Light () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġstyle Colors Classic () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠDemo Ġhelper Ġfunction Ġto Ġselect Ġamong Ġloaded Ġfonts . ĊĠĠĠĠ Ġ* Ġ ĠHere Ġwe Ġuse Ġthe Ġregular Ġbegin Combo ()/ end Combo () Ġapi Ġwhich Ġis Ġmore Ġthe Ġmore Ġflexible Ġone . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġadd Ġfont Ġselector Ġblock Ġ( not Ġa Ġwindow ), Ġessentially Ġa Ġcombo Ġlisting Ġthe Ġloaded Ġfonts . Ġ*/ ĊĠĠĠ Ġfun Ġshow Font Selector ( label : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Current Ġ= Ġfont ĊĠĠĠĠĠĠĠ Ġif Ġ( begin Combo ( label , Ġfont Current . debug Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( font Ġin Ġio . fonts . fonts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush ID ( font ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selectable ( font . debug Name , Ġfont Ġ=== Ġfont Current )) Ġio . font Default Ġ= Ġfont ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop ID () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Combo () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsame Line () ĊĠĠĠĠĠĠĠ Ġhelp Marker (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠLoad Ġadditional Ġfonts Ġwith Ġio . Fonts -> Add Font FromFile T TF (). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠThe Ġfont Ġatlas Ġis Ġbuilt Ġwhen Ġcalling Ġio . Fonts -> Get Tex Data As XXXX () Ġor Ġio . Fonts -> Build (). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠRead ĠFAQ Ġand Ġdocumentation Ġin Ġmisc / fonts / Ġfor Ġmore Ġdetails . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠIf Ġyou Ġneed Ġto Ġadd / remove Ġfonts Ġat Ġruntime Ġ( e . g . Ġfor ĠD PI Ġchange ), Ġdo Ġit Ġbefore Ġcalling ĠNew Frame (). """) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠHelper Ġto Ġdisplay Ġbasic Ġuser Ġcontrols . Ġ*/ ĊĠĠĠ Ġfun Ġshow UserGuide () Ġ{ ĊĠĠĠĠĠĠĠ Ġbullet Text (" Double - click Ġon Ġtitle Ġbar Ġto Ġcollapse Ġwindow .") ĊĠĠĠĠĠĠĠ Ġbullet Text (""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClick Ġand Ġdrag Ġon Ġlower Ġcorner Ġto Ġresize Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( double - click Ġto Ġauto Ġfit Ġwindow Ġto Ġits Ġcontents ). """. trim Indent ()) ĊĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + Click Ġon Ġa Ġslider Ġor Ġdrag Ġbox Ġto Ġinput Ġvalue Ġas Ġtext .") ĊĠĠĠĠĠĠĠ Ġbullet Text (" TAB / SHIFT + TAB Ġto Ġcycle Ġthrough Ġkeyboard Ġeditable Ġfields .") ĊĠĠĠĠĠĠĠ Ġif Ġ( io . font Allow User Scaling ) Ġbullet Text (" CTRL + Mouse ĠW heel Ġto Ġzoom Ġwindow Ġcontents .") ĊĠĠĠĠĠĠĠ Ġbullet Text (" While Ġinput ing Ġtext :\ n ") ĊĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + Left / Right Ġto Ġword Ġjump .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + A Ġor Ġdouble - click Ġto Ġselect Ġall .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + X / C / V Ġto Ġuse Ġclipboard Ġcut / copy / paste .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + Z , CTRL + Y Ġto Ġundo / redo .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" ESCAPE Ġto Ġrevert .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" You Ġcan Ġapply Ġarithmetic Ġoperators Ġ+ , *, / Ġon Ġnumerical Ġvalues .\ n Use Ġ+- Ġto Ġsubtract .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbullet Text (" With Ġkeyboard Ġnavigation Ġenabled :") ĊĠĠĠĠĠĠĠ Ġindent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Arrow Ġkeys Ġto Ġnavigate .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Space Ġto Ġactivate Ġa Ġwidget .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Return Ġto Ġinput Ġtext Ġinto Ġa Ġwidget .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Escape Ġto Ġdeactivate Ġa Ġwidget , Ġclose Ġpopup , Ġexit Ġchild Ġwindow .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" Alt Ġto Ġjump Ġto Ġthe Ġmenu Ġlayer Ġof Ġa Ġwindow .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbullet Text (" CTRL + Tab Ġto Ġselect Ġa Ġwindow .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġget Ġthe Ġcompiled Ġversion Ġstring Ġe . g . Ġ" 1 . 8 0 ĠWIP " Ġ( ess entially Ġthe Ġvalue Ġfor ĠIM GUI _ VERSION Ġfrom Ġthe Ġcompiled Ġversion Ġof Ġimg ui . cpp ) Ġ*/ ĊĠĠĠ Ġval Ġversion : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠIM GUI _ VERSION ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠDebug ging Ġenums ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWindows ĠRect ĠType Ġ*/ ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠW RT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO uter Rect , ĠO uter Rect Cli pped , ĠInner Rect , ĠInner Clip Rect , ĠWork Rect , ĠContent , ĠContent Ide al , ĠContent Region Rect ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġvalues (). map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠTables ĠRect ĠType Ġ*/ ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠT RT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO uter Rect , ĠInner Rect , ĠWork Rect , ĠHost Clip Rect , ĠInner Clip Rect , ĠBackground Clip Rect , ĠColumns Rect , ĠColumns Work Rect , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumns Clip Rect , ĠColumns Content Headers Used , ĠColumns Content Headers Ide al , ĠColumns Content Frozen , ĠColumns Content Un frozen ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= ĠW RT . values (). map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġshow Windows Rects Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġshow Windows Rect Type Ġ= ĠW RT . Inner Clip Rect ĊĠĠĠĠĠĠĠ Ġvar Ġshow Windows Begin Order Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġshow Tables Rects Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġshow Tables Rect Type Ġ= ĠT RT . Work Rect ĊĠĠĠĠĠĠĠ Ġvar Ġshow Draw cmd Details Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġshow Draw cmd Mesh Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġshow Draw cmd A abb Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġvar Ġshow Window Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠHelper Ġfunctions Ġto Ġdisplay Ġcommon Ġstructures : ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Draw List () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Columns () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Window () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Windows () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode TabBar () ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠNode Storage () ĊĠĠĠĠĠĠĠ Ġobject ĠFunc s Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Table Rect ( table : ĠTable , Ġrect Type : ĠT RT , Ġn : ĠInt ): ĠRect Ġ= Ġwhen Ġ( rect Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Outer Rect Ġ-> Ġtable . outer Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Inner Rect Ġ-> Ġtable . inner Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Work Rect Ġ-> Ġtable . work Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Host Clip Rect Ġ-> Ġtable . host Clip Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Inner Clip Rect Ġ-> Ġtable . inner Clip Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Background Clip Rect Ġ-> Ġtable . bg Clip Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Rect Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . min X , Ġtable . inner Clip Rect . min . y , Ġc . max X , Ġtable . inner Clip Rect . min . y Ġ+ Ġtable . last Outer Height ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Work Rect Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . work Min X , Ġtable . work Rect . min . y , Ġc . work Max X , Ġtable . work Rect . max . y ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Clip Rect Ġ-> Ġtable . columns [ n ]. clip Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Content Headers Used Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . work Min X , Ġtable . inner Clip Rect . min . y , Ġc . content Max X Headers Used , Ġtable . inner Clip Rect . min . y Ġ+ Ġtable . last First Row Height ) Ġ} Ġ// ĠNote : Ġy 1 / y 2 Ġnot Ġalways Ġaccurate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Content Headers Ide al Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . work Min X , Ġtable . inner Clip Rect . min . y , Ġc . content Max X Headers Ide al , Ġtable . inner Clip Rect . min . y Ġ+ Ġtable . last First Row Height ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Content Frozen Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . work Min X , Ġtable . inner Clip Rect . min . y , Ġc . content Max XF rozen , Ġtable . inner Clip Rect . min . y Ġ+ Ġtable . last First Row Height ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT RT . Columns Content Un frozen Ġ-> Ġtable . columns [ n ]. let Ġ{ Ġc Ġ-> ĠRect ( c . work Min X , Ġtable . inner Clip Rect . min . y Ġ+ Ġtable . last First Row Height , Ġc . content Max X Un frozen , Ġtable . inner Clip Rect . max . y ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Window Rect ( window : ĠWindow , Ġrect Type : ĠW RT ): ĠRect Ġ= Ġwhen Ġ( rect Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Outer Rect Ġ-> Ġwindow . rect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Outer Rect Cli pped Ġ-> Ġwindow . outer Rect Cli pped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Inner Rect Ġ-> Ġwindow . inner Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Inner Clip Rect Ġ-> Ġwindow . inner Clip Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Work Rect Ġ-> Ġwindow . work Rect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Content Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġwindow . inner Rect . min Ġ- Ġwindow . scroll Ġ+ Ġwindow . window Padding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect ( min , Ġmin Ġ+ Ġwindow . content Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Content Ide al Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġwindow . inner Rect . min Ġ- Ġwindow . scroll Ġ+ Ġwindow . window Padding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRect ( min , Ġmin Ġ+ Ġwindow . content Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW RT . Content Region Rect Ġ-> Ġwindow . content Region Rect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= ĠBoolean Array ( 4 Ġ+ Ġ 3 Ġ+ Ġ 1 6 Ġ+ Ġ 1 6 ) Ġ{ Ġit Ġ== Ġ 1 Ġ|| Ġit Ġ== Ġ 2 3 Ġ+ Ġ 0 Ġ|| Ġit Ġ== Ġ 2 3 Ġ+ Ġ 5 Ġ|| Ġit Ġ== Ġ 2 3 Ġ+ Ġ 1 0 Ġ|| Ġit Ġ== Ġ 2 3 Ġ+ Ġ 1 5 Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĠHelper Ġto Ġdisplay Ġa Ġlittle Ġ( ?) Ġmark Ġwhich Ġshows Ġa Ġtooltip Ġwhen Ġhover ed . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ĠIn Ġyour Ġown Ġcode Ġyou Ġmay Ġwant Ġto Ġdisplay Ġan Ġactual Ġicon Ġif Ġyou Ġare Ġusing Ġa Ġmerged Ġicon Ġfonts Ġ( see Ġdocs / FONT S . txt ) ĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġhelp Marker ( desc : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Disabled ("( ?) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Item Hover ed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Tooltip () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Text Wrap Pos ( fontSize Ġ* Ġ 3 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ex ( desc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Text Wrap Pos () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Tooltip () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }