KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
KarmaGuiInternal.h File Reference

This file contains helper routines for UI drawing and relevant data structures. More...

#include "krpch.h"
#include "KarmaGui.h"
#include "KarmaSTBTextEdit.h"

Go to the source code of this file.

Classes

struct  KGStb::StbUndoRecord
struct  KGStb::StbUndoState
struct  KGStb::STB_TexteditState
struct  KGStb::StbTexteditRow
struct  KGVec1
struct  KGVec2ih
struct  KGRect
struct  KGBitArray< BITCOUNT, OFFSET >
struct  KGBitVector
struct  KGSpan< T >
struct  KGSpanAllocator< CHUNKS >
struct  KGPool< T >
struct  KGChunkStream< T >
struct  KGGuiTextIndex
struct  KGDrawListSharedData
struct  KGDrawDataBuilder
struct  KGGuiDataTypeTempStorage
struct  KGGuiDataTypeInfo
struct  KGGuiColorMod
struct  KGGuiStyleMod
struct  KGGuiComboPreviewData
struct  KGGuiGroupData
struct  KGGuiMenuColumns
struct  KGGuiInputTextState
struct  KGGuiPopupData
struct  KGGuiNextWindowData
struct  KGGuiNextItemData
struct  KGGuiLastItemData
struct  KGGuiStackSizes
struct  KGGuiWindowStackData
struct  KGGuiShrinkWidthItem
struct  KGGuiPtrOrIndex
struct  KGGuiInputEventMousePos
struct  KGGuiInputEventMouseWheel
struct  KGGuiInputEventMouseButton
struct  KGGuiInputEventMouseViewport
struct  KGGuiInputEventKey
struct  KGGuiInputEventText
struct  KGGuiInputEventAppFocused
struct  KGGuiInputEvent
struct  KGGuiKeyRoutingData
struct  KGGuiKeyRoutingTable
struct  KGGuiKeyOwnerData
struct  KGGuiListClipperRange
struct  KGGuiListClipperData
struct  KGGuiNavItemData
struct  KGGuiOldColumnData
struct  KGGuiOldColumns
struct  KGGuiDockNode
struct  KGGuiWindowDockStyle
struct  KGGuiDockContext
struct  KGGuiViewportP
struct  KGGuiWindowSettings
struct  KGGuiSettingsHandler
struct  KGGuiLocEntry
struct  KGGuiMetricsConfig
struct  KGGuiStackLevelInfo
struct  KGGuiStackTool
struct  KGGuiContextHook
struct  KarmaGuiContext
struct  KGGuiWindowTempData
struct  KGGuiWindow
struct  KGGuiTabItem
struct  KGGuiTabBar
struct  KGGuiTableColumn
struct  KGGuiTableCellData
struct  KGGuiTableInstanceData
struct  KGGuiTable
struct  KGGuiTableTempData
struct  KGGuiTableColumnSettings
struct  KGGuiTableSettings
class  Karma::KarmaGuiInternal
struct  KGFontBuilderIO

Macros

