diff options
Diffstat (limited to 'engine/UI/StackedElement.go')
| -rw-r--r-- | engine/UI/StackedElement.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/engine/UI/StackedElement.go b/engine/UI/StackedElement.go new file mode 100644 index 0000000..1c41a19 --- /dev/null +++ b/engine/UI/StackedElement.go @@ -0,0 +1,33 @@ +package ui + +import rl "github.com/gen2brain/raylib-go/raylib" + +// An element that can use another element as a background +type StackedElement interface { + // Returns an applied style + GetStyle() *Style + + // Returns a background element. Should return nil if it is not uupposed to be drawn + GetBackgroundElement() UIElement +} + +func drawStackedElementBackground(base StackedElement, targetPosition *rl.Rectangle) { + var bgElement = base.GetBackgroundElement() + if bgElement == nil { + _drawSimpleBackground(base.GetStyle(), targetPosition) + } else { + _drawElement(bgElement, targetPosition) + } +} + +func _drawSimpleBackground(style *Style, trg *rl.Rectangle) { + rl.DrawRectangleRounded(*trg, + *style.Roundness, + 0, // Assume the segments param is always 0 - it doesn't really matter without a border + *style.BacgroundColor) +} + +// Should not be used outside of the scope of this file +func _drawElement(elem UIElement, trg *rl.Rectangle) { + elem.Draw(trg) +} |
