Exemple #1
0
        internal static void Begin(string Title, LGuiRect Rect, bool IsChild = true)
        {
            var FullTitle = $"{LGuiContext.GetCurrentFrame().Title}/{Title}";
            var ID        = LGuiHash.CalculateID(FullTitle);

            LGuiContext.SetPreviousControlID(ID);

            var Offset  = LGuiContextCache.GetFrameOffset(FullTitle);
            var Context = new LGuiFrameContext(FullTitle, Rect);

            Context.Size = LGuiContextCache.GetFrameContextSize(FullTitle);

            if (!LGuiMisc.CheckVisible(ref Context.Rect))
            {
                Context.Visibled = false;
            }
            else
            {
                LGuiGraphics.DrawRect(Rect, LGuiStyleColorIndex.Border, false);
            }

            LGuiMisc.CheckAndSetContextID(ref Rect, ID, true);

            LGuiContext.BeginFrame(Context, IsChild);
            LGuiLayout.BeginLayout(LGuiLayout.GetCurrentLayoutMode(),
                                   new LGuiVec2(
                                       Rect.X + LGuiStyle.GetValue(LGuiStyleValueIndex.FrameChildSpacingX) - Offset.X,
                                       Rect.Y + LGuiStyle.GetValue(LGuiStyleValueIndex.FrameChildSpacingY) - Offset.Y),
                                   false);
        }
Exemple #2
0
        internal static void OnProcess(int TextureID, LGuiRect SrcRect, LGuiVec2 DstSize)
        {
            var ID = LGuiHash.CalculateID(LGuiSettings.DefaultTextureTitle + TextureID);

            LGuiContext.SetPreviousControlID(ID);

            if (SrcRect.Width == 0 || SrcRect.Height == 0)
            {
                SrcRect.Size = LGuiConvert.GetTextureIDSize(TextureID);
            }

            if (DstSize.X == 0 || DstSize.Y == 0)
            {
                DstSize = LGuiConvert.GetTextureIDSize(TextureID);
            }

            var DstRect = LGuiLayout.DoLayout(DstSize);

            if (!LGuiMisc.CheckVisible(ref DstRect))
            {
                return;
            }

            LGuiMisc.CheckAndSetContextID(ref DstRect, ID, true);

            LGuiGraphics.DrawTexture(TextureID, SrcRect, DstRect);
        }
Exemple #3
0
        internal static void OnProcess(LGuiColor Color)
        {
            var FrameContext = LGuiContext.GetCurrentFrame();
            var Size         = new LGuiVec2(FrameContext.Size.X, 1);
            var Rect         = LGuiLayout.DoLayout(Size);

            OnProcess(Color, new LGuiVec2(Rect.Left, Rect.CenterY), new LGuiVec2(Rect.Right, Rect.CenterY));
        }
Exemple #4
0
        internal static void OnProcess(LGuiColor Color, string Format, params object[] Args)
        {
            var Text = string.Format(Format, Args);
            var Size = LGuiConvert.GetTextSize(Text, LGuiContext.Font);
            var Rect = LGuiLayout.DoLayout(Size);

            OnProcess(Color, Text, Rect);
        }
Exemple #5
0
        internal static bool OnProcess(string Title, bool Value)
        {
            var Size = LGuiConvert.GetTextSize(Title, LGuiContext.Font).Add(LGuiStyle.GetValue(LGuiStyleValueIndex.CheckBoxSize) + 3, 2);

            Size.Y = LGuiMisc.Max(Size.Y, LGuiStyle.GetValue(LGuiStyleValueIndex.CheckBoxSize));
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, Value, Rect));
        }
Exemple #6
0
        internal static bool OnProcess(string Title, ref int Value, int Min, int Max, int Step, bool IsHorizontal, string Format, float Length)
        {
            var Size = IsHorizontal
                ? new LGuiVec2(Length, LGuiStyle.GetValue(LGuiStyleValueIndex.SliderSize))
                : new LGuiVec2(LGuiStyle.GetValue(LGuiStyleValueIndex.SliderSize), Length);
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, ref Value, Min, Max, Step, IsHorizontal, Format, Rect));
        }
