Skip to content

Commit c52bbd1

Browse files
committed
Updated showMenu to use new fonts
1 parent b84c0f4 commit c52bbd1

File tree

3 files changed

+24
-24
lines changed

3 files changed

+24
-24
lines changed

libs/graphics/jswrap_graphics.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2648,13 +2648,13 @@ JsVar *jswrap_graphics_setFont4x6(JsVar *parent, int scale) {
26482648

26492649

26502650
JsVar *jswrap_graphics_findFont(JsVar *parent, JsVar *text, JsVar *options) {
2651-
if (!jsvIsString(text)) return 0;
26522651
JsGraphics gfx; if (!graphicsGetFromVar(&gfx, parent)) return 0;
26532652
int width = gfx.data.width, height = gfx.data.height;
26542653
int minHeight = 4, maxHeight = 100;
26552654
bool wrap = false, trim = false;
26562655
JsVar *result = jsvNewObject();
2657-
if (!result) return 0;
2656+
text = jsvAsString(text);
2657+
if (!result || !text) return 0;
26582658

26592659
jsvConfigObject configs[] = {
26602660
{"w", JSV_INTEGER, &width},
@@ -2665,6 +2665,7 @@ JsVar *jswrap_graphics_findFont(JsVar *parent, JsVar *text, JsVar *options) {
26652665
{"trim", JSV_BOOLEAN, &trim},
26662666
};
26672667
if (!jsvReadConfigObject(options, configs, sizeof(configs) / sizeof(jsvConfigObject))) {
2668+
jsvUnLock2(result, text);
26682669
return 0;
26692670
}
26702671

@@ -2724,7 +2725,7 @@ JsVar *jswrap_graphics_findFont(JsVar *parent, JsVar *text, JsVar *options) {
27242725
_jswrap_graphics_stringMetrics(&gfx, finalText, -1, &stringMetrics); // work out string size again
27252726
}
27262727
// TODO: trim width if not wrapping?
2727-
jsvUnLock2(newline, finalLines);
2728+
jsvUnLock3(text, newline, finalLines);
27282729
jsvObjectSetChildAndUnLock(result, "text", finalText);
27292730
jsvObjectSetChildAndUnLock(result, "font", jsvNewFromString(fontName));
27302731
jsvObjectSetChildAndUnLock(result, "w", jsvNewFromInteger(stringMetrics.stringWidth));

libs/js/banglejs/E_showMenu_Q3.js

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030
remove: options.remove,
3131
scrollMin : -24, scroll : -24, // title is 24px, rendered at -1
3232
draw : (idx, r) => {
33-
if (idx<0) // TITLE
34-
return g.setFont("12x20").setFontAlign(-1,0).drawString(
35-
menuIcon+" "+title, r.x+12, r.y+H-12);
33+
if (idx<0) {// TITLE
34+
var titleText = g.findFont(menuIcon+" "+title, {w:g.getWidth()-2,h:24,max:24});
35+
return g.setFontAlign(-1,0).drawString(titleText.text, r.x+12, r.y+H-12);
36+
}
3637
g.setColor(g.theme.bg2).fillRect({x:r.x+4,y:r.y+2,w:r.w-8, h:r.h-4, r:5});
37-
var v = idx*step + item.min;
38-
g.setColor(g.theme.fg2).setFont("12x20").setFontAlign(-1,0).drawString((item.format) ? item.format(v,1) : v, r.x+12, r.y+H/2);
38+
var v = idx*step + item.min, txt = item.format ? item.format(v,1) : v;
39+
var itemText = g.findFont(txt, {w:r.w,h:r.h,wrap:1,trim:1});
40+
g.setColor(g.theme.fg2).setFontAlign(-1,0).drawString(itemText.text, r.x+12, r.y+H/2);
3941
g.drawImage(/* 20x20 */atob(v==item.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"), r.x+r.w-32, r.y+H/2-10);
4042
},
4143
select : function(idx) {
@@ -109,29 +111,26 @@
109111
back : back,
110112
remove : options.remove,
111113
draw : (idx, r) => {
112-
if (idx<0) // TITLE
113-
return g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString(
114-
menuIcon+" "+options.title, r.x+12, r.y+H-12);
115-
g.setColor(g.theme.bg2).fillRect({x:r.x+4, y:r.y+2, w:r.w-8, h:r.h-4, r:5});
116-
g.setColor(g.theme.fg2).setFont("12x20");
117-
var pad = 24;
114+
g.setFontAlign(-1,0);
115+
if (idx<0) { // TITLE
116+
var title = g.findFont(menuIcon+" "+options.title, {w:r.w,h:24,max:24});
117+
return g.drawString(title.text, r.x+12, r.y+H-10);
118+
}
119+
g.setColor(g.theme.bg2).fillRect({x:r.x+4, y:r.y+2, w:r.w-8, h:r.h-4, r:5}).setColor(g.theme.fg2);
120+
var pad = 16;
118121
var item = menu[keys[idx]];
119122
if ("object" == typeof item) {
120123
var v = item.value;
121124
if (item.format) v=item.format(v);
122-
if (g.stringMetrics(v).width > r.w/2) // bodge for broken wrapString with image
123-
v = g.wrapString(v,r.w/2).join("\n");
124-
g.setFontAlign(1,0).drawString(v,r.x+r.w-8,r.y+H/2);
125-
pad += g.stringWidth(v);
125+
var val = g.findFont(v, {w:r.w/2,h:r.h,wrap:1,trim:1});
126+
g.setFontAlign(1,0).drawString(val.text,r.x+r.w-8,r.y+H/2);
127+
pad += g.stringWidth(val.text);
126128
} else if ("function" == typeof item) {
127129
g.drawImage(/* 9x18 */atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="), r.x+r.w-21, r.y+H/2-9);
128130
pad += 16;
129131
}
130-
var title = (item&&item.title)??keys[idx];
131-
var l = g.wrapString(title,r.w-pad);
132-
if (l.length>1)
133-
l = g.setFont("6x15").wrapString(title,r.w-pad);
134-
g.setFontAlign(-1,0).drawString(l.join("\n"), r.x+12, r.y+H/2);
132+
var itemText = g.findFont((item&&item.title)??keys[idx], {w:r.w-pad,h:r.h,wrap:1,trim:1});
133+
g.setFontAlign(-1,0).drawString(itemText.text, r.x+8, 1+r.y+H/2);
135134
},
136135
select : function(idx, touch) {
137136
if (idx<0) return back&&back(); // title
@@ -156,4 +155,4 @@
156155
}
157156
show();
158157
return l;
159-
})
158+
})
7 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)