#define KGGUI_ENABLE_STB_TRUETYPE
#define STB_TEXTEDIT_STRING   KGGuiInputTextState
#define STB_TEXTEDIT_CHARTYPE   KGWchar
#define STB_TEXTEDIT_GETWIDTH_NEWLINE   (-1.0f)
#define STB_TEXTEDIT_UNDOSTATECOUNT   99
#define STB_TEXTEDIT_UNDOCHARCOUNT   999
#define INCLUDE_STB_TEXTEDIT_H
#define STB_TEXTEDIT_POSITIONTYPE   int
#define KARMAGUI_PAYLOAD_TYPE_WINDOW   "_IMWINDOW"
#define KARMAGUI_DEBUG_LOG(...)
#define KARMAGUI_DEBUG_LOG_ACTIVEID(...)
#define KARMAGUI_DEBUG_LOG_FOCUS(...)
#define KARMAGUI_DEBUG_LOG_POPUP(...)
#define KARMAGUI_DEBUG_LOG_NAV(...)
#define ye_right(...)
#define KARMAGUI_DEBUG_LOG_IO(...)
#define KARMAGUI_DEBUG_LOG_DOCKING(...)
#define KARMAGUI_DEBUG_LOG_VIEWPORT(...)
#define KG_STATIC_ASSERT(_COND)
#define KG_PI   3.14159265358979323846f
#define KG_NEWLINE   "\n"
#define KG_TABSIZE   (4)
#define KG_MEMALIGN(_OFF, _ALIGN)
#define KG_F32_TO_INT8_UNBOUND(_VAL)
#define KG_F32_TO_INT8_SAT(_VAL)
#define KG_FLOOR(_VAL)
#define KG_ROUND(_VAL)
#define KG_MSVC_WARNING_SUPPRESS(XXXX)
#define KGFabs(X)
#define KGSqrt(X)
#define KGFmod(X, Y)
#define KGCos(X)
#define KGSin(X)
#define KGAcos(X)
#define KGAtan2(Y, X)
#define KGAtof(STR)
#define KGCeil(X)
#define KG_ROUNDUP_TO_EVEN(_V)
#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN   4
#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX   512
#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC(_RAD, _MAXERROR)
#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_R(_N, _MAXERROR)
#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_ERROR(_N, _RAD)
#define KG_DRAWLIST_ARCFAST_TABLE_SIZE   48
#define IM_DRAWLIST_ARCFAST_SAMPLE_MAX   KG_DRAWLIST_ARCFAST_TABLE_SIZE
#define KGGuiKey_LegacyNativeKey_BEGIN   0
#define KGGuiKey_LegacyNativeKey_END   512
#define KGGuiKey_Keyboard_BEGIN   (KGGuiKey_NamedKey_BEGIN)
#define KGGuiKey_Keyboard_END   (KGGuiKey_GamepadStart)
#define KGGuiKey_Gamepad_BEGIN   (KGGuiKey_GamepadStart)
#define KGGuiKey_Gamepad_END   (KGGuiKey_GamepadRStickDown + 1)
#define KGGuiKey_Mouse_BEGIN   (KGGuiKey_MouseLeft)
#define KGGuiKey_Mouse_END   (KGGuiKey_MouseWheelY + 1)
#define KGGuiKey_Aliases_BEGIN   (KGGuiKey_Mouse_BEGIN)
#define KGGuiKey_Aliases_END   (KGGuiKey_Mouse_END)
#define KGGuiKey_NavKeyboardTweakSlow   KGGuiMod_Ctrl
#define KGGuiKey_NavKeyboardTweakFast   KGGuiMod_Shift
#define KGGuiKey_NavGamepadTweakSlow   KGGuiKey_GamepadL1
#define KGGuiKey_NavGamepadTweakFast   KGGuiKey_GamepadR1
#define KGGuiKey_NavGamepadActivate   KGGuiKey_GamepadFaceDown
#define KGGuiKey_NavGamepadCancel   KGGuiKey_GamepadFaceRight
#define KGGuiKey_NavGamepadMenu   KGGuiKey_GamepadFaceLeft
#define KGGuiKey_NavGamepadInput   KGGuiKey_GamepadFaceUp
#define KGGuiKeyOwner_Any   ((KGGuiID)0)
#define KGGuiKeyOwner_None   ((KGGuiID)-1)
#define DOCKING_HOST_DRAW_CHANNEL_BG   0
#define DOCKING_HOST_DRAW_CHANNEL_FG   1
#define KG_COL32_DISABLE   KG_COL32(0,0,0,1)
#define KARMAGUI_TABLE_MAX_COLUMNS   64
#define KARMAGUI_TABLE_MAX_DRAW_CHANNELS   (4 + 64 * 2)
#define KARMAGUI_TEST_ENGINE_ITEM_ADD(_BB, _ID)
#define KARMAGUI_TEST_ENGINE_ITEM_INFO(_ID, _LABEL, _FLAGS)

Typedefs

typedef int KGGuiDataAuthority
typedef int KGGuiLayoutType
typedef int KGGuiActivateFlags
typedef int KGGuiDebugLogFlags
typedef int KGGuiItemFlags
typedef int KGGuiItemStatusFlags
typedef int KGGuiOldColumnFlags
typedef int KGGuiNavHighlightFlags
typedef int KGGuiNavMoveFlags
typedef int KGGuiNextItemDataFlags
typedef int KGGuiNextWindowDataFlags
typedef int KGGuiScrollFlags
typedef int KGGuiSeparatorFlags
typedef int KGGuiTextFlags
typedef int KGGuiTooltipFlags
typedef void(* KGGuiErrorLogCallback) (void *user_data, const char *fmt,...)
typedef FILE * ImFileHandle
typedef int KGPoolIdx
typedef KGBitArray< KGGuiKey_NamedKey_COUNT, -KGGuiKey_NamedKey_BEGIN > KGBitArrayForNamedKeys
typedef KGS16 KGGuiKeyRoutingIndex
typedef void(* ImGuiContextHookCallback) (KarmaGuiContext *ctx, KGGuiContextHook *hook)
typedef KGS8 KGGuiTableColumnIdx
typedef KGU8 KGGuiTableDrawChannelIdx

Enumerations

