DDNet documentation
Loading...
Searching...
No Matches
ui.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_UI_H
4#define GAME_CLIENT_UI_H
5
6#include "lineinput.h"
7#include "tooltips.h"
8#include "ui_rect.h"
9
10#include <engine/input.h>
11#include <engine/textrender.h>
12
13#include <chrono>
14#include <memory>
15#include <string>
16#include <vector>
17
18class CScrollRegion;
19class IClient;
20class IGraphics;
21class IKernel;
22class CTooltip;
23
24enum class EEditState
25{
26 NONE,
31};
32
33template<typename T>
39
41{
45
46 std::chrono::nanoseconds m_Time;
47 float m_Value;
48
49 float m_XOffset;
50 float m_YOffset;
51 float m_WOffset;
52 float m_HOffset;
53};
54
56{
57public:
58 virtual ~IScrollbarScale() = default;
59 virtual float ToRelative(int AbsoluteValue, int Min, int Max) const = 0;
60 virtual int ToAbsolute(float RelativeValue, int Min, int Max) const = 0;
61};
63{
64public:
65 float ToRelative(int AbsoluteValue, int Min, int Max) const override
66 {
67 return (AbsoluteValue - Min) / (float)(Max - Min);
68 }
69 int ToAbsolute(float RelativeValue, int Min, int Max) const override
70 {
71 return round_to_int(RelativeValue * (Max - Min) + Min + 0.1f);
72 }
73};
75{
76private:
78
79public:
80 CLogarithmicScrollbarScale(int MinAdjustment)
81 {
82 m_MinAdjustment = std::max(MinAdjustment, 1); // must be at least 1 to support Min == 0 with logarithm
83 }
84 float ToRelative(int AbsoluteValue, int Min, int Max) const override
85 {
86 if(Min < m_MinAdjustment)
87 {
88 AbsoluteValue += m_MinAdjustment;
89 Min += m_MinAdjustment;
90 Max += m_MinAdjustment;
91 }
92 return (std::log(AbsoluteValue) - std::log(Min)) / (float)(std::log(Max) - std::log(Min));
93 }
94 int ToAbsolute(float RelativeValue, int Min, int Max) const override
95 {
96 int ResultAdjustment = 0;
97 if(Min < m_MinAdjustment)
98 {
99 Min += m_MinAdjustment;
100 Max += m_MinAdjustment;
101 ResultAdjustment = -m_MinAdjustment;
102 }
103 return round_to_int(std::exp(RelativeValue * (std::log(Max) - std::log(Min)) + std::log(Min))) + ResultAdjustment;
104 }
105};
106
108{
109public:
110 virtual ~IButtonColorFunction() = default;
111 virtual ColorRGBA GetColor(bool Active, bool Hovered) const = 0;
112};
114{
115public:
116 ColorRGBA GetColor(bool Active, bool Hovered) const override
117 {
118 if(Active)
119 return ColorRGBA(0.15f, 0.15f, 0.15f, 0.25f);
120 else if(Hovered)
121 return ColorRGBA(0.5f, 0.5f, 0.5f, 0.25f);
122 return ColorRGBA(0.0f, 0.0f, 0.0f, 0.25f);
123 }
124};
126{
127public:
128 ColorRGBA GetColor(bool Active, bool Hovered) const override
129 {
130 if(Active)
131 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.4f);
132 else if(Hovered)
133 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.6f);
134 return ColorRGBA(1.0f, 1.0f, 1.0f, 0.5f);
135 }
136};
138{
139public:
140 ColorRGBA GetColor(bool Active, bool Hovered) const override
141 {
142 if(Active)
143 return ColorRGBA(0.9f, 0.9f, 0.9f, 1.0f);
144 else if(Hovered)
145 return ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
146 return ColorRGBA(0.8f, 0.8f, 0.8f, 1.0f);
147 }
148};
149
150class CUi;
151
153{
154 friend class CUi;
155
157
158 CUIElement(CUi *pUI, int RequestedRectCount) { Init(pUI, RequestedRectCount); }
159
160public:
162 {
164
165 public:
168
169 float m_X;
170 float m_Y;
171 float m_Width;
172 float m_Height;
175
176 std::string m_Text;
178
180
183
185
187
188 void Reset();
189 void Draw(const CUIRect *pRect, ColorRGBA Color, int Corners, float Rounding);
190 };
191
192protected:
193 CUi *Ui() const { return m_pUI; }
194 std::vector<SUIElementRect> m_vUIRects;
195
196public:
197 CUIElement() = default;
198
199 void Init(CUi *pUI, int RequestedRectCount);
200
201 SUIElementRect *Rect(size_t Index)
202 {
203 return &m_vUIRects[Index];
204 }
205
207 {
208 return !m_vUIRects.empty();
209 }
210
211 void InitRects(int RequestedRectCount);
212};
213
215{
216 float m_MaxWidth = -1;
217 bool m_StopAtEnd = false;
218 bool m_EllipsisAtEnd = false;
220 float m_MinimumFontSize = 5.0f;
221 std::vector<STextColorSplit> m_vColorSplits;
222 void *m_pTooltipId = nullptr;
223
224 void SetColor(const ColorRGBA &Color);
225};
226
228{
229public:
231};
232
242
244{
245 int m_Checked = 0;
248 bool m_UseIconFont = false;
249 bool m_ShowDropDownIcon = false;
251 float m_Rounding = 5.0f;
252 float m_FontFactor = 0.0f;
253 ColorRGBA m_Color = ColorRGBA(1.0f, 1.0f, 1.0f, 0.5f);
255};
256
258{
259private:
260 static CUi *ms_pUi;
261
262public:
263 static void Init(CUi *pUI) { ms_pUi = pUI; }
264
265 IClient *Client() const;
266 IGraphics *Graphics() const;
267 IInput *Input() const;
268 ITextRender *TextRender() const;
269 CUi *Ui() const { return ms_pUi; }
270};
271
273{
274};
275
277{
278 bool m_UseScroll = true;
279 int64_t m_Step = 1;
280 float m_Scale = 1.0f;
281 bool m_IsHex = false;
282 int m_HexPrefix = 6;
283 ColorRGBA m_Color = ColorRGBA(0.0f, 0.0f, 0.0f, 0.4f);
284};
285
287{
288 float m_Progress = -1.0f; // between 0.0f and 1.0f, or negative for indeterminate progress
289 ColorRGBA m_Color = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
290 int m_Segments = 64;
291};
292
297{
298};
299
301{
303 ColorRGBA m_BorderColor = ColorRGBA(0.5f, 0.5f, 0.5f, 0.75f);
304 ColorRGBA m_BackgroundColor = ColorRGBA(0.0f, 0.0f, 0.0f, 0.75f);
305};
306
316{
318 std::string m_Text;
319 float m_FontSize = -1.0f;
320 float m_LineWidth = -1.0f;
322 STextBoundingBox m_BoundingBox = {0.0f, 0.0f, 0.0f, 0.0f};
324
325public:
326 CCachedText() = default;
327 // Copying would leave two owners for the same text container.
328 CCachedText(const CCachedText &) = delete;
330
331 void Update(ITextRender *pTextRender, const char *pText, float FontSize, float LineWidth = -1.0f, int CursorFlags = TEXTFLAG_RENDER);
332 void Render(ITextRender *pTextRender, vec2 Pos, ColorRGBA Color) const;
333 void Reset(ITextRender *pTextRender);
334
335 float Width() const { return m_BoundingBox.m_W; }
336 float MaxCharacterHeight() const { return m_MaxCharacterHeight; }
337};
338
339class CUi
340{
341public:
362
373 typedef EPopupMenuFunctionResult (*FPopupMenuFunction)(void *pContext, CUIRect View, bool Active);
374
378 typedef std::function<void()> FPopupMenuClosedCallback;
379
384 {
385 friend class CUi;
386
390
391 public:
392 bool m_AnyPressed = false;
393 bool m_PrimaryPressed = false;
394 bool m_SecondaryPressed = false;
395 vec2 m_PrimaryPosition = vec2(-1.0f, -1.0f);
396 vec2 m_PrimaryDelta = vec2(0.0f, 0.0f);
397 vec2 m_ScrollAmount = vec2(0.0f, 0.0f);
398 };
399
400private:
402
403 const void *m_pHotItem = nullptr;
404 const void *m_pActiveItem = nullptr;
405 const void *m_pLastActiveItem = nullptr; // only used internally to track active CLineInput
406 const void *m_pBecomingHotItem = nullptr;
409 bool m_ActiveItemValid = false;
410
414 {
415 public:
416 const void *m_pLastClickedId = nullptr;
417 float m_LastClickTime = -1.0f;
418 vec2 m_LastClickPos = vec2(-1.0f, -1.0f);
419 };
421 const void *m_pLastEditingItem = nullptr;
422 const void *m_pLastActiveScrollbar = nullptr;
427 {
428 public:
429 int m_Button = -1;
430 bool m_DidScroll = false;
431 float m_ScrollValue = 0.0f;
433 const void *m_pLastTextId = nullptr;
434 };
436
437 vec2 m_UpdatedMousePos = vec2(0.0f, 0.0f); // in window screen space
438 vec2 m_UpdatedMouseDelta = vec2(0.0f, 0.0f); // in window screen space
439 vec2 m_MousePos = vec2(0.0f, 0.0f); // in gui space
440 vec2 m_MouseDelta = vec2(0.0f, 0.0f); // in gui space
442 unsigned m_MouseButtons = 0;
443 unsigned m_LastMouseButtons = 0;
445 bool m_MouseSlow = false;
446 bool m_MouseLock = false;
447 const void *m_pMouseLockId = nullptr;
448
449 unsigned m_HotkeysPressed = 0;
450
451 enum class EBackButtonOp
452 {
453 NONE,
454 CLICKED,
455 DRAGGING,
456 };
460 CUIRect m_BackButtonRect = {0.0f, 0.0f, 0.0f, 0.0f};
461 const char m_BackButtonId = 0;
462
463 std::function<void(const IInput::CEvent &Event)> m_DispatchInputFunction;
464 std::function<void()> m_OnBackButtonPressedFunction;
465
467
468 std::vector<CUIRect> m_vClips;
469 void UpdateClipping();
470
472 {
473 static constexpr float POPUP_BORDER = 1.0f;
474 static constexpr float POPUP_MARGIN = 4.0f;
475
481 };
482 std::vector<SPopupMenu> m_vPopupMenus;
484
485 static CUi::EPopupMenuFunctionResult PopupMessage(void *pContext, CUIRect View, bool Active);
486 static CUi::EPopupMenuFunctionResult PopupConfirm(void *pContext, CUIRect View, bool Active);
487 static CUi::EPopupMenuFunctionResult PopupSelection(void *pContext, CUIRect View, bool Active);
488 static CUi::EPopupMenuFunctionResult PopupColorPicker(void *pContext, CUIRect View, bool Active);
489
494
495 std::vector<CUIElement *> m_vpOwnUIElements; // ui elements maintained by CUi class
496 std::vector<CUIElement *> m_vpUIElements;
497 std::unique_ptr<CTooltips> m_pTooltips;
498
499public:
505
506 static const float ms_FontmodHeight;
507
508 void Init(IKernel *pKernel);
509 IClient *Client() const { return m_pClient; }
510 IGraphics *Graphics() const { return m_pGraphics; }
511 IInput *Input() const { return m_pInput; }
513
514 CUi();
515 ~CUi();
516
517 enum EHotkey : unsigned
518 {
519 HOTKEY_ENTER = 1 << 0,
521 HOTKEY_UP = 1 << 2,
522 HOTKEY_DOWN = 1 << 3,
523 HOTKEY_LEFT = 1 << 4,
524 HOTKEY_RIGHT = 1 << 5,
526 HOTKEY_TAB = 1 << 7,
529 HOTKEY_PAGE_UP = 1 << 10,
531 HOTKEY_HOME = 1 << 12,
532 HOTKEY_END = 1 << 13,
533 };
534
535 void ResetUIElement(CUIElement &UIElement) const;
536
537 CUIElement *GetNewUIElement(int RequestedRectCount);
538
539 void AddUIElement(CUIElement *pElement);
540 void OnElementsReset();
541 void OnWindowResize();
542 void OnCursorMove(float X, float Y);
543
545 bool Enabled() const { return m_Enabled; }
546 void Update();
547 void DebugRender(float X, float Y);
548
549 vec2 MousePos() const { return m_MousePos; }
550 float MouseX() const { return m_MousePos.x; }
551 float MouseY() const { return m_MousePos.y; }
552 vec2 MouseDelta() const { return m_MouseDelta; }
553 float MouseDeltaX() const { return m_MouseDelta.x; }
554 float MouseDeltaY() const { return m_MouseDelta.y; }
557 int MouseButton(int Index) const { return (m_MouseButtons >> Index) & 1; }
558 int MouseButtonClicked(int Index) const { return MouseButton(Index) && !((m_LastMouseButtons >> Index) & 1); }
560 {
563 return m_MouseLock;
564 }
565 void EnableMouseLock(const void *pId)
566 {
567 m_MouseLock = true;
568 m_pMouseLockId = pId;
569 }
570 void DisableMouseLock() { m_MouseLock = false; }
571
572 void SetHotItem(const void *pId) { m_pBecomingHotItem = pId; }
573 void SetActiveItem(const void *pId)
574 {
575 m_ActiveItemValid = true;
576 m_pActiveItem = pId;
577 if(pId)
578 m_pLastActiveItem = pId;
579 }
580 bool CheckActiveItem(const void *pId)
581 {
582 if(m_pActiveItem == pId)
583 {
584 m_ActiveItemValid = true;
585 return true;
586 }
587 return false;
588 }
590 const void *HotItem() const { return m_pHotItem; }
591 const void *NextHotItem() const { return m_pBecomingHotItem; }
592 const void *ActiveItem() const { return m_pActiveItem; }
594
595 void StartCheck() { m_ActiveItemValid = false; }
597 {
598 if(!m_ActiveItemValid && m_pActiveItem != nullptr)
599 {
600 SetActiveItem(nullptr);
601 m_pHotItem = nullptr;
602 m_pBecomingHotItem = nullptr;
603 }
604 }
605
606 bool MouseInside(const CUIRect *pRect) const;
607 bool MouseInsideClip() const { return !IsClipped() || MouseInside(ClipArea()); }
608 bool MouseHovered(const CUIRect *pRect) const { return MouseInside(pRect) && MouseInsideClip(); }
609 void ConvertMouseMove(float *pX, float *pY, IInput::ECursorType CursorType) const;
610 void UpdateTouchState(CTouchState &State) const;
611 void SetMouseSlow(bool MouseSlow) { m_MouseSlow = MouseSlow; }
612
613 bool ConsumeHotkey(EHotkey Hotkey);
615 bool OnInput(const IInput::CEvent &Event);
616
617 constexpr float ButtonColorMulActive() const { return 0.5f; }
618 constexpr float ButtonColorMulHot() const { return 1.5f; }
619 constexpr float ButtonColorMulDefault() const { return 1.0f; }
620 float ButtonColorMul(const void *pId);
621
622 const CUIRect *Screen();
623 void MapScreen();
624 float PixelSize();
625
626 void ClipEnable(const CUIRect *pRect);
627 void ClipDisable();
628 const CUIRect *ClipArea() const;
629 bool IsClipped() const { return !m_vClips.empty(); }
630
631 int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, unsigned Flags);
632 int DoDraggableButtonLogic(const void *pId, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted);
633 bool DoDoubleClickLogic(const void *pId);
634 EEditState DoPickerLogic(const void *pId, const CUIRect *pRect, float *pX, float *pY);
635 void DoSmoothScrollLogic(float *pScrollOffset, float *pScrollOffsetChange, float ViewPortSize, float TotalSize, bool SmoothClamp = false, float ScrollSpeed = 10.0f) const;
636 static vec2 CalcAlignedCursorPos(const CUIRect *pRect, vec2 TextSize, int Align, const float *pBiggestCharHeight = nullptr);
637
638 CLabelResult DoLabel(const CUIRect *pRect, const char *pText, float Size, int Align, const SLabelProperties &LabelProps = {}) const;
639 CLabelResult DoLabel_AutoLineSize(const char *pText, float FontSize, int Align, CUIRect *pRect, float LineSize, const SLabelProperties &LabelProps = {}) const;
640
641 void DoLabel(CUIElement::SUIElementRect &RectEl, const CUIRect *pRect, const char *pText, float Size, int Align, const SLabelProperties &LabelProps = {}, int StrLen = -1, const CTextCursor *pReadCursor = nullptr) const;
642 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;
643
660 bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const std::vector<STextColorSplit> &vColorSplits = {});
661
678 bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const std::vector<STextColorSplit> &vColorSplits = {});
679
696 bool DoEditBox_Search(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, bool HotkeyEnabled);
697
698 int DoButton_Menu(CUIElement &UIElement, const CButtonContainer *pId, const std::function<const char *()> &GetTextLambda, const CUIRect *pRect, const SMenuButtonProperties &Props = {});
699 void DrawButton_FontIcon(const char *pText, const CUIRect *pRect, ColorRGBA Color, int Corners = IGraphics::CORNER_ALL, bool Enabled = true) const;
700 int DoButton_FontIcon(CButtonContainer *pButtonContainer, const char *pText, int Checked, const CUIRect *pRect, unsigned Flags, int Corners = IGraphics::CORNER_ALL, bool Enabled = true, std::optional<ColorRGBA> ButtonColor = std::nullopt);
701 // only used for popup menus
702 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, std::optional<ColorRGBA> ButtonColor = std::nullopt);
703
704 // value selector
705 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 = {});
706 int64_t DoValueSelector(const void *pId, const CUIRect *pRect, const char *pLabel, int64_t Current, int64_t Min, int64_t Max, const SValueSelectorProperties &Props = {});
707
708 // scrollbars
709 enum
710 {
715 };
716 float DoScrollbarV(const void *pId, const CUIRect *pRect, float Current);
717 float DoScrollbarH(const void *pId, const CUIRect *pRect, float Current, const ColorRGBA *pColorInner = nullptr);
718 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 = "");
719
720 // progress bar
721 void RenderProgressBar(CUIRect ProgressBar, float Progress);
722
723 // render time with hundredths or thousands aligned to the right of the UIRect
724 void RenderTime(CUIRect TimeRect, float FontSize, int Seconds, bool NotFinished, int Millis, bool TrueMilliseconds, CCachedText &SecondsText, CCachedText &MillisText, ColorRGBA Color) const;
725
726 // progress spinner
727 void RenderProgressSpinner(vec2 Center, float OuterRadius, const SProgressSpinnerProperties &Props = {}) const;
728
729 // virtual back button
730 void DoBackButton();
731 void RenderBackButton();
732 void SetDispatchInputCallback(std::function<void(const IInput::CEvent &Event)> pfnCallback) { m_DispatchInputFunction = std::move(pfnCallback); }
733 // Fired the moment the back button transitions to active (mouse-down inside it).
734 void SetOnBackButtonPressedCallback(std::function<void()> pfnCallback) { m_OnBackButtonPressedFunction = std::move(pfnCallback); }
735
736 // found in ui_popups.cpp
737 void DoPopupMenu(const SPopupMenuId *pId, float X, float Y, float Width, float Height, void *pContext, FPopupMenuFunction pfnFunc, const SPopupMenuProperties &Props = {});
738 void RenderPopupMenus();
739 void ClosePopupMenu(const SPopupMenuId *pId, bool IncludeDescendants = false);
740 void ClosePopupMenus();
741 bool IsPopupOpen() const;
742 bool IsPopupOpen(const SPopupMenuId *pId) const;
743 bool IsPopupHovered() const;
745
747 {
748 static constexpr float POPUP_MAX_WIDTH = 200.0f;
749 static constexpr float POPUP_FONT_SIZE = 10.0f;
750
751 CUi *m_pUI; // set by CUi when popup is shown
752 char m_aMessage[1024];
754
755 void DefaultColor(class ITextRender *pTextRender);
756 void ErrorColor();
757 };
758 void ShowPopupMessage(float X, float Y, SMessagePopupContext *pContext);
759
761 {
768 static constexpr float POPUP_MAX_WIDTH = 200.0f;
769 static constexpr float POPUP_FONT_SIZE = 10.0f;
770 static constexpr float POPUP_BUTTON_HEIGHT = 12.0f;
771 static constexpr float POPUP_BUTTON_SPACING = 5.0f;
772
773 CUi *m_pUI; // set by CUi when popup is shown
776 char m_aMessage[1024];
778
781
783 void Reset();
784 void YesNoButtons();
785 };
786 void ShowPopupConfirm(float X, float Y, SConfirmPopupContext *pContext);
787
789 {
790 CUi *m_pUI; // set by CUi when popup is shown
793 char m_aMessage[256];
794 std::vector<std::string> m_vEntries;
795 std::vector<CButtonContainer> m_vButtonContainers;
796 const std::string *m_pSelection;
802 float m_Width;
805
807 void Reset();
808 };
809 void ShowPopupSelection(float X, float Y, SSelectionPopupContext *pContext);
810
812 {
820
821 CUi *m_pUI; // set by CUi when popup is shown
823 bool m_Alpha = false;
824 unsigned int *m_pHslaColor = nullptr; // may be nullptr
828 // UI element IDs
829 const char m_HuePickerId = 0;
830 const char m_ColorPickerId = 0;
831 const char m_aValueSelectorIds[5] = {0};
834 };
835 void ShowPopupColorPicker(float X, float Y, SColorPickerPopupContext *pContext);
836
837 // dropdown menu
845 int DoDropDown(CUIRect *pRect, int CurSelection, const char **pStrs, int Num, SDropDownState &State);
846
847 // tooltips
859 void DoToolTip(const void *pId, const CUIRect *pNearRect, const char *pText, float WidthHint = -1.0f) const;
860 void DoToolTip(const CTooltip &Tooltip) const;
861 void OnRenderTooltip() const { m_pTooltips->OnRender(); }
862 void OnReset() const { m_pTooltips->OnReset(); }
863};
864
865#endif
Definition ui.h:273
Definition ui.h:316
float m_MaxCharacterHeight
Definition ui.h:323
float MaxCharacterHeight() const
Definition ui.h:336
void Update(ITextRender *pTextRender, const char *pText, float FontSize, float LineWidth=-1.0f, int CursorFlags=TEXTFLAG_RENDER)
Definition ui.cpp:1608
float m_LineWidth
Definition ui.h:320
float Width() const
Definition ui.h:335
int m_CursorFlags
Definition ui.h:321
STextContainerIndex m_TextContainerIndex
Definition ui.h:317
CCachedText()=default
float m_FontSize
Definition ui.h:319
std::string m_Text
Definition ui.h:318
void Reset(ITextRender *pTextRender)
Definition ui.cpp:1650
CCachedText & operator=(const CCachedText &)=delete
void Render(ITextRender *pTextRender, vec2 Pos, ColorRGBA Color) const
Definition ui.cpp:1641
STextBoundingBox m_BoundingBox
Definition ui.h:322
CCachedText(const CCachedText &)=delete
Definition ui.h:114
ColorRGBA GetColor(bool Active, bool Hovered) const override
Definition ui.h:116
Definition ui.h:228
bool m_Truncated
Definition ui.h:230
Definition ui.h:126
ColorRGBA GetColor(bool Active, bool Hovered) const override
Definition ui.h:128
Definition lineinput.h:216
Definition ui.h:63
float ToRelative(int AbsoluteValue, int Min, int Max) const override
Definition ui.h:65
int ToAbsolute(float RelativeValue, int Min, int Max) const override
Definition ui.h:69
Definition ui.h:75
float ToRelative(int AbsoluteValue, int Min, int Max) const override
Definition ui.h:84
int ToAbsolute(float RelativeValue, int Min, int Max) const override
Definition ui.h:94
int m_MinAdjustment
Definition ui.h:77
CLogarithmicScrollbarScale(int MinAdjustment)
Definition ui.h:80
Definition ui.h:138
ColorRGBA GetColor(bool Active, bool Hovered) const override
Definition ui.h:140
Definition ui_scrollregion.h:101
Definition textrender.h:116
Definition tooltips.h:13
Definition ui.h:258
IClient * Client() const
Definition ui.cpp:104
IInput * Input() const
Definition ui.cpp:106
static void Init(CUi *pUI)
Definition ui.h:263
static CUi * ms_pUi
Definition ui.h:260
ITextRender * TextRender() const
Definition ui.cpp:107
IGraphics * Graphics() const
Definition ui.cpp:105
CUi * Ui() const
Definition ui.h:269
Definition ui.h:153
CUi * m_pUI
Definition ui.h:156
friend class CUi
Definition ui.h:154
bool AreRectsInit()
Definition ui.h:206
std::vector< SUIElementRect > m_vUIRects
Definition ui.h:194
SUIElementRect * Rect(size_t Index)
Definition ui.h:201
CUi * Ui() const
Definition ui.h:193
CUIElement(CUi *pUI, int RequestedRectCount)
Definition ui.h:158
void InitRects(int RequestedRectCount)
Definition ui.cpp:31
void Init(CUi *pUI, int RequestedRectCount)
Definition ui.cpp:23
CUIElement()=default
Definition ui_rect.h:12
Definition ui.h:414
float m_LastClickTime
Definition ui.h:417
vec2 m_LastClickPos
Definition ui.h:418
const void * m_pLastClickedId
Definition ui.h:416
Definition ui.h:384
bool m_AnyPressed
Definition ui.h:392
vec2 m_PrimaryDelta
Definition ui.h:396
float m_SecondaryActivationTime
Definition ui.h:388
friend class CUi
Definition ui.h:385
bool m_SecondaryPressedNext
Definition ui.h:387
bool m_PrimaryPressed
Definition ui.h:393
bool m_SecondaryPressed
Definition ui.h:394
vec2 m_PrimaryPosition
Definition ui.h:395
vec2 m_ScrollAmount
Definition ui.h:397
vec2 m_SecondaryActivationDelta
Definition ui.h:389
Definition ui.h:427
CLineInputNumber m_NumberInput
Definition ui.h:432
bool m_DidScroll
Definition ui.h:430
float m_ScrollValue
Definition ui.h:431
const void * m_pLastTextId
Definition ui.h:433
int m_Button
Definition ui.h:429
Definition ui.h:340
void DoPopupMenu(const SPopupMenuId *pId, float X, float Y, float Width, float Height, void *pContext, FPopupMenuFunction pfnFunc, const SPopupMenuProperties &Props={})
Definition ui_popups.cpp:14
void ResetUIElement(CUIElement &UIElement) const
Definition ui.cpp:153
void ClipEnable(const CUIRect *pRect)
Definition ui.cpp:475
@ SCROLLBAR_OPTION_MULTILINE
Definition ui.h:713
@ SCROLLBAR_OPTION_INFINITE
Definition ui.h:711
@ SCROLLBAR_OPTION_DELAYUPDATE
Definition ui.h:714
@ SCROLLBAR_OPTION_NOCLAMPVALUE
Definition ui.h:712
EEditState DoPickerLogic(const void *pId, const CUIRect *pRect, float *pX, float *pY)
Definition ui.cpp:640
static const CLogarithmicScrollbarScale ms_LogarithmicScrollbarScale
Definition ui.h:501
vec2 m_UpdatedMouseDelta
Definition ui.h:438
void SetMouseSlow(bool MouseSlow)
Definition ui.h:611
void FinishCheck()
Definition ui.h:596
void RenderProgressSpinner(vec2 Center, float OuterRadius, const SProgressSpinnerProperties &Props={}) const
Definition ui.cpp:1710
void DoToolTip(const void *pId, const CUIRect *pNearRect, const char *pText, float WidthHint=-1.0f) const
Definition ui.cpp:1843
bool OnInput(const IInput::CEvent &Event)
Definition ui.cpp:401
CTouchState m_TouchState
Definition ui.h:444
std::function< void()> FPopupMenuClosedCallback
Definition ui.h:378
std::vector< SPopupMenu > m_vPopupMenus
Definition ui.h:482
void EnableMouseLock(const void *pId)
Definition ui.h:565
vec2 m_MousePos
Definition ui.h:439
const void * HotItem() const
Definition ui.h:590
void OnReset() const
Definition ui.h:862
void SetPopupMenuClosedCallback(FPopupMenuClosedCallback pfnCallback)
Definition ui_popups.cpp:129
bool MouseInside(const CUIRect *pRect) const
Definition ui.cpp:279
std::vector< CUIElement * > m_vpOwnUIElements
Definition ui.h:495
unsigned m_UpdatedMouseButtons
Definition ui.h:441
IGraphics * m_pGraphics
Definition ui.h:491
const void * m_pActiveItem
Definition ui.h:404
bool IsPopupHovered() const
Definition ui_popups.cpp:124
unsigned m_HotkeysPressed
Definition ui.h:449
constexpr float ButtonColorMulHot() const
Definition ui.h:618
void SetEnabled(bool Enabled)
Definition ui.h:544
vec2 MousePos() const
Definition ui.h:549
void SetActiveItem(const void *pId)
Definition ui.h:573
EHotkey
Definition ui.h:518
@ HOTKEY_TAB
Definition ui.h:526
@ HOTKEY_PAGE_DOWN
Definition ui.h:530
@ HOTKEY_DELETE
Definition ui.h:525
@ HOTKEY_SCROLL_UP
Definition ui.h:527
@ HOTKEY_ESCAPE
Definition ui.h:520
@ HOTKEY_END
Definition ui.h:532
@ HOTKEY_SCROLL_DOWN
Definition ui.h:528
@ HOTKEY_ENTER
Definition ui.h:519
@ HOTKEY_PAGE_UP
Definition ui.h:529
@ HOTKEY_LEFT
Definition ui.h:523
@ HOTKEY_RIGHT
Definition ui.h:524
@ HOTKEY_DOWN
Definition ui.h:522
@ HOTKEY_HOME
Definition ui.h:531
@ HOTKEY_UP
Definition ui.h:521
int DoDropDown(CUIRect *pRect, int CurSelection, const char **pStrs, int Num, SDropDownState &State)
Definition ui_popups.cpp:321
bool IsClipped() const
Definition ui.h:629
float PixelSize()
Definition ui.cpp:470
CScrollRegion * m_pBecomingHotScrollRegion
Definition ui.h:408
std::function< void()> m_OnBackButtonPressedFunction
Definition ui.h:464
static const CLinearScrollbarScale ms_LinearScrollbarScale
Definition ui.h:500
bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const std::vector< STextColorSplit > &vColorSplits={})
Definition ui.cpp:940
vec2 m_BackButtonInitialMouse
Definition ui.h:459
bool IsPopupOpen() const
Definition ui_popups.cpp:114
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:866
void SetOnBackButtonPressedCallback(std::function< void()> pfnCallback)
Definition ui.h:734
void DebugRender(float X, float Y)
Definition ui.cpp:270
void DoBackButton()
Definition ui.cpp:1750
constexpr float ButtonColorMulDefault() const
Definition ui.h:619
void RenderBackButton()
Definition ui.cpp:1816
void OnCursorMove(float X, float Y)
Definition ui.cpp:176
static vec2 CalcAlignedCursorPos(const CUIRect *pRect, vec2 TextSize, int Align, const float *pBiggestCharHeight=nullptr)
Definition ui.cpp:786
int m_ScrollbarValue
Definition ui.h:423
static CUi::EPopupMenuFunctionResult PopupSelection(void *pContext, CUIRect View, bool Active)
Definition ui_popups.cpp:244
void SetDispatchInputCallback(std::function< void(const IInput::CEvent &Event)> pfnCallback)
Definition ui.h:732
vec2 UpdatedMousePos() const
Definition ui.h:555
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:1233
void RenderTime(CUIRect TimeRect, float FontSize, int Seconds, bool NotFinished, int Millis, bool TrueMilliseconds, CCachedText &SecondsText, CCachedText &MillisText, ColorRGBA Color) const
Definition ui.cpp:1661
vec2 m_MouseDelta
Definition ui.h:440
FPopupMenuClosedCallback m_pfnPopupMenuClosedCallback
Definition ui.h:483
bool ConsumeHotkey(EHotkey Hotkey)
Definition ui.cpp:394
int m_ActiveDraggableButtonLogicButton
Definition ui.h:412
void RenderProgressBar(CUIRect ProgressBar, float Progress)
Definition ui.cpp:1600
void UpdateTouchState(CTouchState &State) const
Definition ui.cpp:306
IClient * m_pClient
Definition ui.h:490
static CUi::EPopupMenuFunctionResult PopupConfirm(void *pContext, CUIRect View, bool Active)
Definition ui_popups.cpp:196
IClient * Client() const
Definition ui.h:509
void OnRenderTooltip() const
Definition ui.h:861
static const CDarkButtonColorFunction ms_DarkButtonColorFunction
Definition ui.h:502
static const CScrollBarColorFunction ms_ScrollBarColorFunction
Definition ui.h:504
bool Enabled() const
Definition ui.h:545
ITextRender * m_pTextRender
Definition ui.h:493
bool MouseHovered(const CUIRect *pRect) const
Definition ui.h:608
unsigned m_MouseButtons
Definition ui.h:442
IInput * Input() const
Definition ui.h:511
int DoButton_FontIcon(CButtonContainer *pButtonContainer, const char *pText, int Checked, const CUIRect *pRect, unsigned Flags, int Corners=IGraphics::CORNER_ALL, bool Enabled=true, std::optional< ColorRGBA > ButtonColor=std::nullopt)
Definition ui.cpp:1215
EBackButtonOp
Definition ui.h:452
@ NONE
Definition ui.h:453
void MapScreen()
Definition ui.cpp:462
void DisableMouseLock()
Definition ui.h:570
void ConvertMouseMove(float *pX, float *pY, IInput::ECursorType CursorType) const
Definition ui.cpp:284
float MouseY() const
Definition ui.h:551
float DoScrollbarV(const void *pId, const CUIRect *pRect, float Current)
Definition ui.cpp:1365
bool m_ActiveItemValid
Definition ui.h:409
float ButtonColorMul(const void *pId)
Definition ui.cpp:446
int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, unsigned Flags)
Definition ui.cpp:527
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, std::optional< ColorRGBA > ButtonColor=std::nullopt)
Definition ui.cpp:1221
ITextRender * TextRender() const
Definition ui.h:512
float MouseDeltaY() const
Definition ui.h:554
void AddUIElement(CUIElement *pElement)
Definition ui.cpp:148
unsigned m_LastMouseButtons
Definition ui.h:443
int MouseButton(int Index) const
Definition ui.h:557
CScrollRegion * m_pHotScrollRegion
Definition ui.h:407
int m_ActiveButtonLogicButton
Definition ui.h:411
static CUi::EPopupMenuFunctionResult PopupMessage(void *pContext, CUIRect View, bool Active)
Definition ui_popups.cpp:144
const void * m_pLastActiveItem
Definition ui.h:405
bool MouseInsideClip() const
Definition ui.h:607
int DoButton_Menu(CUIElement &UIElement, const CButtonContainer *pId, const std::function< const char *()> &GetTextLambda, const CUIRect *pRect, const SMenuButtonProperties &Props={})
Definition ui.cpp:1087
void ShowPopupMessage(float X, float Y, SMessagePopupContext *pContext)
Definition ui_popups.cpp:156
void ClosePopupMenu(const SPopupMenuId *pId, bool IncludeDescendants=false)
Definition ui_popups.cpp:88
vec2 m_BackButtonDragOffset
Definition ui.h:458
bool DoDoubleClickLogic(const void *pId)
Definition ui.cpp:625
static const CLightButtonColorFunction ms_LightButtonColorFunction
Definition ui.h:503
void ClearHotkeys()
Definition ui.h:614
std::unique_ptr< CTooltips > m_pTooltips
Definition ui.h:497
CLabelResult DoLabel_AutoLineSize(const char *pText, float FontSize, int Align, CUIRect *pRect, float LineSize, const SLabelProperties &LabelProps={}) const
Definition ui.cpp:932
std::vector< CUIRect > m_vClips
Definition ui.h:468
IGraphics * Graphics() const
Definition ui.h:510
float m_ActiveScrollbarOffset
Definition ui.h:424
void OnWindowResize()
Definition ui.cpp:171
const void * m_pLastEditingItem
Definition ui.h:421
void UpdateClipping()
Definition ui.cpp:507
const void * m_pLastActiveScrollbar
Definition ui.h:422
static CUi::EPopupMenuFunctionResult PopupColorPicker(void *pContext, CUIRect View, bool Active)
Definition ui_popups.cpp:365
vec2 UpdatedMouseDelta() const
Definition ui.h:556
void DrawButton_FontIcon(const char *pText, const CUIRect *pRect, ColorRGBA Color, int Corners=IGraphics::CORNER_ALL, bool Enabled=true) const
Definition ui.cpp:1189
const CScrollRegion * HotScrollRegion() const
Definition ui.h:593
vec2 m_UpdatedMousePos
Definition ui.h:437
float MouseDeltaX() const
Definition ui.h:553
void ShowPopupSelection(float X, float Y, SSelectionPopupContext *pContext)
Definition ui_popups.cpp:292
bool m_MouseSlow
Definition ui.h:445
void SetHotScrollRegion(CScrollRegion *pId)
Definition ui.h:589
int MouseButtonClicked(int Index) const
Definition ui.h:558
const void * ActiveItem() const
Definition ui.h:592
int DoDraggableButtonLogic(const void *pId, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted)
Definition ui.cpp:564
const CUIRect * Screen()
Definition ui.cpp:455
void Update()
Definition ui.cpp:187
CUIRect m_BackButtonRect
Definition ui.h:460
static const float ms_FontmodHeight
Definition ui.h:506
CUi()
Definition ui.cpp:122
IInput * m_pInput
Definition ui.h:492
const char m_BackButtonId
Definition ui.h:461
void ShowPopupConfirm(float X, float Y, SConfirmPopupContext *pContext)
Definition ui_popups.cpp:183
float DoScrollbarH(const void *pId, const CUIRect *pRect, float Current, const ColorRGBA *pColorInner=nullptr)
Definition ui.cpp:1435
std::vector< CUIElement * > m_vpUIElements
Definition ui.h:496
vec2 MouseDelta() const
Definition ui.h:552
const void * m_pBecomingHotItem
Definition ui.h:406
void OnElementsReset()
Definition ui.cpp:163
const CUIRect * ClipArea() const
Definition ui.cpp:501
bool CheckActiveItem(const void *pId)
Definition ui.h:580
CUIRect m_Screen
Definition ui.h:466
const void * m_pMouseLockId
Definition ui.h:447
EBackButtonOp m_BackButtonOp
Definition ui.h:457
void StartCheck()
Definition ui.h:595
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:1238
EPopupMenuFunctionResult(*) FPopupMenuFunction(void *pContext, CUIRect View, bool Active)
Definition ui.h:373
constexpr float ButtonColorMulActive() const
Definition ui.h:617
bool CheckMouseLock()
Definition ui.h:559
void ClipDisable()
Definition ui.cpp:494
void Init(IKernel *pKernel)
Definition ui.cpp:109
EPopupMenuFunctionResult
Definition ui.h:346
@ POPUP_KEEP_OPEN
Definition ui.h:350
@ POPUP_CLOSE_CURRENT_AND_DESCENDANTS
Definition ui.h:360
@ POPUP_CLOSE_CURRENT
Definition ui.h:355
void SetHotItem(const void *pId)
Definition ui.h:572
CUIElement * GetNewUIElement(int RequestedRectCount)
Definition ui.cpp:139
bool DoEditBox_Search(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, bool HotkeyEnabled)
Definition ui.cpp:1068
bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const std::vector< STextColorSplit > &vColorSplits={})
Definition ui.cpp:1047
CDoubleClickState m_DoubleClickState
Definition ui.h:420
CLabelResult DoLabel(const CUIRect *pRect, const char *pText, float Size, int Align, const SLabelProperties &LabelProps={}) const
Definition ui.cpp:813
std::function< void(const IInput::CEvent &Event)> m_DispatchInputFunction
Definition ui.h:463
bool m_Enabled
Definition ui.h:401
bool m_MouseLock
Definition ui.h:446
void DoSmoothScrollLogic(float *pScrollOffset, float *pScrollOffsetChange, float ViewPortSize, float TotalSize, bool SmoothClamp=false, float ScrollSpeed=10.0f) const
Definition ui.cpp:681
const void * NextHotItem() const
Definition ui.h:591
void ShowPopupColorPicker(float X, float Y, SColorPickerPopupContext *pContext)
Definition ui_popups.cpp:640
const void * m_pHotItem
Definition ui.h:403
void RenderPopupMenus()
Definition ui_popups.cpp:34
CValueSelectorState m_ActiveValueSelectorState
Definition ui.h:435
void ClosePopupMenus()
Definition ui_popups.cpp:103
float m_ProgressSpinnerOffset
Definition ui.h:425
float MouseX() const
Definition ui.h:550
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:1538
Definition color.h:146
Definition color.h:176
Definition color.h:183
constexpr ColorRGBA()=default
Definition ui.h:108
virtual ColorRGBA GetColor(bool Active, bool Hovered) const =0
virtual ~IButtonColorFunction()=default
Definition client.h:42
Definition graphics.h:240
@ CORNER_ALL
Definition graphics.h:542
Definition input.h:22
Definition input.h:18
ECursorType
Definition input.h:42
Definition kernel.h:34
Definition ui.h:56
virtual float ToRelative(int AbsoluteValue, int Min, int Max) const =0
virtual int ToAbsolute(float RelativeValue, int Min, int Max) const =0
virtual ~IScrollbarScale()=default
Definition textrender.h:194
@ START
Definition io.h:56
@ END
Definition io.h:68
constexpr int round_to_int(float f)
Definition math.h:17
Definition ui.h:162
CUIElement * m_pParent
Definition ui.h:163
float m_Y
Definition ui.h:170
CTextCursor m_Cursor
Definition ui.h:179
float m_Height
Definition ui.h:172
float m_Width
Definition ui.h:171
ColorRGBA m_TextColor
Definition ui.h:181
int m_ReadCursorGlyphCount
Definition ui.h:177
int m_UIRectQuadContainer
Definition ui.h:166
ColorRGBA m_TextOutlineColor
Definition ui.h:182
void Draw(const CUIRect *pRect, ColorRGBA Color, int Corners, float Rounding)
Definition ui.cpp:59
std::string m_Text
Definition ui.h:176
SUIElementRect()
Definition ui.cpp:39
float m_Rounding
Definition ui.h:173
void Reset()
Definition ui.cpp:41
STextContainerIndex m_UITextContainer
Definition ui.h:167
ColorRGBA m_QuadColor
Definition ui.h:186
int m_Corners
Definition ui.h:174
float m_X
Definition ui.h:169
EColorPickerMode m_ColorMode
Definition ui.h:822
CUi * m_pUI
Definition ui.h:821
EColorPickerMode
Definition ui.h:814
@ MODE_UNSET
Definition ui.h:815
@ MODE_HSVA
Definition ui.h:816
@ MODE_HSLA
Definition ui.h:818
@ MODE_RGBA
Definition ui.h:817
const char m_HuePickerId
Definition ui.h:829
bool m_Alpha
Definition ui.h:823
const char m_ColorPickerId
Definition ui.h:830
ColorRGBA m_RgbaColor
Definition ui.h:826
EEditState m_State
Definition ui.h:833
CButtonContainer m_aModeButtons[(int) MODE_HSLA+1]
Definition ui.h:832
const char m_aValueSelectorIds[5]
Definition ui.h:831
ColorHSLA m_HslaColor
Definition ui.h:827
unsigned int * m_pHslaColor
Definition ui.h:824
ColorHSVA m_HsvaColor
Definition ui.h:825
Definition ui.h:761
static constexpr float POPUP_FONT_SIZE
Definition ui.h:769
static constexpr float POPUP_BUTTON_SPACING
Definition ui.h:771
static constexpr float POPUP_MAX_WIDTH
Definition ui.h:768
EConfirmationResult
Definition ui.h:763
@ CONFIRMED
Definition ui.h:765
@ CANCELED
Definition ui.h:766
@ UNSET
Definition ui.h:764
char m_aNegativeButtonLabel[128]
Definition ui.h:775
static constexpr float POPUP_BUTTON_HEIGHT
Definition ui.h:770
CButtonContainer m_ConfirmButton
Definition ui.h:780
char m_aPositiveButtonLabel[128]
Definition ui.h:774
CUi * m_pUI
Definition ui.h:773
void Reset()
Definition ui_popups.cpp:172
char m_aMessage[1024]
Definition ui.h:776
CButtonContainer m_CancelButton
Definition ui.h:779
SConfirmPopupContext()
Definition ui_popups.cpp:167
EConfirmationResult m_Result
Definition ui.h:777
void YesNoButtons()
Definition ui_popups.cpp:177
Definition ui.h:839
CUIElement m_UiElement
Definition ui.h:841
CButtonContainer m_ButtonContainer
Definition ui.h:842
bool m_Init
Definition ui.h:843
SSelectionPopupContext m_SelectionPopupContext
Definition ui.h:840
Definition ui.h:747
void ErrorColor()
Definition ui_popups.cpp:139
static constexpr float POPUP_MAX_WIDTH
Definition ui.h:748
char m_aMessage[1024]
Definition ui.h:752
ColorRGBA m_TextColor
Definition ui.h:753
CUi * m_pUI
Definition ui.h:751
void DefaultColor(class ITextRender *pTextRender)
Definition ui_popups.cpp:134
static constexpr float POPUP_FONT_SIZE
Definition ui.h:749
Definition ui.h:472
void * m_pContext
Definition ui.h:479
static constexpr float POPUP_MARGIN
Definition ui.h:474
const SPopupMenuId * m_pId
Definition ui.h:476
static constexpr float POPUP_BORDER
Definition ui.h:473
CUIRect m_Rect
Definition ui.h:478
FPopupMenuFunction m_pfnFunc
Definition ui.h:480
SPopupMenuProperties m_Props
Definition ui.h:477
Definition ui.h:789
float m_AlignmentHeight
Definition ui.h:803
int m_SelectionIndex
Definition ui.h:797
float m_EntryHeight
Definition ui.h:798
float m_EntrySpacing
Definition ui.h:800
bool m_TransparentButtons
Definition ui.h:804
char m_aMessage[256]
Definition ui.h:793
const std::string * m_pSelection
Definition ui.h:796
SSelectionPopupContext()
Definition ui_popups.cpp:222
float m_EntryPadding
Definition ui.h:799
void Reset()
Definition ui_popups.cpp:227
std::vector< CButtonContainer > m_vButtonContainers
Definition ui.h:795
CUi * m_pUI
Definition ui.h:790
SPopupMenuProperties m_Props
Definition ui.h:792
float m_Width
Definition ui.h:802
std::vector< std::string > m_vEntries
Definition ui.h:794
float m_FontSize
Definition ui.h:801
CScrollRegion * m_pScrollRegion
Definition ui.h:791
Definition ui.h:35
T m_Value
Definition ui.h:37
EEditState m_State
Definition ui.h:36
Definition ui.h:215
void SetColor(const ColorRGBA &Color)
Definition ui.cpp:85
float m_MaxWidth
Definition ui.h:216
std::vector< STextColorSplit > m_vColorSplits
Definition ui.h:221
void * m_pTooltipId
Definition ui.h:222
bool m_StopAtEnd
Definition ui.h:217
float m_MinimumFontSize
Definition ui.h:220
bool m_EllipsisAtEnd
Definition ui.h:218
bool m_EnableWidthCheck
Definition ui.h:219
Definition ui.h:244
ColorRGBA m_Color
Definition ui.h:253
bool m_UseIconFont
Definition ui.h:248
bool m_ShowDropDownIcon
Definition ui.h:249
bool m_HintRequiresStringCheck
Definition ui.h:246
bool m_HintCanChangePositionOrSize
Definition ui.h:247
unsigned m_Flags
Definition ui.h:254
float m_FontFactor
Definition ui.h:252
float m_Rounding
Definition ui.h:251
int m_Corners
Definition ui.h:250
int m_Checked
Definition ui.h:245
Definition ui.h:297
Definition ui.h:301
ColorRGBA m_BackgroundColor
Definition ui.h:304
int m_Corners
Definition ui.h:302
ColorRGBA m_BorderColor
Definition ui.h:303
Definition ui.h:287
int m_Segments
Definition ui.h:290
ColorRGBA m_Color
Definition ui.h:289
float m_Progress
Definition ui.h:288
Definition textrender.h:87
float m_W
Definition textrender.h:90
Definition textrender.h:175
Definition ui.h:41
std::chrono::nanoseconds m_Time
Definition ui.h:46
bool m_ScaleLabel
Definition ui.h:43
float m_Value
Definition ui.h:47
float m_XOffset
Definition ui.h:49
bool m_Active
Definition ui.h:42
float m_HOffset
Definition ui.h:52
float m_WOffset
Definition ui.h:51
bool m_RepositionLabel
Definition ui.h:44
float m_YOffset
Definition ui.h:50
Definition ui.h:277
int64_t m_Step
Definition ui.h:279
ColorRGBA m_Color
Definition ui.h:283
float m_Scale
Definition ui.h:280
int m_HexPrefix
Definition ui.h:282
bool m_UseScroll
Definition ui.h:278
bool m_IsHex
Definition ui.h:281
@ TEXTFLAG_RENDER
Definition textrender.h:16
EButtonFlags
Definition ui.h:234
@ BUTTONFLAG_MIDDLE
Definition ui.h:238
@ BUTTONFLAG_ALL
Definition ui.h:240
@ BUTTONFLAG_LEFT
Definition ui.h:236
@ BUTTONFLAG_RIGHT
Definition ui.h:237
@ BUTTONFLAG_NONE
Definition ui.h:235
EEditState
Definition ui.h:25
@ EDITING
Definition ui.h:28
@ ONE_GO
Definition ui.h:30
@ NONE
Definition ui.h:26
vector2_base< float > vec2
Definition vmath.h:168