3#ifndef GAME_CLIENT_UI_H
4#define GAME_CLIENT_UI_H
56 virtual float ToRelative(
int AbsoluteValue,
int Min,
int Max)
const = 0;
57 virtual int ToAbsolute(
float RelativeValue,
int Min,
int Max)
const = 0;
62 float ToRelative(
int AbsoluteValue,
int Min,
int Max)
const override
64 return (AbsoluteValue - Min) / (float)(Max - Min);
66 int ToAbsolute(
float RelativeValue,
int Min,
int Max)
const override
68 return round_to_int(RelativeValue * (Max - Min) + Min + 0.1f);
81 float ToRelative(
int AbsoluteValue,
int Min,
int Max)
const override
89 return (std::log(AbsoluteValue) - std::log(Min)) / (float)(std::log(Max) - std::log(Min));
91 int ToAbsolute(
float RelativeValue,
int Min,
int Max)
const override
93 int ResultAdjustment = 0;
100 return round_to_int(std::exp(RelativeValue * (std::log(Max) - std::log(Min)) + std::log(Min))) + ResultAdjustment;
115 return ColorRGBA(0.15f, 0.15f, 0.15f, 0.25f);
117 return ColorRGBA(0.5f, 0.5f, 0.5f, 0.25f);
118 return ColorRGBA(0.0f, 0.0f, 0.0f, 0.25f);
127 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.4f);
129 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.6f);
130 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.5f);
139 return ColorRGBA(0.9f, 0.9f, 0.9f, 1.0f);
141 return ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
142 return ColorRGBA(0.8f, 0.8f, 0.8f, 1.0f);
195 void Init(
CUi *pUI,
int RequestedRectCount);
575 void DoSmoothScrollLogic(
float *pScrollOffset,
float *pScrollOffsetChange,
float ViewPortSize,
float TotalSize,
bool SmoothClamp =
false,
float ScrollSpeed = 10.0f)
const;
Definition: textrender.h:206
IClient * Client() const
Definition: ui.cpp:96
IInput * Input() const
Definition: ui.cpp:98
static void Init(CUi *pUI)
Definition: ui.h:249
ITextRender * TextRender() const
Definition: ui.cpp:99
static CUi * s_pUI
Definition: ui.h:246
IGraphics * Graphics() const
Definition: ui.cpp:97
CUi * Ui() const
Definition: ui.h:255
CUi * m_pUI
Definition: ui.h:152
bool AreRectsInit()
Definition: ui.h:202
std::vector< SUIElementRect > m_vUIRects
Definition: ui.h:190
SUIElementRect * Rect(size_t Index)
Definition: ui.h:197
CUi * Ui() const
Definition: ui.h:189
CUIElement(CUi *pUI, int RequestedRectCount)
Definition: ui.h:154
void InitRects(int RequestedRectCount)
Definition: ui.cpp:29
void Init(CUi *pUI, int RequestedRectCount)
Definition: ui.cpp:21
float m_LastClickTime
Definition: ui.h:371
vec2 m_LastClickPos
Definition: ui.h:372
const void * m_pLastClickedId
Definition: ui.h:370
bool m_AnyPressed
Definition: ui.h:346
vec2 m_PrimaryDelta
Definition: ui.h:350
float m_SecondaryActivationTime
Definition: ui.h:342
bool m_SecondaryPressedNext
Definition: ui.h:341
bool m_PrimaryPressed
Definition: ui.h:347
bool m_SecondaryPressed
Definition: ui.h:348
vec2 m_PrimaryPosition
Definition: ui.h:349
vec2 m_ScrollAmount
Definition: ui.h:351
vec2 m_SecondaryActivationDelta
Definition: ui.h:343
CLineInputNumber m_NumberInput
Definition: ui.h:384
bool m_DidScroll
Definition: ui.h:382
float m_ScrollValue
Definition: ui.h:383
const void * m_pLastTextId
Definition: ui.h:385
int m_Button
Definition: ui.h:381
void DoPopupMenu(const SPopupMenuId *pId, float X, float Y, float Width, float Height, void *pContext, FPopupMenuFunction pfnFunc, const SPopupMenuProperties &Props={})
Definition: ui.cpp:1561
void ResetUIElement(CUIElement &UIElement) const
Definition: ui.cpp:143
void ClipEnable(const CUIRect *pRect)
Definition: ui.cpp:459
EEditState DoPickerLogic(const void *pId, const CUIRect *pRect, float *pX, float *pY)
Definition: ui.cpp:619
static const CLogarithmicScrollbarScale ms_LogarithmicScrollbarScale
Definition: ui.h:438
vec2 m_UpdatedMouseDelta
Definition: ui.h:390
void FinishCheck()
Definition: ui.h:536
void RenderProgressSpinner(vec2 Center, float OuterRadius, const SProgressSpinnerProperties &Props={}) const
Definition: ui.cpp:1519
bool OnInput(const IInput::CEvent &Event)
Definition: ui.cpp:387
int DoButton_PopupMenu(CButtonContainer *pButtonContainer, const char *pText, const CUIRect *pRect, float Size, int Align, float Padding=0.0f, bool TransparentInactive=false, bool Enabled=true)
Definition: ui.cpp:1142
CTouchState m_TouchState
Definition: ui.h:397
std::function< void()> FPopupMenuClosedCallback
Definition: ui.h:332
std::vector< SPopupMenu > m_vPopupMenus
Definition: ui.h:420
void EnableMouseLock(const void *pId)
Definition: ui.h:505
vec2 m_MousePos
Definition: ui.h:391
const void * HotItem() const
Definition: ui.h:530
void DoLabel(const CUIRect *pRect, const char *pText, float Size, int Align, const SLabelProperties &LabelProps={}) const
Definition: ui.cpp:793
void SetPopupMenuClosedCallback(FPopupMenuClosedCallback pfnCallback)
Definition: ui.cpp:1676
bool MouseInside(const CUIRect *pRect) const
Definition: ui.cpp:270
std::vector< CUIElement * > m_vpOwnUIElements
Definition: ui.h:433
void ResetMouseSlow()
Definition: ui.h:551
unsigned m_UpdatedMouseButtons
Definition: ui.h:394
int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, const unsigned Flags)
Definition: ui.cpp:506
IGraphics * m_pGraphics
Definition: ui.h:429
const void * m_pActiveItem
Definition: ui.h:358
bool IsPopupHovered() const
Definition: ui.cpp:1671
unsigned m_HotkeysPressed
Definition: ui.h:402
constexpr float ButtonColorMulHot() const
Definition: ui.h:558
void SetEnabled(bool Enabled)
Definition: ui.h:481
vec2 MousePos() const
Definition: ui.h:486
void SetActiveItem(const void *pId)
Definition: ui.h:513
EHotkey
Definition: ui.h:455
@ HOTKEY_TAB
Definition: ui.h:463
@ HOTKEY_PAGE_DOWN
Definition: ui.h:467
@ HOTKEY_DELETE
Definition: ui.h:462
@ HOTKEY_SCROLL_UP
Definition: ui.h:464
@ HOTKEY_ESCAPE
Definition: ui.h:457
@ HOTKEY_END
Definition: ui.h:469
@ HOTKEY_SCROLL_DOWN
Definition: ui.h:465
@ HOTKEY_ENTER
Definition: ui.h:456
@ HOTKEY_PAGE_UP
Definition: ui.h:466
@ HOTKEY_LEFT
Definition: ui.h:460
@ HOTKEY_RIGHT
Definition: ui.h:461
@ HOTKEY_DOWN
Definition: ui.h:459
@ HOTKEY_HOME
Definition: ui.h:468
@ HOTKEY_UP
Definition: ui.h:458
int DoDropDown(CUIRect *pRect, int CurSelection, const char **pStrs, int Num, SDropDownState &State)
Definition: ui.cpp:1870
bool IsClipped() const
Definition: ui.h:569
float PixelSize()
Definition: ui.cpp:454
CScrollRegion * m_pBecomingHotScrollRegion
Definition: ui.h:362
static const CLinearScrollbarScale ms_LinearScrollbarScale
Definition: ui.h:437
bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const std::vector< STextColorSplit > &vColorSplits={})
Definition: ui.cpp:897
bool IsPopupOpen() const
Definition: ui.cpp:1661
void DoLabelStreamed(CUIElement::SUIElementRect &RectEl, const CUIRect *pRect, const char *pText, float Size, int Align, const SLabelProperties &LabelProps={}, int StrLen=-1, const CTextCursor *pReadCursor=nullptr) const
Definition: ui.cpp:833
void DebugRender(float X, float Y)
Definition: ui.cpp:261
constexpr float ButtonColorMulDefault() const
Definition: ui.h:559
~CUi()
Definition: ui.cpp:120
void OnCursorMove(float X, float Y)
Definition: ui.cpp:166
static vec2 CalcAlignedCursorPos(const CUIRect *pRect, vec2 TextSize, int Align, const float *pBiggestCharHeight=nullptr)
Definition: ui.cpp:766
vec2 m_MouseWorldPos
Definition: ui.h:393
static CUi::EPopupMenuFunctionResult PopupSelection(void *pContext, CUIRect View, bool Active)
Definition: ui.cpp:1791
vec2 UpdatedMousePos() const
Definition: ui.h:495
int64_t DoValueSelector(const void *pId, const CUIRect *pRect, const char *pLabel, int64_t Current, int64_t Min, int64_t Max, const SValueSelectorProperties &Props={})
Definition: ui.cpp:1154
vec2 m_MouseDelta
Definition: ui.h:392
FPopupMenuClosedCallback m_pfnPopupMenuClosedCallback
Definition: ui.h:421
bool ConsumeHotkey(EHotkey Hotkey)
Definition: ui.cpp:380
int m_ActiveDraggableButtonLogicButton
Definition: ui.h:366
void RenderProgressBar(CUIRect ProgressBar, float Progress)
Definition: ui.cpp:1511
void UpdateTouchState(CTouchState &State) const
Definition: ui.cpp:299
IClient * m_pClient
Definition: ui.h:428
static CUi::EPopupMenuFunctionResult PopupConfirm(void *pContext, CUIRect View, bool Active)
Definition: ui.cpp:1743
IClient * Client() const
Definition: ui.h:446
vec2 MouseWorldPos() const
Definition: ui.h:492
static const CDarkButtonColorFunction ms_DarkButtonColorFunction
Definition: ui.h:439
static const CScrollBarColorFunction ms_ScrollBarColorFunction
Definition: ui.h:441
bool Enabled() const
Definition: ui.h:482
ITextRender * m_pTextRender
Definition: ui.h:431
float MouseWorldX() const
Definition: ui.h:493
bool MouseHovered(const CUIRect *pRect) const
Definition: ui.h:548
unsigned m_MouseButtons
Definition: ui.h:395
IInput * Input() const
Definition: ui.h:448
void MapScreen()
Definition: ui.cpp:448
void DisableMouseLock()
Definition: ui.h:510
void ConvertMouseMove(float *pX, float *pY, IInput::ECursorType CursorType) const
Definition: ui.cpp:275
float MouseY() const
Definition: ui.h:488
float DoScrollbarV(const void *pId, const CUIRect *pRect, float Current)
Definition: ui.cpp:1286
bool m_ActiveItemValid
Definition: ui.h:363
float ButtonColorMul(const void *pId)
Definition: ui.cpp:432
ITextRender * TextRender() const
Definition: ui.h:449
float MouseDeltaY() const
Definition: ui.h:491
void AddUIElement(CUIElement *pElement)
Definition: ui.cpp:138
unsigned m_LastMouseButtons
Definition: ui.h:396
int MouseButton(int Index) const
Definition: ui.h:497
CScrollRegion * m_pHotScrollRegion
Definition: ui.h:361
int m_ActiveButtonLogicButton
Definition: ui.h:365
static CUi::EPopupMenuFunctionResult PopupMessage(void *pContext, CUIRect View, bool Active)
Definition: ui.cpp:1691
const void * m_pLastActiveItem
Definition: ui.h:359
bool MouseInsideClip() const
Definition: ui.h:547
int DoButton_Menu(CUIElement &UIElement, const CButtonContainer *pId, const std::function< const char *()> &GetTextLambda, const CUIRect *pRect, const SMenuButtonProperties &Props={})
Definition: ui.cpp:1040
void ShowPopupMessage(float X, float Y, SMessagePopupContext *pContext)
Definition: ui.cpp:1703
void ClosePopupMenu(const SPopupMenuId *pId, bool IncludeDescendants=false)
Definition: ui.cpp:1635
bool DoDoubleClickLogic(const void *pId)
Definition: ui.cpp:604
static const CLightButtonColorFunction ms_LightButtonColorFunction
Definition: ui.h:440
void ClearHotkeys()
Definition: ui.h:554
std::vector< CUIRect > m_vClips
Definition: ui.h:406
IGraphics * Graphics() const
Definition: ui.h:447
float m_ActiveScrollbarOffset
Definition: ui.h:376
void OnWindowResize()
Definition: ui.cpp:161
EPopupMenuFunctionResult(* FPopupMenuFunction)(void *pContext, CUIRect View, bool Active)
Definition: ui.h:327
const void * m_pLastEditingItem
Definition: ui.h:375
void UpdateClipping()
Definition: ui.cpp:491
static CUi::EPopupMenuFunctionResult PopupColorPicker(void *pContext, CUIRect View, bool Active)
Definition: ui.cpp:1914
vec2 UpdatedMouseDelta() const
Definition: ui.h:496
const CScrollRegion * HotScrollRegion() const
Definition: ui.h:533
@ SCROLLBAR_OPTION_MULTILINE
Definition: ui.h:651
@ SCROLLBAR_OPTION_INFINITE
Definition: ui.h:649
@ SCROLLBAR_OPTION_NOCLAMPVALUE
Definition: ui.h:650
vec2 m_UpdatedMousePos
Definition: ui.h:389
float MouseDeltaX() const
Definition: ui.h:490
void ShowPopupSelection(float X, float Y, SSelectionPopupContext *pContext)
Definition: ui.cpp:1841
bool m_MouseSlow
Definition: ui.h:398
void SetHotScrollRegion(CScrollRegion *pId)
Definition: ui.h:529
int MouseButtonClicked(int Index) const
Definition: ui.h:498
const void * ActiveItem() const
Definition: ui.h:532
int DoDraggableButtonLogic(const void *pId, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted)
Definition: ui.cpp:543
const CUIRect * Screen()
Definition: ui.cpp:441
static const float ms_FontmodHeight
Definition: ui.h:443
CUi()
Definition: ui.cpp:112
IInput * m_pInput
Definition: ui.h:430
void ShowPopupConfirm(float X, float Y, SConfirmPopupContext *pContext)
Definition: ui.cpp:1730
float DoScrollbarH(const void *pId, const CUIRect *pRect, float Current, const ColorRGBA *pColorInner=nullptr)
Definition: ui.cpp:1356
std::vector< CUIElement * > m_vpUIElements
Definition: ui.h:434
vec2 MouseDelta() const
Definition: ui.h:489
const void * m_pBecomingHotItem
Definition: ui.h:360
void OnElementsReset()
Definition: ui.cpp:153
const CUIRect * ClipArea() const
Definition: ui.cpp:485
bool CheckActiveItem(const void *pId)
Definition: ui.h:520
CUIRect m_Screen
Definition: ui.h:404
const void * m_pMouseLockId
Definition: ui.h:400
void StartCheck()
Definition: ui.h:535
SEditResult< int64_t > DoValueSelectorWithState(const void *pId, const CUIRect *pRect, const char *pLabel, int64_t Current, int64_t Min, int64_t Max, const SValueSelectorProperties &Props={})
Definition: ui.cpp:1159
void Update(vec2 MouseWorldPos=vec2(-1.0f, -1.0f))
Definition: ui.cpp:177
constexpr float ButtonColorMulActive() const
Definition: ui.h:557
bool CheckMouseLock()
Definition: ui.h:499
void ClipDisable()
Definition: ui.cpp:478
void Init(IKernel *pKernel)
Definition: ui.cpp:101
EPopupMenuFunctionResult
Definition: ui.h:300
@ POPUP_KEEP_OPEN
Definition: ui.h:304
@ POPUP_CLOSE_CURRENT_AND_DESCENDANTS
Definition: ui.h:314
@ POPUP_CLOSE_CURRENT
Definition: ui.h:309
void SetHotItem(const void *pId)
Definition: ui.h:512
float MouseWorldY() const
Definition: ui.h:494
CUIElement * GetNewUIElement(int RequestedRectCount)
Definition: ui.cpp:129
bool DoEditBox_Search(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, bool HotkeyEnabled)
Definition: ui.cpp:1021
bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const std::vector< STextColorSplit > &vColorSplits={})
Definition: ui.cpp:1000
CDoubleClickState m_DoubleClickState
Definition: ui.h:374
bool m_Enabled
Definition: ui.h:355
bool m_MouseLock
Definition: ui.h:399
void DoSmoothScrollLogic(float *pScrollOffset, float *pScrollOffsetChange, float ViewPortSize, float TotalSize, bool SmoothClamp=false, float ScrollSpeed=10.0f) const
Definition: ui.cpp:660
const void * NextHotItem() const
Definition: ui.h:531
void ShowPopupColorPicker(float X, float Y, SColorPickerPopupContext *pContext)
Definition: ui.cpp:2188
const void * m_pHotItem
Definition: ui.h:357
void RenderPopupMenus()
Definition: ui.cpp:1581
CValueSelectorState m_ActiveValueSelectorState
Definition: ui.h:387
void ClosePopupMenus()
Definition: ui.cpp:1650
float m_ProgressSpinnerOffset
Definition: ui.h:377
float MouseX() const
Definition: ui.h:487
bool DoScrollbarOption(const void *pId, int *pOption, const CUIRect *pRect, const char *pStr, int Min, int Max, const IScrollbarScale *pScale=&ms_LinearScrollbarScale, unsigned Flags=0u, const char *pSuffix="")
Definition: ui.cpp:1457
void DoLabel_AutoLineSize(const char *pText, float FontSize, int Align, CUIRect *pRect, float LineSize, const SLabelProperties &LabelProps={}) const
Definition: ui.cpp:889
Definition: graphics.h:184
@ CORNER_ALL
Definition: graphics.h:416
Definition: textrender.h:314
T x
Definition: vmath.h:19
T y
Definition: vmath.h:23
constexpr int round_to_int(float f)
Definition: math.h:14
constexpr T maximum(T a, T b)
Definition: math.h:145
CUIElement * m_pParent
Definition: ui.h:159
float m_Y
Definition: ui.h:166
CTextCursor m_Cursor
Definition: ui.h:175
float m_Height
Definition: ui.h:168
float m_Width
Definition: ui.h:167
ColorRGBA m_TextColor
Definition: ui.h:177
int m_ReadCursorGlyphCount
Definition: ui.h:173
int m_UIRectQuadContainer
Definition: ui.h:162
ColorRGBA m_TextOutlineColor
Definition: ui.h:178
void Draw(const CUIRect *pRect, ColorRGBA Color, int Corners, float Rounding)
Definition: ui.cpp:57
std::string m_Text
Definition: ui.h:172
SUIElementRect()
Definition: ui.cpp:37
float m_Rounding
Definition: ui.h:169
void Reset()
Definition: ui.cpp:39
STextContainerIndex m_UITextContainer
Definition: ui.h:163
ColorRGBA m_QuadColor
Definition: ui.h:182
int m_Corners
Definition: ui.h:170
float m_X
Definition: ui.h:165
CUIElement m_UiElement
Definition: ui.h:768
CButtonContainer m_ButtonContainer
Definition: ui.h:769
bool m_Init
Definition: ui.h:770
SSelectionPopupContext m_SelectionPopupContext
Definition: ui.h:767
T m_Value
Definition: ui.h:35
EEditState m_State
Definition: ui.h:34
float m_MaxWidth
Definition: ui.h:212
std::vector< STextColorSplit > m_vColorSplits
Definition: ui.h:216
bool m_StopAtEnd
Definition: ui.h:213
bool m_EllipsisAtEnd
Definition: ui.h:214
bool m_EnableWidthCheck
Definition: ui.h:215
int m_Segments
Definition: ui.h:276
ColorRGBA m_Color
Definition: ui.h:275
float m_Progress
Definition: ui.h:274
Definition: textrender.h:295
std::chrono::nanoseconds m_Time
Definition: ui.h:44
bool m_ScaleLabel
Definition: ui.h:41
float m_Value
Definition: ui.h:45
float m_XOffset
Definition: ui.h:47
bool m_Active
Definition: ui.h:40
float m_HOffset
Definition: ui.h:50
float m_WOffset
Definition: ui.h:49
bool m_RepositionLabel
Definition: ui.h:42
float m_YOffset
Definition: ui.h:48
int64_t m_Step
Definition: ui.h:265
ColorRGBA m_Color
Definition: ui.h:269
float m_Scale
Definition: ui.h:266
int m_HexPrefix
Definition: ui.h:268
bool m_UseScroll
Definition: ui.h:264
bool m_IsHex
Definition: ui.h:267
EButtonFlags
Definition: ui.h:220
@ BUTTONFLAG_MIDDLE
Definition: ui.h:224
@ BUTTONFLAG_ALL
Definition: ui.h:226
@ BUTTONFLAG_LEFT
Definition: ui.h:222
@ BUTTONFLAG_RIGHT
Definition: ui.h:223
@ BUTTONFLAG_NONE
Definition: ui.h:221
EEditState
Definition: ui.h:23
vector2_base< float > vec2
Definition: vmath.h:158