enum  KGGuiItemFlags_ {
  KGGuiItemFlags_None = 0 , KGGuiItemFlags_NoTabStop = 1 << 0 , KGGuiItemFlags_ButtonRepeat = 1 << 1 , KGGuiItemFlags_Disabled = 1 << 2 ,
  KGGuiItemFlags_NoNav = 1 << 3 , KGGuiItemFlags_NoNavDefaultFocus = 1 << 4 , KGGuiItemFlags_SelectableDontClosePopup = 1 << 5 , KGGuiItemFlags_MixedValue = 1 << 6 ,
  KGGuiItemFlags_ReadOnly = 1 << 7 , KGGuiItemFlags_NoWindowHoverableCheck = 1 << 8 , KGGuiItemFlags_Inputable = 1 << 10
}
enum  KGGuiItemStatusFlags_ {
  KGGuiItemStatusFlags_None = 0 , KGGuiItemStatusFlags_HoveredRect = 1 << 0 , KGGuiItemStatusFlags_HasDisplayRect = 1 << 1 , KGGuiItemStatusFlags_Edited = 1 << 2 ,
  KGGuiItemStatusFlags_ToggledSelection = 1 << 3 , KGGuiItemStatusFlags_ToggledOpen = 1 << 4 , KGGuiItemStatusFlags_HasDeactivated = 1 << 5 , KGGuiItemStatusFlags_Deactivated = 1 << 6 ,
  KGGuiItemStatusFlags_HoveredWindow = 1 << 7 , KGGuiItemStatusFlags_FocusedByTabbing = 1 << 8 , KGGuiItemStatusFlags_Visible = 1 << 9
}
enum  KGGuiInputTextFlagsPrivate_ { KGGuiInputTextFlags_Multiline = 1 << 26 , KGGuiInputTextFlags_NoMarkEdited = 1 << 27 , KGGuiInputTextFlags_MergedItem = 1 << 28 }
enum  KGGuiButtonFlagsPrivate_ {
  KGGuiButtonFlags_PressedOnClick = 1 << 4 , KGGuiButtonFlags_PressedOnClickRelease = 1 << 5 , KGGuiButtonFlags_PressedOnClickReleaseAnywhere = 1 << 6 , KGGuiButtonFlags_PressedOnRelease = 1 << 7 ,
  KGGuiButtonFlags_PressedOnDoubleClick = 1 << 8 , KGGuiButtonFlags_PressedOnDragDropHold = 1 << 9 , KGGuiButtonFlags_Repeat = 1 << 10 , KGGuiButtonFlags_FlattenChildren = 1 << 11 ,
  KGGuiButtonFlags_AllowItemOverlap = 1 << 12 , KGGuiButtonFlags_DontClosePopups = 1 << 13 , KGGuiButtonFlags_AlignTextBaseLine = 1 << 15 , KGGuiButtonFlags_NoKeyModifiers = 1 << 16 ,
  KGGuiButtonFlags_NoHoldingActiveId = 1 << 17 , KGGuiButtonFlags_NoNavFocus = 1 << 18 , KGGuiButtonFlags_NoHoveredOnFocus = 1 << 19 , KGGuiButtonFlags_NoSetKeyOwner = 1 << 20 ,
  KGGuiButtonFlags_NoTestKeyOwner = 1 << 21 , KGGuiButtonFlags_PressedOnMask_ = KGGuiButtonFlags_PressedOnClick | KGGuiButtonFlags_PressedOnClickRelease | KGGuiButtonFlags_PressedOnClickReleaseAnywhere | KGGuiButtonFlags_PressedOnRelease | KGGuiButtonFlags_PressedOnDoubleClick | KGGuiButtonFlags_PressedOnDragDropHold , KGGuiButtonFlags_PressedOnDefault_ = KGGuiButtonFlags_PressedOnClickRelease
}
enum  KGGuiComboFlagsPrivate_ { KGGuiComboFlags_CustomPreview = 1 << 20 }
enum  KGGuiSliderFlagsPrivate_ { KGGuiSliderFlags_Vertical = 1 << 20 , KGGuiSliderFlags_ReadOnly = 1 << 21 }
enum  KGGuiSelectableFlagsPrivate_ {
  KGGuiSelectableFlags_NoHoldingActiveID = 1 << 20 , KGGuiSelectableFlags_SelectOnNav = 1 << 21 , KGGuiSelectableFlags_SelectOnClick = 1 << 22 , KGGuiSelectableFlags_SelectOnRelease = 1 << 23 ,
  KGGuiSelectableFlags_SpanAvailWidth = 1 << 24 , KGGuiSelectableFlags_DrawHoveredWhenHeld = 1 << 25 , KGGuiSelectableFlags_SetNavIdOnHover = 1 << 26 , KGGuiSelectableFlags_NoPadWithHalfSpacing = 1 << 27 ,
  KGGuiSelectableFlags_NoSetKeyOwner = 1 << 28
}
enum  KGGuiTreeNodeFlagsPrivate_ { KGGuiTreeNodeFlags_ClipLabelForTrailingButton = 1 << 20 }
enum  KGGuiSeparatorFlags_ { KGGuiSeparatorFlags_None = 0 , KGGuiSeparatorFlags_Horizontal = 1 << 0 , KGGuiSeparatorFlags_Vertical = 1 << 1 , KGGuiSeparatorFlags_SpanAllColumns = 1 << 2 }
enum  KGGuiTextFlags_ { KGGuiTextFlags_None = 0 , KGGuiTextFlags_NoWidthForLargeClippedText = 1 << 0 }
enum  KGGuiTooltipFlags_ { KGGuiTooltipFlags_None = 0 , KGGuiTooltipFlags_OverridePreviousTooltip = 1 << 0 }
enum  KGGuiLayoutType_ { KGGuiLayoutType_Horizontal = 0 , KGGuiLayoutType_Vertical = 1 }
enum  KGGuiLogType {
  KGGuiLogType_None = 0 , KGGuiLogType_TTY , KGGuiLogType_File , KGGuiLogType_Buffer ,
  KGGuiLogType_Clipboard
}
enum  KGGuiAxis { KGGuiAxis_None = -1 , KGGuiAxis_X = 0 , KGGuiAxis_Y = 1 }
enum  KGGuiPlotType { KGGuiPlotType_Lines , KGGuiPlotType_Histogram }
enum  KGGuiPopupPositionPolicy { KGGuiPopupPositionPolicy_Default , KGGuiPopupPositionPolicy_ComboBox , KGGuiPopupPositionPolicy_Tooltip }
enum  KGGuiDataTypePrivate_ { KGGuiDataType_String = KGGuiDataType_COUNT + 1 , KGGuiDataType_Pointer , KGGuiDataType_ID }
enum  KGGuiNextWindowDataFlags_ {
  KGGuiNextWindowDataFlags_None = 0 , KGGuiNextWindowDataFlags_HasPos = 1 << 0 , KGGuiNextWindowDataFlags_HasSize = 1 << 1 , KGGuiNextWindowDataFlags_HasContentSize = 1 << 2 ,
  KGGuiNextWindowDataFlags_HasCollapsed = 1 << 3 , KGGuiNextWindowDataFlags_HasSizeConstraint = 1 << 4 , KGGuiNextWindowDataFlags_HasFocus = 1 << 5 , KGGuiNextWindowDataFlags_HasBgAlpha = 1 << 6 ,
  KGGuiNextWindowDataFlags_HasScroll = 1 << 7 , KGGuiNextWindowDataFlags_HasViewport = 1 << 8 , KGGuiNextWindowDataFlags_HasDock = 1 << 9 , KGGuiNextWindowDataFlags_HasWindowClass = 1 << 10
}
enum  KGGuiNextItemDataFlags_ { KGGuiNextItemDataFlags_None = 0 , KGGuiNextItemDataFlags_HasWidth = 1 << 0 , KGGuiNextItemDataFlags_HasOpen = 1 << 1 }
enum  KGGuiInputEventType {
  KGGuiInputEventType_None = 0 , KGGuiInputEventType_MousePos , KGGuiInputEventType_MouseWheel , KGGuiInputEventType_MouseButton ,
  KGGuiInputEventType_MouseViewport , KGGuiInputEventType_Key , KGGuiInputEventType_Text , KGGuiInputEventType_Focus ,
  KGGuiInputEventType_COUNT
}
enum  KGGuiInputSource {
  KGGuiInputSource_None = 0 , KGGuiInputSource_Mouse , KGGuiInputSource_Keyboard , KGGuiInputSource_Gamepad ,
  KGGuiInputSource_Clipboard , KGGuiInputSource_Nav , KGGuiInputSource_COUNT
}
enum  KGGuiInputFlagsPrivate_ {
  KGGuiInputFlags_RepeatRateDefault = 1 << 1 , KGGuiInputFlags_RepeatRateNavMove = 1 << 2 , KGGuiInputFlags_RepeatRateNavTweak = 1 << 3 , KGGuiInputFlags_RepeatRateMask_ = KGGuiInputFlags_RepeatRateDefault | KGGuiInputFlags_RepeatRateNavMove | KGGuiInputFlags_RepeatRateNavTweak ,
  KGGuiInputFlags_CondHovered = 1 << 4 , KGGuiInputFlags_CondActive = 1 << 5 , KGGuiInputFlags_CondDefault_ = KGGuiInputFlags_CondHovered | KGGuiInputFlags_CondActive , KGGuiInputFlags_CondMask_ = KGGuiInputFlags_CondHovered | KGGuiInputFlags_CondActive ,
  KGGuiInputFlags_LockThisFrame = 1 << 6 , KGGuiInputFlags_LockUntilRelease = 1 << 7 , KGGuiInputFlags_RouteMask_ = KGGuiInputFlags_RouteFocused | KGGuiInputFlags_RouteGlobal | KGGuiInputFlags_RouteGlobalLow | KGGuiInputFlags_RouteGlobalHigh , KGGuiInputFlags_RouteExtraMask_ = KGGuiInputFlags_RouteAlways | KGGuiInputFlags_RouteUnlessBgFocused ,
  KGGuiInputFlags_SupportedByIsKeyPressed = KGGuiInputFlags_Repeat | KGGuiInputFlags_RepeatRateMask_ , KGGuiInputFlags_SupportedByShortcut = KGGuiInputFlags_Repeat | KGGuiInputFlags_RepeatRateMask_ | KGGuiInputFlags_RouteMask_ | KGGuiInputFlags_RouteExtraMask_ , KGGuiInputFlags_SupportedBySetKeyOwner = KGGuiInputFlags_LockThisFrame | KGGuiInputFlags_LockUntilRelease , KGGuiInputFlags_SupportedBySetItemKeyOwner = KGGuiInputFlags_SupportedBySetKeyOwner | KGGuiInputFlags_CondMask_
}
enum  KGGuiActivateFlags_ { KGGuiActivateFlags_None = 0 , KGGuiActivateFlags_PreferInput = 1 << 0 , KGGuiActivateFlags_PreferTweak = 1 << 1 , KGGuiActivateFlags_TryToPreserveState = 1 << 2 }
enum  KGGuiScrollFlags_ {
  KGGuiScrollFlags_None = 0 , KGGuiScrollFlags_KeepVisibleEdgeX = 1 << 0 , KGGuiScrollFlags_KeepVisibleEdgeY = 1 << 1 , KGGuiScrollFlags_KeepVisibleCenterX = 1 << 2 ,
  KGGuiScrollFlags_KeepVisibleCenterY = 1 << 3 , KGGuiScrollFlags_AlwaysCenterX = 1 << 4 , KGGuiScrollFlags_AlwaysCenterY = 1 << 5 , KGGuiScrollFlags_NoScrollParent = 1 << 6 ,
  KGGuiScrollFlags_MaskX_ = KGGuiScrollFlags_KeepVisibleEdgeX | KGGuiScrollFlags_KeepVisibleCenterX | KGGuiScrollFlags_AlwaysCenterX , KGGuiScrollFlags_MaskY_ = KGGuiScrollFlags_KeepVisibleEdgeY | KGGuiScrollFlags_KeepVisibleCenterY | KGGuiScrollFlags_AlwaysCenterY
}
enum  KGGuiNavHighlightFlags_ {
  KGGuiNavHighlightFlags_None = 0 , KGGuiNavHighlightFlags_TypeDefault = 1 << 0 , KGGuiNavHighlightFlags_TypeThin = 1 << 1 , KGGuiNavHighlightFlags_AlwaysDraw = 1 << 2 ,
  KGGuiNavHighlightFlags_NoRounding = 1 << 3
}
enum  KGGuiNavMoveFlags_ {
  KGGuiNavMoveFlags_None = 0 , KGGuiNavMoveFlags_LoopX = 1 << 0 , KGGuiNavMoveFlags_LoopY = 1 << 1 , KGGuiNavMoveFlags_WrapX = 1 << 2 ,
  KGGuiNavMoveFlags_WrapY = 1 << 3 , KGGuiNavMoveFlags_AllowCurrentNavId = 1 << 4 , KGGuiNavMoveFlags_AlsoScoreVisibleSet = 1 << 5 , KGGuiNavMoveFlags_ScrollToEdgeY = 1 << 6 ,
  KGGuiNavMoveFlags_Forwarded = 1 << 7 , KGGuiNavMoveFlags_DebugNoResult = 1 << 8 , KGGuiNavMoveFlags_FocusApi = 1 << 9 , KGGuiNavMoveFlags_Tabbing = 1 << 10 ,
  KGGuiNavMoveFlags_Activate = 1 << 11 , KGGuiNavMoveFlags_DontSetNavHighlight = 1 << 12
}
enum  KGGuiNavLayer { KGGuiNavLayer_Main = 0 , KGGuiNavLayer_Menu = 1 , KGGuiNavLayer_COUNT }
enum  KGGuiOldColumnFlags_ {
  KGGuiOldColumnFlags_None = 0 , KGGuiOldColumnFlags_NoBorder = 1 << 0 , KGGuiOldColumnFlags_NoResize = 1 << 1 , KGGuiOldColumnFlags_NoPreserveWidths = 1 << 2 ,
  KGGuiOldColumnFlags_NoForceWithinWindow = 1 << 3 , KGGuiOldColumnFlags_GrowParentContentsSize = 1 << 4
}
enum  KGGuiDockNodeFlagsPrivate_ {
  KGGuiDockNodeFlags_DockSpace = 1 << 10 , KGGuiDockNodeFlags_CentralNode = 1 << 11 , KGGuiDockNodeFlags_NoTabBar = 1 << 12 , KGGuiDockNodeFlags_HiddenTabBar = 1 << 13 ,
  KGGuiDockNodeFlags_NoWindowMenuButton = 1 << 14 , KGGuiDockNodeFlags_NoCloseButton = 1 << 15 , KGGuiDockNodeFlags_NoDocking = 1 << 16 , KGGuiDockNodeFlags_NoDockingSplitMe = 1 << 17 ,
  KGGuiDockNodeFlags_NoDockingSplitOther = 1 << 18 , KGGuiDockNodeFlags_NoDockingOverMe = 1 << 19 , KGGuiDockNodeFlags_NoDockingOverOther = 1 << 20 , KGGuiDockNodeFlags_NoDockingOverEmpty = 1 << 21 ,
  KGGuiDockNodeFlags_NoResizeX = 1 << 22 , KGGuiDockNodeFlags_NoResizeY = 1 << 23 , KGGuiDockNodeFlags_SharedFlagsInheritMask_ = ~0 , KGGuiDockNodeFlags_NoResizeFlagsMask_ = KGGuiDockNodeFlags_NoResize | KGGuiDockNodeFlags_NoResizeX | KGGuiDockNodeFlags_NoResizeY ,
  KGGuiDockNodeFlags_LocalFlagsMask_ = KGGuiDockNodeFlags_NoSplit | KGGuiDockNodeFlags_NoResizeFlagsMask_ | KGGuiDockNodeFlags_AutoHideTabBar | KGGuiDockNodeFlags_DockSpace | KGGuiDockNodeFlags_CentralNode | KGGuiDockNodeFlags_NoTabBar | KGGuiDockNodeFlags_HiddenTabBar | KGGuiDockNodeFlags_NoWindowMenuButton | KGGuiDockNodeFlags_NoCloseButton | KGGuiDockNodeFlags_NoDocking , KGGuiDockNodeFlags_LocalFlagsTransferMask_ = KGGuiDockNodeFlags_LocalFlagsMask_ & ~KGGuiDockNodeFlags_DockSpace , KGGuiDockNodeFlags_SavedFlagsMask_ = KGGuiDockNodeFlags_NoResizeFlagsMask_ | KGGuiDockNodeFlags_DockSpace | KGGuiDockNodeFlags_CentralNode | KGGuiDockNodeFlags_NoTabBar | KGGuiDockNodeFlags_HiddenTabBar | KGGuiDockNodeFlags_NoWindowMenuButton | KGGuiDockNodeFlags_NoCloseButton | KGGuiDockNodeFlags_NoDocking
}
enum  KGGuiDataAuthority_ { KGGuiDataAuthority_Auto , KGGuiDataAuthority_DockNode , KGGuiDataAuthority_Window }
enum  KGGuiDockNodeState { KGGuiDockNodeState_Unknown , KGGuiDockNodeState_HostWindowHiddenBecauseSingleWindow , KGGuiDockNodeState_HostWindowHiddenBecauseWindowsAreResizing , KGGuiDockNodeState_HostWindowVisible }
enum  KGGuiWindowDockStyleCol {
  KGGuiWindowDockStyleCol_Text , KGGuiWindowDockStyleCol_Tab , KGGuiWindowDockStyleCol_TabHovered , KGGuiWindowDockStyleCol_TabActive ,
  KGGuiWindowDockStyleCol_TabUnfocused , KGGuiWindowDockStyleCol_TabUnfocusedActive , KGGuiWindowDockStyleCol_COUNT
}
enum  KGGuiLocKey : int {
  ImGuiLocKey_TableSizeOne , ImGuiLocKey_TableSizeAllFit , ImGuiLocKey_TableSizeAllDefault , ImGuiLocKey_TableResetOrder ,
  ImGuiLocKey_WindowingMainMenuBar , ImGuiLocKey_WindowingPopup , ImGuiLocKey_WindowingUntitled , ImGuiLocKey_DockingHideTabBar ,
  ImGuiLocKey_COUNT
}
enum  KGGuiDebugLogFlags_ {
  KGGuiDebugLogFlags_None = 0 , KGGuiDebugLogFlags_EventActiveId = 1 << 0 , KGGuiDebugLogFlags_EventFocus = 1 << 1 , KGGuiDebugLogFlags_EventPopup = 1 << 2 ,
  KGGuiDebugLogFlags_EventNav = 1 << 3 , KGGuiDebugLogFlags_EventClipper = 1 << 4 , KGGuiDebugLogFlags_EventIO = 1 << 5 , KGGuiDebugLogFlags_EventDocking = 1 << 6 ,
  KGGuiDebugLogFlags_EventViewport = 1 << 7 , KGGuiDebugLogFlags_EventMask_ = KGGuiDebugLogFlags_EventActiveId | KGGuiDebugLogFlags_EventFocus | KGGuiDebugLogFlags_EventPopup | KGGuiDebugLogFlags_EventNav | KGGuiDebugLogFlags_EventClipper | KGGuiDebugLogFlags_EventIO | KGGuiDebugLogFlags_EventDocking | KGGuiDebugLogFlags_EventViewport , KGGuiDebugLogFlags_OutputToTTY = 1 << 10
}
enum  ImGuiContextHookType {
  ImGuiContextHookType_NewFramePre , ImGuiContextHookType_NewFramePost , ImGuiContextHookType_EndFramePre , ImGuiContextHookType_EndFramePost ,
  ImGuiContextHookType_RenderPre , ImGuiContextHookType_RenderPost , ImGuiContextHookType_Shutdown , ImGuiContextHookType_PendingRemoval_
}
enum  KGGuiTabBarFlagsPrivate_ { KGGuiTabBarFlags_DockNode = 1 << 20 , KGGuiTabBarFlags_IsFocused = 1 << 21 , KGGuiTabBarFlags_SaveSettings = 1 << 22 }
enum  KGGuiTabItemFlagsPrivate_ {
  KGGuiTabItemFlags_SectionMask_ = KGGuiTabItemFlags_Leading | KGGuiTabItemFlags_Trailing , KGGuiTabItemFlags_NoCloseButton = 1 << 20 , KGGuiTabItemFlags_Button = 1 << 21 , KGGuiTabItemFlags_Unsorted = 1 << 22 ,
  KGGuiTabItemFlags_Preview = 1 << 23
}

