From 34e63154d2c683c6f30b3d0d524b1e11331ea27e Mon Sep 17 00:00:00 2001 From: physcik Date: Fri, 27 Mar 2026 15:38:35 +0500 Subject: Added background elements to grid row and column --- engine/UI/GridColumn.go | 14 ++++++++++++++ engine/UI/GridRow.go | 18 ++++++++++++++++-- engine/UI/Label.go | 8 ++++---- 3 files changed, 34 insertions(+), 6 deletions(-) (limited to 'engine/UI') diff --git a/engine/UI/GridColumn.go b/engine/UI/GridColumn.go index 46c12ad..42c1eed 100644 --- a/engine/UI/GridColumn.go +++ b/engine/UI/GridColumn.go @@ -13,6 +13,7 @@ type GridColumn struct { Spacing float32 // Styling preferences Style Style `json:"-"` + BackgroundElement UIElement location rl.Rectangle cache layoutCache @@ -26,6 +27,18 @@ func (base *GridColumn) Init(parent *Menu) { base.cache = layoutCache { ScreenResolution: rl.Vector2{ X:0, Y:0 }, } + + if base.BackgroundElement != nil { + base.BackgroundElement.Init(parent) + } +} + +func (base *GridColumn) GetStyle() *Style { + return &base.Style +} + +func (base *GridColumn) GetBackgroundElement() UIElement { + return base.BackgroundElement } func (base *GridColumn) Destroy() { @@ -41,6 +54,7 @@ func (base *GridColumn) Draw(span *rl.Rectangle) { if !base.cache.IsValid() { base.RecalculateCache(span) } + drawStackedElementBackground(base, span) for i, v := range base.Objects { var offset = base.cache.RowLocations[i] // rl.TraceLog(rl.LogInfo, "Cache: %v", base.cache) diff --git a/engine/UI/GridRow.go b/engine/UI/GridRow.go index 58d834d..3b6d90d 100644 --- a/engine/UI/GridRow.go +++ b/engine/UI/GridRow.go @@ -18,9 +18,10 @@ type GridRow struct { Spacing float32 // Styling preferences Style Style `json:"-"` + BackgroundElement UIElement location rl.Rectangle - cache layoutCache + cache *layoutCache } func (base *GridRow) GetElements() []UIElement { @@ -36,14 +37,26 @@ func (base *GridRow) Init(parent *Menu) { for _, v := range base.Objects { v.Init(parent) } - base.cache = layoutCache { + base.cache = &layoutCache { ScreenResolution: rl.Vector2{ X:0, Y:0 }, } + + if base.BackgroundElement != nil { + base.BackgroundElement.Init(parent) + } } func (base *GridRow) Destroy() { } +func (base *GridRow) GetStyle() *Style { + return &base.Style +} + +func (base *GridRow) GetBackgroundElement() UIElement { + return base.BackgroundElement +} + // Gets the scale width of the element. Works similar to CSS's 'flex-grow' func (base *GridRow) GetOccupationWeight() float32 { return base.Weight @@ -54,6 +67,7 @@ func (base *GridRow) Draw(span *rl.Rectangle) { if !base.cache.IsValid() { base.RecalculateCache(span) } + drawStackedElementBackground(base, span) for i, v := range base.Objects { var offset = base.cache.RowLocations[i] // rl.TraceLog(rl.LogInfo, "Cache: %v", base.cache) diff --git a/engine/UI/Label.go b/engine/UI/Label.go index 64bb8d0..53157d9 100644 --- a/engine/UI/Label.go +++ b/engine/UI/Label.go @@ -53,10 +53,6 @@ func (base *Label) Init(menu *Menu) { func (base *Label) Destroy() { } -func (base *Label) GetBackgroundElement() UIElement { - return base.BackgroundElement -} - func (base *Label) GetOccupationWeight() float32 { return base.Weight } @@ -80,6 +76,10 @@ func (base *Label) GetStyle() *Style { return &base.Style } +func (base *Label) GetBackgroundElement() UIElement { + return base.BackgroundElement +} + // Returns the size of the text that will not overflow in the side func (base *Label) getTextHeight(position *rl.Rectangle) int32 { var width = position.Width - 2 * *base.Style.Padding -- cgit v1.3