1734struct KarmaGuiContext
1737 bool FontAtlasOwnedByContext;
1743 KarmaGuiConfigFlags ConfigFlagsCurrFrame;
1744 KarmaGuiConfigFlags ConfigFlagsLastFrame;
1751 int FrameCountEnded;
1752 int FrameCountPlatformEnded;
1753 int FrameCountRendered;
1754 bool WithinFrameScope;
1755 bool WithinFrameScopeWithImplicitWindow;
1756 bool WithinEndChild;
1758 bool TestEngineHookItems;
1767 int WindowsActiveCount;
1768 KGVec2 WindowsHoverPadding;
1774 KGVec2 WheelingWindowRefMousePos;
1775 int WheelingWindowStartFrame;
1776 float WheelingWindowReleaseTimer;
1777 KGVec2 WheelingWindowWheelRemainder;
1781 KGGuiID DebugHookIdInfo;
1783 KGGuiID HoveredIdPreviousFrame;
1784 bool HoveredIdAllowOverlap;
1785 bool HoveredIdDisabled;
1786 float HoveredIdTimer;
1787 float HoveredIdNotActiveTimer;
1789 KGGuiID ActiveIdIsAlive;
1790 float ActiveIdTimer;
1791 bool ActiveIdIsJustActivated;
1792 bool ActiveIdAllowOverlap;
1793 bool ActiveIdNoClearOnFocusLoss;
1794 bool ActiveIdHasBeenPressedBefore;
1795 bool ActiveIdHasBeenEditedBefore;
1796 bool ActiveIdHasBeenEditedThisFrame;
1797 KGVec2 ActiveIdClickOffset;
1799 KGGuiInputSource ActiveIdSource;
1800 int ActiveIdMouseButton;
1801 KGGuiID ActiveIdPreviousFrame;
1802 bool ActiveIdPreviousFrameIsAlive;
1803 bool ActiveIdPreviousFrameHasBeenEditedBefore;
1805 KGGuiID LastActiveId;
1806 float LastActiveIdTimer;
1814 KGU32 ActiveIdUsingNavDirMask;
1815 bool ActiveIdUsingAllKeyboardKeys;
1816#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
1817 KGU32 ActiveIdUsingNavInputMask;
1821 KGGuiID CurrentFocusScopeId;
1822 KGGuiItemFlags CurrentItemFlags;
1823 KGGuiID DebugLocateId;
1841 float CurrentDpiScale;
1845 KGGuiID PlatformLastFocusedViewportId;
1847 int ViewportFrontMostStampCount;
1852 KGGuiID NavFocusScopeId;
1853 KGGuiID NavActivateId;
1854 KGGuiID NavActivateDownId;
1855 KGGuiID NavActivatePressedId;
1856 KGGuiID NavActivateInputId;
1857 KGGuiActivateFlags NavActivateFlags;
1858 KGGuiID NavJustMovedToId;
1859 KGGuiID NavJustMovedToFocusScopeId;
1860 KarmaGuiKeyChord NavJustMovedToKeyMods;
1861 KGGuiID NavNextActivateId;
1862 KGGuiActivateFlags NavNextActivateFlags;
1863 KGGuiInputSource NavInputSource;
1864 KGGuiNavLayer NavLayer;
1866 bool NavMousePosDirty;
1867 bool NavDisableHighlight;
1868 bool NavDisableMouseHover;
1872 bool NavInitRequest;
1873 bool NavInitRequestFromMove;
1874 KGGuiID NavInitResultId;
1875 KGRect NavInitResultRectRel;
1876 bool NavMoveSubmitted;
1877 bool NavMoveScoringItems;
1878 bool NavMoveForwardToNextFrame;
1879 KGGuiNavMoveFlags NavMoveFlags;
1880 KGGuiScrollFlags NavMoveScrollFlags;
1881 KarmaGuiKeyChord NavMoveKeyMods;
1882 KarmaGuiDir NavMoveDir;
1883 KarmaGuiDir NavMoveDirForDebug;
1884 KarmaGuiDir NavMoveClipDir;
1886 KGRect NavScoringNoClipRect;
1887 int NavScoringDebugCount;
1889 int NavTabbingCounter;
1896 KarmaGuiKeyChord ConfigNavWindowingKeyNext;
1897 KarmaGuiKeyChord ConfigNavWindowingKeyPrev;
1901 float NavWindowingTimer;
1902 float NavWindowingHighlightAlpha;
1903 bool NavWindowingToggleLayer;
1904 KGVec2 NavWindowingAccumDeltaPos;
1905 KGVec2 NavWindowingAccumDeltaSize;
1909 KarmaGuiMouseCursor MouseCursor;
1912 bool DragDropActive;
1913 bool DragDropWithinSource;
1914 bool DragDropWithinTarget;
1915 KarmaGuiDragDropFlags DragDropSourceFlags;
1916 int DragDropSourceFrameCount;
1917 int DragDropMouseButton;
1919 KGRect DragDropTargetRect;
1920 KGGuiID DragDropTargetId;
1921 KarmaGuiDragDropFlags DragDropAcceptFlags;
1922 float DragDropAcceptIdCurrRectSurface;
1923 KGGuiID DragDropAcceptIdCurr;
1924 KGGuiID DragDropAcceptIdPrev;
1925 int DragDropAcceptFrameCount;
1926 KGGuiID DragDropHoldJustPressedId;
1928 unsigned char DragDropPayloadBufLocal[16];
1931 int ClipperTempDataStacked;
1936 int TablesTempDataStacked;
1949 KGGuiID HoverDelayId;
1950 KGGuiID HoverDelayIdPreviousFrame;
1951 float HoverDelayTimer;
1952 float HoverDelayClearTimer;
1955 KGVec2 MouseLastValidPos;
1957 KGFont InputTextPasswordFont;
1958 KGGuiID TempInputId;
1959 KarmaGuiColorEditFlags ColorEditOptions;
1960 float ColorEditLastHue;
1961 float ColorEditLastSat;
1962 KGU32 ColorEditLastColor;
1965 float SliderGrabClickOffset;
1966 float SliderCurrentAccum;
1967 bool SliderCurrentAccumDirty;
1968 bool DragCurrentAccumDirty;
1969 float DragCurrentAccum;
1970 float DragSpeedDefaultRatio;
1971 float ScrollbarClickDeltaToGrabCenter;
1972 float DisabledAlphaBackup;
1973 short DisabledStackSize;
1974 short TooltipOverrideCount;
1981 KGGuiID PlatformImeViewport;
1982 char PlatformLocaleDecimalPoint;
1989 bool SettingsLoaded;
1990 float SettingsDirtyTimer;
1999 const char* LocalizationTable[ImGuiLocKey_COUNT];
2003 KGGuiLogType LogType;
2004 ImFileHandle LogFile;
2006 const char* LogNextPrefix;
2007 const char* LogNextSuffix;
2009 bool LogLineFirstItem;
2011 int LogDepthToExpand;
2012 int LogDepthToExpandDefault;
2015 KGGuiDebugLogFlags DebugLogFlags;
2018 KGU8 DebugLocateFrames;
2019 bool DebugItemPickerActive;
2020 KGU8 DebugItemPickerMouseButton;
2021 KGGuiID DebugItemPickerBreakId;
2027 float FramerateSecPerFrame[60];
2028 int FramerateSecPerFrameIdx;
2029 int FramerateSecPerFrameCount;
2030 float FramerateSecPerFrameAccum;
2031 int WantCaptureMouseNextFrame;
2032 int WantCaptureKeyboardNextFrame;
2033 int WantTextInputNextFrame;
2037 : InputTextState(
this)
2039 Initialized =
false;
2040 ConfigFlagsCurrFrame = ConfigFlagsLastFrame = KGGuiConfigFlags_None;
2041 FontAtlasOwnedByContext = shared_font_atlas ? false :
true;
2043 FontSize = FontBaseSize = 0.0f;
2044 IO.Fonts = shared_font_atlas ? shared_font_atlas : KG_NEW(
KGFontAtlas)();
2047 FrameCountEnded = FrameCountPlatformEnded = FrameCountRendered = -1;
2048 WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild =
false;
2049 GcCompactAll =
false;
2050 TestEngineHookItems =
false;
2053 WindowsActiveCount = 0;
2054 CurrentWindow = NULL;
2055 HoveredWindow = NULL;
2056 HoveredWindowUnderMovingWindow = NULL;
2057 MovingWindow = NULL;
2058 WheelingWindow = NULL;
2059 WheelingWindowStartFrame = -1;
2060 WheelingWindowReleaseTimer = 0.0f;
2062 DebugHookIdInfo = 0;
2063 HoveredId = HoveredIdPreviousFrame = 0;
2064 HoveredIdAllowOverlap =
false;
2065 HoveredIdDisabled =
false;
2066 HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;
2068 ActiveIdIsAlive = 0;
2069 ActiveIdTimer = 0.0f;
2070 ActiveIdIsJustActivated =
false;
2071 ActiveIdAllowOverlap =
false;
2072 ActiveIdNoClearOnFocusLoss =
false;
2073 ActiveIdHasBeenPressedBefore =
false;
2074 ActiveIdHasBeenEditedBefore =
false;
2075 ActiveIdHasBeenEditedThisFrame =
false;
2076 ActiveIdClickOffset =
KGVec2(-1, -1);
2077 ActiveIdWindow = NULL;
2078 ActiveIdSource = KGGuiInputSource_None;
2079 ActiveIdMouseButton = -1;
2080 ActiveIdPreviousFrame = 0;
2081 ActiveIdPreviousFrameIsAlive =
false;
2082 ActiveIdPreviousFrameHasBeenEditedBefore =
false;
2083 ActiveIdPreviousFrameWindow = NULL;
2085 LastActiveIdTimer = 0.0f;
2087 ActiveIdUsingNavDirMask = 0x00;
2088 ActiveIdUsingAllKeyboardKeys =
false;
2089#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
2090 ActiveIdUsingNavInputMask = 0x00;
2093 CurrentFocusScopeId = 0;
2094 CurrentItemFlags = KGGuiItemFlags_None;
2097 CurrentDpiScale = 0.0f;
2098 CurrentViewport = NULL;
2099 MouseViewport = MouseLastHoveredViewport = NULL;
2100 PlatformLastFocusedViewportId = 0;
2101 ViewportFrontMostStampCount = 0;
2104 NavId = NavFocusScopeId = NavActivateId = NavActivateDownId = NavActivatePressedId = NavActivateInputId = 0;
2105 NavJustMovedToId = NavJustMovedToFocusScopeId = NavNextActivateId = 0;
2106 NavActivateFlags = NavNextActivateFlags = KGGuiActivateFlags_None;
2107 NavJustMovedToKeyMods = KGGuiMod_None;
2108 NavInputSource = KGGuiInputSource_None;
2109 NavLayer = KGGuiNavLayer_Main;
2110 NavIdIsAlive =
false;
2111 NavMousePosDirty =
false;
2112 NavDisableHighlight =
true;
2113 NavDisableMouseHover =
false;
2114 NavAnyRequest =
false;
2115 NavInitRequest =
false;
2116 NavInitRequestFromMove =
false;
2117 NavInitResultId = 0;
2118 NavMoveSubmitted =
false;
2119 NavMoveScoringItems =
false;
2120 NavMoveForwardToNextFrame =
false;
2121 NavMoveFlags = KGGuiNavMoveFlags_None;
2122 NavMoveScrollFlags = KGGuiScrollFlags_None;
2123 NavMoveKeyMods = KGGuiMod_None;
2124 NavMoveDir = NavMoveDirForDebug = NavMoveClipDir = KGGuiDir_None;
2125 NavScoringDebugCount = 0;
2127 NavTabbingCounter = 0;
2129 ConfigNavWindowingKeyNext = KGGuiMod_Ctrl | KGGuiKey_Tab;
2130 ConfigNavWindowingKeyPrev = KGGuiMod_Ctrl | KGGuiMod_Shift | KGGuiKey_Tab;
2131 NavWindowingTarget = NavWindowingTargetAnim = NavWindowingListWindow = NULL;
2132 NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f;
2133 NavWindowingToggleLayer =
false;
2136 MouseCursor = KGGuiMouseCursor_Arrow;
2138 DragDropActive = DragDropWithinSource = DragDropWithinTarget =
false;
2139 DragDropSourceFlags = KGGuiDragDropFlags_None;
2140 DragDropSourceFrameCount = -1;
2141 DragDropMouseButton = -1;
2142 DragDropTargetId = 0;
2143 DragDropAcceptFlags = KGGuiDragDropFlags_None;
2144 DragDropAcceptIdCurrRectSurface = 0.0f;
2145 DragDropAcceptIdPrev = DragDropAcceptIdCurr = 0;
2146 DragDropAcceptFrameCount = -1;
2147 DragDropHoldJustPressedId = 0;
2148 memset(DragDropPayloadBufLocal, 0,
sizeof(DragDropPayloadBufLocal));
2150 ClipperTempDataStacked = 0;
2152 CurrentTable = NULL;
2153 TablesTempDataStacked = 0;
2154 CurrentTabBar = NULL;
2156 HoverDelayId = HoverDelayIdPreviousFrame = 0;
2157 HoverDelayTimer = HoverDelayClearTimer = 0.0f;
2160 ColorEditOptions = KGGuiColorEditFlags_DefaultOptions_;
2161 ColorEditLastHue = ColorEditLastSat = 0.0f;
2162 ColorEditLastColor = 0;
2163 SliderGrabClickOffset = 0.0f;
2164 SliderCurrentAccum = 0.0f;
2165 SliderCurrentAccumDirty =
false;
2166 DragCurrentAccumDirty =
false;
2167 DragCurrentAccum = 0.0f;
2168 DragSpeedDefaultRatio = 1.0f / 100.0f;
2169 ScrollbarClickDeltaToGrabCenter = 0.0f;
2170 DisabledAlphaBackup = 0.0f;
2171 DisabledStackSize = 0;
2172 TooltipOverrideCount = 0;
2174 PlatformImeData.InputPos =
KGVec2(0.0f, 0.0f);
2175 PlatformImeDataPrev.InputPos =
KGVec2(-1.0f, -1.0f);
2176 PlatformImeViewport = 0;
2177 PlatformLocaleDecimalPoint =
'.';
2179 SettingsLoaded =
false;
2180 SettingsDirtyTimer = 0.0f;
2183 memset(LocalizationTable, 0,
sizeof(LocalizationTable));
2186 LogType = KGGuiLogType_None;
2187 LogNextPrefix = LogNextSuffix = NULL;
2189 LogLinePosY = FLT_MAX;
2190 LogLineFirstItem =
false;
2192 LogDepthToExpand = LogDepthToExpandDefault = 2;
2194 DebugLogFlags = KGGuiDebugLogFlags_OutputToTTY;
2196 DebugLocateFrames = 0;
2197 DebugItemPickerActive =
false;
2198 DebugItemPickerMouseButton = KGGuiMouseButton_Left;
2199 DebugItemPickerBreakId = 0;
2200 DebugHoveredDockNode = NULL;
2202 memset(FramerateSecPerFrame, 0,
sizeof(FramerateSecPerFrame));
2203 FramerateSecPerFrameIdx = FramerateSecPerFrameCount = 0;
2204 FramerateSecPerFrameAccum = 0.0f;
2205 WantCaptureMouseNextFrame = WantCaptureKeyboardNextFrame = WantTextInputNextFrame = -1;
2768 static KarmaGuiMemAllocFunc GImAllocatorAllocFunc;
2769 static KarmaGuiMemFreeFunc GImAllocatorFreeFunc;
2770 static void* GImAllocatorUserData;
2773 static void SetCurrentWindow(
KGGuiWindow* window);
2774 static void FindHoveredWindow();
2775 static KGGuiWindow* CreateNewWindow(
const char* name, KarmaGuiWindowFlags flags);
2789 static const char* GetClipboardTextFn_DefaultImpl(
void* user_data);
2790 static void SetClipboardTextFn_DefaultImpl(
void* user_data,
const char* text);
2794 static void NavUpdate();
2795 static void NavUpdateWindowing();
2796 static void NavUpdateWindowingOverlay();
2797 static void NavUpdateCancelRequest();
2798 static void NavUpdateCreateMoveRequest();
2799 static void NavUpdateCreateTabbingRequest();
2800 static float NavUpdatePageUpPageDown();
2801 static inline void NavUpdateAnyRequestFlag();
2802 static void NavUpdateCreateWrappingRequest();
2803 static void NavEndFrame();
2806 static void NavProcessItem();
2807 static void NavProcessItemForTabbingRequest(KGGuiID
id);
2808 static KGVec2 NavCalcPreferredRefPos();
2809 static void NavSaveLastChildNavWindowIntoParent(
KGGuiWindow* nav_window);
2811 static void NavRestoreLayer(KGGuiNavLayer layer);
2812 static void NavRestoreHighlightAfterMove();
2813 static int FindWindowFocusIndex(
KGGuiWindow* window);
2816 static void ErrorCheckNewFrameSanityChecks();
2817 static void ErrorCheckEndFrameSanityChecks();
2818 static void UpdateDebugToolItemPicker();
2819 static void UpdateDebugToolStackQueries();
2822 static void UpdateKeyboardInputs();
2823 static void UpdateMouseInputs();
2824 static void UpdateMouseWheel();
2828 static void UpdateSettings();
2829 static bool UpdateWindowManualResize(
KGGuiWindow* window,
const KGVec2& size_auto_fit,
int* border_held,
int resize_grip_count, KGU32 resize_grip_col[4],
const KGRect& visibility_rect);
2830 static void RenderWindowOuterBorders(
KGGuiWindow* window);
2831 static void RenderWindowDecorations(
KGGuiWindow* window,
const KGRect& title_bar_rect,
bool title_bar_is_highlight,
bool handle_borders_and_resize_grips,
int resize_grip_count,
const KGU32 resize_grip_col[4],
float resize_grip_draw_size);
2832 static void RenderWindowTitleBarContents(
KGGuiWindow* window,
const KGRect& title_bar_rect,
const char* name,
bool* p_open);
2833 static void RenderDimmedBackgroundBehindWindow(
KGGuiWindow* window, KGU32 col);
2834 static void RenderDimmedBackgrounds();
2838 const static KGGuiID IMGUI_VIEWPORT_DEFAULT_ID = 0x11111111;
2841 static void UpdateViewportsNewFrame();
2842 static void UpdateViewportsEndFrame();
2843 static void WindowSelectViewport(
KGGuiWindow* window);
2846 static bool UpdateTryMergeWindowIntoHostViewports(
KGGuiWindow* window);
2847 static bool GetWindowAlwaysWantOwnViewport(
KGGuiWindow* window);
2848 static int FindPlatformMonitorForPos(
const KGVec2& pos);
2849 static int FindPlatformMonitorForRect(
const KGRect& r);
2850 static void UpdateViewportPlatformMonitor(
KGGuiViewportP* viewport);
2863 static KGGuiWindow* FindWindowByName(
const char* name);
2864 static void UpdateWindowParentAndRootLinks(
KGGuiWindow* window, KarmaGuiWindowFlags flags,
KGGuiWindow* parent_window);
2866 static bool IsWindowChildOf(
KGGuiWindow* window,
KGGuiWindow* potential_parent,
bool popup_hierarchy,
bool dock_hierarchy);
2869 static bool IsWindowNavFocusable(
KGGuiWindow* window);
2870 static void SetWindowPos(
KGGuiWindow* window,
const KGVec2& pos, KarmaGuiCond cond = 0);
2871 static void SetWindowSize(
KGGuiWindow* window,
const KGVec2& size, KarmaGuiCond cond = 0);
2872 static void SetWindowCollapsed(
KGGuiWindow* window,
bool collapsed, KarmaGuiCond cond = 0);
2874 static inline KGRect WindowRectAbsToRel(
KGGuiWindow* window,
const KGRect& r) {
KGVec2 off = window->DC.CursorStartPos;
return KGRect(r.Min.x - off.x, r.Min.y - off.y, r.Max.x - off.x, r.Max.y - off.y); }
2875 static inline KGRect WindowRectRelToAbs(
KGGuiWindow* window,
const KGRect& r) {
KGVec2 off = window->DC.CursorStartPos;
return KGRect(r.Min.x + off.x, r.Min.y + off.y, r.Max.x + off.x, r.Max.y + off.y); }
2880 static void BringWindowToFocusFront(
KGGuiWindow* window);
2881 static void BringWindowToDisplayFront(
KGGuiWindow* window);
2882 static void BringWindowToDisplayBack(
KGGuiWindow* window);
2884 static int FindWindowDisplayIndex(
KGGuiWindow* window);
2888 static void SetCurrentFont(
KGFont* font);
2889 static KGFont* GetDefaultFont();
2890 static inline KGDrawList* GetForegroundDrawList(
KGGuiWindow* window) {
return KarmaGui::GetForegroundDrawList(window->Viewport); }
2893 static void Initialize();
2894 static void Shutdown();
2897 static void UpdateInputEvents(
bool trickle_fast_inputs);
2898 static void UpdateHoveredWindowAndCaptureFlags();
2899 static void StartMouseMovingWindow(
KGGuiWindow* window);
2901 static void UpdateMouseMovingWindowNewFrame();
2902 static void UpdateMouseMovingWindowEndFrame();
2906 static void RemoveContextHook(
KarmaGuiContext* context, KGGuiID hook_to_remove);
2907 static void CallContextHooks(
KarmaGuiContext* context, ImGuiContextHookType type);
2911 static void ScaleWindowsInViewport(
KGGuiViewportP* viewport,
float scale);
2916 static KGGuiViewportP* FindHoveredViewportFromPlatformWindowStack(
const KGVec2& mouse_platform_pos);
2919 static void MarkIniSettingsDirty();
2920 static void MarkIniSettingsDirty(
KGGuiWindow* window);
2921 static void ClearIniSettings();
2926 static void RemoveSettingsHandler(
const char* type_name);
2930 static void LocalizeRegisterEntries(
const KGGuiLocEntry* entries,
int count);
2931 static const char* LocalizeGetMsg(KGGuiLocKey key);
2934 static void SetScrollX(
KGGuiWindow* window,
float scroll_x);
2935 static void SetScrollY(
KGGuiWindow* window,
float scroll_y);
2936 static void SetScrollFromPosX(
KGGuiWindow* window,
float local_x,
float center_x_ratio);
2937 static void SetScrollFromPosY(
KGGuiWindow* window,
float local_y,
float center_y_ratio);
2940 static void ScrollToItem(KGGuiScrollFlags flags = 0);
2941 static void ScrollToRect(
KGGuiWindow* window,
const KGRect& rect, KGGuiScrollFlags flags = 0);
2945 static inline KGGuiItemStatusFlags GetItemStatusFlags() {
KarmaGuiContext& g = *GKarmaGui;
return g.LastItemData.StatusFlags; }
2946 static inline KGGuiItemFlags GetItemFlags() {
KarmaGuiContext& g = *GKarmaGui;
return g.LastItemData.InFlags; }
2947 static inline KGGuiID GetActiveID() {
KarmaGuiContext& g = *GKarmaGui;
return g.ActiveId; }
2948 static inline KGGuiID GetFocusID() {
KarmaGuiContext& g = *GKarmaGui;
return g.NavId; }
2949 static void SetActiveID(KGGuiID
id,
KGGuiWindow* window);
2950 static void SetFocusID(KGGuiID
id,
KGGuiWindow* window);
2951 static void ClearActiveID();
2952 static KGGuiID GetHoveredID();
2953 static void SetHoveredID(KGGuiID
id);
2954 static void KeepAliveID(KGGuiID
id);
2955 static void MarkItemEdited(KGGuiID
id);
2956 static void PushOverrideID(KGGuiID
id);
2957 static KGGuiID GetIDWithSeed(
const char* str_id_begin,
const char* str_id_end, KGGuiID seed);
2960 static void ItemSize(
const KGVec2& size,
float text_baseline_y = -1.0f);
2961 static inline void ItemSize(
const KGRect& bb,
float text_baseline_y = -1.0f) { ItemSize(bb.GetSize(), text_baseline_y); }
2962 static bool ItemAdd(
const KGRect& bb, KGGuiID
id,
const KGRect* nav_bb = NULL, KGGuiItemFlags extra_flags = 0);
2963 static bool ItemHoverable(
const KGRect& bb, KGGuiID
id);
2964 static bool IsClippedEx(
const KGRect& bb, KGGuiID
id);
2965 static void SetLastItemData(KGGuiID item_id, KGGuiItemFlags in_flags, KGGuiItemStatusFlags status_flags,
const KGRect& item_rect);
2966 static KGVec2 CalcItemSize(
KGVec2 size,
float default_w,
float default_h);
2967 static float CalcWrapWidthForPos(
const KGVec2& pos,
float wrap_pos_x);
2968 static void PushMultiItemsWidths(
int components,
float width_full);
2969 static bool IsItemToggledSelection();
2970 static KGVec2 GetContentRegionMaxAbs();
2974 static void PushItemFlag(KGGuiItemFlags option,
bool enabled);
2975 static void PopItemFlag();
2978 static void LogBegin(KGGuiLogType type,
int auto_open_depth);
2979 static void LogToBuffer(
int auto_open_depth = -1);
2980 static void LogRenderedText(
const KGVec2* ref_pos,
const char* text,
const char* text_end = NULL);
2981 static void LogSetNextTextDecoration(
const char* prefix,
const char* suffix);
2984 static bool BeginChildEx(
const char* name, KGGuiID
id,
const KGVec2& size_arg,
bool border, KarmaGuiWindowFlags flags);
2985 static void OpenPopupEx(KGGuiID
id, KarmaGuiPopupFlags popup_flags = KGGuiPopupFlags_None);
2986 static void ClosePopupToLevel(
int remaining,
bool restore_focus_to_window_under_popup);
2987 static void ClosePopupsOverWindow(
KGGuiWindow* ref_window,
bool restore_focus_to_window_under_popup);
2988 static void ClosePopupsExceptModals();
2989 static bool IsPopupOpen(KGGuiID
id, KarmaGuiPopupFlags popup_flags);
2990 static bool BeginPopupEx(KGGuiID
id, KarmaGuiWindowFlags extra_flags);
2991 static void BeginTooltipEx(KGGuiTooltipFlags tooltip_flags, KarmaGuiWindowFlags extra_window_flags);
2994 static KGGuiWindow* GetTopMostAndVisiblePopupModal();
2996 static KGVec2 FindBestWindowPosForPopupEx(
const KGVec2& ref_pos,
const KGVec2& size, KarmaGuiDir* last_dir,
const KGRect& r_outer,
const KGRect& r_avoid, KGGuiPopupPositionPolicy policy);
2999 static bool BeginViewportSideBar(
const char* name,
KarmaGuiViewport* viewport, KarmaGuiDir dir,
float size, KarmaGuiWindowFlags window_flags);
3000 static bool BeginMenuEx(
const char* label,
const char* icon,
bool enabled =
true);
3001 static bool MenuItemEx(
const char* label,
const char* icon,
const char* shortcut = NULL,
bool selected =
false,
bool enabled =
true);
3004 static bool BeginComboPopup(KGGuiID popup_id,
const KGRect& bb, KarmaGuiComboFlags flags);
3005 static bool BeginComboPreview();
3006 static void EndComboPreview();
3009 static void NavInitWindow(
KGGuiWindow* window,
bool force_reinit);
3010 static void NavInitRequestApplyResult();
3011 static bool NavMoveRequestButNoResultYet();
3012 static void NavMoveRequestSubmit(KarmaGuiDir move_dir, KarmaGuiDir clip_dir, KGGuiNavMoveFlags move_flags, KGGuiScrollFlags scroll_flags);
3013 static void NavMoveRequestForward(KarmaGuiDir move_dir, KarmaGuiDir clip_dir, KGGuiNavMoveFlags move_flags, KGGuiScrollFlags scroll_flags);
3015 static void NavMoveRequestCancel();
3016 static void NavMoveRequestApplyResult();
3017 static void NavMoveRequestTryWrapping(
KGGuiWindow* window, KGGuiNavMoveFlags move_flags);
3018 static void ActivateItem(KGGuiID
id);
3020 static void SetNavID(KGGuiID
id, KGGuiNavLayer nav_layer, KGGuiID focus_scope_id,
const KGRect& rect_rel);
3024 static inline bool IsNamedKey(KarmaGuiKey key) {
return key >= KGGuiKey_NamedKey_BEGIN && key < KGGuiKey_NamedKey_END; }
3025 static inline bool IsNamedKeyOrModKey(KarmaGuiKey key) {
return (key >= KGGuiKey_NamedKey_BEGIN && key < KGGuiKey_NamedKey_END) || key == KGGuiMod_Ctrl || key == KGGuiMod_Shift || key == KGGuiMod_Alt || key == KGGuiMod_Super || key == KGGuiMod_Shortcut; }
3026 static inline bool IsLegacyKey(KarmaGuiKey key) {
return key >= KGGuiKey_LegacyNativeKey_BEGIN && key < KGGuiKey_LegacyNativeKey_END; }
3027 static inline bool IsKeyboardKey(KarmaGuiKey key) {
return key >= KGGuiKey_Keyboard_BEGIN && key < KGGuiKey_Keyboard_END; }
3028 static inline bool IsGamepadKey(KarmaGuiKey key) {
return key >= KGGuiKey_Gamepad_BEGIN && key < KGGuiKey_Gamepad_END; }
3029 static inline bool IsMouseKey(KarmaGuiKey key) {
return key >= KGGuiKey_Mouse_BEGIN && key < KGGuiKey_Mouse_END; }
3030 static inline bool IsAliasKey(KarmaGuiKey key) {
return key >= KGGuiKey_Aliases_BEGIN && key < KGGuiKey_Aliases_END; }
3031 static KarmaGuiKeyChord ConvertShortcutMod(KarmaGuiKeyChord key_chord);
3032 static KarmaGuiKey ConvertSingleModFlagToKey(KarmaGuiKey key);
3034 static void GetKeyChordName(KarmaGuiKeyChord key_chord,
char* out_buf,
int out_buf_size);
3035 static inline KarmaGuiKey MouseButtonToKey(KarmaGuiMouseButton button) { KR_CORE_ASSERT(button >= 0 && button < KGGuiMouseButton_COUNT,
"");
return (KarmaGuiKey)(KGGuiKey_MouseLeft + button); }
3036 static bool IsMouseDragPastThreshold(KarmaGuiMouseButton button,
float lock_threshold = -1.0f);
3037 static KGVec2 GetKeyMagnitude2d(KarmaGuiKey key_left, KarmaGuiKey key_right, KarmaGuiKey key_up, KarmaGuiKey key_down);
3038 static float GetNavTweakPressedAmount(KGGuiAxis axis);
3039 static int CalcTypematicRepeatAmount(
float t0,
float t1,
float repeat_delay,
float repeat_rate);
3040 static void GetTypematicRepeatRate(KarmaGuiInputFlags flags,
float* repeat_delay,
float* repeat_rate);
3041 static void SetActiveIdUsingAllKeyboardKeys();
3042 static inline bool IsActiveIdUsingNavDir(KarmaGuiDir dir);
3055 static KGGuiID GetKeyOwner(KarmaGuiKey key);
3056 static void SetKeyOwner(KarmaGuiKey key, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3057 static void SetItemKeyOwner(KarmaGuiKey key, KarmaGuiInputFlags flags = 0);
3058 static bool TestKeyOwner(KarmaGuiKey key, KGGuiID owner_id);
3067 static bool IsKeyDown(KarmaGuiKey key, KGGuiID owner_id);
3068 static bool IsKeyPressed(KarmaGuiKey key, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3069 static bool IsKeyReleased(KarmaGuiKey key, KGGuiID owner_id);
3070 static bool IsMouseDown(KarmaGuiMouseButton button, KGGuiID owner_id);
3071 static bool IsMouseClicked(KarmaGuiMouseButton button, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3072 static bool IsMouseReleased(KarmaGuiMouseButton button, KGGuiID owner_id);
3079 static bool SetShortcutRouting(KarmaGuiKeyChord key_chord, KGGuiID owner_id = 0, KarmaGuiInputFlags flags = 0);
3080 static bool TestShortcutRouting(KarmaGuiKeyChord key_chord, KGGuiID owner_id);
3087 static void DockContextClearNodes(
KarmaGuiContext* ctx, KGGuiID root_id,
bool clear_settings_refs);
3101 static void DockNodeEndAmendTabBar();
3102 static inline KGGuiDockNode* DockNodeGetRootNode(
KGGuiDockNode* node) {
while (node->ParentNode) node = node->ParentNode;
return node; }
3103 static inline bool DockNodeIsInHierarchyOf(
KGGuiDockNode* node,
KGGuiDockNode* parent) {
while (node) {
if (node == parent)
return true; node = node->ParentNode; }
return false; }
3104 static inline int DockNodeGetDepth(
const KGGuiDockNode* node) {
int depth = 0;
while (node->ParentNode) { node = node->ParentNode; depth++; }
return depth; }
3105 static inline KGGuiID DockNodeGetWindowMenuButtonId(
const KGGuiDockNode* node) {
return KGHashStr(
"#COLLAPSE", 0, node->ID); }
3107 static bool GetWindowAlwaysWantOwnTabBar(
KGGuiWindow* window);
3108 static void BeginDocked(
KGGuiWindow* window,
bool* p_open);
3109 static void BeginDockableDragDropSource(
KGGuiWindow* window);
3110 static void BeginDockableDragDropTarget(
KGGuiWindow* window);
3111 static void SetWindowDock(
KGGuiWindow* window, KGGuiID dock_id, KarmaGuiCond cond);
3122 static void DockBuilderDockWindow(
const char* window_name, KGGuiID node_id);
3125 static KGGuiID DockBuilderAddNode(KGGuiID node_id = 0, KarmaGuiDockNodeFlags flags = 0);
3126 static void DockBuilderRemoveNode(KGGuiID node_id);
3127 static void DockBuilderRemoveNodeDockedWindows(KGGuiID node_id,
bool clear_settings_refs =
true);
3128 static void DockBuilderRemoveNodeChildNodes(KGGuiID node_id);
3129 static void DockBuilderSetNodePos(KGGuiID node_id,
KGVec2 pos);
3130 static void DockBuilderSetNodeSize(KGGuiID node_id,
KGVec2 size);
3131 static KGGuiID DockBuilderSplitNode(KGGuiID node_id, KarmaGuiDir split_dir,
float size_ratio_for_node_at_dir, KGGuiID* out_id_at_dir, KGGuiID* out_id_at_opposite_dir);
3132 static void DockBuilderCopyDockSpace(KGGuiID src_dockspace_id, KGGuiID dst_dockspace_id,
KGVector<const char*>* in_window_remap_pairs);
3133 static void DockBuilderCopyNode(KGGuiID src_node_id, KGGuiID dst_node_id,
KGVector<KGGuiID>* out_node_remap_pairs);
3134 static void DockBuilderCopyWindowSettings(
const char* src_name,
const char* dst_name);
3135 static void DockBuilderFinish(KGGuiID node_id);
3145 static void PushFocusScope(KGGuiID
id);
3146 static void PopFocusScope();
3147 static inline KGGuiID GetCurrentFocusScope() {
KarmaGuiContext& g = *GKarmaGui;
return g.CurrentFocusScopeId; }
3150 static bool IsDragDropActive();
3151 static bool BeginDragDropTargetCustom(
const KGRect& bb, KGGuiID
id);
3152 static void ClearDragDrop();
3153 static bool IsDragDropPayloadBeingAccepted();
3154 static void RenderDragDropTargetRect(
const KGRect& bb);
3157 static void SetWindowClipRectBeforeSetChannel(
KGGuiWindow* window,
const KGRect& clip_rect);
3158 static void BeginColumns(
const char* str_id,
int count, KGGuiOldColumnFlags flags = 0);
3159 static void EndColumns();
3160 static void PushColumnClipRect(
int column_index);
3161 static void PushColumnsBackground();
3162 static void PopColumnsBackground();
3163 static KGGuiID GetColumnsID(
const char* str_id,
int count);
3165 static float GetColumnOffsetFromNorm(
const KGGuiOldColumns* columns,
float offset_norm);
3166 static float GetColumnNormFromOffset(
const KGGuiOldColumns* columns,
float offset);
3169 static void TableOpenContextMenu(
int column_n = -1);
3170 static void TableSetColumnWidth(
int column_n,
float width);
3171 static void TableSetColumnSortDirection(
int column_n, KarmaGuiSortDirection sort_direction,
bool append_to_sort_specs);
3172 static int TableGetHoveredColumn();
3173 static float TableGetHeaderRowHeight();
3174 static void TablePushBackgroundChannel();
3175 static void TablePopBackgroundChannel();
3179 static KGGuiTable* TableFindByID(KGGuiID
id);
3180 static bool BeginTableEx(
const char* name, KGGuiID
id,
int columns_count, KarmaGuiTableFlags flags = 0,
const KGVec2& outer_size =
KGVec2(0, 0),
float inner_width = 0.0f);
3181 static void TableBeginInitMemory(
KGGuiTable* table,
int columns_count);
3182 static void TableBeginApplyRequests(
KGGuiTable* table);
3183 static void TableSetupDrawChannels(
KGGuiTable* table);
3184 static void TableUpdateLayout(
KGGuiTable* table);
3185 static void TableUpdateBorders(
KGGuiTable* table);
3186 static void TableUpdateColumnsWeightFromWidth(
KGGuiTable* table);
3187 static void TableDrawBorders(
KGGuiTable* table);
3188 static void TableDrawContextMenu(
KGGuiTable* table);
3189 static bool TableBeginContextMenuPopup(
KGGuiTable* table);
3190 static void TableMergeDrawChannels(
KGGuiTable* table);
3191 static inline KGGuiTableInstanceData* TableGetInstanceData(
KGGuiTable* table,
int instance_no) {
if (instance_no == 0)
return &table->InstanceDataFirst;
return &table->InstanceDataExtra[instance_no - 1]; }
3192 static void TableSortSpecsSanitize(
KGGuiTable* table);
3193 static void TableSortSpecsBuild(
KGGuiTable* table);
3194 static KarmaGuiSortDirection TableGetColumnNextSortDirection(
KGGuiTableColumn* column);
3197 static void TableBeginRow(
KGGuiTable* table);
3199 static void TableBeginCell(
KGGuiTable* table,
int column_n);
3202 static const char* TableGetColumnName(
const KGGuiTable* table,
int column_n);
3203 static KGGuiID TableGetColumnResizeID(
const KGGuiTable* table,
int column_n,
int instance_no = 0);
3204 static float TableGetMaxColumnWidth(
const KGGuiTable* table,
int column_n);
3205 static void TableSetColumnWidthAutoSingle(
KGGuiTable* table,
int column_n);
3206 static void TableSetColumnWidthAutoAll(
KGGuiTable* table);
3208 static void TableGcCompactTransientBuffers(
KGGuiTable* table);
3210 static void TableGcCompactSettings();
3213 static void TableLoadSettings(
KGGuiTable* table);
3214 static void TableSaveSettings(
KGGuiTable* table);
3215 static void TableResetSettings(
KGGuiTable* table);
3217 static void TableSettingsAddSettingsHandler();
3226 static void TabBarRemoveTab(
KGGuiTabBar* tab_bar, KGGuiID tab_id);
3230 static bool TabBarProcessReorder(
KGGuiTabBar* tab_bar);
3231 static bool TabItemEx(
KGGuiTabBar* tab_bar,
const char* label,
bool* p_open, KarmaGuiTabItemFlags flags,
KGGuiWindow* docked_window);
3232 static KGVec2 TabItemCalcSize(
const char* label,
bool has_close_button_or_unsaved_marker);
3234 static void TabItemBackground(
KGDrawList* draw_list,
const KGRect& bb, KarmaGuiTabItemFlags flags, KGU32 col);
3235 static void TabItemLabelAndCloseButton(
KGDrawList* draw_list,
const KGRect& bb, KarmaGuiTabItemFlags flags,
KGVec2 frame_padding,
const char* label, KGGuiID tab_id, KGGuiID close_button_id,
bool is_contents_visible,
bool* out_just_closed,
bool* out_text_clipped);
3240 static void RenderText(
KGVec2 pos,
const char* text,
const char* text_end = NULL,
bool hide_text_after_hash =
true);
3241 static void RenderTextWrapped(
KGVec2 pos,
const char* text,
const char* text_end,
float wrap_width);
3242 static void RenderTextClipped(
const KGVec2& pos_min,
const KGVec2& pos_max,
const char* text,
const char* text_end,
const KGVec2* text_size_if_known,
const KGVec2& align =
KGVec2(0, 0),
const KGRect* clip_rect = NULL);
3243 static void RenderTextClippedEx(
KGDrawList* draw_list,
const KGVec2& pos_min,
const KGVec2& pos_max,
const char* text,
const char* text_end,
const KGVec2* text_size_if_known,
const KGVec2& align =
KGVec2(0, 0),
const KGRect* clip_rect = NULL);
3244 static void RenderTextEllipsis(
KGDrawList* draw_list,
const KGVec2& pos_min,
const KGVec2& pos_max,
float clip_max_x,
float ellipsis_max_x,
const char* text,
const char* text_end,
const KGVec2* text_size_if_known);
3245 static void RenderFrame(
KGVec2 p_min,
KGVec2 p_max, KGU32 fill_col,
bool border =
true,
float rounding = 0.0f);
3246 static void RenderFrameBorder(
KGVec2 p_min,
KGVec2 p_max,
float rounding = 0.0f);
3247 static void RenderColorRectWithAlphaCheckerboard(
KGDrawList* draw_list,
KGVec2 p_min,
KGVec2 p_max, KGU32 fill_col,
float grid_step,
KGVec2 grid_off,
float rounding = 0.0f, KGDrawFlags flags = 0);
3248 static void RenderNavHighlight(
const KGRect& bb, KGGuiID
id, KGGuiNavHighlightFlags flags = KGGuiNavHighlightFlags_TypeDefault);
3249 static const char* FindRenderedTextEnd(
const char* text,
const char* text_end = NULL);
3250 static void RenderMouseCursor(
KGVec2 pos,
float scale, KarmaGuiMouseCursor mouse_cursor, KGU32 col_fill, KGU32 col_border, KGU32 col_shadow);
3253 static void RenderArrow(
KGDrawList* draw_list,
KGVec2 pos, KGU32 col, KarmaGuiDir dir,
float scale = 1.0f);
3255 static void RenderCheckMark(
KGDrawList* draw_list,
KGVec2 pos, KGU32 col,
float sz);
3256 static void RenderArrowPointingAt(
KGDrawList* draw_list,
KGVec2 pos,
KGVec2 half_sz, KarmaGuiDir direction, KGU32 col);
3257 static void RenderArrowDockMenu(
KGDrawList* draw_list,
KGVec2 p_min,
float sz, KGU32 col);
3258 static void RenderRectFilledRangeH(
KGDrawList* draw_list,
const KGRect& rect, KGU32 col,
float x_start_norm,
float x_end_norm,
float rounding);
3259 static void RenderRectFilledWithHole(
KGDrawList* draw_list,
const KGRect& outer,
const KGRect& inner, KGU32 col,
float rounding);
3260 static KGDrawFlags CalcRoundingFlagsForRectInRect(
const KGRect& r_in,
const KGRect& r_outer,
float threshold);
3263 static void TextEx(
const char* text,
const char* text_end = NULL, KGGuiTextFlags flags = 0);
3264 static bool ButtonEx(
const char* label,
const KGVec2& size_arg =
KGVec2(0, 0), KarmaGuiButtonFlags flags = 0);
3265 static bool ArrowButtonEx(
const char* str_id, KarmaGuiDir dir,
KGVec2 size_arg, KarmaGuiButtonFlags flags = 0);
3266 static bool ImageButtonEx(KGGuiID
id, KGTextureID texture_id,
const KGVec2& size,
const KGVec2& uv0,
const KGVec2& uv1,
const KGVec4& bg_col,
const KGVec4& tint_col);
3267 static void SeparatorEx(KGGuiSeparatorFlags flags);
3268 static bool CheckboxFlags(
const char* label, KGS64* flags, KGS64 flags_value);
3269 static bool CheckboxFlags(
const char* label, KGU64* flags, KGU64 flags_value);
3272 static bool CloseButton(KGGuiID
id,
const KGVec2& pos);
3274 static void Scrollbar(KGGuiAxis axis);
3275 static bool ScrollbarEx(
const KGRect& bb, KGGuiID
id, KGGuiAxis axis, KGS64* p_scroll_v, KGS64 avail_v, KGS64 contents_v, KGDrawFlags flags);
3277 static KGGuiID GetWindowScrollbarID(
KGGuiWindow* window, KGGuiAxis axis);
3278 static KGGuiID GetWindowResizeCornerID(
KGGuiWindow* window,
int n);
3279 static KGGuiID GetWindowResizeBorderID(
KGGuiWindow* window, KarmaGuiDir dir);
3282 static bool ButtonBehavior(
const KGRect& bb, KGGuiID
id,
bool* out_hovered,
bool* out_held, KarmaGuiButtonFlags flags = 0);
3283 static bool DragBehavior(KGGuiID
id, KarmaGuiDataType data_type,
void* p_v,
float v_speed,
const void* p_min,
const void* p_max,
const char* format, KarmaGuiSliderFlags flags);
3284 static bool SliderBehavior(
const KGRect& bb, KGGuiID
id, KarmaGuiDataType data_type,
void* p_v,
const void* p_min,
const void* p_max,
const char* format, KarmaGuiSliderFlags flags,
KGRect* out_grab_bb);
3285 static bool SplitterBehavior(
const KGRect& bb, KGGuiID
id, KGGuiAxis axis,
float* size1,
float* size2,
float min_size1,
float min_size2,
float hover_extend = 0.0f,
float hover_visibility_delay = 0.0f, KGU32 bg_col = 0);
3286 static bool TreeNodeBehavior(KGGuiID
id, KarmaGuiTreeNodeFlags flags,
const char* label,
const char* label_end = NULL);
3287 static void TreePushOverrideID(KGGuiID
id);
3288 static void TreeNodeSetOpen(KGGuiID
id,
bool open);
3289 static bool TreeNodeUpdateNextOpen(KGGuiID
id, KarmaGuiTreeNodeFlags flags);
3294 template<
typename T,
typename SIGNED_T,
typename FLOAT_T>
static float ScaleRatioFromValueT(KarmaGuiDataType data_type, T v, T v_min, T v_max,
bool is_logarithmic,
float logarithmic_zero_epsilon,
float zero_deadzone_size);
3295 template<
typename T,
typename SIGNED_T,
typename FLOAT_T> T
static ScaleValueFromRatioT(KarmaGuiDataType data_type,
float t, T v_min, T v_max,
bool is_logarithmic,
float logarithmic_zero_epsilon,
float zero_deadzone_size);
3296 template<
typename T,
typename SIGNED_T,
typename FLOAT_T>
static bool DragBehaviorT(KarmaGuiDataType data_type, T* v,
float v_speed, T v_min, T v_max,
const char* format, KarmaGuiSliderFlags flags);
3297 template<
typename T,
typename SIGNED_T,
typename FLOAT_T>
bool static SliderBehaviorT(
const KGRect& bb, KGGuiID
id, KarmaGuiDataType data_type, T* v, T v_min, T v_max,
const char* format, KarmaGuiSliderFlags flags,
KGRect* out_grab_bb);
3298 template<
typename T> T
static RoundScalarWithFormatT(
const char* format, KarmaGuiDataType data_type, T v);
3299 template<
typename T>
static bool CheckboxFlagsT(
const char* label, T* flags, T flags_value);
3303 static int DataTypeFormatString(
char* buf,
int buf_size, KarmaGuiDataType data_type,
const void* p_data,
const char* format);
3304 static void DataTypeApplyOp(KarmaGuiDataType data_type,
int op,
void* output,
const void* arg_1,
const void* arg_2);
3305 static bool DataTypeApplyFromText(
const char* buf, KarmaGuiDataType data_type,
void* p_data,
const char* format);
3306 static int DataTypeCompare(KarmaGuiDataType data_type,
const void* arg_1,
const void* arg_2);
3307 static bool DataTypeClamp(KarmaGuiDataType data_type,
void* p_data,
const void* p_min,
const void* p_max);
3310 static bool InputTextEx(
const char* label,
const char* hint,
char* buf,
int buf_size,
const KGVec2& size_arg, KarmaGuiInputTextFlags flags, KarmaGuiInputTextCallback callback = NULL,
void* user_data = NULL);
3311 static bool TempInputText(
const KGRect& bb, KGGuiID
id,
const char* label,
char* buf,
int buf_size, KarmaGuiInputTextFlags flags);
3312 static bool TempInputScalar(
const KGRect& bb, KGGuiID
id,
const char* label, KarmaGuiDataType data_type,
void* p_data,
const char* format,
const void* p_clamp_min = NULL,
const void* p_clamp_max = NULL);
3313 static bool TempInputIsActive(KGGuiID
id);
3316 static void ColorTooltip(
const char* text,
const float* col, KarmaGuiColorEditFlags flags);
3317 static void ColorEditOptionsPopup(
const float* col, KarmaGuiColorEditFlags flags);
3318 static void ColorPickerOptionsPopup(
const float* ref_col, KarmaGuiColorEditFlags flags);
3321 static int PlotEx(KGGuiPlotType plot_type,
const char* label,
float (*values_getter)(
void* data,
int idx),
void* data,
int values_count,
int values_offset,
const char* overlay_text,
float scale_min,
float scale_max,
KGVec2 frame_size);
3324 static void ShadeVertsLinearColorGradientKeepAlpha(
KGDrawList* draw_list,
int vert_start_idx,
int vert_end_idx,
KGVec2 gradient_p0,
KGVec2 gradient_p1, KGU32 col0, KGU32 col1);
3325 static void ShadeVertsLinearUV(
KGDrawList* draw_list,
int vert_start_idx,
int vert_end_idx,
const KGVec2& a,
const KGVec2& b,
const KGVec2& uv_a,
const KGVec2& uv_b,
bool clamp);
3328 static void GcCompactTransientMiscBuffers();
3329 static void GcCompactTransientWindowBuffers(
KGGuiWindow* window);
3330 static void GcAwakeTransientWindowBuffers(
KGGuiWindow* window);
3333 static void ErrorCheckEndFrameRecover(KGGuiErrorLogCallback log_callback,
void* user_data = NULL);
3334 static void ErrorCheckEndWindowRecover(KGGuiErrorLogCallback log_callback,
void* user_data = NULL);
3335 static void ErrorCheckUsingSetCursorPosToExtendParentBoundaries();
3336 static void DebugLocateItem(KGGuiID target_id);
3337 static void DebugLocateItemOnHover(KGGuiID target_id);
3338 static void DebugLocateItemResolveWithLastItem();
3339 static inline void DebugDrawItemRect(KGU32 col = KG_COL32(255, 0, 0, 255)) {
KarmaGuiContext& g = *GKarmaGui;
KGGuiWindow* window = g.CurrentWindow; GetForegroundDrawList(window)->AddRect(g.LastItemData.Rect.Min, g.LastItemData.Rect.Max, col); }
3340 static void DebugStartItemPicker();
3342 static void DebugHookIdInfo(KGGuiID
id, KarmaGuiDataType data_type,
const void* data_id,
const void* data_id_end);
3344 static void DebugNodeDockNode(
KGGuiDockNode* node,
const char* label);
3346 static void DebugNodeDrawCmdShowMeshAndBoundingBox(
KGDrawList* out_draw_list,
const KGDrawList* draw_list,
const KGDrawCmd* draw_cmd,
bool show_mesh,
bool show_aabb);
3347 static void DebugNodeFont(
KGFont* font);
3349 static void DebugNodeStorage(
KarmaGuiStorage* storage,
const char* label);
3350 static void DebugNodeTabBar(
KGGuiTabBar* tab_bar,
const char* label);
3351 static void DebugNodeTable(
KGGuiTable* table);
3354 static void DebugNodeWindow(
KGGuiWindow* window,
const char* label);
3357 static void DebugNodeWindowsListByBeginStackParent(
KGGuiWindow** windows,
int windows_size,
KGGuiWindow* parent_in_begin_stack);
3359 static void DebugRenderKeyboardPreview(
KGDrawList* draw_list);