Functions

KGGuiID KGHashData (const void *data, size_t data_size, KGU32 seed=0)
KGGuiID KGHashStr (const char *data, size_t data_size=0, KGU32 seed=0)
KGU32 KGAlphaBlendColors (KGU32 col_a, KGU32 col_b)
int KGStricmp (const char *str1, const char *str2)
int KGStrnicmp (const char *str1, const char *str2, size_t count)
void KGStrncpy (char *dst, const char *src, size_t count)
char * KGStrdup (const char *str)
char * KGStrdupcpy (char *dst, size_t *p_dst_size, const char *str)
const char * KGStrchrRange (const char *str_begin, const char *str_end, char c)
int KGStrlenW (const KGWchar *str)
const char * KGStreolRange (const char *str, const char *str_end)
const KGWchar * KGStrbolW (const KGWchar *buf_mid_line, const KGWchar *buf_begin)
const char * KGStristr (const char *haystack, const char *haystack_end, const char *needle, const char *needle_end)
void KGStrTrimBlanks (char *str)
const char * KGStrSkipBlank (const char *str)
int KGFormatString (char *buf, size_t buf_size, const char *fmt,...) KG_FMTARGS(3)
int KGFormatStringV (char *buf, size_t buf_size, const char *fmt, va_list args) KG_FMTLIST(3)
void KGFormatStringToTempBuffer (const char **out_buf, const char **out_buf_end, const char *fmt,...) KG_FMTARGS(3)
void KGFormatStringToTempBufferV (const char **out_buf, const char **out_buf_end, const char *fmt, va_list args) KG_FMTLIST(3)
const char * KGParseFormatFindStart (const char *format)
const char * KGParseFormatFindEnd (const char *format)
const char * KGParseFormatTrimDecorations (const char *format, char *buf, size_t buf_size)
void KGParseFormatSanitizeForPrinting (const char *fmt_in, char *fmt_out, size_t fmt_out_size)
const char * KGParseFormatSanitizeForScanning (const char *fmt_in, char *fmt_out, size_t fmt_out_size)
int KGParseFormatPrecision (const char *format, int default_value)
const char * KGTextCharToUtf8 (char out_buf[5], unsigned int c)
int KGTextStrToUtf8 (char *out_buf, int out_buf_size, const KGWchar *in_text, const KGWchar *in_text_end)
int KGTextCharFromUtf8 (unsigned int *out_char, const char *in_text, const char *in_text_end)
int KGTextStrFromUtf8 (KGWchar *out_buf, int out_buf_size, const char *in_text, const char *in_text_end, const char **in_remaining=NULL)
int KGTextCountCharsFromUtf8 (const char *in_text, const char *in_text_end)
int KGTextCountUtf8BytesFromChar (const char *in_text, const char *in_text_end)
int KGTextCountUtf8BytesFromStr (const KGWchar *in_text, const KGWchar *in_text_end)
ImFileHandle KGFileOpen (const char *filename, const char *mode)
bool KGFileClose (ImFileHandle file)
KGU64 KGFileGetSize (ImFileHandle file)
KGU64 KGFileRead (void *data, KGU64 size, KGU64 count, ImFileHandle file)
KGU64 KGFileWrite (const void *data, KGU64 size, KGU64 count, ImFileHandle file)
void * KGFileLoadToMemory (const char *filename, const char *mode, size_t *out_file_size=NULL, int padding_bytes=0)
KGVec2 KGBezierCubicCalc (const KGVec2 &p1, const KGVec2 &p2, const KGVec2 &p3, const KGVec2 &p4, float t)
KGVec2 KGBezierCubicClosestPoint (const KGVec2 &p1, const KGVec2 &p2, const KGVec2 &p3, const KGVec2 &p4, const KGVec2 &p, int num_segments)
KGVec2 KGBezierCubicClosestPointCasteljau (const KGVec2 &p1, const KGVec2 &p2, const KGVec2 &p3, const KGVec2 &p4, const KGVec2 &p, float tess_tol)
KGVec2 KGBezierQuadraticCalc (const KGVec2 &p1, const KGVec2 &p2, const KGVec2 &p3, float t)
KGVec2 KGLineClosestPoint (const KGVec2 &a, const KGVec2 &b, const KGVec2 &p)
bool KGTriangleContainsPoint (const KGVec2 &a, const KGVec2 &b, const KGVec2 &c, const KGVec2 &p)
KGVec2 KGTriangleClosestPoint (const KGVec2 &a, const KGVec2 &b, const KGVec2 &c, const KGVec2 &p)
void KGTriangleBarycentricCoords (const KGVec2 &a, const KGVec2 &b, const KGVec2 &c, const KGVec2 &p, float &out_u, float &out_v, float &out_w)
float KGTriangleArea (const KGVec2 &a, const KGVec2 &b, const KGVec2 &c)
KarmaGuiDir KGGetDirQuadrantFromDelta (float dx, float dy)
bool KGBitArrayTestBit (const KGU32 *arr, int n)
void KGBitArrayClearBit (KGU32 *arr, int n)
void KGBitArraySetBit (KGU32 *arr, int n)
void KGBitArraySetBitRange (KGU32 *arr, int n, int n2)
const KGFontBuilderIOImFontAtlasGetBuilderForStbTruetype ()

