Merge branch 'master' of github.com:espruino/BangleApps

master
Gordon Williams 2021-09-29 09:18:46 +01:00
commit ee60bda59b
2 changed files with 26 additions and 18 deletions

View File

@ -237,29 +237,37 @@ Layout.prototype.layout = function (l) {
// exw,exh = extra width/height available
switch (l.type) {
case "h": {
var x = l.x + (0|l.pad);
var acc_w = l.x + (0|l.pad);
var accfillx = 0;
var fillx = l.c && l.c.reduce((a,l)=>a+(0|l.fillx),0);
if (!fillx) { x += (l.w-l._w)/2; fillx = 1; }
if (!fillx) { acc_w += (l.w-l._w)>>1; }
var x = acc_w;
l.c.forEach(c => {
c.w = c._w + ((0|c.fillx)*(l.w-l._w)/fillx);
c.h = c.filly ? l.h - (l.pad<<1) : c._h;
c.x = x;
c.y = l.y + (0|l.pad) + (1+(0|c.valign))*(l.h-(l.pad<<1)-c.h)/2;
x += c.w;
c.x = 0|x;
acc_w += c._w;
accfillx += 0|c.fillx;
x = acc_w + Math.floor(accfillx*(l.w-l._w)/(fillx||1));
c.w = 0|(x - c.x);
c.h = 0|(c.filly ? l.h - (l.pad<<1) : c._h);
c.y = 0|(l.y + (0|l.pad) + ((1+(0|c.valign))*(l.h-(l.pad<<1)-c.h)>>1));
if (c.c) this.layout(c);
});
break;
}
case "v": {
var y = l.y + (0|l.pad);
var acc_h = l.y + (0|l.pad);
var accfilly = 0;
var filly = l.c && l.c.reduce((a,l)=>a+(0|l.filly),0);
if (!filly) { y += (l.h-l._h)/2; filly = 1; }
if (!filly) { acc_h += (l.h-l._h)>>1; }
var y = acc_h;
l.c.forEach(c => {
c.w = c.fillx ? l.w - (l.pad<<1) : c._w;
c.h = c._h + ((0|c.filly)*(l.h-l._h)/filly);
c.y = y;
c.x = l.x + (0|l.pad) + (1+(0|c.halign))*(l.w-(l.pad<<1)-c.w)/2;
y += c.h;
c.y = 0|y;
acc_h += c._h;
accfilly += 0|c.filly;
y = acc_h + Math.floor(accfilly*(l.h-l._h)/(filly||1));
c.h = 0|(y - c.y);
c.w = 0|(c.fillx ? l.w - (l.pad<<1) : c._w);
c.x = 0|(l.x + (0|l.pad) + ((1+(0|c.halign))*(l.w-(l.pad<<1)-c.w)>>1));
if (c.c) this.layout(c);
});
break;
@ -286,8 +294,8 @@ Layout.prototype.update = function() {
if (l.r&1) { // rotation
var t = l._w;l._w=l._h;l._h=t;
}
l._w = Math.max(l._w + (l.pad<<1), 0|l.width);
l._h = Math.max(l._h + (l.pad<<1), 0|l.height);
l._w = 0|Math.max(l._w + (l.pad<<1), 0|l.width);
l._h = 0|Math.max(l._h + (l.pad<<1), 0|l.height);
}
var cb = {
"txt" : function(l) {
@ -347,8 +355,8 @@ Layout.prototype.update = function() {
} else {
l.w = l._w;
l.h = l._h;
l.x = Math.round((w-l.w)/2);
l.y = y+Math.round((h-l.h)/2);
l.x = (w-l.w)>>1;
l.y = y+((h-l.h)>>1);
}
// layout children
this.layout(l);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB