package Ġimg ui . img ui . demo Ċ Ċ import Ġglm _. vec 2 . Vec 2 Ċ import Ġimg ui .* Ċ import Ġimg ui . ImGui . begin _ Ċ import Ġimg ui . ImGui . checkbox Ċ import Ġimg ui . ImGui . end Ċ import Ġimg ui . ImGui . fontSize Ċ import Ġimg ui . ImGui . log Buttons Ċ import Ġimg ui . ImGui . menuItem Ċ import Ġimg ui . ImGui . push Item Width Ċ import Ġimg ui . ImGui . same Line Ċ import Ġimg ui . ImGui . separator Ċ import Ġimg ui . ImGui . set Next Window Pos Ċ import Ġimg ui . ImGui . set Next Window Size Ċ import Ġimg ui . ImGui . show UserGuide Ċ import Ġimg ui . ImGui . spacing Ċ import Ġimg ui . ImGui . text Ċ import Ġimg ui . ImGui . text Wrapped Ċ import Ġimg ui . ImGui . version Ċ import Ġimg ui . functional Programming . coll ap sing Header Ċ import Ġimg ui . functional Programming . menu Ċ import Ġimg ui . functional Programming . menu Bar Ċ import Ġimg ui . functional Programming . tree Node Ċ import Ġimg ui . functional Programming . with Window Ċ import Ġimg ui . img ui . demo . show Example App .* Ċ import Ġimg ui . img ui . img ui _ demo Debug Inform ations . Companion . show Example Menu File Ċ import Ġkotlin . reflect . K Mutable Property 0 Ċ import Ġimg ui . Color Edit Flag Ġas ĠC ef Ċ import Ġimg ui . Input Text Flag Ġas ĠIt f Ċ import Ġimg ui . Selectable Flag Ġas ĠS f Ċ import Ġimg ui . TreeNode Flag Ġas ĠT nf Ċ import Ġimg ui . Window Flag Ġas ĠW f Ċ Ċ object ĠExample App Ġ{ ĊĊĠĠĠ Ġobject Ġshow Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠExamples ĠApps Ġ( accessible Ġfrom Ġthe Ġ" Examples " Ġmenu ) ĊĠĠĠĠĠĠĠ Ġvar Ġmain MenuBar Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġconsole Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġlog Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġlayout Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġproperty Editor Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġlong Text Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġauto Resize Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġconstr ained Resize Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġsimple Overlay Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġwindow Titles Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġcustom Rendering Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ar ĠImGui ĠApps Ġ( accessible Ġfrom Ġthe Ġ" Help " Ġmenu ) ĊĠĠĠĠĠĠĠ Ġvar Ġmetrics Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġstyle Editor Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġabout Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠD emon strate Ġthe Ġvarious Ġwindow Ġflags . ĠTypically Ġyou Ġwould Ġjust Ġuse Ġthe Ġdefault ! ĊĠĠĠ Ġvar Ġno Title bar Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Scrollbar Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Menu Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Move Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Resize Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Collapse Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Close Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Nav Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġfilter Ġ= ĠText Filter () ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( open _: ĠK Mutable Property 0 < Boolean > ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġopen Ġ= Ġopen _ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show . main MenuBar ) ĠMain MenuBar () ĊĠĠĠĠĠĠĠ Ġif Ġ( show . console ) ĠConsole ( show :: console ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . log ) ĠLog ( show :: log ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . layout ) ĠSimple Layout ( show :: layout ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . property Editor ) ĠProperty Editor ( show :: property Editor ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . long Text ) ĠLong Text ( show :: long Text ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . auto Resize ) ĠAuto Resize ( show :: auto Resize ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . constrained Resize ) ĠCon str ained Resize ( show :: constrained Resize ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . simple Overlay ) ĠSimple Overlay ( show :: simple Overlay ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . window Titles ) ĠWindow Titles ( show :: window Titles ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . custom Rendering ) ĠCustom Rendering ( show :: custom Rendering ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . metrics ) ĠImGui . show Metrics Window ( show :: metrics ) ĊĠĠĠĠĠĠĠ Ġif Ġ( show . style Editor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Window (" Style ĠEditor ", Ġshow :: style Editor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Editor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show . about ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Window (" About ĠDe ar ĠImGui ", Ġshow :: about , ĠW f . Always Auto Resize . i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" JVM ĠDe ar ĠImGui , Ġ$ version ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" Original Ġby ĠO mar ĠC orn ut , Ġport ed Ġby ĠG i use p pe ĠB arb ier i Ġand Ġall Ġde ar Ġimg ui Ġcontributors .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext (" De ar ĠImGui Ġis Ġlicensed Ġunder Ġthe ĠMIT ĠLicense , Ġsee ĠLICENSE Ġfor Ġmore Ġinformation .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġwindow Flags Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( no Title bar ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Title Bar ĊĠĠĠĠĠĠĠ Ġif Ġ( no Scrollbar ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Scrollbar ĊĠĠĠĠĠĠĠ Ġif Ġ(! no Menu ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . MenuBar ĊĠĠĠĠĠĠĠ Ġif Ġ( no Move ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Move ĊĠĠĠĠĠĠĠ Ġif Ġ( no Resize ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Resize ĊĠĠĠĠĠĠĠ Ġif Ġ( no Collapse ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Collapse ĊĠĠĠĠĠĠĠ Ġif Ġ( no Close ) Ġopen Ġ= Ġnull Ġ// ĠDon 't Ġpass Ġour Ġbool * Ġto ĠBegin ĊĠĠĠĠĠĠĠ Ġif Ġ( no Nav ) Ġwindow Flags Ġ= Ġwindow Flags Ġor ĠW f . No Nav ĊĠĠĠĠĠĠĠ Ġ/* Ġ ĠWe Ġspecify Ġa Ġdefault Ġposition / size Ġin Ġcase Ġthere 's Ġno Ġdata Ġin Ġthe Ġ. ini Ġfile . ĠTypically Ġthis Ġisn 't Ġrequired ! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWe Ġonly Ġdo Ġit Ġto Ġmake Ġthe ĠDemo Ġapplications Ġa Ġlittle Ġmore Ġwel coming . ĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset Next Window Pos ( Vec 2 ( 6 5 0 , Ġ 2 0 ), ĠCon d . First Use E ver ) ĊĠĠĠĠĠĠĠ Ġset Next Window Size ( Vec 2 ( 5 5 0 , Ġ 6 8 0 ), ĠCon d . First Use E ver ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMain Ġbody Ġof Ġthe ĠDemo Ġwindow Ġstarts Ġhere . ĊĠĠĠĠĠĠĠ Ġif Ġ(! begin _(" ImGui ĠDemo ", Ġopen , Ġwindow Flags )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend () ĠĠ Ġ// ĠEarly Ġout Ġif Ġthe Ġwindow Ġis Ġcollapsed , Ġas Ġan Ġoptimization . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtext (" de ar Ġimg ui Ġsays Ġhello . Ġ($ version )") ĊĊĠĠĠĠĠĠĠ Ġ// ĠMost Ġ" big " Ġwidgets Ġshare Ġa Ġcommon Ġwidth Ġsettings Ġby Ġdefault . ĊĠĠĠĠĠĠĠ Ġ// push Item Width ( window Width Ġ* Ġ 0 . 6 5 f ) ĠĠĠ Ġ// ĠUse Ġ 2 / 3 Ġof Ġthe Ġspace Ġfor Ġwidgets Ġand Ġ 1 / 3 Ġfor Ġlabels Ġ( default ) ĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġfixed Ġwidth Ġfor Ġlabels Ġ( by Ġpassing Ġa Ġnegative Ġvalue ), Ġthe Ġrest Ġgoes Ġto Ġwidgets . ĠWe Ġchoose Ġa Ġwidth Ġpro portional Ġto Ġour Ġfont Ġsize . ĊĠĠĠĠĠĠĠ Ġpush Item Width ( fontSize Ġ* Ġ- 1 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMenu ĊĠĠĠĠĠĠĠ Ġmenu Bar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu (" Menu ") Ġ{ Ġshow Example Menu File () Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" nav Ġwindow Ġname Ġ" Ġ+ Ġg . nav Window ?. root Window ?. name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Examples ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu (" Examples ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Main Ġmenu Ġbar ", Ġ"", ĠExample App . show :: main MenuBar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Console ", Ġ"", ĠExample App . show :: console ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Log ", Ġ"", ĠExample App . show :: log ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Simple Ġlayout ", Ġ"", ĠExample App . show :: layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Property Ġeditor ", Ġ"", ĠExample App . show :: property Editor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Long Ġtext Ġdisplay ", Ġ"", ĠExample App . show :: long Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Auto - res izing Ġwindow ", Ġ"", ĠExample App . show :: auto Resize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Constr ained - res izing Ġwindow ", Ġ"", ĠExample App . show :: constrained Resize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Simple Ġoverlay ", Ġ"", ĠExample App . show :: simple Overlay ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Manip ulating Ġwindow Ġtitles ", Ġ"", ĠExample App . show :: window Titles ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Custom Ġrendering ", Ġ"", ĠExample App . show :: custom Rendering ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu (" Help ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Metrics ", Ġ"", ĠExample App . show :: metrics ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" Style ĠEditor ", Ġ"", ĠExample App . show :: style Editor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item (" About ĠDe ar ĠImGui ", Ġ"", ĠExample App . show :: about ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġspacing () ĊĊĠĠĠĠĠĠĠ Ġcol lap sing Header (" Help ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Wrapped (" This Ġwindow Ġis Ġbeing Ġcreated Ġby Ġthe ĠShow Demo Window () Ġfunction . ĠPlease Ġrefer Ġto Ġthe Ġcode Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" for Ġprogramming Ġreference .\ n \ n User ĠGuide :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow UserGuide () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcol lap sing Header (" Window Ġoptions ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġtitle bar ", Ġ:: no Title bar ); Ġsame Line ( 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġscrollbar ", Ġ:: no Scrollbar ); Ġsame Line ( 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġmenu ", Ġ:: no Menu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġmove ", Ġ:: no Move ); Ġsame Line ( 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġresize ", Ġ:: no Resize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġcollapse ", Ġ:: no Collapse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġclose ", Ġ:: no Close ); Ġsame Line ( 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox (" No Ġnav ", Ġ:: no Nav ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Style ") Ġ{ ĠStyle Editor () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node (" Capture / Logging ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Wrapped (" The Ġlogging ĠAPI Ġredirects Ġall Ġtext Ġoutput Ġso Ġyou Ġcan Ġeasily Ġcapture Ġthe Ġcontent Ġof Ġa Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" window Ġor Ġa Ġblock . ĠTree Ġnodes Ġcan Ġbe Ġautomatically Ġexpanded . ĠYou Ġcan Ġalso Ġcall ĠLog Text () Ġto Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" output Ġdirectly Ġto Ġthe Ġlog Ġwithout Ġa Ġvisual Ġoutput .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwidgets () ĊĊĠĠĠĠĠĠĠ Ġsimple Lay ot () ĊĊĠĠĠĠĠĠĠ Ġpop ups And Modal Windows () ĊĊĠĠĠĠĠĠĠ Ġcolumns _() ĊĊĠĠĠĠĠĠĠ Ġcol lap sing Header (" Filtering ĠTODO ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ ĠImGui :: Text (" Filter Ġusage :\ n " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ\" \" ĠĠĠĠĠĠĠĠ Ġdisplay Ġall Ġlines \ n " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ\" xxx \" ĠĠĠĠĠ Ġdisplay Ġlines Ġcontaining Ġ\" xxx \"\ n " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ\" xxx , yyy \" Ġ Ġdisplay Ġlines Ġcontaining Ġ\" xxx \" Ġor Ġ\" yyy \"\ n " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ\" - xxx \" ĠĠĠĠ Ġhide Ġlines Ġcontaining Ġ\" xxx \""); Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . Draw (); Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġchar * Ġlines [] Ġ= Ġ{ Ġ" aaa 1 . c ", Ġ" bbb 1 . c ", Ġ" ccc 1 . c ", Ġ" aaa 2 . cpp ", Ġ" bbb 2 . cpp ", Ġ" ccc 2 . cpp ", Ġ" abc . h ", Ġ" hello , Ġworld " Ġ}; Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< ĠIM _ ARRAY SIZE ( lines ); Ġi ++) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter . Pass Filter ( lines [ i ])) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImGui :: Bullet Text ("% s ", Ġlines [ i ]); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinput Navigation And Focus () ĊĊĠĠĠĠĠĠĠ Ġend () ĊĠĠĠ Ġ} Ċ }