Variables

KarmaGuiContextGKarmaGui

Detailed Description

This file contains helper routines for UI drawing and relevant data structures.

Author
Ravi Mohan (the_cowboy)
Version
1.0
Date
January 10, 2023

Macro Definition Documentation

◆ KARMAGUI_DEBUG_LOG

#define KARMAGUI_DEBUG_LOG ( ...)
Value:
#define KR_CORE_INFO(...)
A macro for logging information in the Core part.
Definition Log.h:85

◆ KARMAGUI_DEBUG_LOG_ACTIVEID

#define KARMAGUI_DEBUG_LOG_ACTIVEID ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventActiveId) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_DOCKING

#define KARMAGUI_DEBUG_LOG_DOCKING ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventDocking) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_FOCUS

#define KARMAGUI_DEBUG_LOG_FOCUS ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventFocus) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_IO

#define KARMAGUI_DEBUG_LOG_IO ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventIO) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_NAV

#define KARMAGUI_DEBUG_LOG_NAV ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventNav) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_POPUP

#define KARMAGUI_DEBUG_LOG_POPUP ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventPopup) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_DEBUG_LOG_VIEWPORT

#define KARMAGUI_DEBUG_LOG_VIEWPORT ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventViewport) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)

◆ KARMAGUI_TEST_ENGINE_ITEM_ADD

