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"
Include dependency graph for KarmaGuiInternal.h:
This graph shows which files directly or indirectly include this file:

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)