1733struct KarmaGuiContext
1736 bool FontAtlasOwnedByContext;
1742 KarmaGuiConfigFlags ConfigFlagsCurrFrame;
1743 KarmaGuiConfigFlags ConfigFlagsLastFrame;
1750 int FrameCountEnded;
1751 int FrameCountPlatformEnded;
1752 int FrameCountRendered;
1753 bool WithinFrameScope;
1754 bool WithinFrameScopeWithImplicitWindow;
1755 bool WithinEndChild;
1757 bool TestEngineHookItems;
1766 int WindowsActiveCount;
1767 KGVec2 WindowsHoverPadding;
1773 KGVec2 WheelingWindowRefMousePos;
1774 int WheelingWindowStartFrame;
1775 float WheelingWindowReleaseTimer;
1776 KGVec2 WheelingWindowWheelRemainder;
1780 KGGuiID DebugHookIdInfo;
1782 KGGuiID HoveredIdPreviousFrame;
1783 bool HoveredIdAllowOverlap;
1784 bool HoveredIdDisabled;
1785 float HoveredIdTimer;
1786 float HoveredIdNotActiveTimer;
1788 KGGuiID ActiveIdIsAlive;
1789 float ActiveIdTimer;
1790 bool ActiveIdIsJustActivated;
1791 bool ActiveIdAllowOverlap;
1792 bool ActiveIdNoClearOnFocusLoss;
1793 bool ActiveIdHasBeenPressedBefore;
1794 bool ActiveIdHasBeenEditedBefore;
1795 bool ActiveIdHasBeenEditedThisFrame;
1796 KGVec2 ActiveIdClickOffset;
1798 KGGuiInputSource ActiveIdSource;
1799 int ActiveIdMouseButton;
1800 KGGuiID ActiveIdPreviousFrame;
1801 bool ActiveIdPreviousFrameIsAlive;
1802 bool ActiveIdPreviousFrameHasBeenEditedBefore;
1804 KGGuiID LastActiveId;
1805 float LastActiveIdTimer;
1813 KGU32 ActiveIdUsingNavDirMask;
1814 bool ActiveIdUsingAllKeyboardKeys;
1815#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
1816 KGU32 ActiveIdUsingNavInputMask;
1820 KGGuiID CurrentFocusScopeId;
1821 KGGuiItemFlags CurrentItemFlags;
1822 KGGuiID DebugLocateId;
1840 float CurrentDpiScale;
1844 KGGuiID PlatformLastFocusedViewportId;
1846 int ViewportFrontMostStampCount;
1851 KGGuiID NavFocusScopeId;
1852 KGGuiID NavActivateId;
1853 KGGuiID NavActivateDownId;
1854 KGGuiID NavActivatePressedId;
1855 KGGuiID NavActivateInputId;
1856 KGGuiActivateFlags NavActivateFlags;
1857 KGGuiID NavJustMovedToId;
1858 KGGuiID NavJustMovedToFocusScopeId;
1859 KarmaGuiKeyChord NavJustMovedToKeyMods;
1860 KGGuiID NavNextActivateId;
1861 KGGuiActivateFlags NavNextActivateFlags;
1862 KGGuiInputSource NavInputSource;
1863 KGGuiNavLayer NavLayer;
1865 bool NavMousePosDirty;
1866 bool NavDisableHighlight;
1867 bool NavDisableMouseHover;
1871 bool NavInitRequest;
1872 bool NavInitRequestFromMove;
1873 KGGuiID NavInitResultId;
1874 KGRect NavInitResultRectRel;
1875 bool NavMoveSubmitted;
1876 bool NavMoveScoringItems;
1877 bool NavMoveForwardToNextFrame;
1878 KGGuiNavMoveFlags NavMoveFlags;
1879 KGGuiScrollFlags NavMoveScrollFlags;
1880 KarmaGuiKeyChord NavMoveKeyMods;
1881 KarmaGuiDir NavMoveDir;
1882 KarmaGuiDir NavMoveDirForDebug;
1883 KarmaGuiDir NavMoveClipDir;
1885 KGRect NavScoringNoClipRect;
1886 int NavScoringDebugCount;
1888 int NavTabbingCounter;
1895 KarmaGuiKeyChord ConfigNavWindowingKeyNext;
1896 KarmaGuiKeyChord ConfigNavWindowingKeyPrev;
1900 float NavWindowingTimer;
1901 float NavWindowingHighlightAlpha;
1902 bool NavWindowingToggleLayer;
1903 KGVec2 NavWindowingAccumDeltaPos;
1904 KGVec2 NavWindowingAccumDeltaSize;
1908 KarmaGuiMouseCursor MouseCursor;
1911 bool DragDropActive;
1912 bool DragDropWithinSource;
1913 bool DragDropWithinTarget;
1914 KarmaGuiDragDropFlags DragDropSourceFlags;
1915 int DragDropSourceFrameCount;
1916 int DragDropMouseButton;
1918 KGRect DragDropTargetRect;
1919 KGGuiID DragDropTargetId;
1920 KarmaGuiDragDropFlags DragDropAcceptFlags;
1921 float DragDropAcceptIdCurrRectSurface;
1922 KGGuiID DragDropAcceptIdCurr;
1923 KGGuiID DragDropAcceptIdPrev;
1924 int DragDropAcceptFrameCount;
1925 KGGuiID DragDropHoldJustPressedId;
1927 unsigned char DragDropPayloadBufLocal[16];
1930 int ClipperTempDataStacked;
1935 int TablesTempDataStacked;
1948 KGGuiID HoverDelayId;
1949 KGGuiID HoverDelayIdPreviousFrame;
1950 float HoverDelayTimer;
1951 float HoverDelayClearTimer;
1954 KGVec2 MouseLastValidPos;
1956 KGFont InputTextPasswordFont;
1957 KGGuiID TempInputId;
1958 KarmaGuiColorEditFlags ColorEditOptions;
1959 float ColorEditLastHue;
1960 float ColorEditLastSat;
1961 KGU32 ColorEditLastColor;
1964 float SliderGrabClickOffset;
1965 float SliderCurrentAccum;
1966 bool SliderCurrentAccumDirty;
1967 bool DragCurrentAccumDirty;
1968 float DragCurrentAccum;
1969 float DragSpeedDefaultRatio;
1970 float ScrollbarClickDeltaToGrabCenter;
1971 float DisabledAlphaBackup;
1972 short DisabledStackSize;
1973 short TooltipOverrideCount;
1980 KGGuiID PlatformImeViewport;
1981 char PlatformLocaleDecimalPoint;
1988 bool SettingsLoaded;
1989 float SettingsDirtyTimer;
1998 const char* LocalizationTable[ImGuiLocKey_COUNT];
2002 KGGuiLogType LogType;
2003 ImFileHandle LogFile;
2005 const char* LogNextPrefix;
2006 const char* LogNextSuffix;
2008 bool LogLineFirstItem;
2010 int LogDepthToExpand;
2011 int LogDepthToExpandDefault;
2014 KGGuiDebugLogFlags DebugLogFlags;
2017 KGU8 DebugLocateFrames;
2018 bool DebugItemPickerActive;
2019 KGU8 DebugItemPickerMouseButton;
2020 KGGuiID DebugItemPickerBreakId;
2026 float FramerateSecPerFrame[60];
2027 int FramerateSecPerFrameIdx;
2028 int FramerateSecPerFrameCount;
2029 float FramerateSecPerFrameAccum;
2030 int WantCaptureMouseNextFrame;
2031 int WantCaptureKeyboardNextFrame;
2032 int WantTextInputNextFrame;
2036 : InputTextState(
this)
2038 Initialized =
false;
2039 ConfigFlagsCurrFrame = ConfigFlagsLastFrame = KGGuiConfigFlags_None;
2040 FontAtlasOwnedByContext = shared_font_atlas ? false :
true;
2042 FontSize = FontBaseSize = 0.0f;
2043 IO.Fonts = shared_font_atlas ? shared_font_atlas : KG_NEW(
KGFontAtlas)();
2046 FrameCountEnded = FrameCountPlatformEnded = FrameCountRendered = -1;
2047 WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild =
false;
2048 GcCompactAll =
false;
2049 TestEngineHookItems =
false;
2052 WindowsActiveCount = 0;
2053 CurrentWindow = NULL;
2054 HoveredWindow = NULL;
2055 HoveredWindowUnderMovingWindow = NULL;
2056 MovingWindow = NULL;
2057 WheelingWindow = NULL;
2058 WheelingWindowStartFrame = -1;
2059 WheelingWindowReleaseTimer = 0.0f;
2061 DebugHookIdInfo = 0;
2062 HoveredId = HoveredIdPreviousFrame = 0;
2063 HoveredIdAllowOverlap =
false;
2064 HoveredIdDisabled =
false;
2065 HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;
2067 ActiveIdIsAlive = 0;
2068 ActiveIdTimer = 0.0f;
2069 ActiveIdIsJustActivated =
false;
2070 ActiveIdAllowOverlap =
false;
2071 ActiveIdNoClearOnFocusLoss =
false;
2072 ActiveIdHasBeenPressedBefore =
false;
2073 ActiveIdHasBeenEditedBefore =
false;
2074 ActiveIdHasBeenEditedThisFrame =
false;
2075 ActiveIdClickOffset =
KGVec2(-1, -1);
2076 ActiveIdWindow = NULL;
2077 ActiveIdSource = KGGuiInputSource_None;
2078 ActiveIdMouseButton = -1;
2079 ActiveIdPreviousFrame = 0;
2080 ActiveIdPreviousFrameIsAlive =
false;
2081 ActiveIdPreviousFrameHasBeenEditedBefore =
false;
2082 ActiveIdPreviousFrameWindow = NULL;
2084 LastActiveIdTimer = 0.0f;
2086 ActiveIdUsingNavDirMask = 0x00;
2087 ActiveIdUsingAllKeyboardKeys =
false;
2088#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
2089 ActiveIdUsingNavInputMask = 0x00;
2092 CurrentFocusScopeId = 0;
2093 CurrentItemFlags = KGGuiItemFlags_None;
2096 CurrentDpiScale = 0.0f;
2097 CurrentViewport = NULL;
2098 MouseViewport = MouseLastHoveredViewport = NULL;
2099 PlatformLastFocusedViewportId = 0;
2100 ViewportFrontMostStampCount = 0;
2103 NavId = NavFocusScopeId = NavActivateId = NavActivateDownId = NavActivatePressedId = NavActivateInputId = 0;
2104 NavJustMovedToId = NavJustMovedToFocusScopeId = NavNextActivateId = 0;
2105 NavActivateFlags = NavNextActivateFlags = KGGuiActivateFlags_None;
2106 NavJustMovedToKeyMods = KGGuiMod_None;
2107 NavInputSource = KGGuiInputSource_None;
2108 NavLayer = KGGuiNavLayer_Main;
2109 NavIdIsAlive =
false;
2110 NavMousePosDirty =
false;
2111 NavDisableHighlight =
true;
2112 NavDisableMouseHover =
false;
2113 NavAnyRequest =
false;
2114 NavInitRequest =
false;
2115 NavInitRequestFromMove =
false;
2116 NavInitResultId = 0;
2117 NavMoveSubmitted =
false;
2118 NavMoveScoringItems =
false;
2119 NavMoveForwardToNextFrame =
false;
2120 NavMoveFlags = KGGuiNavMoveFlags_None;
2121 NavMoveScrollFlags = KGGuiScrollFlags_None;
2122 NavMoveKeyMods = KGGuiMod_None;
2123 NavMoveDir = NavMoveDirForDebug = NavMoveClipDir = KGGuiDir_None;
2124 NavScoringDebugCount = 0;
2126 NavTabbingCounter = 0;
2128 ConfigNavWindowingKeyNext = KGGuiMod_Ctrl | KGGuiKey_Tab;
2129 ConfigNavWindowingKeyPrev = KGGuiMod_Ctrl | KGGuiMod_Shift | KGGuiKey_Tab;
2130 NavWindowingTarget = NavWindowingTargetAnim = NavWindowingListWindow = NULL;
2131 NavWindowingTimer = NavWindowingHighlightAlpha = 0.0f;
2132 NavWindowingToggleLayer =
false;
2135 MouseCursor = KGGuiMouseCursor_Arrow;
2137 DragDropActive = DragDropWithinSource = DragDropWithinTarget =
false;
2138 DragDropSourceFlags = KGGuiDragDropFlags_None;
2139 DragDropSourceFrameCount = -1;
2140 DragDropMouseButton = -1;
2141 DragDropTargetId = 0;
2142 DragDropAcceptFlags = KGGuiDragDropFlags_None;
2143 DragDropAcceptIdCurrRectSurface = 0.0f;
2144 DragDropAcceptIdPrev = DragDropAcceptIdCurr = 0;
2145 DragDropAcceptFrameCount = -1;
2146 DragDropHoldJustPressedId = 0;
2147 memset(DragDropPayloadBufLocal, 0,
sizeof(DragDropPayloadBufLocal));
2149 ClipperTempDataStacked = 0;
2151 CurrentTable = NULL;
2152 TablesTempDataStacked = 0;
2153 CurrentTabBar = NULL;
2155 HoverDelayId = HoverDelayIdPreviousFrame = 0;
2156 HoverDelayTimer = HoverDelayClearTimer = 0.0f;
2159 ColorEditOptions = KGGuiColorEditFlags_DefaultOptions_;
2160 ColorEditLastHue = ColorEditLastSat = 0.0f;
2161 ColorEditLastColor = 0;
2162 SliderGrabClickOffset = 0.0f;
2163 SliderCurrentAccum = 0.0f;
2164 SliderCurrentAccumDirty =
false;
2165 DragCurrentAccumDirty =
false;
2166 DragCurrentAccum = 0.0f;
2167 DragSpeedDefaultRatio = 1.0f / 100.0f;
2168 ScrollbarClickDeltaToGrabCenter = 0.0f;
2169 DisabledAlphaBackup = 0.0f;
2170 DisabledStackSize = 0;
2171 TooltipOverrideCount = 0;
2173 PlatformImeData.InputPos =
KGVec2(0.0f, 0.0f);
2174 PlatformImeDataPrev.InputPos =
KGVec2(-1.0f, -1.0f);
2175 PlatformImeViewport = 0;
2176 PlatformLocaleDecimalPoint =
'.';
2178 SettingsLoaded =
false;
2179 SettingsDirtyTimer = 0.0f;
2182 memset(LocalizationTable, 0,
sizeof(LocalizationTable));
2185 LogType = KGGuiLogType_None;
2186 LogNextPrefix = LogNextSuffix = NULL;
2188 LogLinePosY = FLT_MAX;
2189 LogLineFirstItem =
false;
2191 LogDepthToExpand = LogDepthToExpandDefault = 2;
2193 DebugLogFlags = KGGuiDebugLogFlags_OutputToTTY;
2195 DebugLocateFrames = 0;
2196 DebugItemPickerActive =
false;
2197 DebugItemPickerMouseButton = KGGuiMouseButton_Left;
2198 DebugItemPickerBreakId = 0;
2199 DebugHoveredDockNode = NULL;
2201 memset(FramerateSecPerFrame, 0,
sizeof(FramerateSecPerFrame));
2202 FramerateSecPerFrameIdx = FramerateSecPerFrameCount = 0;
2203 FramerateSecPerFrameAccum = 0.0f;
2204 WantCaptureMouseNextFrame = WantCaptureKeyboardNextFrame = WantTextInputNextFrame = -1;
2767 static KarmaGuiMemAllocFunc GImAllocatorAllocFunc;
2768 static KarmaGuiMemFreeFunc GImAllocatorFreeFunc;
2769 static void* GImAllocatorUserData;
2772 static void SetCurrentWindow(
KGGuiWindow* window);
2773 static void FindHoveredWindow();
2774 static KGGuiWindow* CreateNewWindow(
const char* name, KarmaGuiWindowFlags flags);
2788 static const char* GetClipboardTextFn_DefaultImpl(
void* user_data);
2789 static void SetClipboardTextFn_DefaultImpl(
void* user_data,
const char* text);
2793 static void NavUpdate();
2794 static void NavUpdateWindowing();
2795 static void NavUpdateWindowingOverlay();
2796 static void NavUpdateCancelRequest();
2797 static void NavUpdateCreateMoveRequest();
2798 static void NavUpdateCreateTabbingRequest();
2799 static float NavUpdatePageUpPageDown();
2800 static inline void NavUpdateAnyRequestFlag();
2801 static void NavUpdateCreateWrappingRequest();
2802 static void NavEndFrame();
2805 static void NavProcessItem();
2806 static void NavProcessItemForTabbingRequest(KGGuiID
id);
2807 static KGVec2 NavCalcPreferredRefPos();
2808 static void NavSaveLastChildNavWindowIntoParent(
KGGuiWindow* nav_window);
2810 static void NavRestoreLayer(KGGuiNavLayer layer);
2811 static void NavRestoreHighlightAfterMove();
2812 static int FindWindowFocusIndex(
KGGuiWindow* window);
2815 static void ErrorCheckNewFrameSanityChecks();
2816 static void ErrorCheckEndFrameSanityChecks();
2817 static void UpdateDebugToolItemPicker();
2818 static void UpdateDebugToolStackQueries();
2821 static void UpdateKeyboardInputs();
2822 static void UpdateMouseInputs();
2823 static void UpdateMouseWheel();
2827 static void UpdateSettings();
2828 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);
2829 static void RenderWindowOuterBorders(
KGGuiWindow* window);
2830 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);
2831 static void RenderWindowTitleBarContents(
KGGuiWindow* window,
const KGRect& title_bar_rect,
const char* name,
bool* p_open);
2832 static void RenderDimmedBackgroundBehindWindow(
KGGuiWindow* window, KGU32 col);
2833 static void RenderDimmedBackgrounds();
2837 const static KGGuiID IMGUI_VIEWPORT_DEFAULT_ID = 0x11111111;
2840 static void UpdateViewportsNewFrame();
2841 static void UpdateViewportsEndFrame();
2842 static void WindowSelectViewport(
KGGuiWindow* window);
2845 static bool UpdateTryMergeWindowIntoHostViewports(
KGGuiWindow* window);
2846 static bool GetWindowAlwaysWantOwnViewport(
KGGuiWindow* window);
2847 static int FindPlatformMonitorForPos(
const KGVec2& pos);
2848 static int FindPlatformMonitorForRect(
const KGRect& r);
2849 static void UpdateViewportPlatformMonitor(
KGGuiViewportP* viewport);
2862 static KGGuiWindow* FindWindowByName(
const char* name);
2863 static void UpdateWindowParentAndRootLinks(
KGGuiWindow* window, KarmaGuiWindowFlags flags,
KGGuiWindow* parent_window);
2865 static bool IsWindowChildOf(
KGGuiWindow* window,
KGGuiWindow* potential_parent,
bool popup_hierarchy,
bool dock_hierarchy);
2868 static bool IsWindowNavFocusable(
KGGuiWindow* window);
2869 static void SetWindowPos(
KGGuiWindow* window,
const KGVec2& pos, KarmaGuiCond cond = 0);
2870 static void SetWindowSize(
KGGuiWindow* window,
const KGVec2& size, KarmaGuiCond cond = 0);
2871 static void SetWindowCollapsed(
KGGuiWindow* window,
bool collapsed, KarmaGuiCond cond = 0);
2873 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); }
2874 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); }
2879 static void BringWindowToFocusFront(
KGGuiWindow* window);
2880 static void BringWindowToDisplayFront(
KGGuiWindow* window);
2881 static void BringWindowToDisplayBack(
KGGuiWindow* window);
2883 static int FindWindowDisplayIndex(
KGGuiWindow* window);
2887 static void SetCurrentFont(
KGFont* font);
2888 static KGFont* GetDefaultFont();
2889 static inline KGDrawList* GetForegroundDrawList(
KGGuiWindow* window) {
return KarmaGui::GetForegroundDrawList(window->Viewport); }
2892 static void Initialize();
2893 static void Shutdown();
2896 static void UpdateInputEvents(
bool trickle_fast_inputs);
2897 static void UpdateHoveredWindowAndCaptureFlags();
2898 static void StartMouseMovingWindow(
KGGuiWindow* window);
2900 static void UpdateMouseMovingWindowNewFrame();
2901 static void UpdateMouseMovingWindowEndFrame();
2905 static void RemoveContextHook(
KarmaGuiContext* context, KGGuiID hook_to_remove);
2906 static void CallContextHooks(
KarmaGuiContext* context, ImGuiContextHookType type);
2910 static void ScaleWindowsInViewport(
KGGuiViewportP* viewport,
float scale);
2915 static KGGuiViewportP* FindHoveredViewportFromPlatformWindowStack(
const KGVec2& mouse_platform_pos);
2918 static void MarkIniSettingsDirty();
2919 static void MarkIniSettingsDirty(
KGGuiWindow* window);
2920 static void ClearIniSettings();
2925 static void RemoveSettingsHandler(
const char* type_name);
2929 static void LocalizeRegisterEntries(
const KGGuiLocEntry* entries,
int count);
2930 static const char* LocalizeGetMsg(KGGuiLocKey key);
2933 static void SetScrollX(
KGGuiWindow* window,
float scroll_x);
2934 static void SetScrollY(
KGGuiWindow* window,
float scroll_y);
2935 static void SetScrollFromPosX(
KGGuiWindow* window,
float local_x,
float center_x_ratio);
2936 static void SetScrollFromPosY(
KGGuiWindow* window,
float local_y,
float center_y_ratio);
2939 static void ScrollToItem(KGGuiScrollFlags flags = 0);
2940 static void ScrollToRect(
KGGuiWindow* window,
const KGRect& rect, KGGuiScrollFlags flags = 0);
2944 static inline KGGuiItemStatusFlags GetItemStatusFlags() {
KarmaGuiContext& g = *GKarmaGui;
return g.LastItemData.StatusFlags; }
2945 static inline KGGuiItemFlags GetItemFlags() {
KarmaGuiContext& g = *GKarmaGui;
return g.LastItemData.InFlags; }
2946 static inline KGGuiID GetActiveID() {
KarmaGuiContext& g = *GKarmaGui;
return g.ActiveId; }
2947 static inline KGGuiID GetFocusID() {
KarmaGuiContext& g = *GKarmaGui;
return g.NavId; }
2948 static void SetActiveID(KGGuiID
id,
KGGuiWindow* window);
2949 static void SetFocusID(KGGuiID
id,
KGGuiWindow* window);
2950 static void ClearActiveID();
2951 static KGGuiID GetHoveredID();
2952 static void SetHoveredID(KGGuiID
id);
2953 static void KeepAliveID(KGGuiID
id);
2954 static void MarkItemEdited(KGGuiID
id);
2955 static void PushOverrideID(KGGuiID
id);
2956 static KGGuiID GetIDWithSeed(
const char* str_id_begin,
const char* str_id_end, KGGuiID seed);
2959 static void ItemSize(
const KGVec2& size,
float text_baseline_y = -1.0f);
2960 static inline void ItemSize(
const KGRect& bb,
float text_baseline_y = -1.0f) { ItemSize(bb.GetSize(), text_baseline_y); }
2961 static bool ItemAdd(
const KGRect& bb, KGGuiID
id,
const KGRect* nav_bb = NULL, KGGuiItemFlags extra_flags = 0);
2962 static bool ItemHoverable(
const KGRect& bb, KGGuiID
id);
2963 static bool IsClippedEx(
const KGRect& bb, KGGuiID
id);
2964 static void SetLastItemData(KGGuiID item_id, KGGuiItemFlags in_flags, KGGuiItemStatusFlags status_flags,
const KGRect& item_rect);
2965 static KGVec2 CalcItemSize(
KGVec2 size,
float default_w,
float default_h);
2966 static float CalcWrapWidthForPos(
const KGVec2& pos,
float wrap_pos_x);
2967 static void PushMultiItemsWidths(
int components,
float width_full);
2968 static bool IsItemToggledSelection();
2969 static KGVec2 GetContentRegionMaxAbs();
2973 static void PushItemFlag(KGGuiItemFlags option,
bool enabled);
2974 static void PopItemFlag();
2977 static void LogBegin(KGGuiLogType type,
int auto_open_depth);
2978 static void LogToBuffer(
int auto_open_depth = -1);
2979 static void LogRenderedText(
const KGVec2* ref_pos,
const char* text,
const char* text_end = NULL);
2980 static void LogSetNextTextDecoration(
const char* prefix,
const char* suffix);
2983 static bool BeginChildEx(
const char* name, KGGuiID
id,
const KGVec2& size_arg,
bool border, KarmaGuiWindowFlags flags);
2984 static void OpenPopupEx(KGGuiID
id, KarmaGuiPopupFlags popup_flags = KGGuiPopupFlags_None);
2985 static void ClosePopupToLevel(
int remaining,
bool restore_focus_to_window_under_popup);
2986 static void ClosePopupsOverWindow(
KGGuiWindow* ref_window,
bool restore_focus_to_window_under_popup);
2987 static void ClosePopupsExceptModals();
2988 static bool IsPopupOpen(KGGuiID
id, KarmaGuiPopupFlags popup_flags);
2989 static bool BeginPopupEx(KGGuiID
id, KarmaGuiWindowFlags extra_flags);
2990 static void BeginTooltipEx(KGGuiTooltipFlags tooltip_flags, KarmaGuiWindowFlags extra_window_flags);
2993 static KGGuiWindow* GetTopMostAndVisiblePopupModal();
2995 static KGVec2 FindBestWindowPosForPopupEx(
const KGVec2& ref_pos,
const KGVec2& size, KarmaGuiDir* last_dir,
const KGRect& r_outer,
const KGRect& r_avoid, KGGuiPopupPositionPolicy policy);
2998 static bool BeginViewportSideBar(
const char* name,
KarmaGuiViewport* viewport, KarmaGuiDir dir,
float size, KarmaGuiWindowFlags window_flags);
2999 static bool BeginMenuEx(
const char* label,
const char* icon,
bool enabled =
true);
3000 static bool MenuItemEx(
const char* label,
const char* icon,
const char* shortcut = NULL,
bool selected =
false,
bool enabled =
true);
3003 static bool BeginComboPopup(KGGuiID popup_id,
const KGRect& bb, KarmaGuiComboFlags flags);
3004 static bool BeginComboPreview();
3005 static void EndComboPreview();
3008 static void NavInitWindow(
KGGuiWindow* window,
bool force_reinit);
3009 static void NavInitRequestApplyResult();
3010 static bool NavMoveRequestButNoResultYet();
3011 static void NavMoveRequestSubmit(KarmaGuiDir move_dir, KarmaGuiDir clip_dir, KGGuiNavMoveFlags move_flags, KGGuiScrollFlags scroll_flags);
3012 static void NavMoveRequestForward(KarmaGuiDir move_dir, KarmaGuiDir clip_dir, KGGuiNavMoveFlags move_flags, KGGuiScrollFlags scroll_flags);
3014 static void NavMoveRequestCancel();
3015 static void NavMoveRequestApplyResult();
3016 static void NavMoveRequestTryWrapping(
KGGuiWindow* window, KGGuiNavMoveFlags move_flags);
3017 static void ActivateItem(KGGuiID
id);
3019 static void SetNavID(KGGuiID
id, KGGuiNavLayer nav_layer, KGGuiID focus_scope_id,
const KGRect& rect_rel);
3023 static inline bool IsNamedKey(KarmaGuiKey key) {
return key >= KGGuiKey_NamedKey_BEGIN && key < KGGuiKey_NamedKey_END; }
3024 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; }
3025 static inline bool IsLegacyKey(KarmaGuiKey key) {
return key >= KGGuiKey_LegacyNativeKey_BEGIN && key < KGGuiKey_LegacyNativeKey_END; }
3026 static inline bool IsKeyboardKey(KarmaGuiKey key) {
return key >= KGGuiKey_Keyboard_BEGIN && key < KGGuiKey_Keyboard_END; }
3027 static inline bool IsGamepadKey(KarmaGuiKey key) {
return key >= KGGuiKey_Gamepad_BEGIN && key < KGGuiKey_Gamepad_END; }
3028 static inline bool IsMouseKey(KarmaGuiKey key) {
return key >= KGGuiKey_Mouse_BEGIN && key < KGGuiKey_Mouse_END; }
3029 static inline bool IsAliasKey(KarmaGuiKey key) {
return key >= KGGuiKey_Aliases_BEGIN && key < KGGuiKey_Aliases_END; }
3030 static KarmaGuiKeyChord ConvertShortcutMod(KarmaGuiKeyChord key_chord);
3031 static KarmaGuiKey ConvertSingleModFlagToKey(KarmaGuiKey key);
3033 static void GetKeyChordName(KarmaGuiKeyChord key_chord,
char* out_buf,
int out_buf_size);
3034 static inline KarmaGuiKey MouseButtonToKey(KarmaGuiMouseButton button) { KR_CORE_ASSERT(button >= 0 && button < KGGuiMouseButton_COUNT,
"");
return (KarmaGuiKey)(KGGuiKey_MouseLeft + button); }
3035 static bool IsMouseDragPastThreshold(KarmaGuiMouseButton button,
float lock_threshold = -1.0f);
3036 static KGVec2 GetKeyMagnitude2d(KarmaGuiKey key_left, KarmaGuiKey key_right, KarmaGuiKey key_up, KarmaGuiKey key_down);
3037 static float GetNavTweakPressedAmount(KGGuiAxis axis);
3038 static int CalcTypematicRepeatAmount(
float t0,
float t1,
float repeat_delay,
float repeat_rate);
3039 static void GetTypematicRepeatRate(KarmaGuiInputFlags flags,
float* repeat_delay,
float* repeat_rate);
3040 static void SetActiveIdUsingAllKeyboardKeys();
3041 static inline bool IsActiveIdUsingNavDir(KarmaGuiDir dir);
3054 static KGGuiID GetKeyOwner(KarmaGuiKey key);
3055 static void SetKeyOwner(KarmaGuiKey key, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3056 static void SetItemKeyOwner(KarmaGuiKey key, KarmaGuiInputFlags flags = 0);
3057 static bool TestKeyOwner(KarmaGuiKey key, KGGuiID owner_id);
3066 static bool IsKeyDown(KarmaGuiKey key, KGGuiID owner_id);
3067 static bool IsKeyPressed(KarmaGuiKey key, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3068 static bool IsKeyReleased(KarmaGuiKey key, KGGuiID owner_id);
3069 static bool IsMouseDown(KarmaGuiMouseButton button, KGGuiID owner_id);
3070 static bool IsMouseClicked(KarmaGuiMouseButton button, KGGuiID owner_id, KarmaGuiInputFlags flags = 0);
3071 static bool IsMouseReleased(KarmaGuiMouseButton button, KGGuiID owner_id);
3078 static bool SetShortcutRouting(KarmaGuiKeyChord key_chord, KGGuiID owner_id = 0, KarmaGuiInputFlags flags = 0);
3079 static bool TestShortcutRouting(KarmaGuiKeyChord key_chord, KGGuiID owner_id);
3086 static void DockContextClearNodes(
KarmaGuiContext* ctx, KGGuiID root_id,
bool clear_settings_refs);
3100 static void DockNodeEndAmendTabBar();
3101 static inline KGGuiDockNode* DockNodeGetRootNode(
KGGuiDockNode* node) {
while (node->ParentNode) node = node->ParentNode;
return node; }
3102 static inline bool DockNodeIsInHierarchyOf(
KGGuiDockNode* node,
KGGuiDockNode* parent) {
while (node) {
if (node == parent)
return true; node = node->ParentNode; }
return false; }
3103 static inline int DockNodeGetDepth(
const KGGuiDockNode* node) {
int depth = 0;
while (node->ParentNode) { node = node->ParentNode; depth++; }
return depth; }
3104 static inline KGGuiID DockNodeGetWindowMenuButtonId(
const KGGuiDockNode* node) {
return KGHashStr(
"#COLLAPSE", 0, node->ID); }
3106 static bool GetWindowAlwaysWantOwnTabBar(
KGGuiWindow* window);
3107 static void BeginDocked(
KGGuiWindow* window,
bool* p_open);
3108 static void BeginDockableDragDropSource(
KGGuiWindow* window);
3109 static void BeginDockableDragDropTarget(
KGGuiWindow* window);
3110 static void SetWindowDock(
KGGuiWindow* window, KGGuiID dock_id, KarmaGuiCond cond);
3121 static void DockBuilderDockWindow(
const char* window_name, KGGuiID node_id);
3124 static KGGuiID DockBuilderAddNode(KGGuiID node_id = 0, KarmaGuiDockNodeFlags flags = 0);
3125 static void DockBuilderRemoveNode(KGGuiID node_id);
3126 static void DockBuilderRemoveNodeDockedWindows(KGGuiID node_id,
bool clear_settings_refs =
true);
3127 static void DockBuilderRemoveNodeChildNodes(KGGuiID node_id);
3128 static void DockBuilderSetNodePos(KGGuiID node_id,
KGVec2 pos);
3129 static void DockBuilderSetNodeSize(KGGuiID node_id,
KGVec2 size);
3130 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);
3131 static void DockBuilderCopyDockSpace(KGGuiID src_dockspace_id, KGGuiID dst_dockspace_id,
KGVector<const char*>* in_window_remap_pairs);
3132 static void DockBuilderCopyNode(KGGuiID src_node_id, KGGuiID dst_node_id,
KGVector<KGGuiID>* out_node_remap_pairs);
3133 static void DockBuilderCopyWindowSettings(
const char* src_name,
const char* dst_name);
3134 static void DockBuilderFinish(KGGuiID node_id);
3144 static void PushFocusScope(KGGuiID
id);
3145 static void PopFocusScope();
3146 static inline KGGuiID GetCurrentFocusScope() {
KarmaGuiContext& g = *GKarmaGui;
return g.CurrentFocusScopeId; }
3149 static bool IsDragDropActive();
3150 static bool BeginDragDropTargetCustom(
const KGRect& bb, KGGuiID
id);
3151 static void ClearDragDrop();
3152 static bool IsDragDropPayloadBeingAccepted();
3153 static void RenderDragDropTargetRect(
const KGRect& bb);
3156 static void SetWindowClipRectBeforeSetChannel(
KGGuiWindow* window,
const KGRect& clip_rect);
3157 static void BeginColumns(
const char* str_id,
int count, KGGuiOldColumnFlags flags = 0);
3158 static void EndColumns();
3159 static void PushColumnClipRect(
int column_index);
3160 static void PushColumnsBackground();
3161 static void PopColumnsBackground();
3162 static KGGuiID GetColumnsID(
const char* str_id,
int count);
3164 static float GetColumnOffsetFromNorm(
const KGGuiOldColumns* columns,
float offset_norm);
3165 static float GetColumnNormFromOffset(
const KGGuiOldColumns* columns,
float offset);
3168 static void TableOpenContextMenu(
int column_n = -1);
3169 static void TableSetColumnWidth(
int column_n,
float width);
3170 static void TableSetColumnSortDirection(
int column_n, KarmaGuiSortDirection sort_direction,
bool append_to_sort_specs);
3171 static int TableGetHoveredColumn();
3172 static float TableGetHeaderRowHeight();
3173 static void TablePushBackgroundChannel();
3174 static void TablePopBackgroundChannel();
3178 static KGGuiTable* TableFindByID(KGGuiID
id);
3179 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);
3180 static void TableBeginInitMemory(
KGGuiTable* table,
int columns_count);
3181 static void TableBeginApplyRequests(
KGGuiTable* table);
3182 static void TableSetupDrawChannels(
KGGuiTable* table);
3183 static void TableUpdateLayout(
KGGuiTable* table);
3184 static void TableUpdateBorders(
KGGuiTable* table);
3185 static void TableUpdateColumnsWeightFromWidth(
KGGuiTable* table);
3186 static void TableDrawBorders(
KGGuiTable* table);
3187 static void TableDrawContextMenu(
KGGuiTable* table);
3188 static bool TableBeginContextMenuPopup(
KGGuiTable* table);
3189 static void TableMergeDrawChannels(
KGGuiTable* table);
3190 static inline KGGuiTableInstanceData* TableGetInstanceData(
KGGuiTable* table,
int instance_no) {
if (instance_no == 0)
return &table->InstanceDataFirst;
return &table->InstanceDataExtra[instance_no - 1]; }
3191 static void TableSortSpecsSanitize(
KGGuiTable* table);
3192 static void TableSortSpecsBuild(
KGGuiTable* table);
3193 static KarmaGuiSortDirection TableGetColumnNextSortDirection(
KGGuiTableColumn* column);
3196 static void TableBeginRow(
KGGuiTable* table);
3198 static void TableBeginCell(
KGGuiTable* table,
int column_n);
3201 static const char* TableGetColumnName(
const KGGuiTable* table,
int column_n);
3202 static KGGuiID TableGetColumnResizeID(
const KGGuiTable* table,
int column_n,
int instance_no = 0);
3203 static float TableGetMaxColumnWidth(
const KGGuiTable* table,
int column_n);
3204 static void TableSetColumnWidthAutoSingle(
KGGuiTable* table,
int column_n);
3205 static void TableSetColumnWidthAutoAll(
KGGuiTable* table);
3207 static void TableGcCompactTransientBuffers(
KGGuiTable* table);
3209 static void TableGcCompactSettings();
3212 static void TableLoadSettings(
KGGuiTable* table);
3213 static void TableSaveSettings(
KGGuiTable* table);
3214 static void TableResetSettings(
KGGuiTable* table);
3216 static void TableSettingsAddSettingsHandler();
3225 static void TabBarRemoveTab(
KGGuiTabBar* tab_bar, KGGuiID tab_id);
3229 static bool TabBarProcessReorder(
KGGuiTabBar* tab_bar);
3230 static bool TabItemEx(
KGGuiTabBar* tab_bar,
const char* label,
bool* p_open, KarmaGuiTabItemFlags flags,
KGGuiWindow* docked_window);
3231 static KGVec2 TabItemCalcSize(
const char* label,
bool has_close_button_or_unsaved_marker);
3233 static void TabItemBackground(
KGDrawList* draw_list,
const KGRect& bb, KarmaGuiTabItemFlags flags, KGU32 col);
3234 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);
3239 static void RenderText(
KGVec2 pos,
const char* text,
const char* text_end = NULL,
bool hide_text_after_hash =
true);
3240 static void RenderTextWrapped(
KGVec2 pos,
const char* text,
const char* text_end,
float wrap_width);
3241 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);
3242 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);
3243 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);
3244 static void RenderFrame(
KGVec2 p_min,
KGVec2 p_max, KGU32 fill_col,
bool border =
true,
float rounding = 0.0f);
3245 static void RenderFrameBorder(
KGVec2 p_min,
KGVec2 p_max,
float rounding = 0.0f);
3246 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);
3247 static void RenderNavHighlight(
const KGRect& bb, KGGuiID
id, KGGuiNavHighlightFlags flags = KGGuiNavHighlightFlags_TypeDefault);
3248 static const char* FindRenderedTextEnd(
const char* text,
const char* text_end = NULL);
3249 static void RenderMouseCursor(
KGVec2 pos,
float scale, KarmaGuiMouseCursor mouse_cursor, KGU32 col_fill, KGU32 col_border, KGU32 col_shadow);
3252 static void RenderArrow(
KGDrawList* draw_list,
KGVec2 pos, KGU32 col, KarmaGuiDir dir,
float scale = 1.0f);
3254 static void RenderCheckMark(
KGDrawList* draw_list,
KGVec2 pos, KGU32 col,
float sz);
3255 static void RenderArrowPointingAt(
KGDrawList* draw_list,
KGVec2 pos,
KGVec2 half_sz, KarmaGuiDir direction, KGU32 col);
3256 static void RenderArrowDockMenu(
KGDrawList* draw_list,
KGVec2 p_min,
float sz, KGU32 col);
3257 static void RenderRectFilledRangeH(
KGDrawList* draw_list,
const KGRect& rect, KGU32 col,
float x_start_norm,
float x_end_norm,
float rounding);
3258 static void RenderRectFilledWithHole(
KGDrawList* draw_list,
const KGRect& outer,
const KGRect& inner, KGU32 col,
float rounding);
3259 static KGDrawFlags CalcRoundingFlagsForRectInRect(
const KGRect& r_in,
const KGRect& r_outer,
float threshold);
3262 static void TextEx(
const char* text,
const char* text_end = NULL, KGGuiTextFlags flags = 0);
3263 static bool ButtonEx(
const char* label,
const KGVec2& size_arg =
KGVec2(0, 0), KarmaGuiButtonFlags flags = 0);
3264 static bool ArrowButtonEx(
const char* str_id, KarmaGuiDir dir,
KGVec2 size_arg, KarmaGuiButtonFlags flags = 0);
3265 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);
3266 static void SeparatorEx(KGGuiSeparatorFlags flags);
3267 static bool CheckboxFlags(
const char* label, KGS64* flags, KGS64 flags_value);
3268 static bool CheckboxFlags(
const char* label, KGU64* flags, KGU64 flags_value);
3271 static bool CloseButton(KGGuiID
id,
const KGVec2& pos);
3273 static void Scrollbar(KGGuiAxis axis);
3274 static bool ScrollbarEx(
const KGRect& bb, KGGuiID
id, KGGuiAxis axis, KGS64* p_scroll_v, KGS64 avail_v, KGS64 contents_v, KGDrawFlags flags);
3276 static KGGuiID GetWindowScrollbarID(
KGGuiWindow* window, KGGuiAxis axis);
3277 static KGGuiID GetWindowResizeCornerID(
KGGuiWindow* window,
int n);
3278 static KGGuiID GetWindowResizeBorderID(
KGGuiWindow* window, KarmaGuiDir dir);
3281 static bool ButtonBehavior(
const KGRect& bb, KGGuiID
id,
bool* out_hovered,
bool* out_held, KarmaGuiButtonFlags flags = 0);
3282 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);
3283 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);
3284 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);
3285 static bool TreeNodeBehavior(KGGuiID
id, KarmaGuiTreeNodeFlags flags,
const char* label,
const char* label_end = NULL);
3286 static void TreePushOverrideID(KGGuiID
id);
3287 static void TreeNodeSetOpen(KGGuiID
id,
bool open);
3288 static bool TreeNodeUpdateNextOpen(KGGuiID
id, KarmaGuiTreeNodeFlags flags);
3293 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);
3294 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);
3295 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);
3296 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);
3297 template<
typename T> T
static RoundScalarWithFormatT(
const char* format, KarmaGuiDataType data_type, T v);
3298 template<
typename T>
static bool CheckboxFlagsT(
const char* label, T* flags, T flags_value);
3302 static int DataTypeFormatString(
char* buf,
int buf_size, KarmaGuiDataType data_type,
const void* p_data,
const char* format);
3303 static void DataTypeApplyOp(KarmaGuiDataType data_type,
int op,
void* output,
const void* arg_1,
const void* arg_2);
3304 static bool DataTypeApplyFromText(
const char* buf, KarmaGuiDataType data_type,
void* p_data,
const char* format);
3305 static int DataTypeCompare(KarmaGuiDataType data_type,
const void* arg_1,
const void* arg_2);
3306 static bool DataTypeClamp(KarmaGuiDataType data_type,
void* p_data,
const void* p_min,
const void* p_max);
3309 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);
3310 static bool TempInputText(
const KGRect& bb, KGGuiID
id,
const char* label,
char* buf,
int buf_size, KarmaGuiInputTextFlags flags);
3311 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);
3312 static bool TempInputIsActive(KGGuiID
id);
3315 static void ColorTooltip(
const char* text,
const float* col, KarmaGuiColorEditFlags flags);
3316 static void ColorEditOptionsPopup(
const float* col, KarmaGuiColorEditFlags flags);
3317 static void ColorPickerOptionsPopup(
const float* ref_col, KarmaGuiColorEditFlags flags);
3320 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);
3323 static void ShadeVertsLinearColorGradientKeepAlpha(
KGDrawList* draw_list,
int vert_start_idx,
int vert_end_idx,
KGVec2 gradient_p0,
KGVec2 gradient_p1, KGU32 col0, KGU32 col1);
3324 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);
3327 static void GcCompactTransientMiscBuffers();
3328 static void GcCompactTransientWindowBuffers(
KGGuiWindow* window);
3329 static void GcAwakeTransientWindowBuffers(
KGGuiWindow* window);
3332 static void ErrorCheckEndFrameRecover(KGGuiErrorLogCallback log_callback,
void* user_data = NULL);
3333 static void ErrorCheckEndWindowRecover(KGGuiErrorLogCallback log_callback,
void* user_data = NULL);
3334 static void ErrorCheckUsingSetCursorPosToExtendParentBoundaries();
3335 static void DebugLocateItem(KGGuiID target_id);
3336 static void DebugLocateItemOnHover(KGGuiID target_id);
3337 static void DebugLocateItemResolveWithLastItem();
3338 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); }
3339 static void DebugStartItemPicker();
3341 static void DebugHookIdInfo(KGGuiID
id, KarmaGuiDataType data_type,
const void* data_id,
const void* data_id_end);
3343 static void DebugNodeDockNode(
KGGuiDockNode* node,
const char* label);
3345 static void DebugNodeDrawCmdShowMeshAndBoundingBox(
KGDrawList* out_draw_list,
const KGDrawList* draw_list,
const KGDrawCmd* draw_cmd,
bool show_mesh,
bool show_aabb);
3346 static void DebugNodeFont(
KGFont* font);
3348 static void DebugNodeStorage(
KarmaGuiStorage* storage,
const char* label);
3349 static void DebugNodeTabBar(
KGGuiTabBar* tab_bar,
const char* label);
3350 static void DebugNodeTable(
KGGuiTable* table);
3353 static void DebugNodeWindow(
KGGuiWindow* window,
const char* label);
3356 static void DebugNodeWindowsListByBeginStackParent(
KGGuiWindow** windows,
int windows_size,
KGGuiWindow* parent_in_begin_stack);
3358 static void DebugRenderKeyboardPreview(
KGDrawList* draw_list);