#define KARMAGUI_TEST_ENGINE_ITEM_ADD ( _BB,
_ID )
Value:
((void)0)

◆ KARMAGUI_TEST_ENGINE_ITEM_INFO

#define KARMAGUI_TEST_ENGINE_ITEM_INFO ( _ID,
_LABEL,
_FLAGS )
Value:
((void)g)

◆ KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC

#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC ( _RAD,
_MAXERROR )
Value:
KGClamp(KG_ROUNDUP_TO_EVEN((int)KGCeil(KG_PI / KGAcos(1 - KGMin((_MAXERROR), (_RAD)) / (_RAD)))), KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN, KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX)

◆ KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_ERROR

#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_ERROR ( _N,
_RAD )
Value:
((1 - KGCos(KG_PI / KGMax((float)(_N), KG_PI))) / (_RAD))

◆ KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_R

#define KG_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC_R ( _N,
_MAXERROR )
Value:
((_MAXERROR) / (1 - KGCos(KG_PI / KGMax((float)(_N), KG_PI))))

◆ KG_F32_TO_INT8_SAT

#define KG_F32_TO_INT8_SAT ( _VAL)
Value:
((int)(KGSaturate(_VAL) * 255.0f + 0.5f))

◆ KG_F32_TO_INT8_UNBOUND

