!This program cannot be run in DOS mode.
`.rdata
@.data
.gfids
@_RDATA
D$$Phi
D$<Ph@
YT$8vef
L$d_^][3
T$8UP3
\$,9L$4
L$0+D$
Wj<j<j
VPhH@L
D$$Ph
T$l+L$`+T$d
l$DWUh
L$l^][3
D$XPVS
D$TPVW
L$ _^3
u6C;\$
w+VhH@L
w+VhH@L
L$0_^3
L$<Qj(PV
D$(+D$ ^
D$$+D$
D$,+D$4+D$
D$0+D$8+D$
\$HUV3
L$H_^][3
ur8G8us
D$8+D$0j
D$<+D$4PW
<-u=<-
L$$+H0
L$(+H4
D$x;Fluw
D$|;Fpun
D$t;Fhue
;FxuY8
D$ PSV
D$ PSW
t$,VQj
t$hQUR
L$<_^][3
|$<fff
T$<+\$
L$L_^[3
D$ PUVQ
l$8CM;
l$(WQj
\$4UPWS
|$ UPj
|$PSWV
L$(_^][
D$89D$<tC
t$<;t$8t
D$<;D$8t
D$<;D$8
8T$\t0
/l$(sH
/d$$rC
/\$(r<
uD_^]2
D$$_^[
D$$_^[
L$4_^][3
;BHu0SR
QVhxiJ
QRh|iJ
@;D$lr
D$,PhhjJ
PShXnJ
PShhlJ
$VhTkJ
t$0;wL|
PQh(nJ
t$\QWS
l$`PRS
D$0PWR
D$Dh8eJ
u}SVj
D$,dpJ
D$0lpJ
D$4tpJ
D$8xpJ
D$PPh8
D$dj P
L$|_^[3
L$X9L$p
L$X;L$p
L$X9L$H
L$X;L$H
/D$(s>
9^L~/3
H@B;V4|
D$rj(P
D$ QPQ
D$ ;G@
f9NDuW
XL$XVP
L$D^[3
L$,v?;
t$,+K
C4[_^]
D$(PRV
D$,^][
~D$,Vf
O0_^][
\$L;D$$
;D$,tS
D$$_^]f
D$$_^]f
/D$@v-
/D$@v-
/|$@v*
/t$@v7
;L$8}$f
A;L$8|
\$@+|$@
L$$][3
|$$9L$T
L$@_^3
t$4G;8|
L$@_^;
D$x;D$t|
D$x;D$t|
D$px-;
;L$4}&
L$ _][3
|$,PVW
@ 9T$P}
D$(u]j
T$P9T$H
T$P9T$H
D$,u]j
L$L+L$D
t.+L$D
t};t$H|1
;|$Dr);
D$,;t$P
T$P9T$Hw
T$P9T$H
D$,u]j
L$L+L$D
t.+L$D
t};t$Hr1w
;|$Dr);
D$,;t$Pw"r
VW<0|.<9
/D$ v.
/D$ v.
/D$ v.
/D$(v.
XL$ uC
t$dRQP
t$PRPV
/D$,v2
XT$$uG
T$ ;T$hw
/D$ v.
XL$,uC
+t$(RQ
+t$(RQ
DL$@QP
D$LuT9
D$@WPR
XT$4VP
8|$@t9
L$TVQU
t$DSUV
L$(;t$
L$|_^[3
D$,PhT
D$,Php
D$duZj
D$ Ph`
/D$trc
$PRVPRVh
$PQRVPQRVh
EL$LPj
D$(^][
LW<9w@
LO@9wD
D$ _^[f
D$ _^[f
D$ _^[f
D$$_^[
D$$_^[
D$$_^[
D$,QPQ
D$,QPQ
D$,QRPVQ
D$,QRPVQ
D$XVj@P
F;t$(|
D$Hj@P
D$(WPh
D$ PPj-U
D$(WPh
D$ PPj+U
t$8WUh
F;t$(|
L$LPhP
C@;CDt
C@;CDu
uW8T$DuQ
ug8T$Dua8T$
C@;CDtB
C@;CDt
C@;CDuT
C@;CDu
C@;CDtC
8D$Du=
|$<;|$@}b
G;|$@|
XD$4Vj
8L$ t\
/D$TvG
F;t$(|
D$T;D$Ht
t$T97~f3
L$49L$T
GT@teQ
|$(WVShP
FT9T$ |#
9T$ }n;
L$,8T$
L$(9L$ |
L$`_^][3
D$<hTnJ
t$HVSP
/D$HvK
D$lVj@P
\$$UV3
|$,9l$4
9D$8t;V
19D$4}
\$PRQS
9\$H~@
C;\$H|
C;\$H|
t$(;t$,}5
4SVWj@
D$,PhlK
tSh 8K
D$pSVWj
|$L;|$P}$
G;|$P|
L$|_^[3
XD$4PW
t$$Wh@
t$$jFVh<
t$(Wh@
tthxiJ
D$0PhH
D$wPh8
?Whp5K
#<Whp5K
u9jdh
D$$09K
D$(H9K
D$,d9K
D$0t9K
D$$PhL%S
BPhd>K
BPh(?K
BPh,?K
CPhX4K
PWh(:K
F@Ph`$K
;PhH*K
GBPPh0,K
GDPPhT,K
PPVhx,K
f;G@}<
<WhP/K
;Vhp/K
t.hX@K
QQSVWd
URPQQh
;t$,v-
UQPXY]Y[
&sWj5X
SWhhIK
Tt1jhZ;
Tt1jhZ;
^$+^8+
^$+^8+
t0jXXf
~$+~8+
t0jXXf
~$+~8+
F2jgYf;
W8^.u:
W8^.u:
PPPPPPPP
f-00f=
f-00f=
35`&S
QSSSSj
u0jAXf;
u0jAXf;
<xt"<Xt
t.h<dK
aShxdK
TVh dK
Wj0XPV
WWWPWS
u-PWWS
SSVWh
f9:t!V
|VWj=S
QQSWj0j@
D8(HXt:f
D8(Ht5F
PPPPPWS
PP9E u:PPVWP
f-00f=
f-00f=
PPPPPPPP
SVjA[jZ^+
jAZjZ^
glutIdleFunc
ERROR: Function <%s> called without first calling 'glutInit'.
glutTimerFunc
Fatal error: Memory allocation failure in glutTimerFunc()
glutMenuStateFunc
glutMenuStatusFunc
glutMenuDestroyFunc
glutPositionFunc
glutKeyboardFunc
glutKeyboardUpFunc
glutSpecialFunc
glutSpecialUpFunc
glutMouseFunc
glutMouseWheelFunc
glutMotionFunc
glutPassiveMotionFunc
glutEntryFunc
glutCloseFunc
glutWMCloseFunc
glutOverlayDisplayFunc
glutWindowStatusFunc
glutButtonBoxFunc
glutDialsFunc
glutTabletMotionFunc
glutTabletButtonFunc
glutMultiEntryFunc
glutMultiButtonFunc
glutMultiMotionFunc
glutMultiPassiveFunc
glutInitContextFunc
glutAppStatusFunc
glutDisplayFunc
Fatal error in program. NULL display callback not permitted in GLUT 3.0+ or freeglut 2.0.1+
glutReshapeFunc
Visibility Callback
ERROR: Internal <%s> function called without first calling 'glutInit'.
glutVisibilityFunc
glutJoystickFunc
glutSpaceballMotionFunc
glutSpaceballRotateFunc
glutSpaceballButtonFunc
glutSetOption
glutSetOption(): missing enum handle %d
glutGet
glutDeviceGet
glutGetModifiers
glutGetModifiers() called outside an input callback
glutLayerGet
glutLayerGet(): missing enum handle %d
glutGetModeValues
wglGetExtensionsStringARB
WGL_ARB_create_context
OpenGL >2.1 context requested but wglCreateContextAttribsARB is not available! Falling back to legacy context creation
wglCreateContextAttribsARB
DISPLAY
FREEGLUT_dummy
WGL_ARB_multisample
wglChoosePixelFormatARB
FREEGLUT
fgOpenWindow
Window Class Info Not Found
ERROR: Internal error <%s> in function %s
Game mode being invoked on a subwindow
Failed to create a window (%s)!
GLUT_ICON
fgPlatformInitialize
Window Class Not Registered
fgPlatformInitialize: CreateDC failed, Screen size info may be incorrect
This is quite likely caused by a bad '-display' parameter
glutPostRedisplay
ERROR: Function <%s> called with no current window defined.
glutSwapBuffers
freeglut: %d frames in %.2f seconds = %.2f FPS
glutPostWindowRedisplay
Aalpha
buffer
conformant
double
luminance
stencil
single
stereo
samples
win32pdf
win32pfd
xvisual
xstaticgray
xgrayscale
xstaticcolor
xpseudocolor
xtruecolor
xdirectcolor
xstaticgrey
xgreyscale
xstaticcolour
xpseudocolour
xtruecolour
xdirectcolour
borderless
GLUT_FPS
-display
-display parameter must be followed by display name
-geometry
-geometry parameter must be followed by window geometry settings
-direct
parameters ambiguity, -direct and -indirect cannot be both specified
-indirect
-iconic
-gldebug
illegal glutInit() reinitialization attempt
Could not allocate space for the program's name.
WARNING - Display string token not recognized: %s
freeglut
(%s):
ERROR: No display callback registered for window %d
glutMainLoop
ERROR: glutMainLoop called with no windows created.
glutLeaveMainLoop
Unable to create OpenGL %d.%d context (flags %x, profile %x)
glutCreateWindow
glutCreateSubWindow
glutDestroyWindow
glutSetWindow
glutSetWindow(): window ID %d not found!
glutShowWindow
glutHideWindow
glutIconifyWindow
glutSetWindowTitle
glutSetIconTitle
glutReshapeWindow
glutPositionWindow
glutPushWindow
glutPopWindow
glutFullScreen
glutFullScreen called on a child window, ignoring...
glutFullScreenToggle
glutGetWindowData
glutSetWindowData
Too large a joystick number: %d
illegal attempt to initialize joystick device again
glutForceJoystickFunc
glutJoystickGetNumAxes
glutJoystickGetNumButtons
glutJoystickNotWorking
glutJoystickGetDeadBand
glutJoystickSetDeadBand
glutJoystickGetSaturation
glutJoystickSetSaturation
glutJoystickSetMinRange
glutJoystickSetMaxRange
glutJoystickSetCenter
glutJoystickGetMinRange
glutJoystickGetMaxRange
glutJoystickGetCenter
freeglut menu
fgDestroyWindow
Window destroy function called with null window
fgDestroyMenu
Menu destroy function called with null menu
fgEnumWindows
Enumerator or callback missing from window enumerator call
fgEnumSubWindows
Enumerator or callback missing from subwindow enumerator call
Window Enumeration
GLUT_DIALS_SERIAL
glutGet(): missing enum handle %d
glutDeviceGet(): missing enum handle %d
glutMainLoopEvent
Event Handler
fgPlatformWindowProc
Cannot create window
glutGameModeString
%ix%i:%i@%i
%ix%i:%i
%ix%i@%i
:%i@%i
unable to parse game mode string `%s'
glutEnterGameMode
failed to change screen settings
glutLeaveGameMode
glutGameModeGet
Unknown gamemode get: %d
glutExtensionSupported
invalid enumerant
invalid value
invalid operation
stack overflow
stack underflow
out of memory
table too large
invalid framebuffer operation
texture too large
unknown GL error
glutReportErrors
GL error: %s
glutIgnoreKeyRepeat
glutSetKeyRepeat
Invalid glutSetKeyRepeat mode: %d
glutSetColor
glutGetColor
glutCopyColormap
glGenBuffers
fgInitGL2: fghGenBuffers is NULL
glDeleteBuffers
fgInitGL2: fghDeleteBuffers is NULL
glBindBuffer
fgInitGL2: fghBindBuffer is NULL
glBufferData
fgInitGL2: fghBufferData is NULL
glVertexAttribPointer
fgInitGL2: fghVertexAttribPointer is NULL
glEnableVertexAttribArray
fgInitGL2: fghEnableVertexAttribArray is NULL
glDisableVertexAttribArray
fgInitGL2: fghDisableVertexAttribArray is NULL
CurrentJoystickSettings
System\CurrentControlSet\Control\MediaResources\Joystick
%s\%s\%s
OEMName
Joystick%d%s
System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM
JS: Failed to read joystick name from registry
fghCheckMenuStatus
Cannot find menu entry
fgDisplayMenu
Displaying menu in nonexistent window
glutCreateMenu
Menu manipulation not allowed while menus in use.
glutDestroyMenu
glutGetMenu
glutSetMenu
glutAddMenuEntry
glutAddSubMenu
glutSetMenuFont
glutChangeMenuFont: bitmap font 0x%08x not found. Make sure you're not passing a stroke font. Ignoring...
glutChangeToMenuEntry
glutChangeToSubMenu
glutRemoveMenuItem
glutAttachMenu
glutDetachMenu
glutGetMenuData
glutSetMenuData
333333
@SOFTWARE\FreeGLUT
DialboxSerialPort
96,n,8,1
glutSetCursor
glutWarpPointer
The computer must be restarted for the graphics mode to work.
An invalid set of flags was passed in.
An invalid parameter was passed in. This can include an invalid flag or combination of flags.
The display driver failed the specified graphics mode.
The graphics mode is not supported.
Unknown error in graphics mode???
%s Problem with requested mode: %lux%lu:%lu@%lu
glutInit
glutInitDisplayMode
glutInitDisplayString
glutInitWindowPosition
glutInitWindowSize
glutExit
glutGetWindow
glutEstablishOverlay
glutRemoveOverlay
glutUseLayer
glutPostOverlayRedisplay
glutPostWindowOverlayRedisplay
glutShowOverlay
glutHideOverlay
glutBitmapCharacter
glutBitmapWidth
glutStrokeCharacter
glutStrokeWidth
glutStrokeWidthf
glutBitmapLength
glutStrokeLength
glutStrokeLengthf
glutWireSphere
glutSolidSphere
glutWireCone
glutSolidCone
glutWireTorus
glutSolidTorus
glutWireCylinder
glutSolidCylinder
glutWireTeapot
glutSolidTeapot
glutWireTeacup
glutSolidTeacup
glutWireTeaspoon
glutSolidTeaspoon
glutWireCube
glutSolidCube
glutWireDodecahedron
glutSolidDodecahedron
glutWireOctahedron
glutSolidOctahedron
glutWireTetrahedron
glutSolidTetrahedron
glutWireIcosahedron
glutSolidIcosahedron
glutWireRhombicDodecahedron
glutSolidRhombicDodecahedron
glutWireSierpinskiSponge
glutSolidSierpinskiSponge
glutVideoResizeGet
glutSetupVideoResizing
glutStopVideoResizing
glutVideoResize
glutVideoPan
glutLeaveFullScreen
glutBitmapHeight
glutStrokeHeight
glutBitmapString
glutStrokeString
glutGetProcAddress
glutInitContextVersion
glutInitContextFlags
glutInitContextProfile
glutInitErrorFunc
glutInitWarningFunc
glutSetVertexAttribCoord3
glutSetVertexAttribNormal
glutSetVertexAttribTexCoord2
glutBitmapCharacter: bitmap font 0x%08x not found. Make sure you're not passing a stroke font.
glutBitmapString: bitmap font 0x%08x not found. Make sure you're not passing a stroke font.
glutBitmapWidth: bitmap font 0x%08x not found. Make sure you're not passing a stroke font.
glutBitmapLength: bitmap font 0x%08x not found. Make sure you're not passing a stroke font.
glutBitmapHeight: bitmap font 0x%08x not found. Make sure you're not passing a stroke font.
glutStrokeCharacter: stroke font 0x%08x not found. Make sure you're not passing a bitmap font.
glutStrokeString: stroke font 0x%08x not found. Make sure you're not passing a bitmap font.
glutStrokeWidth: stroke font 0x%08x not found. Make sure you're not passing a bitmap font.
glutStrokeLength: stroke font 0x%08x not found. Make sure you're not passing a bitmap font.
glutStrokeHeight: stroke font 0x%08x not found. Make sure you're not passing a bitmap font.
Unknown cursor type: %d
Failed to allocate memory in fghCircleTable
fghGenerateSphere: too many slices or stacks requested, indices will wrap
Failed to allocate memory in fghGenerateSphere
fghGenerateCone: too many slices or stacks requested, indices will wrap
Failed to allocate memory in fghGenerateCone
fghGenerateCylinder: too many slices or stacks requested, indices will wrap
Failed to allocate memory in fghGenerateCylinder
fghGenerateTorus: too many slices or stacks requested, indices will wrap
Failed to allocate memory in fghGenerateTorus
Failed to allocate memory in fghCube
Failed to allocate memory in fghSierpinskiSponge
Failed to allocate memory in fghSphere
Failed to allocate memory in fghCone
Failed to allocate memory in fghCylinder
Failed to allocate memory in fghTorus
b p "
$$~$~$$
:DJ0HH0
$BBBBB$
<BBb\@@
<BBB<BBB<
<@JVRNBB<
BBB~BBB$
BBB|BBB
<B@@@@@B<
BBBBBBB
~@@@x@@@~
@@@@x@@@~
:FBN@@@B<
BBBB~BBBB
BDHP`PHDB
~@@@@@@@@
BBBFJRbBB
<BBBBBBB<
@@@@|BBB|
<JRBBBBB<
BDHP|BBB|
<BBBBBBBB
(((DDD
< <
\bBBb\@@@
<B@@B<
:FBBF:
<B@~B<
| "
<B<@8DD:
BBBBb\@@@
BDHpHD@@@
BBBBb\
<BBBB<
@@@\bBb\
"\
" |
:DDDDD
8TPPT8
b p "
B<$$<B
@ZfBBBB
p `
BB~BB$
BB~BB$
BB~BB$
BB~BB$
BB~BB$
BB~BB$
<B@@@@@B<
~@@x@@~
~@@x@@~
~@@x@@~
~@@x@@~
@<bRRRJJF<
<BBBBBB
<BBBBBB
<BBBBBB
<BBBBBB
@@@|BBB|@
\BBLPHDD8
<B@@B<
<B@~B<
<B@~B<
<B@~B<
<B@~B<
<BBBB<
BBBBb\
<BBBB<
<BBBB<
<BBBB<
<BBBB<
<BBBB<
@<bRJF<
:DDDDD
:DDDDD
:DDDDD
:DDDDD
@@\bBBb\@@
@@@@@@
2LLR0((
@@@@
`
xDDDxDDx
<B@@@@B<
xDBBBBDx
|@@@|@@|
@@@@x@@|
:FBF@@B<
BBBB~BBB
@@@@@@@@
DDHHpPHD
x@@@@@@@
FFJJRRbb
<BBBBBB<
@@@@xDDx
>FJBBBB<
DDDDxDDx
<BBBBBBB
`@@@@@@@@`
@@@@
@@@@@@@@
@@@@@@@@@@
@@@@ @@@
@@@@@@
(((((h
<B@@@@B<
|@@@|@@|
|@@@|@@|
|@@|@@@|
|@@@|@@|
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
FFJJRRbb
<BBBBBB<
<BBBBBB<
<BBBBBB<
<BBBBBB<
<BBBBBB<
@<bRRJJF<
<BBBBBBB
<BBBBBBB
<BBBBBBB
<BBBBBBB
@@xDDx@@
@@@@@@
@@@@@@@
@@@@@@
@@ @@
8DDDDDDD8
8DDDdX@D8
8DDDD8DD8
S@Q Q I &
|BBB|BBB|
~@@@~@@@~
@@@@|@@@~
@@@@@@@@@
ABDHpPHDB
|@@@@@@@@
D@D@J@J@Q@Q@`
@@@@|BBB|
BBBD|BBB|
<BBBBBBBB
D@D@D@
`@@@@@@@@@@`
@@@@@@@@@@
XdDDDdX@@
8D@@@D8
4LDDDL4
8D@|DD8
@@@@@@
4LDDDL4
DDDDDdX@@
@@@@@@@
@@@@@@@@@
DHP``PH@@
@@@@@@@@@
DDDDDdX
8DDDDD8
@@@XdDDDdX
4LDDDL4
@@@@@`P
`@@@@@
4LDDDDD
((HDDD
0@@@@@
@@@@@@@@@@@@
@@@@@@@@
8dPPPT8
N@Q@P@Q@N@
J@J@L@J@N@
@@@tLDDDDD
((((((h
~@@@~@@@~
~@@@~@@@~
~@@@~@@@~
~@@@~@@@~
@@@@@@@@@
@@@@@@@@@
@@@@@@@@@
@@@@@@@@@
<BBBBBBBB
<BBBBBBBB
<BBBBBBBB
<BBBBBBBB
@@|BBB|@@
XDDDXDDD8
8D@@@D8
8D@|DD8
8D@|DD8
8D@|DD8
8D@|DD8
@@@@@@@
@@@@@@@
@@@@@@@
@@@@@@@
8DDDD<
DDDDDdX
8DDDDD8
8DDDDD8
8DDDDD8
8DDDDD8
8DDDDD8
DdTLD:
4LDDDDD
4LDDDDD
4LDDDDD
4LDDDDD
((HDDD
@@@XdDDDdX@@
00000000
f`~`<0
00``````````00
@@`` 00
`p`0`0`p
```0`0`0`0`0`0```
`0`0`0`0`0`0
`0`0`0`0`0`0
00000000000000
bFffffl6l6x
c0c0f0f0l0x0x0p0`0
`````````
0``0`0`0`0`0`0`0`0`0`0`0
`000000`
`0pp0`8
0`pp`0
`0000`
xx``````````````xx
00 ``@@
00000000000000
00000000
``````````
````````````
``````````````
```````pll
8000000
000000`
`00000
``````````````````
`000000
00000`
00000000
``````
```````
00000pp0
8lDDl8
p`p000
p`p000
00000000000000
00000000000000
00000000000000
00000000000000
```0`0
0`0`0```
c0c0f0f0l0l0x0p0p0
0``0`0`0`0`0`0`0`0`0`0`0
0``0`0`0`0`0`0`0`0`0`0`0
0``0`0`0`0`0`0`0`0`0`0`0
0``0`0`0`0`0`0`0`0`0`0`0
`0000`
``````````
``````````
``````````
``````````
@@ @@
p `
8lDDDD
@@@@@@@
@@@ @@@
|fRRJf>
8lDDDD
8lDDDD
8lDDDD
8lDDDD
PP`PP
00````````00
@`` 00
````````````````0
p``````````
``````
`````````
``@0@0
` ` ``1
@`@p`8
>0000000000000000000>
00 ``@
0`0`0`0`0`0`0
x0000000000
0`0`0`0`0`0`0`0`8
x0000000000p
00000000000000p
x000000000000000p
0`0`0`0`0`0`0`0`8
````````````0
0`0`0`0`0`0`0
x00000000;7s
2000000000
0`0`0`0`0`0`0`0`p
00000000000000000
0`0`0`0`
0000000
0000000
0`0`0`0`0`0`0`0`p
<fffff<
6@6`0`0`0
x0000000000p
x0000000000p
x0000000000p
x0000000000p
````````````0
0`0`0`0`0`0`0`0`8
````````````0
````````````0
````````````0
````````````0
````````````0
h`l`d`f`b`c`1
0`0`0`0`0`0`0`0`p
0`0`0`0`0`0`0`0`p
0`0`0`0`0`0`0`0`p
0`0`0`0`0`0`0`0`p
0`0`0`0`0`0`0
@-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1
-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1
-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1
-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1
-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1
-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1
dA`eVB|a
m+B1YCB
wB`eVBZU
BlxEA|a
|ahA|a
Blx%A:
dBlx%A
vOaAZU
wBvOaAT
wBvOaAZU
BvOaA|a
@vOaA|a
A|a"B|a
|a@A|a
AI.mA:
B[ScBq
B[ScBq
QB-2YB
-2YB|a
y>BmghBT
dB#[UB
#[UB|a
wBw>vB
y>Bw>vB
`eRB|a
QB`eRB
BW,+BZU
wB/]wB%
A/]wB:
BI.+BMU
@/]wB|a
A/]wBZU
|a"BZU
|a"BZU
@9EBA|a
QB94]B|a
y>B94]BMU
MonoRoman
Unknown exception
bad allocation
bad array new length
Qkkbal
##Background
##Foreground
imgui.ini
imgui_log.txt
Debug##Default
HoveredId: 0x%08X
Press ESC to abort picking.
Click to break in debugger!
Window
%s/%s_%08X
%s/%08X
#RESIZE
#COLLAPSE
#CLOSE
TextDisabled
WindowBg
ChildBg
PopupBg
Border
BorderShadow
FrameBg
FrameBgHovered
FrameBgActive
TitleBg
TitleBgActive
TitleBgCollapsed
MenuBarBg
ScrollbarBg
ScrollbarGrab
ScrollbarGrabHovered
ScrollbarGrabActive
CheckMark
SliderGrab
SliderGrabActive
Button
ButtonHovered
ButtonActive
Header
HeaderHovered
HeaderActive
Separator
SeparatorHovered
SeparatorActive
ResizeGrip
ResizeGripHovered
ResizeGripActive
TabHovered
TabActive
TabUnfocused
TabUnfocusedActive
PlotLines
PlotLinesHovered
PlotHistogram
PlotHistogramHovered
TextSelectedBg
DragDropTarget
NavHighlight
NavWindowingHighlight
NavWindowingDimBg
ModalWindowDimBg
Unknown
##Tooltip_%02d
##Menu_%02d
##Popup_%08x
window_context
(Popup)
##MainMenuBar
(Main menu bar)
(Untitled)
###NavWindowingList
#SourceExtern
%*s%.*s
%*s%.*s
LogButtons
Log To TTY
Log To File
Log To Clipboard
Default Depth
Pos=%i,%i
Size=%i,%i
Collapsed=%d
[%s][%s]
Pos=%d,%d
Size=%d,%d
Collapsed=%d
%s: '%s' %d vtx, %d indices, %d cmds
CURRENTLY APPENDING
Warning: owning Window is inactive. This DrawList is not being rendered!
Callback %p, user_data %p
DrawCmd: %4d triangles, Tex 0x%p, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)
Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d, Area: ~%0.f px
%s %04d: pos (%8.2f,%8.2f), uv (%.6f,%.6f), col %08X
Columns Id: 0x%08X, Count: %d, Flags: 0x%04X
Width: %.1f (MinX: %.1f, MaxX: %.1f)
Column %02d: OffsetNorm %.3f (= %.1f px)
%s (%d)
%s: NULL
%s '%s', %d @ 0x%p
DrawList
Pos: (%.1f,%.1f), Size: (%.1f,%.1f), ContentSize (%.1f,%.1f)
AlwaysAutoResize
NoNavInputs
NoMouseInputs
NoSavedSettings
ChildMenu
Modal
Popup
Tooltip
Child
Flags: 0x%08X (%s%s%s%s%s%s%s%s%s..)
Scroll: (%.2f/%.2f,%.2f/%.2f) Scrollbar:%s%s
Active: %d/%d, WriteAccessed: %d, BeginOrderWithinContext: %d
Appearing: %d, Hidden: %d (CanSkip %d Cannot %d), SkipItems: %d
NavLastIds: 0x%08X,0x%08X, NavLayerActiveMask: %X
NavLastChildNavWindow: %s
NavRectRel[0]: (%.1f,%.1f)(%.1f,%.1f)
NavRectRel[0]: <None>
RootWindow
ParentWindow
ChildWindows
Columns sets (%d)
Columns
Storage
*Inactive*
TabBar (%d tabs)%s
%02d%c Tab 0x%08X '%s'
%s: %d entries, %d bytes
Key 0x%08X Value { i: %d }
Dear ImGui Metrics
OuterRect
OuterRectClipped
InnerRect
InnerClipRect
WorkRect
Content
ContentRegionRect
Dear ImGui %s
Application average %.3f ms/frame (%.1f FPS)
%d vertices, %d indices (%d triangles)
%d active windows (%d visible)
%d active allocations
Windows
Active DrawLists (%d)
DrawLists
Popups (%d)
Popups
ChildMenu
ChildWindow
PopupID: %08x, Window: '%s'%s%s
Tab Bars (%d)
TabBars
Internal state
NavKeyboard
NavGamepad
HoveredWindow: '%s'
HoveredRootWindow: '%s'
HoveredId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d
ActiveId: 0x%08X/0x%08X (%.2f sec), AllowOverlap: %d, Source: %s
ActiveIdWindow: '%s'
MovingWindow: '%s'
NavWindow: '%s'
NavId: 0x%08X, NavLayer: %d
NavInputSource: %s
NavActive: %d, NavVisible: %d
NavActivateId: 0x%08X, NavInputId: 0x%08X
NavDisableHighlight: %d, NavDisableMouseHover: %d
NavWindowingTarget: '%s'
DragDrop: %d, SourceId = 0x%08X, Payload "%s" (%d bytes)
Item Picker..
Will call the IM_DEBUG_BREAK() macro to break in debugger.
Warning: If you don't have a debugger attached, this will probably crash.
Show windows begin order
Show windows rectangles
##show_windows_rect_type
(%6.1f,%6.1f) (%6.1f,%6.1f) Size (%6.1f,%6.1f) %s
Show details when hovering ImDrawCmd node
?ff&?
+?333?
]?33s?
..- -XXXXXXX- X - X -XXXXXXX - XXXXXXX- XX ..- -X.....X- X.X - X.X -X.....X - X.....X- X..X --- -XXX.XXX- X...X - X...X -X....X - X....X- X..X X - X.X - X.....X - X.....X -X...X - X...X- X..X XX - X.X -X.......X- X.......X -X..X.X - X.X..X- X..X X.X - X.X -XXXX.XXXX- XXXX.XXXX -X.X X.X - X.X X.X- X..XXX X..X - X.X - X.X - X.X -XX X.X - X.X XX- X..X..XXX X...X - X.X - X.X - XX X.X XX - X.X - X.X - X..X..X..XX X....X - X.X - X.X - X.X X.X X.X - X.X - X.X - X..X..X..X.X X.....X - X.X - X.X - X..X X.X X..X
7])#######hV0qs'/###[),##/l:$#Q6>##5[n42>c-TH`->>#/e>11NNV=Bv(*:.F?uu#(gRU.o0XGH`$vhLG1hxt9?W`#,5LsCp#-i>.r$<$6pD>Lb';9Crc6tgXmKVeU2cD4Eo3R/2*>]b(MC;$jPfY.;h^`IWM9<Lh2TlS+f-s$o6Q<BWH`YiU.xfLq$N;$0iR/GX:U(jcW2p/W*q?-qmnUCI;jHSAiFWM.R*kU@C=GH?a9wp8f$e.-4^Qg1)Q-GL(lf(r/7GrRgwV%MS=C#`8ND>Qo#t'X#(v#Y9w0#1D$CIf;W'#pWUPXOuxXuU(H9M(1<q-UE31#^-V'8IRUo7Qf./L>=Ke$$'5F%)]0^#0X@U.a<r:QLtFsLcL6##lOj)#.Y5<-R&KgLwqJfLgN&;Q?gI^#DY2uLi@^rMl9t=cWq6##weg>$FBjVQTSDgEKnIS7EM9>ZY9w0#L;>>#Mx&4Mvt//L[MkA#W@lK.N'[0#7RL_&#w+F%HtG9M#XL`N&.,GM4Pg;-<nLENhvx>-VsM.M0rJfLH2eTM`*oJMHRC`NkfimM2J,W-jXS:)r0wK#@Fge$U>`w'N7G#$#fB#$E^$#:9:hk+eOe--6x)F7*E%?76%^GMHePW-Z5l'&GiF#$956:rS?dA#fiK:)Yr+`�j@'DbG&#^$PG.Ll+DNa<XCMKEV*N)LN/N*b=%Q6pia-Xg8I$<MR&,VdJe$<(7G;Ckl'&hF;;$<_=X(b.RS%%)###MPBuuE1V:v&cXm#(&cV]`k9OhLMbn%s$G2,B$BfD3X*sp5#l,$R#]x_X1xKX%b5U*[r5iMfUo9U`N99hG)tm+/Us9pG)XPu`<0s-)WTt(gCRxIg(%6sfh=ktMKn3j)<6<b5Sk_/0(^]AaN#(p/L>&VZ>1i%h1S9u5o@YaaW$e+b<TWFn/Z:Oh(Cx2$lNEoN^e)#CFY@@I;BOQ*sRwZtZxRcU7uW6CXow0i(?$Q[cjOd[P4d)]>ROPOpxTO7Stwi1::iB1q)C_=
ProggyClean.ttf, %dpx
B333D33
>fff?ff
?fff?fff?fff?
333?333?333?333?333?
5?q=J?H
z?33s?
?fff?333?
?333?333?fff?
?fff?fff?fff?
#SCROLLX
#SCROLLY
#image
%.0f%%
--------------------------------
##Combo_%02d
*Unknown item*
%.*s%%d%s
0##min
%.0f deg
R:%0.3f
G:%0.3f
B:%0.3f
A:%0.3f
H:%0.3f
S:%0.3f
V:%0.3f
M:0.000
context
#%02X%02X%02X%02X
#%02X%02X%02X
##Text
%02X%02X%02X%02X
%02X%02X%02X
##ColorButton
picker
##picker
_COL3F
_COL4F
Current
##current
Original
##original
##preview
#%02X%02X%02X
R: %d, G: %d, B: %d
(%.3f, %.3f, %.3f)
#%02X%02X%02X%02X
R:%d, G:%d, B:%d, A:%d
(%.3f, %.3f, %.3f, %.3f)
H: %.3f, S: %.3f, V: %.3f
H: %.3f, S: %.3f, V: %.3f, A: %.3f
0..255
0.00..1.00
Copy as..
(%.3ff, %.3ff, %.3ff, %.3ff)
(%d,%d,%d,%d)
0x%02X%02X%02X
0x%02X%02X%02X%02X
##selectable
##dummypicker
Alpha Bar
%d: %8.4g
%d: %8.4g
%d: %8.4g
##menubar
columns
$@)\?@
Y@fff@
<unknown>
Double-click on title bar to collapse window.
Click and drag on lower corner to resize window
(double-click to auto fit window to its contents).
CTRL+Click on a slider or drag box to input value as text.
TAB/SHIFT+TAB to cycle through keyboard editable fields.
CTRL+Mouse Wheel to zoom window contents.
While inputing text:
CTRL+Left/Right to word jump.
CTRL+A or double-click to select all.
CTRL+X/C/V to use clipboard cut/copy/paste.
CTRL+Z,CTRL+Y to undo/redo.
ESCAPE to revert.
You can apply arithmetic operators +,*,/ on numerical values.
Use +- to subtract.
With keyboard navigation enabled:
Arrow keys to navigate.
Space to activate a widget.
Return to input text into a widget.
Escape to deactivate a widget, close popup, exit child window.
Alt to jump to the menu layer of a window.
CTRL+Tab to select a window.
Style Editor
Dear ImGui Demo
Examples
Main menu bar
Console
Simple layout
Property editor
Long text display
Auto-resizing window
Constrained-resizing window
Simple overlay
Manipulating window titles
Custom rendering
Documents
Metrics
About Dear ImGui
dear imgui says hello. (%s)
ABOUT THIS DEMO:
Sections below are demonstrating many aspects of the library.
The "Examples" menu above leads to more demo contents.
The "Tools" menu above gives access to: About Box, Style Editor,
and Metrics (general purpose Dear ImGui debugging tool).
PROGRAMMER GUIDE:
See the ShowDemoWindow() code in imgui_demo.cpp. <- you are here!
See comments in imgui.cpp.
See example applications in the examples/ folder.
Read the FAQ at http://www.dearimgui.org/faq/
Set 'io.ConfigFlags |= NavEnableKeyboard' for keyboard controls.
Set 'io.ConfigFlags |= NavEnableGamepad' for gamepad controls.
USER GUIDE:
Configuration
Configuration##2
io.ConfigFlags: NavEnableKeyboard
io.ConfigFlags: NavEnableGamepad
Required back-end to feed in gamepad inputs in io.NavInputs[] and set io.BackendFlags |= ImGuiBackendFlags_HasGamepad.
Read instructions in imgui.cpp for details.
io.ConfigFlags: NavEnableSetMousePos
Instruct navigation to move the mouse cursor. See comment for ImGuiConfigFlags_NavEnableSetMousePos.
io.ConfigFlags: NoMouse
<<PRESS SPACE TO DISABLE>>
io.ConfigFlags: NoMouseCursorChange
Instruct back-end to not alter mouse cursor shape and visibility.
io.ConfigInputTextCursorBlink
Set to false to disable blinking cursor, for users who consider it distracting
io.ConfigWindowsResizeFromEdges
Enable resizing of windows from their edges and from the lower-left corner.
This requires (io.BackendFlags & ImGuiBackendFlags_HasMouseCursors) because it needs mouse cursor feedback.
io.ConfigWindowsMoveFromTitleBarOnly
io.MouseDrawCursor
Instruct Dear ImGui to render a mouse cursor for you. Note that a mouse cursor rendered via your application GPU rendering path will feel more laggy than hardware cursor, but will be more in sync with your other visuals.
Some desktop applications may use both kinds of cursors (e.g. enable software cursor only when resizing/dragging something).
Backend Flags
Those flags are set by the back-ends (imgui_impl_xxx files) to specify their capabilities.
Here we expose then as read-only fields to avoid breaking interactions with your back-end.
io.BackendFlags: HasGamepad
io.BackendFlags: HasMouseCursors
io.BackendFlags: HasSetMousePos
io.BackendFlags: RendererHasVtxOffset
The same contents can be accessed in 'Tools->Style Editor' or by calling the ShowStyleEditor() function.
Capture/Logging
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.
Try opening any of the contents below in this window and then click one of the "Log To" button.
You can also call ImGui::LogText() to output directly to the log without a visual output.
Copy "Hello, world!" to clipboard
Hello, world!
Window options
No titlebar
No scrollbar
No menu
No move
No resize
No collapse
No close
No nav
No background
No bring to front
Beatrice
Brianna
Bernard
Blaine
Item One
Item Two
Item Three
Item Four
Item Five
Widgets
Thanks for clicking me!
checkbox
radio a
radio b
radio c
Hold to repeat:
##left
##right
Hover over me
I am a tooltip
- or me
I am a fancy tooltip
LLLLLLL
OOOOOOO
Refer to the "Combo" section below for an explanation of the full BeginCombo/EndCombo API, and demonstration of various flags.
input text
Hold SHIFT or use mouse to select text.
CTRL+Left/Right to word jump.
CTRL+A or double-click to select all.
CTRL+X,CTRL+C,CTRL+V clipboard.
CTRL+Z,CTRL+Y undo/redo.
ESCAPE to revert.
PROGRAMMER:
You can use the ImGuiInputTextFlags_CallbackResize facility if you need to wire InputText() to a dynamic string type. See misc/cpp/imgui_stdlib.h for an example (this is not demonstrated in imgui_demo.cpp).
enter text here
input text (w/ hint)
input int
You can apply arithmetic operators +,*,/ on numerical values.
e.g. [ 100 ], input '*2', result becomes [ 200 ]
Use +- to subtract.
input float
input double
input scientific
You can input value using the scientific notation,
e.g. "1e+8" becomes "100000000".
input float3
drag int
Click and drag to edit value.
Hold SHIFT/ALT for faster/slower edit.
Double-click or CTRL+click to input value.
drag int 0..100
drag float
%.06f ns
drag small float
slider int
CTRL+click to input value.
ratio = %.3f
slider float
slider float (curve)
slider angle
slider enum
Using the format string parameter to display a name instead of the underlying integer.
color 1
Click on the colored square to open a color picker.
Click and hold to use drag and drop.
Right-click on the colored square to show options.
CTRL+click on individual component to input value.
color 2
Banana
Cherry
Orange
Pineapple
Strawberry
Watermelon
listbox
(single select)
Basic trees
Child %d
blah blah
button
Advanced, with Selectable nodes
This is a more typical looking tree with selectable nodes.
Click to select, CTRL+Click to toggle, click on arrows or double-click to open.
ImGuiTreeNodeFlags_OpenOnArrow
ImGuiTreeNodeFlags_OpenOnDoubleClick
ImGuiTreeNodeFlags_SpanAvailWidth
ImGuiTreeNodeFlags_SpanFullWidth
Align label with current X position)
Hello!
Selectable Node %d
Blah blah
Blah Blah
Selectable Leaf %d
Collapsing Headers
Show 2nd header
IsItemHovered: %d
Some content %d
Header with a close button
More content %d
Bullets
Bullet point 1
Bullet point 2
On multiple lines
Tree node
Another bullet point
Bullet point 3 (two calls)
Colored Text
Yellow
Disabled
The TextDisabled color is stored in ImGuiStyle.
Word Wrapping
This text should automatically wrap on the edge of the window. The current implementation for text wrapping follows simple rules suitable for English and possibly other languages.
Wrap width
Test paragraph 1:
The lazy dog is a good dog. This paragraph is made to fit within %.0f pixels. Testing a 1 character word. The quick brown fox jumps over the lazy dog.
Test paragraph 2:
aaaaaaaa bbbbbbbb, c cccccccc,dddddddd. d eeeeeeee ffffffff. gggggggg!hhhhhhhh
UTF-8 Text
CJK text will only appears if the font was loaded with the appropriate CJK character ranges. Call io.Font->AddFontFromFileTTF() manually to load extra character ranges. Read docs/FONTS.txt for details.
Hiragana:
(kakikukeko)
Kanjis:
(nihongo)
UTF-8 input
Images
Below we are displaying the font texture (which is the only texture we have access to in this demo). Use the 'ImTextureID' type as storage to pass pointers or identifier to your own texture data. Hover the texture for a zoomed view!
%.0fx%.0f
Min: (%.2f, %.2f)
Max: (%.2f, %.2f)
And now some textured buttons..
Pressed %d times.
ImGuiComboFlags_PopupAlignLeft
Only makes a difference if the popup is larger than the combo
ImGuiComboFlags_NoArrowButton
ImGuiComboFlags_NoPreview
combo 1
combo 2 (one-liner)
combo 3 (array)
combo 4 (function)
Selectables
1. I am selectable
2. I am selectable
3. I am not selectable
4. I am selectable
5. I am double clickable
Selection State: Single Selection
Object %d
Selection State: Multiple Selection
Hold CTRL and click to select multiple items.
Rendering more text into the same line
main.c
2,345 bytes
Hello.cpp
12,345 bytes
Hello.h
In columns
Item %d
Sailor
Alignment
Alignment applies when a selectable is larger than its text content.
By default, Selectables uses style.SelectableTextAlign but it can be overriden on a per-item basis using PushStyleVar().
(%.1f,%.1f)
Text Input
Multi-line Text Input
You can use the ImGuiInputTextFlags_CallbackResize facility if you need to wire InputTextMultiline() to a dynamic string type. See misc/cpp/imgui_stdlib.h for an example. (This is not demonstrated in imgui_demo.cpp)
ImGuiInputTextFlags_ReadOnly
ImGuiInputTextFlags_AllowTabInput
ImGuiInputTextFlags_CtrlEnterForNewLine
##source
Filtered Text Input
default
decimal
hexadecimal
uppercase
no blank
"imgui" letters
Password input
password
Display all characters as '*'.
Disable clipboard cut and copy.
Disable logging.
<password>
password (w/ hint)
password (clear)
Resize Callback
Demonstrate using ImGuiInputTextFlags_CallbackResize to wire your resizable string type to InputText().
See misc/cpp/imgui_stdlib.h for an implementation of this for std::string.
##MyStr
Data: %p
Size: %d
Capacity: %d
Plots Widgets
Animate
Frame Times
avg %f
Histogram
Sample count
Progress Bar
Color/Picker Widgets
With Alpha Preview
With Half Alpha Preview
With Drag and Drop
With Options Menu
Right-click on the individual color widget to show options.
With HDR
Currently all this does is to lift the 0..1 limits on dragging widgets.
Color widget:
Click on the colored square to open a color picker.
CTRL+click on individual component to input value.
MyColor##1
Color widget HSV with Alpha:
MyColor##2
Color widget with Float Display:
MyColor##2f
Color button with Picker:
With the ImGuiColorEditFlags_NoInputs flag you can hide all the slider/text inputs.
With the ImGuiColorEditFlags_NoLabel flag you can pass a non-empty label which will only be used for the tooltip and picker popup.
MyColor##3
Color button with Custom Picker Popup:
MyColor##3b
Palette
mypicker
MY CUSTOM COLOR PICKER WITH AN AMAZING PALETTE!
Previous
##previous
##palette
Color button only:
MyColor##3c
Color picker:
With Alpha
With Alpha Bar
With Side Preview
With Ref Color
##RefColor
Auto/Current
RGB Only
HSV Only
Hex Only
Display Mode
ColorEdit defaults to displaying RGB inputs if you don't specify a display mode, but the user can change it with a right-click.
ColorPicker defaults to displaying RGB+HSV+Hex if you don't specify a display mode.
You can change the defaults using SetColorEditOptions().
Auto/Current
Hue bar + SV rect
Hue wheel + SV triangle
Picker Mode
User can right-click the picker to change mode.
MyColor##4
Programmatically set defaults:
SetColorEditOptions() is designed to allow you to set boot-time default.
We don't have Push/Pop functions because you can force options on a per-widget basis if needed, and the user can change non-forced ones with the options menu.
We don't have a getter to avoid encouraging you to persistently save values that aren't forward-compatible.
Default: Uint8 + HSV + Hue Bar
Default: Float + HDR + Hue Wheel
HSV encoded colors
By default, colors are given to ColorEdit and ColorPicker in RGB, but ImGuiColorEditFlags_InputHSV allows you to store colors as HSV and pass them to ColorEdit and ColorPicker as HSV. This comes with the added benefit that you can manipulate hue values with the picker even when saturation or value are zero.
Color widget with InputHSV:
HSV shown as RGB##1
HSV shown as HSV##1
Raw HSV values
Range Widgets
Max: %.1f %%
Min: %.1f %%
Max: %d units
Min: %d units
range int (no bounds)
Data Types
Drags:
Clamp integers to 0..50
As with every widgets in dear imgui, we never modify values unless there is a user interaction.
You can override the clamping limits by using CTRL+Click to input a value.
drag s8
drag u8
drag s16
drag u16
drag s32
drag u32
drag s64
drag u64
drag float ^2
You can use the 'power' parameter to increase tweaking precision on one side of the range.
%.10f grams
drag double
0 < %.10f < 1
drag double ^2
Sliders
slider s8 full
slider u8 full
slider s16 full
slider u16 full
slider s32 low
slider s32 high
slider s32 full
slider u32 low
slider u32 high
slider u32 full
slider s64 low
slider s64 high
slider s64 full
%I64u ms
slider u64 low
slider u64 high
slider u64 full
slider float low
slider float low^2
slider float high
slider double low
slider double low^2
%e grams
slider double high
Inputs
Show step buttons
input s8
input u8
input s16
input u16
input s32
input s32 hex
input u32
input u32 hex
input s64
input u64
Multi-component Widgets
input float2
drag float2
slider float2
input int2
drag int2
slider int2
drag float3
slider float3
input int3
drag int3
slider int3
input float4
drag float4
slider float4
input int4
drag int4
slider int4
Vertical Sliders
Drag and Drop
Drag and drop in standard widgets
You can drag from the colored squares.
Drag and drop to copy/swap items
DND_DEMO_CELL
Copy %s
Move %s
Swap %s
Drag to reorder items (simple)
We don't use the drag and drop api at all here! Instead we query when the item is held but not hovered, and order items accordingly.
Querying Status (Active/Focused/Hovered etc.)
Button
Button (w/ repeat)
Checkbox
SliderFloat
InputText
InputFloat
InputFloat3
ColorEdit4
MenuItem
TreeNode
TreeNode (w/ double-click)
ListBox
Item Type
Testing how various types of items are interacting with the IsItemXXX functions.
ITEM: Text
ITEM: Button
ITEM: Checkbox
ITEM: SliderFloat
ITEM: InputText
ITEM: InputFloat
ITEM: InputFloat3
ITEM: ColorEdit4
ITEM: MenuItem
ITEM: TreeNode
ITEM: TreeNode w/ ImGuiTreeNodeFlags_OpenOnDoubleClick
ITEM: ListBox
Return value = %d
IsItemFocused() = %d
IsItemHovered() = %d
IsItemHovered(_AllowWhenBlockedByPopup) = %d
IsItemHovered(_AllowWhenBlockedByActiveItem) = %d
IsItemHovered(_AllowWhenOverlapped) = %d
IsItemHovered(_RectOnly) = %d
IsItemActive() = %d
IsItemEdited() = %d
IsItemActivated() = %d
IsItemDeactivated() = %d
IsItemDeactivatedAfterEdit() = %d
IsItemVisible() = %d
IsItemClicked() = %d
IsItemToggledOpen() = %d
GetItemRectMin() = (%.1f, %.1f)
GetItemRectMax() = (%.1f, %.1f)
GetItemRectSize() = (%.1f, %.1f)
Embed everything inside a child window (for additional testing)
outer_child
IsWindowFocused() = %d
IsWindowFocused(_ChildWindows) = %d
IsWindowFocused(_ChildWindows|_RootWindow) = %d
IsWindowFocused(_RootWindow) = %d
IsWindowFocused(_AnyWindow) = %d
IsWindowHovered() = %d
IsWindowHovered(_AllowWhenBlockedByPopup) = %d
IsWindowHovered(_AllowWhenBlockedByActiveItem) = %d
IsWindowHovered(_ChildWindows) = %d
IsWindowHovered(_ChildWindows|_RootWindow) = %d
IsWindowHovered(_ChildWindows|_AllowWhenBlockedByPopup) = %d
IsWindowHovered(_RootWindow) = %d
IsWindowHovered(_AnyWindow) = %d
This is another child window for testing the _ChildWindows flag.
Hovered/Active tests after Begin() for title bar testing
Title bar Hovered/Active tests
IsItemHovered() after begin = %d (== is title bar hovered)
IsItemActive() after begin = %d (== is window being clicked/moved)
Layout
Child windows
Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window.
Disable Mouse Wheel
Disable Menu
##Line
Child1
%04d: scrollable region
Child2
Some test %d
Rect of child window is: (%.0f,%.0f) (%.0f,%.0f)
Widgets Width
SetNextItemWidth/PushItemWidth(100)
Fixed width.
float##1
SetNextItemWidth/PushItemWidth(GetWindowWidth() * 0.5f)
Half of window width.
float##2
SetNextItemWidth/PushItemWidth(GetContentRegionAvail().x * 0.5f)
Half of available width.
(~ right-cursor_pos)
(works within a column set)
float##3
SetNextItemWidth/PushItemWidth(-100)
Align to right edge minus 100
float##4
SetNextItemWidth/PushItemWidth(-1)
Align to right edge
##float5a
##float5b
##float5c
Basic Horizontal Layout
(Use ImGui::SameLine() to keep adding items to the right of the preceding item)
Two items: Hello
More spacing: Hello
Normal buttons
Corniflower
Small buttons
Like this one
can fit within a text block.
Aligned
Tailor
Lists:
Manually wrapping:
MyTabBar
Avocado
This is the Avocado tab!
blah blah blah blah blah
Broccoli
This is the Broccoli tab!
blah blah blah blah blah
Cucumber
This is the Cucumber tab!
blah blah blah blah blah
Advanced & Close Button
ImGuiTabBarFlags_Reorderable
ImGuiTabBarFlags_AutoSelectNewTabs
ImGuiTabBarFlags_TabListPopupButton
ImGuiTabBarFlags_NoCloseWithMiddleMouseButton
ImGuiTabBarFlags_FittingPolicyResizeDown
ImGuiTabBarFlags_FittingPolicyScroll
Artichoke
Beetroot
Celery
Daikon
This is the %s tab!
I am an odd tab.
Groups
BeginGroup() basically locks the horizontal position for new line. EndGroup() bundles the whole group so that you can use "item" functions such as IsItemHovered()/IsItemActive() or SameLine() etc. on the whole group.
First group hovered
##values
ACTION
REACTION
LEVERAGE
BUZZWORD
Selected
Not Selected
Text Baseline Alignment
Text baseline:
This is testing the vertical alignment that gets applied on text to keep it aligned with widgets. Lines only composed of text or "small" widgets fit in less vertical spaces than lines with normal widgets.
KO Blahblah
Some framed item
Baseline of button will look misaligned with text..
OK Blahblah
We call AlignTextToFramePadding() to vertically align the text baseline by +FramePadding.y
TEST##1
TEST##2
Text aligned to framed item
Item##1
Item##2
Item##3
Multi-line text:
HOP##1
HOP##2
Misc items:
Button()
SmallButton()
Button##1
Node##1
Item %d..
Node##2
Button##2
Button##3
Bullet text
Button##4
Scrolling
Use SetScrollHereY() or SetScrollFromPosY() to scroll to a given vertical position.
Decoration
We expose this for testing because scrolling sometimes had issues with window decoration such as menu-bars.
Item = %d
##item
Scroll Offset
+%.0f px
Scroll To Pos
X/Y = %.0f px
##VerticalScrolling
Center
Bottom
%.0f/%.0f
Use SetScrollHereX() or SetScrollFromPosX() to scroll to a given horizontal position.
Using the "Scroll To Pos" button above will make the discontinuity at edges visible: scrolling to the top/bottom/left/right-most item will add an additional WindowPadding to reflect on reaching the edge of the list.
Because the clipping rectangle of most window hides half worth of WindowPadding on the left/right, using SetScrollFromPosX(+1) will usually result in clipped text whereas the equivalent SetScrollFromPosY(+1) wouldn't.
##HorizontalScrolling
%.0f/%.0f
Horizontal scrolling for a window has to be enabled explicitly via the ImGuiWindowFlags_HorizontalScrollbar flag.
You may want to explicitly specify content width by calling SetNextWindowContentWidth() before Begin().
scrolling
FizzBuzz
Scroll from code
Show Horizontal contents size demo window
Horizontal contents size demo window
Test of different widgets react and impact the work rectangle growing when horizontal scrolling is enabled.
Use 'Metrics->Tools->Show windows rectangles' to visualize rectangles.
H-scrollbar
Tree nodes
Text wrapped
Tab bar
Explicit content size
Scroll %.1f/%.1f %.1f/%.1f
this is a 300-wide button
this is a tree node
another one of those tree node...
Some tree contents
CollapsingHeader
This text should automatically wrap on the edge of the work rectangle.
Width %.2f
OneOneOne
TwoTwoTwo
ThreeThreeThree
FourFourFour
Clipping
On a per-widget basis we are occasionally clipping text CPU-side if it won't fit in its frame. Otherwise we are doing coarser clipping + passing a scissor rectangle to the renderer. The system is designed to try minimizing both execution and CPU/GPU rendering cost.
(Click and drag)
##dummy
Line 1 hello
Line 2 clip me!
Popups & Modal windows
When a popup is active, it inhibits interacting with windows that are behind the popup. Clicking outside the popup closes it.
Haddock
Mackerel
Pollock
Tilefish
Select..
my_select_popup
<None>
Aquarium
Toggle..
my_toggle_popup
Sub-menu
Click me
Tooltip here
I am a tooltip over a popup
Stacked Popup
another popup
I am the last one here.
File Menu..
my_file_popup
Context menus
Value = %.3f (<-- right-click here)
item context menu
Set to zero
Set to PI
##Value
(You can also right-click me to open the same popup as above.)
Button: %s###Button
Edit name:
##edit
(<-- right-click here)
Modals
Modal windows are like popups but the user cannot close them by clicking outside the window.
Delete..
Delete?
All those beautiful files will be deleted.
This operation cannot be undone!
Don't ask me next time
Cancel
Stacked modals..
Stacked 1
Dummy menu item
Hello from Stacked The First
Using style.Colors[ImGuiCol_ModalWindowDimBg] behind it.
Add another modal..
Stacked 2
Hello from Stacked The Second!
Menus inside a regular window
Below we are testing adding menu items to a regular window. It's rather unusual but should work!
CTRL+M
Menu item
Menu inside a regular window
Disable tree indentation
Disable the indenting of tree nodes so demo columns can use the full window width.
Without border:
mycolumns3
With border:
mycolumns
Hovered
/path/one
/path/two
/path/three
Borders
%d columns
##columns_count
horizontal
vertical
%c%c%c
Avail %.2f
Offset %.2f
Long text that is likely to clip
Mixed items
An extra line here.
Category A
Blah blah blah
Category B
Category C