Compare commits

..

2 Commits

@ -34,7 +34,7 @@ button = config \
ui.rect { w = c.w, h = c.h, strokeColor = c.strokeColor, strokeWidth = c.strokeWidth }, ui.rect { w = c.w, h = c.h, strokeColor = c.strokeColor, strokeWidth = c.strokeWidth },
ui.positioned { ui.positioned {
x = 10, y = 8, x = 10, y = 8,
child = ui.text { content = config.label, color = c.textColor } child = renderText { content = config.label, color = c.textColor }
} }
] ]
} }
@ -42,11 +42,13 @@ button = config \
# inputButton (button that turns into an input) # inputButton (button that turns into an input)
inputButton = config \ inputButton = config \
textSize = ui.measureText config.label; label = renderText { content = config.label };
labelSize = ui.measure label;
labelWidth = labelSize.width;
defaults = { defaults = {
h = 30, h = 30,
w = textSize + 16, w = labelWidth + 16,
strokeWidth = 1, strokeWidth = 1,
strokeColor = "#fff", strokeColor = "#fff",
textColor = "#fff", textColor = "#fff",
@ -86,8 +88,8 @@ inputButton = config \
children = [ children = [
ui.rect { w = c.w, h = c.h, strokeColor = c.strokeColor, strokeWidth = c.strokeWidth }, ui.rect { w = c.w, h = c.h, strokeColor = c.strokeColor, strokeWidth = c.strokeWidth },
ui.positioned { ui.positioned {
x = 8, y = 8, x = 8, y = 4,
child = ui.text { content = config.label, color = c.textColor } child = label
} }
] ]
} }
@ -324,11 +326,39 @@ glyphView = config \
defaults = { scale = 1, color = "#fff" }; defaults = { scale = 1, color = "#fff" };
c = { ...defaults, ...config }; c = { ...defaults, ...config };
ui.stack { ui.stack {
children = map (pixel \ children = [
ui.rect { w = c.glyph.w * c.scale, h = c.glyph.h * c.scale, color = "transparent" },
...map (pixel \
ui.positioned { ui.positioned {
x = pixel.x * c.scale, x = pixel.x * c.scale,
y = pixel.y * c.scale, y = pixel.y * c.scale,
child = ui.rect { w = c.scale, h = c.scale, color = c.color } child = ui.rect { w = c.scale, h = c.scale, color = c.color }
} }
) c.glyph.map ) c.glyph.map
]
};
# renderText : TextConfig \ UI
renderText = config \
# get these from system theme at some point
defaults = { content = "", scale = 2, color = "#fff" };
c = { ...defaults, ...config };
chars = split "" c.content;
_ = debug! "chars" chars;
ui.row {
children = map (char \
# _ = debug! "here. char" char;
getAt ["myFontBackup", "glyphs", char]
| Some g \ glyphView { glyph = g, scale = c.scale }
| None \ ui.rect { w = 0, h = 0 }
) chars,
gap = 4
}; };
# fold (acc c \
# { pos = acc.pos + 8,
# ui = [...ui, ui.positioned { x }]
# }) { pos = 0, ui = [] } chars;
# text : String \ UI
text = content \ renderText { content = content };

File diff suppressed because it is too large Load Diff

@ -84,7 +84,7 @@ fontEditor = config \
h = headerHeight, h = headerHeight,
key = "new-glyph-button", key = "new-glyph-button",
label = "New Glyph", label = "New Glyph",
onSubmit = key \ rebindAt [...c.path, "glyphs", key] { w = 7, h = 12, map = [] } onSubmit = key \ rebindAt [...c.path, "glyphs", key] { w = 5, h = 12, map = [] }
} }
] ]
}; };
@ -103,6 +103,10 @@ fontEditor = config \
}) (entries state.glyphs) }) (entries state.glyphs)
}; };
ui.column { gap = 2, children = [ header, grid ] } ui.column { gap = 2, children = [
header,
grid,
text "testing"
]}
} }
}; };

@ -54,7 +54,8 @@ treeNode = config \
simple = path content color onClick \ simple = path content color onClick \
selected = (config.selectedPath | Some p \ p == path | None \ False); selected = (config.selectedPath | Some p \ p == path | None \ False);
inner = ui.text { content = content, color = (selected | True \ "white" | False \ color) }; # inner = ui.text { content = content, color = (selected | True \ "white" | False \ color) };
inner = renderText { scale = 1, content = content, color = (selected | True \ "white" | False \ color) };
wrapped = (onClick wrapped = (onClick
| Some handler \ ui.clickable { onClick = handler, child = inner } | Some handler \ ui.clickable { onClick = handler, child = inner }
| None \ inner); | None \ inner);

@ -82,7 +82,7 @@ os =
| None \ openWindow title content width; | None \ openWindow title content width;
renderWindow = window isActive \ renderWindow = window isActive \
titleBarHeight = 30; titleBarHeight = 36;
ui.stack { ui.stack {
children = [ children = [
@ -107,14 +107,15 @@ os =
ui.rect { w = titleBarHeight, h = titleBarHeight, color = "rgba(255,255,255,0.2)" }, ui.rect { w = titleBarHeight, h = titleBarHeight, color = "rgba(255,255,255,0.2)" },
# button text # button text
ui.positioned { ui.positioned {
x = 9, y = 7, child = ui.text { content = "x" } x = 10, y = 5, child = text "x"
} }
] ]
} }
}, },
# title # title
ui.positioned { x = 8, y = 8, child = ui.text { content = window.title, color = "white" } }, # ui.positioned { x = 8, y = 8, child = ui.text { content = window.title, color = "white" } },
ui.positioned { x = 8, y = 8, child = renderText { content = window.title, color = "white" } },
] ]
} }
] ]

@ -228,8 +228,13 @@ export function _measure(ui: UIValue): { width: number, height: number } {
} }
} }
case 'positioned': case 'positioned': {
return measure(ui.child); const childSize = measure(ui.child);
return {
width: ui.x + childSize.width,
height: ui.y + childSize.height,
};
}
case 'stack': { case 'stack': {
let maxWidth = 0; let maxWidth = 0;

Loading…
Cancel
Save