#define KG_F32_TO_INT8_UNBOUND ( _VAL)
Value:
((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f)))

◆ KG_FLOOR

#define KG_FLOOR ( _VAL)
Value:
((float)(int)(_VAL))

◆ KG_MEMALIGN

#define KG_MEMALIGN ( _OFF,
_ALIGN )
Value:
(((_OFF) + ((_ALIGN) - 1)) & ~((_ALIGN) - 1))

◆ KG_ROUND

#define KG_ROUND ( _VAL)
Value:
((float)(int)((_VAL) + 0.5f))

◆ KG_ROUNDUP_TO_EVEN

#define KG_ROUNDUP_TO_EVEN ( _V)
Value:
((((_V) + 1) / 2) * 2)

◆ KG_STATIC_ASSERT

#define KG_STATIC_ASSERT ( _COND)
Value:
KR_CORE_ASSERT(_COND, "")

◆ KGAcos

#define KGAcos ( X)
Value:
acosf(X)

◆ KGAtan2

#define KGAtan2 ( Y,
X )
Value:
atan2f((Y), (X))

◆ KGAtof

#define KGAtof ( STR)
Value:
atof(STR)

◆ KGCeil

#define KGCeil ( X)
Value:
ceilf(X)

◆ KGCos

#define KGCos ( X)
Value:
cosf(X)

◆ KGFabs

#define KGFabs ( X)
Value:
fabsf(X)

◆ KGFmod

#define KGFmod ( X,
Y )
Value:
fmodf((X), (Y))

◆ KGSin

#define KGSin ( X)
Value:
sinf(X)

◆ KGSqrt

#define KGSqrt ( X)
Value:
sqrtf(X)

◆ ye_right

#define ye_right ( ...)
Value:
do { if (g.DebugLogFlags & KGGuiDebugLogFlags_EventClipper) KARMAGUI_DEBUG_LOG(__VA_ARGS__); } while (0)