Exemple #7
0
        internal static bool Begin(string Title)
        {
            var FullTitle = $"{LGuiContext.GetCurrentFrame().Title}/{Title}";
            var ID        = LGuiHash.CalculateID(FullTitle);

            LGuiContext.SetPreviousControlID(ID);

            var Rect = LGuiLayout.DoLayout(new LGuiVec2(LGuiStyle.GetValue(LGuiStyleValueIndex.LargeControlLength), LGuiStyle.GetValue(LGuiStyleValueIndex.HeaderSize)));

            if (!LGuiMisc.CheckVisible(ref Rect))
            {
                return(false);
            }

            LGuiMisc.CheckAndSetContextID(ref Rect, ID);

            var BgColorIndex = LGuiContext.ActiveID == ID ? LGuiStyleColorIndex.GroupActived :
                               LGuiContext.HoveredID == ID ? LGuiStyleColorIndex.GroupHovered : LGuiStyleColorIndex.Group;

            LGuiGraphics.DrawRect(Rect, BgColorIndex, true);
            LGuiGraphics.DrawRect(Rect, LGuiStyleColorIndex.Border, false);
            LGuiGraphics.DrawText(Title, new LGuiVec2(Rect.X + LGuiStyle.GetValue(LGuiStyleValueIndex.GroupChildSpacing), Rect.Y), LGuiStyleColorIndex.Text);

            var Expand = LGuiContextCache.GetGroupExpand(FullTitle);

            if (Expand)
            {
                LGuiGraphics.DrawTriangle(
                    new LGuiVec2(Rect.X + 5, Rect.Y + 3),
                    new LGuiVec2(Rect.X + 15, Rect.Y + 3),
                    new LGuiVec2(Rect.X + 10, Rect.Bottom - 3),
                    LGuiStyle.GetColor(LGuiStyleColorIndex.Text),
                    true);
            }
            else
            {
                LGuiGraphics.DrawTriangle(
                    new LGuiVec2(Rect.X + 5, Rect.Y + 3),
                    new LGuiVec2(Rect.X + 15, Rect.CenterY),
                    new LGuiVec2(Rect.X + 5, Rect.Bottom - 3),
                    LGuiStyle.GetColor(LGuiStyleColorIndex.Text),
                    true);
            }

            if (LGuiMisc.CheckAndSetFocusID(ID))
            {
                Expand = !Expand;
                LGuiContextCache.SetGroupExpand(FullTitle, Expand);
            }

            if (Expand)
            {
                LGuiContext.BeginGroup(FullTitle, Rect.X + LGuiStyle.GetValue(LGuiStyleValueIndex.GroupChildSpacing));
            }
            return(Expand);
        }
Exemple #8
0
        internal static int OnProcess(string Title, int Index, int Value)
        {
            var Radius = LGuiStyle.GetValue(LGuiStyleValueIndex.RadioButtonRadius);
            var Size   = LGuiConvert.GetTextSize(Title, LGuiContext.Font).Add(Radius * 2 + 3, 2);

            Size.Y = LGuiMisc.Max(Size.Y, Radius);
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, Index, Value, Rect));
        }
Exemple #9
0
        internal static bool OnProcess(string Title, ref string Value, uint MaxLength, LGuiInputTextFlags Flags)
        {
            var TextSize = LGuiConvert.GetTextSize(Value, LGuiContext.Font);

            var Size = new LGuiVec2(LGuiStyle.GetValue(LGuiStyleValueIndex.LargeControlLength), TextSize.Y + 2);

            if ((Flags & LGuiInputTextFlags.Multiline) == LGuiInputTextFlags.Multiline)
            {
                Size.Y = LGuiStyle.GetValue(LGuiStyleValueIndex.LargeControlLength);
            }

            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, ref Value, Rect, MaxLength, Flags));
        }
Exemple #10
0
        internal static bool OnProcess(string Title, LGuiColor Color, LGuiVec2 Size)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, Color, Rect));
        }
Exemple #11
0
        internal static void OnProcess(string Title, float Value, LGuiVec2 Size)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            OnProcess(Title, Value, Rect);
        }
Exemple #12
0
        internal static bool OnProcess(string Title, ref string Value, uint MaxLength, LGuiVec2 Size, LGuiInputTextFlags Flags)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, ref Value, Rect, MaxLength, Flags));
        }
