summaryrefslogtreecommitdiff
path: root/engine/UI/StackedElement.go
diff options
context:
space:
mode:
Diffstat (limited to 'engine/UI/StackedElement.go')
-rw-r--r--engine/UI/StackedElement.go33
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)
+}