1 module cimgui.types; 2 3 import cimgui.funcs; 4 5 struct ImGuiContext; 6 struct ImDrawListSharedData; 7 8 struct ImVec2_Simple { float x, y; } 9 struct ImVec4_Simple { float x, y, z, w; } 10 struct ImColor_Simple { ImVec4_Simple value; } 11 12 alias ImTextureID = void*; 13 alias ImGuiID = uint; 14 alias ImWchar = ushort; 15 16 alias ImGuiCol = int; 17 alias ImGuiCond = int; 18 alias ImGuiDataType = int; 19 alias ImGuiDir = int; 20 alias ImGuiKey = int; 21 alias ImGuiNavInput = int; 22 alias ImGuiMouseCursor = int; 23 alias ImGuiStyleVar = int; 24 alias ImDrawCornerFlags = int; 25 alias ImDrawListFlags = int; 26 alias ImFontAtlasFlags = int; 27 alias ImGuiBackendFlags = int; 28 alias ImGuiColorEditFlags = int; 29 alias ImGuiColumnsFlags = int; 30 alias ImGuiConfigFlags = int; 31 alias ImGuiComboFlags = int; 32 alias ImGuiDragDropFlags = int; 33 alias ImGuiFocusedFlags = int; 34 alias ImGuiHoveredFlags = int; 35 alias ImGuiInputTextFlags = int; 36 alias ImGuiSelectableFlags = int; 37 alias ImGuiTabBarFlags = int; 38 alias ImGuiTabItemFlags = int; 39 alias ImGuiTreeNodeFlags = int; 40 alias ImGuiWindowFlags = int; 41 42 extern(C) nothrow 43 { 44 alias ImGuiInputTextCallback = int function(ImGuiInputTextCallbackData* data); 45 alias ImGuiSizeCallback = void function(ImGuiSizeCallbackData* data); 46 } 47 48 alias ImS8 = byte; 49 alias ImU8 = ubyte; 50 alias ImS16 = short; 51 alias ImU16 = ushort; 52 alias ImS32 = int; 53 alias ImU32 = uint; 54 alias ImS64 = long; 55 alias ImU64 = ulong; 56 57 alias ImDrawCallback = void function(const ImDrawList* parentList, const ImDrawCmd* cmd); 58 alias ImDrawIdx = ushort; 59 60 struct ImVector(T, string N) 61 { 62 int size; 63 int capacity; 64 T* data; 65 66 static ImVector!(T, N)* create() 67 { 68 mixin("return ImVector_" ~ N ~ "_ImVector_" ~ N ~ "();"); 69 } 70 71 void destroy() 72 { 73 mixin("ImVector_" ~ N ~ "_destroy(&this);"); 74 } 75 76 bool empty() 77 { 78 mixin("return ImVector_" ~ N ~ "_empty(&this);"); 79 } 80 81 int sizeInBytes() 82 { 83 mixin("return ImVector_" ~ N ~ "_size_in_bytes(&this);"); 84 } 85 86 void clear() 87 { 88 mixin("ImVector_" ~ N ~ "_clear(&this);"); 89 } 90 91 T* begin() 92 { 93 mixin("return ImVector_" ~ N ~ "_begin(&this);"); 94 } 95 96 const(T*) beginConst() 97 { 98 mixin("return ImVector_" ~ N ~ "_begin_const(&this);"); 99 } 100 101 T* end() 102 { 103 mixin("return ImVector_" ~ N ~ "_end(&this);"); 104 } 105 106 const(T*) endConst() 107 { 108 mixin("return ImVector_" ~ N ~ "_end_const(&this);"); 109 } 110 111 T* front() 112 { 113 mixin("return ImVector_" ~ N ~ "_front(&this);"); 114 } 115 116 const(T*) frontConst() 117 { 118 mixin("return ImVector_" ~ N ~ "_front_const(&this);"); 119 } 120 121 T* back() 122 { 123 mixin("return ImVector_" ~ N ~ "_back(&this);"); 124 } 125 126 const(T*) backConst() 127 { 128 mixin("return ImVector_" ~ N ~ "_back_const(&this);"); 129 } 130 131 void swap(ImVector!(T, N) rhs) 132 { 133 mixin("ImVector_" ~ N ~ "_swap(&this, rhs);"); 134 } 135 136 int growCapacity(int sz) 137 { 138 mixin("return ImVector_" ~ N ~ "__grow_capacity(&this, sz);"); 139 } 140 141 void resize(int newSize) 142 { 143 mixin("ImVector_" ~ N ~ "_resize(&this, newSize);"); 144 } 145 146 void resizeT(int newSize, const T v) 147 { 148 mixin("ImVector_" ~ N ~ "_resizeT(&this, newSize, v);"); 149 } 150 151 void reserve(int newCapacity) 152 { 153 mixin("ImVector_" ~ N ~ "_reserve(&this, newCapacity);"); 154 } 155 156 void pushBack(const T v) 157 { 158 mixin("ImVector_" ~ N ~ "_push_back(&this, v);"); 159 } 160 161 void popBack() 162 { 163 mixin("ImVector_" ~ N ~ "_pop_back(&this);"); 164 } 165 166 void pushFront(const T v) 167 { 168 mixin("ImVector_" ~ N ~ "_push_front(&this, v);"); 169 } 170 171 T* erase(const T* it) 172 { 173 mixin("return ImVector_" ~ N ~ "_erase(&this, it);"); 174 } 175 176 T* eraseTPtr(const T* it, const T* itLast) 177 { 178 mixin("return ImVector_" ~ N ~ "_eraseTPtr(&this, it, itLast);"); 179 } 180 181 T* eraseUnsorted(const T* it) 182 { 183 mixin("return ImVector_" ~ N ~ "_erase_unsorted(&this, it);"); 184 } 185 186 T* insert(const T* it, const T v) 187 { 188 mixin("return ImVector_" ~ N ~ "_insert(&this, it, v);"); 189 } 190 191 static if(N == "float" || N == "ImWchar" || N == "char" || N == "int") 192 { 193 bool contains(const T v) 194 { 195 mixin("return ImVector_" ~ N ~ "_contains(&this, v);"); 196 } 197 } 198 199 int indexFromPtr(const T* it) 200 { 201 mixin("return ImVector_" ~ N ~ "_index_from_ptr(&this, it);"); 202 } 203 } 204 205 alias ImVector_float = ImVector!(float, "float"); 206 alias ImVector_ImWchar = ImVector!(ImWchar, "ImWchar"); 207 alias ImVector_ImFontConfig = ImVector!(ImFontConfig, "ImFontConfig"); 208 alias ImVector_ImFontGlyph = ImVector!(ImFontGlyph, "ImFontGlyph"); 209 alias ImVector_TextRange = ImVector!(TextRange, "TextRange"); 210 alias ImVector_CustomRect = ImVector!(CustomRect, "CustomRect"); 211 alias ImVector_ImDrawChannel = ImVector!(ImDrawChannel, "ImDrawChannel"); 212 alias ImVector_char = ImVector!(char, "char"); 213 alias ImVector_ImTextureID = ImVector!(ImTextureID, "ImTextureID"); 214 alias ImVector_ImDrawVert = ImVector!(ImDrawVert, "ImDrawVert"); 215 alias ImVector_int = ImVector!(int, "int"); 216 alias ImVector_Pair = ImVector!(Pair, "Pair"); 217 alias ImVector_ImFontPtr = ImVector!(ImFont*, "ImFontPtr"); 218 alias ImVector_ImVec4 = ImVector!(ImVec4, "ImVec4"); 219 alias ImVector_ImDrawCmd = ImVector!(ImDrawCmd, "ImDrawCmd"); 220 alias ImVector_ImDrawIdx = ImVector!(ImDrawIdx, "ImDrawIdx"); 221 alias ImVector_ImVec2 = ImVector!(ImVec2, "ImVec2"); 222 223 /*struct ImVector_float { int size; int capacity; float* data; } 224 struct ImVector_ImWchar { int size; int capacity; ImWchar* data; } 225 struct ImVector_ImFontConfig { int size; int capacity; ImFontConfig* data; } 226 struct ImVector_ImFontGlyph { int size; int capacity; ImFontGlyph* data; } 227 struct ImVector_TextRange { int size; int capacity; TextRange* data; } 228 struct ImVector_CustomRect { int size; int capacity; CustomRect* data; } 229 struct ImVector_ImDrawChannel { int size; int capacity; ImDrawChannel* data; } 230 struct ImVector_char { int size; int capacity; char* data; } 231 struct ImVector_ImTextureID { int size; int capacity; ImTextureID* data; } 232 struct ImVector_ImDrawVert { int size; int capacity; ImDrawVert* data; } 233 struct ImVector_int { int size; int capacity; int* data; } 234 struct ImVector_Pair { int size; int capacity; Pair* data; } 235 struct ImVector_ImFontPtr { int size; int capacity; ImFont** data; } 236 struct ImVector_ImVec4 { int size; int capacity; ImVec4* data; } 237 struct ImVector_ImDrawCmd { int size; int capacity; ImDrawCmd* data; } 238 struct ImVector_ImDrawIdx { int size; int capacity; ImDrawIdx* data; } 239 struct ImVector_ImVec2 { int size; int capacity; ImVec2* data; }*/ 240 241 struct ImVec2 { float x, y; } 242 struct ImVec4 { float x, y, z, w; } 243 244 enum 245 { 246 ImGuiWindowFlags_None = 0, 247 ImGuiWindowFlags_NoTitleBar = 1 << 0, 248 ImGuiWindowFlags_NoResize = 1 << 1, 249 ImGuiWindowFlags_NoMove = 1 << 2, 250 ImGuiWindowFlags_NoScrollbar = 1 << 3, 251 ImGuiWindowFlags_NoScrollWithMouse = 1 << 4, 252 ImGuiWindowFlags_NoCollapse = 1 << 5, 253 ImGuiWindowFlags_AlwaysAutoResize = 1 << 6, 254 ImGuiWindowFlags_NoBackground = 1 << 7, 255 ImGuiWindowFlags_NoSavedSettings = 1 << 8, 256 ImGuiWindowFlags_NoMouseInputs = 1 << 9, 257 ImGuiWindowFlags_MenuBar = 1 << 10, 258 ImGuiWindowFlags_HorizontalScrollbar = 1 << 11, 259 ImGuiWindowFlags_NoFocusOnAppearing = 1 << 12, 260 ImGuiWindowFlags_NoBringToFrontOnFocus = 1 << 13, 261 ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 << 14, 262 ImGuiWindowFlags_AlwaysHorizontalScrollbar=1<< 15, 263 ImGuiWindowFlags_AlwaysUseWindowPadding = 1 << 16, 264 ImGuiWindowFlags_NoNavInputs = 1 << 18, 265 ImGuiWindowFlags_NoNavFocus = 1 << 19, 266 ImGuiWindowFlags_UnsavedDocument = 1 << 20, 267 ImGuiWindowFlags_NoNav = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus, 268 ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse, 269 ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus, 270 ImGuiWindowFlags_NavFlattened = 1 << 23, 271 ImGuiWindowFlags_ChildWindow = 1 << 24, 272 ImGuiWindowFlags_Tooltip = 1 << 25, 273 ImGuiWindowFlags_Popup = 1 << 26, 274 ImGuiWindowFlags_Modal = 1 << 27, 275 ImGuiWindowFlags_ChildMenu = 1 << 28 276 } 277 278 enum 279 { 280 ImGuiInputTextFlags_None = 0, 281 ImGuiInputTextFlags_CharsDecimal = 1 << 0, 282 ImGuiInputTextFlags_CharsHexadecimal = 1 << 1, 283 ImGuiInputTextFlags_CharsUppercase = 1 << 2, 284 ImGuiInputTextFlags_CharsNoBlank = 1 << 3, 285 ImGuiInputTextFlags_AutoSelectAll = 1 << 4, 286 ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5, 287 ImGuiInputTextFlags_CallbackCompletion = 1 << 6, 288 ImGuiInputTextFlags_CallbackHistory = 1 << 7, 289 ImGuiInputTextFlags_CallbackAlways = 1 << 8, 290 ImGuiInputTextFlags_CallbackCharFilter = 1 << 9, 291 ImGuiInputTextFlags_AllowTabInput = 1 << 10, 292 ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11, 293 ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12, 294 ImGuiInputTextFlags_AlwaysInsertMode = 1 << 13, 295 ImGuiInputTextFlags_ReadOnly = 1 << 14, 296 ImGuiInputTextFlags_Password = 1 << 15, 297 ImGuiInputTextFlags_NoUndoRedo = 1 << 16, 298 ImGuiInputTextFlags_CharsScientific = 1 << 17, 299 ImGuiInputTextFlags_CallbackResize = 1 << 18, 300 ImGuiInputTextFlags_Multiline = 1 << 20 301 } 302 303 enum 304 { 305 ImGuiTreeNodeFlags_None = 0, 306 ImGuiTreeNodeFlags_Selected = 1 << 0, 307 ImGuiTreeNodeFlags_Framed = 1 << 1, 308 ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2, 309 ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3, 310 ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4, 311 ImGuiTreeNodeFlags_DefaultOpen = 1 << 5, 312 ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6, 313 ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7, 314 ImGuiTreeNodeFlags_Leaf = 1 << 8, 315 ImGuiTreeNodeFlags_Bullet = 1 << 9, 316 ImGuiTreeNodeFlags_FramePadding = 1 << 10, 317 ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13, 318 ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog 319 } 320 321 enum 322 { 323 ImGuiSelectableFlags_None = 0, 324 ImGuiSelectableFlags_DontClosePopups = 1 << 0, 325 ImGuiSelectableFlags_SpanAllColumns = 1 << 1, 326 ImGuiSelectableFlags_AllowDoubleClick = 1 << 2, 327 ImGuiSelectableFlags_Disabled = 1 << 3 328 } 329 330 enum 331 { 332 ImGuiComboFlags_None = 0, 333 ImGuiComboFlags_PopupAlignLeft = 1 << 0, 334 ImGuiComboFlags_HeightSmall = 1 << 1, 335 ImGuiComboFlags_HeightRegular = 1 << 2, 336 ImGuiComboFlags_HeightLarge = 1 << 3, 337 ImGuiComboFlags_HeightLargest = 1 << 4, 338 ImGuiComboFlags_NoArrowButton = 1 << 5, 339 ImGuiComboFlags_NoPreview = 1 << 6, 340 ImGuiComboFlags_HeightMask_ = ImGuiComboFlags_HeightSmall | ImGuiComboFlags_HeightRegular | ImGuiComboFlags_HeightLarge | ImGuiComboFlags_HeightLargest 341 } 342 343 enum 344 { 345 ImGuiTabBarFlags_None = 0, 346 ImGuiTabBarFlags_Reorderable = 1 << 0, 347 ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1, 348 ImGuiTabBarFlags_TabListPopupButton = 1 << 2, 349 ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3, 350 ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4, 351 ImGuiTabBarFlags_NoTooltip = 1 << 5, 352 ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6, 353 ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7, 354 ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll, 355 ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown 356 } 357 358 enum 359 { 360 ImGuiTabItemFlags_None = 0, 361 ImGuiTabItemFlags_UnsavedDocument = 1 << 0, 362 ImGuiTabItemFlags_SetSelected = 1 << 1, 363 ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2, 364 ImGuiTabItemFlags_NoPushId = 1 << 3 365 } 366 367 enum 368 { 369 ImGuiFocusedFlags_None = 0, 370 ImGuiFocusedFlags_ChildWindows = 1 << 0, 371 ImGuiFocusedFlags_RootWindow = 1 << 1, 372 ImGuiFocusedFlags_AnyWindow = 1 << 2, 373 ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows 374 } 375 376 enum 377 { 378 ImGuiHoveredFlags_None = 0, 379 ImGuiHoveredFlags_ChildWindows = 1 << 0, 380 ImGuiHoveredFlags_RootWindow = 1 << 1, 381 ImGuiHoveredFlags_AnyWindow = 1 << 2, 382 ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 3, 383 ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 5, 384 ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 6, 385 ImGuiHoveredFlags_AllowWhenDisabled = 1 << 7, 386 ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped, 387 ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows 388 } 389 390 enum 391 { 392 ImGuiDragDropFlags_None = 0, 393 ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0, 394 ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1, 395 ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2, 396 ImGuiDragDropFlags_SourceAllowNullID = 1 << 3, 397 ImGuiDragDropFlags_SourceExtern = 1 << 4, 398 ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5, 399 ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10, 400 ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11, 401 ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12, 402 ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect 403 } 404 405 enum 406 { 407 ImGuiDataType_S8, 408 ImGuiDataType_U8, 409 ImGuiDataType_S16, 410 ImGuiDataType_U16, 411 ImGuiDataType_S32, 412 ImGuiDataType_U32, 413 ImGuiDataType_S64, 414 ImGuiDataType_U64, 415 ImGuiDataType_Float, 416 ImGuiDataType_Double, 417 ImGuiDataType_COUNT 418 } 419 420 enum 421 { 422 ImGuiDir_None = -1, 423 ImGuiDir_Left = 0, 424 ImGuiDir_Right = 1, 425 ImGuiDir_Up = 2, 426 ImGuiDir_Down = 3, 427 ImGuiDir_COUNT 428 } 429 430 enum 431 { 432 ImGuiKey_Tab, 433 ImGuiKey_LeftArrow, 434 ImGuiKey_RightArrow, 435 ImGuiKey_UpArrow, 436 ImGuiKey_DownArrow, 437 ImGuiKey_PageUp, 438 ImGuiKey_PageDown, 439 ImGuiKey_Home, 440 ImGuiKey_End, 441 ImGuiKey_Insert, 442 ImGuiKey_Delete, 443 ImGuiKey_Backspace, 444 ImGuiKey_Space, 445 ImGuiKey_Enter, 446 ImGuiKey_Escape, 447 ImGuiKey_A, 448 ImGuiKey_C, 449 ImGuiKey_V, 450 ImGuiKey_X, 451 ImGuiKey_Y, 452 ImGuiKey_Z, 453 ImGuiKey_COUNT 454 } 455 456 enum 457 { 458 ImGuiNavInput_Activate, 459 ImGuiNavInput_Cancel, 460 ImGuiNavInput_Input, 461 ImGuiNavInput_Menu, 462 ImGuiNavInput_DpadLeft, 463 ImGuiNavInput_DpadRight, 464 ImGuiNavInput_DpadUp, 465 ImGuiNavInput_DpadDown, 466 ImGuiNavInput_LStickLeft, 467 ImGuiNavInput_LStickRight, 468 ImGuiNavInput_LStickUp, 469 ImGuiNavInput_LStickDown, 470 ImGuiNavInput_FocusPrev, 471 ImGuiNavInput_FocusNext, 472 ImGuiNavInput_TweakSlow, 473 ImGuiNavInput_TweakFast, 474 ImGuiNavInput_KeyMenu_, 475 ImGuiNavInput_KeyTab_, 476 ImGuiNavInput_KeyLeft_, 477 ImGuiNavInput_KeyRight_, 478 ImGuiNavInput_KeyUp_, 479 ImGuiNavInput_KeyDown_, 480 ImGuiNavInput_COUNT, 481 ImGuiNavInput_InternalStart_ = ImGuiNavInput_KeyMenu_ 482 } 483 484 enum 485 { 486 ImGuiConfigFlags_None = 0, 487 ImGuiConfigFlags_NavEnableKeyboard = 1 << 0, 488 ImGuiConfigFlags_NavEnableGamepad = 1 << 1, 489 ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2, 490 ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3, 491 ImGuiConfigFlags_NoMouse = 1 << 4, 492 ImGuiConfigFlags_NoMouseCursorChange = 1 << 5, 493 ImGuiConfigFlags_IsSRGB = 1 << 20, 494 ImGuiConfigFlags_IsTouchScreen = 1 << 21 495 } 496 497 enum 498 { 499 ImGuiBackendFlags_None = 0, 500 ImGuiBackendFlags_HasGamepad = 1 << 0, 501 ImGuiBackendFlags_HasMouseCursors = 1 << 1, 502 ImGuiBackendFlags_HasSetMousePos = 1 << 2 503 } 504 505 enum 506 { 507 ImGuiCol_Text, 508 ImGuiCol_TextDisabled, 509 ImGuiCol_WindowBg, 510 ImGuiCol_ChildBg, 511 ImGuiCol_PopupBg, 512 ImGuiCol_Border, 513 ImGuiCol_BorderShadow, 514 ImGuiCol_FrameBg, 515 ImGuiCol_FrameBgHovered, 516 ImGuiCol_FrameBgActive, 517 ImGuiCol_TitleBg, 518 ImGuiCol_TitleBgActive, 519 ImGuiCol_TitleBgCollapsed, 520 ImGuiCol_MenuBarBg, 521 ImGuiCol_ScrollbarBg, 522 ImGuiCol_ScrollbarGrab, 523 ImGuiCol_ScrollbarGrabHovered, 524 ImGuiCol_ScrollbarGrabActive, 525 ImGuiCol_CheckMark, 526 ImGuiCol_SliderGrab, 527 ImGuiCol_SliderGrabActive, 528 ImGuiCol_Button, 529 ImGuiCol_ButtonHovered, 530 ImGuiCol_ButtonActive, 531 ImGuiCol_Header, 532 ImGuiCol_HeaderHovered, 533 ImGuiCol_HeaderActive, 534 ImGuiCol_Separator, 535 ImGuiCol_SeparatorHovered, 536 ImGuiCol_SeparatorActive, 537 ImGuiCol_ResizeGrip, 538 ImGuiCol_ResizeGripHovered, 539 ImGuiCol_ResizeGripActive, 540 ImGuiCol_Tab, 541 ImGuiCol_TabHovered, 542 ImGuiCol_TabActive, 543 ImGuiCol_TabUnfocused, 544 ImGuiCol_TabUnfocusedActive, 545 ImGuiCol_PlotLines, 546 ImGuiCol_PlotLinesHovered, 547 ImGuiCol_PlotHistogram, 548 ImGuiCol_PlotHistogramHovered, 549 ImGuiCol_TextSelectedBg, 550 ImGuiCol_DragDropTarget, 551 ImGuiCol_NavHighlight, 552 ImGuiCol_NavWindowingHighlight, 553 ImGuiCol_NavWindowingDimBg, 554 ImGuiCol_ModalWindowDimBg, 555 ImGuiCol_COUNT 556 } 557 558 enum 559 { 560 ImGuiStyleVar_Alpha, 561 ImGuiStyleVar_WindowPadding, 562 ImGuiStyleVar_WindowRounding, 563 ImGuiStyleVar_WindowBorderSize, 564 ImGuiStyleVar_WindowMinSize, 565 ImGuiStyleVar_WindowTitleAlign, 566 ImGuiStyleVar_ChildRounding, 567 ImGuiStyleVar_ChildBorderSize, 568 ImGuiStyleVar_PopupRounding, 569 ImGuiStyleVar_PopupBorderSize, 570 ImGuiStyleVar_FramePadding, 571 ImGuiStyleVar_FrameRounding, 572 ImGuiStyleVar_FrameBorderSize, 573 ImGuiStyleVar_ItemSpacing, 574 ImGuiStyleVar_ItemInnerSpacing, 575 ImGuiStyleVar_IndentSpacing, 576 ImGuiStyleVar_ScrollbarSize, 577 ImGuiStyleVar_ScrollbarRounding, 578 ImGuiStyleVar_GrabMinSize, 579 ImGuiStyleVar_GrabRounding, 580 ImGuiStyleVar_TabRounding, 581 ImGuiStyleVar_ButtonTextAlign, 582 ImGuiStyleVar_SelectableTextAlign, 583 ImGuiStyleVar_COUNT 584 } 585 586 enum 587 { 588 ImGuiColorEditFlags_None = 0, 589 ImGuiColorEditFlags_NoAlpha = 1 << 1, 590 ImGuiColorEditFlags_NoPicker = 1 << 2, 591 ImGuiColorEditFlags_NoOptions = 1 << 3, 592 ImGuiColorEditFlags_NoSmallPreview = 1 << 4, 593 ImGuiColorEditFlags_NoInputs = 1 << 5, 594 ImGuiColorEditFlags_NoTooltip = 1 << 6, 595 ImGuiColorEditFlags_NoLabel = 1 << 7, 596 ImGuiColorEditFlags_NoSidePreview = 1 << 8, 597 ImGuiColorEditFlags_NoDragDrop = 1 << 9, 598 ImGuiColorEditFlags_AlphaBar = 1 << 16, 599 ImGuiColorEditFlags_AlphaPreview = 1 << 17, 600 ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18, 601 ImGuiColorEditFlags_HDR = 1 << 19, 602 ImGuiColorEditFlags_DisplayRGB = 1 << 20, 603 ImGuiColorEditFlags_DisplayHSV = 1 << 21, 604 ImGuiColorEditFlags_DisplayHex = 1 << 22, 605 ImGuiColorEditFlags_Uint8 = 1 << 23, 606 ImGuiColorEditFlags_Float = 1 << 24, 607 ImGuiColorEditFlags_PickerHueBar = 1 << 25, 608 ImGuiColorEditFlags_PickerHueWheel = 1 << 26, 609 ImGuiColorEditFlags_InputRGB = 1 << 27, 610 ImGuiColorEditFlags_InputHSV = 1 << 28, 611 ImGuiColorEditFlags__OptionsDefault = ImGuiColorEditFlags_Uint8|ImGuiColorEditFlags_DisplayRGB|ImGuiColorEditFlags_InputRGB|ImGuiColorEditFlags_PickerHueBar, 612 ImGuiColorEditFlags__DisplayMask = ImGuiColorEditFlags_DisplayRGB|ImGuiColorEditFlags_DisplayHSV|ImGuiColorEditFlags_DisplayHex, 613 ImGuiColorEditFlags__DataTypeMask = ImGuiColorEditFlags_Uint8|ImGuiColorEditFlags_Float, 614 ImGuiColorEditFlags__PickerMask = ImGuiColorEditFlags_PickerHueWheel|ImGuiColorEditFlags_PickerHueBar, 615 ImGuiColorEditFlags__InputMask = ImGuiColorEditFlags_InputRGB|ImGuiColorEditFlags_InputHSV 616 } 617 618 enum 619 { 620 ImGuiMouseCursor_None = -1, 621 ImGuiMouseCursor_Arrow = 0, 622 ImGuiMouseCursor_TextInput, 623 ImGuiMouseCursor_ResizeAll, 624 ImGuiMouseCursor_ResizeNS, 625 ImGuiMouseCursor_ResizeEW, 626 ImGuiMouseCursor_ResizeNESW, 627 ImGuiMouseCursor_ResizeNWSE, 628 ImGuiMouseCursor_Hand, 629 ImGuiMouseCursor_COUNT 630 } 631 632 enum 633 { 634 ImGuiCond_Always = 1 << 0, 635 ImGuiCond_Once = 1 << 1, 636 ImGuiCond_FirstUseEver = 1 << 2, 637 ImGuiCond_Appearing = 1 << 3 638 } 639 640 struct ImGuiStyle 641 { 642 float alpha; 643 ImVec2 windowPadding; 644 float windowRounding; 645 float windowBorderSize; 646 ImVec2 windowMinSize; 647 ImVec2 windowTitleAlign; 648 float childRounding; 649 float childBorderSize; 650 ImVec2 framePadding; 651 float frameRounding; 652 float frameBorderSize; 653 ImVec2 itemSpacing; 654 ImVec2 itemInnerSpacing; 655 ImVec2 touchExtraPadding; 656 float indentSpacing; 657 float columnsMinSpacing; 658 float scrollbarSize; 659 float scrollbarRounding; 660 float grabMinSize; 661 float grabRounding; 662 float tabRounding; 663 float tabBorderSize; 664 ImVec2 buttonTextAlign; 665 ImVec2 selectableTextAlign; 666 ImVec2 displayWindowPadding; 667 ImVec2 displaySafeAreaPadding; 668 float mouseCursorScale; 669 bool antiAliasedLines; 670 bool antiAliasedFill; 671 float curveTessellationTol; 672 ImVec4[ImGuiCol_COUNT] colors; 673 674 void scaleAllSizes(float scaleFactor) { ImGuiStyle_ScaleAllSizes(&this, scaleFactor); } 675 } 676 677 struct ImGuiIO 678 { 679 ImGuiConfigFlags ConfigFlags; 680 ImGuiBackendFlags BackendFlags; 681 ImVec2 DisplaySize; 682 float DeltaTime; 683 float IniSavingRate; 684 const char* IniFilename; 685 const char* LogFilename; 686 float MouseDoubleClickTime; 687 float MouseDoubleClickMaxDist; 688 float MouseDragThreshold; 689 int[ImGuiKey_COUNT] KeyMap; 690 float KeyRepeatDelay; 691 float KeyRepeatRate; 692 void* UserData; 693 ImFontAtlas* Fonts; 694 float FontGlobalScale; 695 bool FontAllowUserScaling; 696 ImFont* FontDefault; 697 ImVec2 DisplayFramebufferScale; 698 bool MouseDrawCursor; 699 bool ConfigMacOSXBehaviors; 700 bool ConfigInputTextCursorBlink; 701 bool ConfigWindowsResizeFromEdges; 702 bool ConfigWindowsMoveFromTitleBarOnly; 703 const char* BackendPlatformName; 704 const char* BackendRendererName; 705 void* BackendPlatformUserData; 706 void* BackendRendererUserData; 707 void* BackendLanguageUserData; 708 extern(C) nothrow 709 { 710 //const char* (*GetClipboardTextFn)(void* user_data); 711 alias da_getClipboardTextFn = const char* function(void* userdata); 712 da_getClipboardTextFn getClipboardTextFn; 713 //void (*SetClipboardTextFn)(void* user_data, const char* text); 714 alias da_setClipboardTextFn = void function(void* userData, const char* text); 715 da_setClipboardTextFn setClipboardTextFn; 716 void* ClipboardUserData; 717 //void (*ImeSetInputScreenPosFn)(int x, int y); 718 alias da_imeSetInputScreenPosFn = void function(int x, int y); 719 da_imeSetInputScreenPosFn imeSetInputScreenPosFn; 720 } 721 void* ImeWindowHandle; 722 void* RenderDrawListsFnUnused; 723 ImVec2 MousePos; 724 bool[5] MouseDown; 725 float MouseWheel; 726 float MouseWheelH; 727 bool KeyCtrl; 728 bool KeyShift; 729 bool KeyAlt; 730 bool KeySuper; 731 bool[512] KeysDown; 732 float[ImGuiNavInput_COUNT] NavInputs; 733 bool WantCaptureMouse; 734 bool WantCaptureKeyboard; 735 bool WantTextInput; 736 bool WantSetMousePos; 737 bool WantSaveIniSettings; 738 bool NavActive; 739 bool NavVisible; 740 float Framerate; 741 int MetricsRenderVertices; 742 int MetricsRenderIndices; 743 int MetricsRenderWindows; 744 int MetricsActiveWindows; 745 int MetricsActiveAllocations; 746 ImVec2 MouseDelta; 747 ImVec2 MousePosPrev; 748 ImVec2[5] MouseClickedPos; 749 double[5] MouseClickedTime; 750 bool[5] MouseClicked; 751 bool[5] MouseDoubleClicked; 752 bool[5] MouseReleased; 753 bool[5] MouseDownOwned; 754 bool[5] MouseDownWasDoubleClick; 755 float[5] MouseDownDuration; 756 float[5] MouseDownDurationPrev; 757 ImVec2[5] MouseDragMaxDistanceAbs; 758 float[5] MouseDragMaxDistanceSqr; 759 float[512] KeysDownDuration; 760 float[512] KeysDownDurationPrev; 761 float[ImGuiNavInput_COUNT] NavInputsDownDuration; 762 float[ImGuiNavInput_COUNT] NavInputsDownDurationPrev; 763 ImVector_ImWchar InputQueueCharacters; 764 765 void addInputCharacter(ImWchar c) { ImGuiIO_AddInputCharacter(&this, c); } 766 void addInputCharactersUTF8(const char* str) { ImGuiIO_AddInputCharactersUTF8(&this, str); } 767 void addInputCharactersUTF8(string str) 768 { 769 import std.string : toStringz; 770 addInputCharactersUTF8(str.toStringz); 771 } 772 } 773 774 struct ImGuiInputTextCallbackData 775 { 776 ImGuiInputTextFlags EventFlag; 777 ImGuiInputTextFlags Flags; 778 void* UserData; 779 ImWchar EventChar; 780 ImGuiKey EventKey; 781 char* Buf; 782 int BufTextLen; 783 int BufSize; 784 bool BufDirty; 785 int CursorPos; 786 int SelectionStart; 787 int SelectionEnd; 788 } 789 790 struct ImGuiSizeCallbackData 791 { 792 void* UserData; 793 ImVec2 Pos; 794 ImVec2 CurrentSize; 795 ImVec2 DesiredSize; 796 } 797 798 struct ImGuiPayload 799 { 800 void* Data; 801 int DataSize; 802 ImGuiID SourceId; 803 ImGuiID SourceParentId; 804 int DataFrameCount; 805 char[32+1] DataType; 806 bool Preview; 807 bool Delivery; 808 } 809 810 struct ImGuiOnceUponAFrame 811 { 812 int RefFrame; 813 } 814 815 struct ImGuiTextFilter 816 { 817 char[256] InputBuf; 818 ImVector_TextRange Filters; 819 int CountGrep; 820 } 821 822 struct ImGuiTextBuffer 823 { 824 ImVector_char Buf; 825 } 826 827 struct ImGuiStorage 828 { 829 ImVector_Pair Data; 830 } 831 832 struct ImGuiListClipper 833 { 834 float StartPosY; 835 float ItemsHeight; 836 int ItemsCount, StepNo, DisplayStart, DisplayEnd; 837 } 838 839 struct ImColor 840 { 841 ImVec4 Value; 842 } 843 844 struct ImDrawCmd 845 { 846 uint ElemCount; 847 ImVec4 ClipRect; 848 ImTextureID TextureId; 849 ImDrawCallback UserCallback; 850 void* UserCallbackData; 851 } 852 853 struct ImDrawVert 854 { 855 ImVec2 pos; 856 ImVec2 uv; 857 ImU32 col; 858 } 859 860 struct ImDrawChannel 861 { 862 ImVector_ImDrawCmd CmdBuffer; 863 ImVector_ImDrawIdx IdxBuffer; 864 } 865 866 enum 867 { 868 ImDrawCornerFlags_TopLeft = 1 << 0, 869 ImDrawCornerFlags_TopRight = 1 << 1, 870 ImDrawCornerFlags_BotLeft = 1 << 2, 871 ImDrawCornerFlags_BotRight = 1 << 3, 872 ImDrawCornerFlags_Top = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_TopRight, 873 ImDrawCornerFlags_Bot = ImDrawCornerFlags_BotLeft | ImDrawCornerFlags_BotRight, 874 ImDrawCornerFlags_Left = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft, 875 ImDrawCornerFlags_Right = ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight, 876 ImDrawCornerFlags_All = 0xF 877 } 878 879 enum 880 { 881 ImDrawListFlags_None = 0, 882 ImDrawListFlags_AntiAliasedLines = 1 << 0, 883 ImDrawListFlags_AntiAliasedFill = 1 << 1 884 } 885 886 struct ImDrawList 887 { 888 ImVector_ImDrawCmd CmdBuffer; 889 ImVector_ImDrawIdx IdxBuffer; 890 ImVector_ImDrawVert VtxBuffer; 891 ImDrawListFlags Flags; 892 const ImDrawListSharedData* _Data; 893 const char* _OwnerName; 894 uint _VtxCurrentIdx; 895 ImDrawVert* _VtxWritePtr; 896 ImDrawIdx* _IdxWritePtr; 897 ImVector_ImVec4 _ClipRectStack; 898 ImVector_ImTextureID _TextureIdStack; 899 ImVector_ImVec2 _Path; 900 int _ChannelsCurrent; 901 int _ChannelsCount; 902 ImVector_ImDrawChannel _Channels; 903 } 904 905 struct ImDrawData 906 { 907 bool Valid; 908 ImDrawList** CmdLists; 909 int CmdListsCount; 910 int TotalIdxCount; 911 int TotalVtxCount; 912 ImVec2 DisplayPos; 913 ImVec2 DisplaySize; 914 ImVec2 FramebufferScale; 915 } 916 917 struct ImFontConfig 918 { 919 void* FontData; 920 int FontDataSize; 921 bool FontDataOwnedByAtlas; 922 int FontNo; 923 float SizePixels; 924 int OversampleH; 925 int OversampleV; 926 bool PixelSnapH; 927 ImVec2 GlyphExtraSpacing; 928 ImVec2 GlyphOffset; 929 const ImWchar* GlyphRanges; 930 float GlyphMinAdvanceX; 931 float GlyphMaxAdvanceX; 932 bool MergeMode; 933 uint RasterizerFlags; 934 float RasterizerMultiply; 935 char[40] Name; 936 ImFont* DstFont; 937 } 938 939 struct ImFontGlyph 940 { 941 ImWchar Codepoint; 942 float AdvanceX; 943 float X0, Y0, X1, Y1; 944 float U0, V0, U1, V1; 945 } 946 947 struct ImFontGlyphRangesBuilder 948 { 949 ImVector_int UsedChars; 950 } 951 952 enum 953 { 954 ImFontAtlasFlags_None = 0, 955 ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0, 956 ImFontAtlasFlags_NoMouseCursors = 1 << 1 957 } 958 959 struct ImFontAtlas 960 { 961 bool Locked; 962 ImFontAtlasFlags Flags; 963 ImTextureID TexID; 964 int TexDesiredWidth; 965 int TexGlyphPadding; 966 ubyte* TexPixelsAlpha8; 967 uint* TexPixelsRGBA32; 968 int TexWidth; 969 int TexHeight; 970 ImVec2 TexUvScale; 971 ImVec2 TexUvWhitePixel; 972 ImVector_ImFontPtr Fonts; 973 ImVector_CustomRect CustomRects; 974 ImVector_ImFontConfig ConfigData; 975 int[1] CustomRectIds; 976 } 977 978 struct ImFont 979 { 980 ImVector_float IndexAdvanceX; 981 float FallbackAdvanceX; 982 float FontSize; 983 ImVector_ImWchar IndexLookup; 984 ImVector_ImFontGlyph Glyphs; 985 const ImFontGlyph* FallbackGlyph; 986 ImVec2 DisplayOffset; 987 ImFontAtlas* ContainerAtlas; 988 const ImFontConfig* ConfigData; 989 short ConfigDataCount; 990 ImWchar FallbackChar; 991 float Scale; 992 float Ascent, Descent; 993 int MetricsTotalSurface; 994 bool DirtyLookupTables; 995 } 996 997 struct TextRange 998 { 999 const char* b; 1000 const char* e; 1001 } 1002 1003 struct Pair 1004 { 1005 ImGuiID key; 1006 union { int val_i; float val_f; void* val_p; }; 1007 } 1008 1009 struct CustomRect 1010 { 1011 uint ID; 1012 ushort Width, Height; 1013 ushort X, Y; 1014 float GlyphAdvanceX; 1015 ImVec2 GlyphOffset; 1016 ImFont* Font; 1017 }