Exemple #13
0
        internal static bool OnProcess(string Text, bool Selected, LGuiVec2 Size)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Text, Selected, Rect));
        }
Exemple #14
0
        internal static void Begin(string Title, LGuiVec2 Size)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            Begin(Title, Rect, true);
        }
Exemple #15
0
        internal static void End()
        {
            var FrameContext = LGuiContext.GetCurrentFrame();

            FrameContext.Size = FrameContext.Rect.Size - LGuiStyle.GetFrameChildSpacing() * 2.0f;

            if (FrameContext.Visibled)
            {
                var LayoutContext = LGuiLayout.GetCurrentLayoutContext();
                var Width         = LayoutContext.ChildSize.X - FrameContext.Rect.Width + LGuiStyle.GetValue(LGuiStyleValueIndex.FrameChildSpacingX);
                var Height        = LayoutContext.ChildSize.Y - FrameContext.Rect.Height + LGuiStyle.GetValue(LGuiStyleValueIndex.FrameChildSpacingY);
                var SliderSize    = LGuiStyle.GetValue(LGuiStyleValueIndex.SliderSize);

                var Offset = LGuiContextCache.GetFrameOffset(FrameContext.Title);

                if (Width > 0)
                {
                    LGuiSlider.OnProcess(
                        $"{FrameContext.Title}_hsbar",
                        ref Offset.X,
                        0.0f,
                        Width,
                        LGuiStyle.GetValue(LGuiStyleValueIndex.ControlSpacingX),
                        true,
                        string.Empty,
                        new LGuiRect(FrameContext.Rect.X, FrameContext.Rect.Bottom - SliderSize,
                                     FrameContext.Rect.Width - SliderSize, SliderSize));
                    FrameContext.Size.Y -= SliderSize;
                }
                else
                {
                    Offset.X = 0;
                }

                if (Height > 0)
                {
                    LGuiSlider.OnProcess(
                        $"{FrameContext.Title}_vsbar",
                        ref Offset.Y,
                        0.0f,
                        Height,
                        LGuiStyle.GetValue(LGuiStyleValueIndex.ControlSpacingY),
                        false,
                        string.Empty,
                        new LGuiRect(FrameContext.Rect.Right - SliderSize,
                                     FrameContext.Rect.Y, SliderSize, FrameContext.Rect.Height));
                    FrameContext.Size.X -= SliderSize;

                    var ID = LGuiHash.CalculateID(FrameContext.Title);
                    LGuiMisc.CheckAndSetContextID(ref FrameContext.Rect, ID, true);
                    Offset.Y = LGuiMisc.DoMouseWheelEvent(ID, 0.0f, Height, Offset.Y);
                }
                else
                {
                    Offset.Y = 0;
                }

                LGuiContextCache.SetFrameOffset(FrameContext.Title, Offset);
            }

            LGuiContextCache.SetFrameContextSize(FrameContext.Title, FrameContext.Size);
            LGuiLayout.EndLayout();
            LGuiContext.EndFrame();
        }
Exemple #16
0
 internal static bool BeginWindow(string Title, LGuiVec2 Size, LGuiWindowFlags Flags)
 {
     return(BeginWindow(Title, new LGuiRect(LGuiLayout.GetCurrentLayoutContext().CursorPos, Size), Flags));
 }
Exemple #17
0
        internal static bool OnProcess(string Title, ref int ItemIndex, string[] Items, float Width, float PopupHeight)
        {
            var Rect = LGuiLayout.DoLayout(new LGuiVec2(Width, LGuiContext.Font.FontHeight));

            return(OnProcess(Title, ref ItemIndex, Items, Rect, PopupHeight));
        }
Exemple #18
0
        internal static bool OnProcess(string Title, ref int ItemIndex, string[] Items, LGuiVec2 Size)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, ref ItemIndex, Items, Rect));
        }
Exemple #19
0
        internal static bool OnProcess(string Title, LGuiVec2 Size, LGuiButtonFlags Flags)
        {
            var Rect = LGuiLayout.DoLayout(Size);

            return(OnProcess(Title, Rect, Flags));
        }