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); }
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); }
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)); }
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); }
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)); }
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)); }
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); }
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)); }
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)); }
internal static bool OnProcess(string Title, LGuiColor Color, LGuiVec2 Size) { var Rect = LGuiLayout.DoLayout(Size); return(OnProcess(Title, Color, Rect)); }
internal static void OnProcess(string Title, float Value, LGuiVec2 Size) { var Rect = LGuiLayout.DoLayout(Size); OnProcess(Title, Value, Rect); }
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)); }
internal static bool OnProcess(string Text, bool Selected, LGuiVec2 Size) { var Rect = LGuiLayout.DoLayout(Size); return(OnProcess(Text, Selected, Rect)); }
internal static void Begin(string Title, LGuiVec2 Size) { var Rect = LGuiLayout.DoLayout(Size); Begin(Title, Rect, true); }
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(); }
internal static bool BeginWindow(string Title, LGuiVec2 Size, LGuiWindowFlags Flags) { return(BeginWindow(Title, new LGuiRect(LGuiLayout.GetCurrentLayoutContext().CursorPos, Size), Flags)); }
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)); }
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)); }
internal static bool OnProcess(string Title, LGuiVec2 Size, LGuiButtonFlags Flags) { var Rect = LGuiLayout.DoLayout(Size); return(OnProcess(Title, Rect, Flags)); }