Diff
diff --git a/window/main.go b/window/main.go
index 945b4fe..9987608 100644
--- a/window/main.go
+++ b/window/main.go
@@ -3,0 +4 @@ import (
+ "gui/color"
@@ -30 +31 @@ type WindowManager struct {
- Textures map[int]TextTexture
+ Textures map[string]TextTexture
@@ -61 +62 @@ func (wm *WindowManager) CloseWindow() {
-func (wm *WindowManager) LoadTextures(nodes []element.State) {
+func (wm *WindowManager) LoadTextures(nodes []element.Node) {
@@ -63 +64 @@ func (wm *WindowManager) LoadTextures(nodes []element.State) {
- wm.Textures = map[int]TextTexture{}
+ wm.Textures = map[string]TextTexture{}
@@ -65,7 +66,7 @@ func (wm *WindowManager) LoadTextures(nodes []element.State) {
- for i, node := range nodes {
- if node.Text.Image != nil {
- if wm.Textures[i].Text != node.Text.Text {
- rl.UnloadTexture(wm.Textures[i].Image)
- texture := rl.LoadTextureFromImage(rl.NewImageFromImage(node.Text.Image))
- wm.Textures[i] = TextTexture{
- Text: node.Text.Text,
+ for _, node := range nodes {
+ if node.Properties.Text.Image != nil {
+ if wm.Textures[node.Properties.Id].Text != node.InnerText {
+ rl.UnloadTexture(wm.Textures[node.Properties.Id].Image)
+ texture := rl.LoadTextureFromImage(rl.NewImageFromImage(node.Properties.Text.Image))
+ wm.Textures[node.Properties.Id] = TextTexture{
+ Text: node.InnerText,
@@ -82 +83 @@ func (wm *WindowManager) LoadTextures(nodes []element.State) {
-func (wm *WindowManager) Draw(nodes []element.State) {
+func (wm *WindowManager) Draw(nodes []element.Node) {
@@ -84,3 +85,3 @@ func (wm *WindowManager) Draw(nodes []element.State) {
- for i, node := range nodes {
- bw, _ := utils.ConvertToPixels(node.Border.Width, node.EM, node.Width)
- rad, _ := utils.ConvertToPixels(node.Border.Radius, node.EM, node.Width)
+ for _, node := range nodes {
+ bw, _ := utils.ConvertToPixels(node.Properties.Border.Width, node.Properties.EM, node.Properties.Computed["width"])
+ rad, _ := utils.ConvertToPixels(node.Properties.Border.Radius, node.Properties.EM, node.Properties.Computed["width"])
@@ -88 +89 @@ func (wm *WindowManager) Draw(nodes []element.State) {
- p := node.Padding
+ p := utils.GetMP(node, "padding")
@@ -90,4 +91,4 @@ func (wm *WindowManager) Draw(nodes []element.State) {
- rect := rl.NewRectangle(node.X+bw,
- node.Y+bw,
- node.Width-(bw+bw),
- (node.Height+(p.Top+p.Bottom))-(bw+bw),
+ rect := rl.NewRectangle(node.Properties.X+bw,
+ node.Properties.Y+bw,
+ node.Properties.Computed["width"]-(bw+bw),
+ (node.Properties.Computed["height"]+(p.Top+p.Bottom))-(bw+bw),
@@ -96,2 +97,2 @@ func (wm *WindowManager) Draw(nodes []element.State) {
- rl.DrawRectangleRoundedLines(rect, rad/200, 1000, bw, node.Border.Color)
- rl.DrawRectangleRounded(rect, rad/200, 1000, node.Background)
+ rl.DrawRectangleRoundedLines(rect, rad/200, 1000, bw, node.Properties.Border.Color)
+ rl.DrawRectangleRounded(rect, rad/200, 1000, color.Parse(node.Style, "background"))
@@ -99,3 +100,3 @@ func (wm *WindowManager) Draw(nodes []element.State) {
- if node.Text.Image != nil {
- r, g, b, a := node.Text.Color.RGBA()
- rl.DrawTexture(wm.Textures[i].Image, int32(node.X+p.Left+bw), int32(node.Y+p.Top), ic.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)})
+ if node.Properties.Text.Image != nil {
+ r, g, b, a := node.Properties.Text.Color.RGBA()
+ rl.DrawTexture(wm.Textures[node.Properties.Id].Image, int32(node.Properties.X+p.Left+bw), int32(node.Properties.Y+p.Top), ic.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)})