Rendering my disgusting font. using it in a few places. wow its hideous

master
Dustin Swan 3 days ago
parent 6fe94ddfb2
commit 169b067050
Signed by: dustinswan
GPG Key ID: 30D46587E2100467

@ -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 };

@ -1,4 +1,4 @@
myFontBackup = { glyphs = { myFont = { glyphs = {
"0" = { "0" = {
w = 7, w = 7,
h = 12, h = 12,

@ -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"
]}
} }
}; };

@ -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