From ee56118dec92709faf96003b409f8b1c4d8b8ef4 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Mon, 23 Sep 2024 13:35:19 +0100 Subject: [PATCH] export all lower case letters --- dotscape | Bin 1049312 -> 1049312 bytes fonts/lower-case-a.sml | 75 +++++++++++++++++++ fonts/lower-case-b.sml | 63 ++++++++++++++++ fonts/lower-case-c.sml | 75 +++++++++++++++++++ fonts/lower-case-d.sml | 63 ++++++++++++++++ fonts/lower-case-e.sml | 87 ++++++++++++++++++++++ fonts/lower-case-f.sml | 51 +++++++++++++ fonts/lower-case-g.sml | 75 +++++++++++++++++++ fonts/lower-case-h.sml | 51 +++++++++++++ fonts/lower-case-i.sml | 63 ++++++++++++++++ fonts/lower-case-j.sml | 75 +++++++++++++++++++ fonts/lower-case-k.sml | 99 +++++++++++++++++++++++++ fonts/lower-case-l.sml | 51 +++++++++++++ fonts/lower-case-m.sml | 75 +++++++++++++++++++ fonts/lower-case-n.sml | 51 +++++++++++++ fonts/lower-case-o.sml | 63 ++++++++++++++++ fonts/lower-case-p.sml | 63 ++++++++++++++++ fonts/lower-case-q.sml | 75 +++++++++++++++++++ fonts/lower-case-r.sml | 51 +++++++++++++ fonts/lower-case-s.sml | 75 +++++++++++++++++++ fonts/lower-case-t.sml | 51 +++++++++++++ fonts/lower-case-u.sml | 51 +++++++++++++ fonts/lower-case-v.sml | 75 +++++++++++++++++++ fonts/lower-case-w.sml | 75 +++++++++++++++++++ fonts/lower-case-x.sml | 123 +++++++++++++++++++++++++++++++ fonts/lower-case-y.sml | 63 ++++++++++++++++ fonts/lower-case-z.sml | 87 ++++++++++++++++++++++ imperative-shell/file-thread.sml | 6 +- 28 files changed, 1809 insertions(+), 3 deletions(-) create mode 100644 fonts/lower-case-a.sml create mode 100644 fonts/lower-case-b.sml create mode 100644 fonts/lower-case-c.sml create mode 100644 fonts/lower-case-d.sml create mode 100644 fonts/lower-case-e.sml create mode 100644 fonts/lower-case-f.sml create mode 100644 fonts/lower-case-g.sml create mode 100644 fonts/lower-case-h.sml create mode 100644 fonts/lower-case-i.sml create mode 100644 fonts/lower-case-j.sml create mode 100644 fonts/lower-case-k.sml create mode 100644 fonts/lower-case-l.sml create mode 100644 fonts/lower-case-m.sml create mode 100644 fonts/lower-case-n.sml create mode 100644 fonts/lower-case-o.sml create mode 100644 fonts/lower-case-p.sml create mode 100644 fonts/lower-case-q.sml create mode 100644 fonts/lower-case-r.sml create mode 100644 fonts/lower-case-s.sml create mode 100644 fonts/lower-case-t.sml create mode 100644 fonts/lower-case-u.sml create mode 100644 fonts/lower-case-v.sml create mode 100644 fonts/lower-case-w.sml create mode 100644 fonts/lower-case-x.sml create mode 100644 fonts/lower-case-y.sml create mode 100644 fonts/lower-case-z.sml diff --git a/dotscape b/dotscape index 9964a65d65677b86a8d61546a299914166f4bb2d..d907e87c0453650f2749f85425bf0472e41315c7 100755 GIT binary patch delta 59461 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 delta 59580 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 diff --git a/fonts/lower-case-a.sml b/fonts/lower-case-a.sml new file mode 100644 index 0000000..1d4f984 --- /dev/null +++ b/fonts/lower-case-a.sml @@ -0,0 +1,75 @@ +structure LowerCaseA = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-b.sml b/fonts/lower-case-b.sml new file mode 100644 index 0000000..b7450da --- /dev/null +++ b/fonts/lower-case-b.sml @@ -0,0 +1,63 @@ +structure LowerCaseB = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-c.sml b/fonts/lower-case-c.sml new file mode 100644 index 0000000..2f332a5 --- /dev/null +++ b/fonts/lower-case-c.sml @@ -0,0 +1,75 @@ +structure LowerCaseC = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-d.sml b/fonts/lower-case-d.sml new file mode 100644 index 0000000..789e177 --- /dev/null +++ b/fonts/lower-case-d.sml @@ -0,0 +1,63 @@ +structure LowerCaseD = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-e.sml b/fonts/lower-case-e.sml new file mode 100644 index 0000000..07544ad --- /dev/null +++ b/fonts/lower-case-e.sml @@ -0,0 +1,87 @@ +structure LowerCaseE = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-f.sml b/fonts/lower-case-f.sml new file mode 100644 index 0000000..563a389 --- /dev/null +++ b/fonts/lower-case-f.sml @@ -0,0 +1,51 @@ +structure LowerCaseF = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-g.sml b/fonts/lower-case-g.sml new file mode 100644 index 0000000..a1bbf62 --- /dev/null +++ b/fonts/lower-case-g.sml @@ -0,0 +1,75 @@ +structure LowerCaseG = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-h.sml b/fonts/lower-case-h.sml new file mode 100644 index 0000000..d5525b4 --- /dev/null +++ b/fonts/lower-case-h.sml @@ -0,0 +1,51 @@ +structure LowerCaseH = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-i.sml b/fonts/lower-case-i.sml new file mode 100644 index 0000000..c5a5c83 --- /dev/null +++ b/fonts/lower-case-i.sml @@ -0,0 +1,63 @@ +structure LowerCaseI = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-j.sml b/fonts/lower-case-j.sml new file mode 100644 index 0000000..d15bf65 --- /dev/null +++ b/fonts/lower-case-j.sml @@ -0,0 +1,75 @@ +structure LowerCaseJ = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.666666686535)) + (endY * 0.666666686535)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-k.sml b/fonts/lower-case-k.sml new file mode 100644 index 0000000..e67d1e3 --- /dev/null +++ b/fonts/lower-case-k.sml @@ -0,0 +1,99 @@ +structure LowerCaseK = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-l.sml b/fonts/lower-case-l.sml new file mode 100644 index 0000000..72dfcd2 --- /dev/null +++ b/fonts/lower-case-l.sml @@ -0,0 +1,51 @@ +structure LowerCaseL = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.799999952316)) + (endY * 0.799999952316)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-m.sml b/fonts/lower-case-m.sml new file mode 100644 index 0000000..423a5e9 --- /dev/null +++ b/fonts/lower-case-m.sml @@ -0,0 +1,75 @@ +structure LowerCaseM = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-n.sml b/fonts/lower-case-n.sml new file mode 100644 index 0000000..474b935 --- /dev/null +++ b/fonts/lower-case-n.sml @@ -0,0 +1,51 @@ +structure LowerCaseN = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-o.sml b/fonts/lower-case-o.sml new file mode 100644 index 0000000..c0587d7 --- /dev/null +++ b/fonts/lower-case-o.sml @@ -0,0 +1,63 @@ +structure LowerCaseO = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-p.sml b/fonts/lower-case-p.sml new file mode 100644 index 0000000..8e80eee --- /dev/null +++ b/fonts/lower-case-p.sml @@ -0,0 +1,63 @@ +structure LowerCaseP = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-q.sml b/fonts/lower-case-q.sml new file mode 100644 index 0000000..9782607 --- /dev/null +++ b/fonts/lower-case-q.sml @@ -0,0 +1,75 @@ +structure LowerCaseQ = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.733333349228)) + (endX * 0.733333349228)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.733333349228)) + (endX * 0.733333349228)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.733333349228)) + (endX * 0.733333349228)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-r.sml b/fonts/lower-case-r.sml new file mode 100644 index 0000000..2ae4286 --- /dev/null +++ b/fonts/lower-case-r.sml @@ -0,0 +1,51 @@ +structure LowerCaseR = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-s.sml b/fonts/lower-case-s.sml new file mode 100644 index 0000000..bad4ab1 --- /dev/null +++ b/fonts/lower-case-s.sml @@ -0,0 +1,75 @@ +structure LowerCaseS = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.133333355188)) + (endY * 0.133333355188)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-t.sml b/fonts/lower-case-t.sml new file mode 100644 index 0000000..89fa087 --- /dev/null +++ b/fonts/lower-case-t.sml @@ -0,0 +1,51 @@ +structure LowerCaseT = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.733333349228)) + (endY * 0.733333349228)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-u.sml b/fonts/lower-case-u.sml new file mode 100644 index 0000000..94691ce --- /dev/null +++ b/fonts/lower-case-u.sml @@ -0,0 +1,51 @@ +structure LowerCaseU = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-v.sml b/fonts/lower-case-v.sml new file mode 100644 index 0000000..95836e6 --- /dev/null +++ b/fonts/lower-case-v.sml @@ -0,0 +1,75 @@ +structure LowerCaseV = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-w.sml b/fonts/lower-case-w.sml new file mode 100644 index 0000000..a35cc4e --- /dev/null +++ b/fonts/lower-case-w.sml @@ -0,0 +1,75 @@ +structure LowerCaseW = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-x.sml b/fonts/lower-case-x.sml new file mode 100644 index 0000000..6f29944 --- /dev/null +++ b/fonts/lower-case-x.sml @@ -0,0 +1,123 @@ +structure LowerCaseX = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-y.sml b/fonts/lower-case-y.sml new file mode 100644 index 0000000..18b1e46 --- /dev/null +++ b/fonts/lower-case-y.sml @@ -0,0 +1,63 @@ +structure LowerCaseY = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.066666662693)) + (endY * 0.066666662693)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/fonts/lower-case-z.sml b/fonts/lower-case-z.sml new file mode 100644 index 0000000..33d1c2d --- /dev/null +++ b/fonts/lower-case-z.sml @@ -0,0 +1,87 @@ +structure LowerCaseZ = +struct + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = + let + val startX = Real32.fromInt startX + val startY = Real32.fromInt startY + val endY = windowHeight - startY + val startY = windowHeight - (startY + drawHeight) + val endX = startX + drawWidth + val windowHeight = windowHeight / 2.0 + val windowWidth = windowWidth / 2.0 + in + #[ (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.600000023842)) + (endY * 0.600000023842)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.599999964237)) + (endX * 0.599999964237)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.533333361149)) + (endY * 0.533333361149)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.533333361149)) + (endX * 0.533333361149)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.466666638851)) + (endY * 0.466666638851)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.466666668653)) + (endX * 0.466666668653)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.400000035763)) + (endY * 0.400000035763)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.399999976158)) + (endX * 0.399999976158)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.33333337307)) + (endY * 0.33333337307)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.333333313465)) + (endX * 0.333333313465)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b, + (((startX * (1.0 - 0.66666662693)) + (endX * 0.66666662693)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.266666680574)) + (endY * 0.266666680574)) / windowHeight) - 1.0, r, g, b + ] + end +end \ No newline at end of file diff --git a/imperative-shell/file-thread.sml b/imperative-shell/file-thread.sml index c5444f1..7f86b95 100644 --- a/imperative-shell/file-thread.sml +++ b/imperative-shell/file-thread.sml @@ -10,9 +10,9 @@ struct datatype parse_result = OK of AppType.triangle list | PARSE_ERROR - val structureName = "AsciiHash" - val filename = "fonts/hash.dsc" - val exportFilename = "fonts/ascii-hash.sml" + val structureName = "LowerCaseZ" + val filename = "fonts/lower-case-z.dsc" + val exportFilename = "fonts/lower-case-z.sml" fun ndcToLerpX num = let