forked from espruino/BangleApps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLayout.min.js
More file actions
14 lines (14 loc) · 6.85 KB
/
Copy pathLayout.min.js
File metadata and controls
14 lines (14 loc) · 6.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function r(c,f){function d(e){"ram";e.id&&(m[e.id]=e);e.type||(e.type="");e.c&&e.c.forEach(d)}this._l=this.l=c;this.options=f||{};this.lazy=this.options.lazy||!1;this.physBtns=1;let k;if(2!=process.env.HWVERSION){this.physBtns=3;k=[];function e(n){"ram";"btn"==n.type&&k.push(n);n.c&&n.c.forEach(e)}e(c);k.length&&(this.physBtns=0,this.buttons=k,this.selectedButton=-1)}if(this.options.btns)if(c=this.options.btns,this.physBtns>=c.length){this.b=c;let e=Math.floor(Bangle.appRect.h/
this.physBtns);for(2<this.physBtns&&1==c.length&&c.unshift({label:""});this.physBtns>c.length;)c.push({label:""});this._l.width=g.getWidth()-8;this._l={type:"h",filly:1,c:[this._l,{type:"v",pad:1,filly:1,c:c.map(n=>(n.type="txt",n.font="6x8",n.height=e,n.r=1,n))}]}}else this._l.width=g.getWidth()-32,this._l={type:"h",c:[this._l,{type:"v",c:c.map(e=>(e.type="btn",e.filly=1,e.width=32,e.r=1,e))}]},k&&k.push.apply(k,this._l.c[1].c);this.setUI();var m=this;d(this._l);this.updateNeeded=!0}function u(c,
f,d,k,m){var e=null==c.bgCol?m:g.toColor(c.bgCol);if(e!=m||"txt"==c.type||"btn"==c.type||"img"==c.type||"custom"==c.type){var n=c.c;delete c.c;var a="H"+E.CRC32(E.toJS(c));n&&(c.c=n);delete f[a]||((k[a]=[c.x,c.y,c.x+c.w-1,c.y+c.h-1]).bg=null==m?g.theme.bg:m,d&&(d.push(c),d=null))}if(c.c)for(var b of c.c)u(b,f,d,k,e)}r.prototype.setUI=function(){Bangle.setUI();let c;this.buttons&&(Bangle.setUI({mode:"updown",back:this.options.back,remove:this.options.remove},f=>{var d=this.selectedButton,k=this.buttons.length;
if(void 0===f&&this.buttons[d])return this.buttons[d].cb();this.buttons[d]&&(delete this.buttons[d].selected,this.render(this.buttons[d]));d=(d+k+f)%k;this.buttons[d]&&(this.buttons[d].selected=1,this.render(this.buttons[d]));this.selectedButton=d}),c=!0);!this.options.back&&!this.options.remove||c||Bangle.setUI({mode:"custom",back:this.options.back,remove:this.options.remove});if(this.b){function f(d,k){.75<k.time-k.lastTime&&this.b[d].cbl?this.b[d].cbl(k):this.b[d].cb&&this.b[d].cb(k)}Bangle.btnWatches&&
Bangle.btnWatches.forEach(clearWatch);Bangle.btnWatches=[];this.b[0]&&Bangle.btnWatches.push(setWatch(f.bind(this,0),BTN1,{repeat:!0,edge:-1}));this.b[1]&&Bangle.btnWatches.push(setWatch(f.bind(this,1),BTN2,{repeat:!0,edge:-1}));this.b[2]&&Bangle.btnWatches.push(setWatch(f.bind(this,2),BTN3,{repeat:!0,edge:-1}))}if(2==process.env.HWVERSION){function f(d,k){d.cb&&k.x>=d.x&&k.y>=d.y&&k.x<=d.x+d.w&&k.y<=d.y+d.h&&(2==k.type&&d.cbl?d.cbl(k):d.cb&&d.cb(k));d.c&&d.c.forEach(m=>f(m,k))}Bangle.touchHandler=
(d,k)=>f(this._l,k);Bangle.on("touch",Bangle.touchHandler)}};r.prototype.render=function(c){function f(b){"ram";d.reset();void 0!==b.col&&d.setColor(b.col);void 0!==b.bgCol&&d.setBgColor(b.bgCol).clearRect(b.x,b.y,b.x+b.w-1,b.y+b.h-1);k[b.type](b)}c||(c=this._l);this.updateNeeded&&this.update();var d=g,k={"":function(){},txt:function(b){"ram";if(b.wrap){var l=d.setFont(b.font).setFontAlign(0,-1).wrapString(b.label,b.w),p=b.y+(b.h-d.getFontHeight()*l.length>>1);d.drawString(l.join("\n"),b.x+(b.w>>
1),p)}else d.setFont(b.font).setFontAlign(0,0,b.r).drawString(b.label,b.x+(b.w>>1),b.y+(b.h>>1))},btn:function(b){"ram";var l=void 0!==b.btnBorderCol?b.btnBorderCol:d.theme.fg2,p=void 0!==b.btnFaceCol?b.btnFaceCol:d.theme.bg2,q={x:b.x+(0|b.pad),y:b.y+(0|b.pad),w:b.w-(b.pad<<1)-1,h:b.h-(b.pad<<1)-1,r:10};b.selected&&(p=d.theme.bgH,l=d.theme.fgH);d.setColor(p).fillRect(q).setColor(l).drawRect(q);void 0!==b.col&&d.setColor(b.col);b.src?d.setBgColor(p).drawImage("function"==typeof b.src?b.src():b.src,
b.x+b.w/2,b.y+b.h/2,{scale:b.scale||void 0,rotate:.5*Math.PI*(b.r||0)}):d.setFont(b.font||"6x8:2").setFontAlign(0,0,b.r).drawString(b.label,b.x+b.w/2,b.y+b.h/2)},img:function(b){"ram";d.drawImage("function"==typeof b.src?b.src():b.src,b.x+b.w/2,b.y+b.h/2,{scale:b.scale||void 0,rotate:.5*Math.PI*(b.r||0)})},custom:function(b){"ram";b.render(b)},h:function(b){"ram";b.c.forEach(f)},v:function(b){"ram";b.c.forEach(f)}};if(this.lazy){this.rects||(this.rects={});var m=this.rects.clone(),e=[];u(c,m,e,this.rects,
null);for(var n in m)delete this.rects[n];c=Object.keys(m).map(b=>m[b]).reverse();for(var a of c)d.setBgColor(a.bg).clearRect.apply(g,a);e.forEach(f)}else f(c)};r.prototype.forgetLazyState=function(){this.rects={}};r.prototype.debug=function(c,f){c||(c=this._l);f=f||1;g.setColor(f&1,f&2,f&4).drawRect(c.x+f-1,c.y+f-1,c.x+c.w-f,c.y+c.h-f);c.pad&&g.drawRect(c.x+c.pad-1,c.y+c.pad-1,c.x+c.w-c.pad,c.y+c.h-c.pad);f++;c.c&&c.c.forEach(d=>this.debug(d,f))};r.prototype.update=function(){function c(a){"ram";
m[a.type](a);if(a.r&1){var b=a._w;a._w=a._h;a._h=b}a._w=d(a._w+(a.pad<<1),0|a.width);a._h=d(a._h+(a.pad<<1),0|a.height)}delete this.updateNeeded;var f=g,d=Math.max,k=Math.round,m={txt:function(a){"ram";a.font.endsWith("%")&&(a.font="Vector"+k(f.getHeight()*a.font.slice(0,-1)/100));if(a.wrap)a._h=a._w=0;else{var b=f.setFont(a.font).stringMetrics(a.label);a._w=b.width;a._h=b.height}},btn:function(a){"ram";a.font&&a.font.endsWith("%")&&(a.font="Vector"+k(f.getHeight()*a.font.slice(0,-1)/100));var b=
a.scale||1,l=a.src?f.imageMetrics("function"==typeof a.src?a.src():a.src):f.setFont(a.font||"6x8:2").stringMetrics(a.label);a._h=16+Math.ceil(l.height*b);a._w=20+Math.ceil(l.width*b)},img:function(a){"ram";var b=f.imageMetrics("function"==typeof a.src?a.src():a.src),l=a.scale||1;a._w=b.width*l;a._h=b.height*l},"":function(a){"ram";a._w=0;a._h=0},custom:function(a){"ram";a._w=0;a._h=0},h:function(a){"ram";a.c.forEach(c);a._h=a.c.reduce((b,l)=>d(b,l._h),0);a.__w=a._w=a.c.reduce((b,l)=>b+l._w,0);null==
a.fillx&&a.c.some(b=>b.fillx)&&(a.fillx=1);null==a.filly&&a.c.some(b=>b.filly)&&(a.filly=1)},v:function(a){"ram";a.c.forEach(c);a.__h=a._h=a.c.reduce((b,l)=>b+l._h,0);a._w=a.c.reduce((b,l)=>d(b,l._w),0);null==a.fillx&&a.c.some(b=>b.fillx)&&(a.fillx=1);null==a.filly&&a.c.some(b=>b.filly)&&(a.filly=1)}},e=this._l;c(e);e.fillx||e.filly?(e.w=Bangle.appRect.w,e.h=Bangle.appRect.h,e.x=Bangle.appRect.x,e.y=Bangle.appRect.y):(e.w=e._w,e.h=e._h,e.x=Bangle.appRect.w-e.w>>1,e.y=Bangle.appRect.y+(Bangle.appRect.h-
e.h>>1));var n=Math.floor;m={h:function(a){"ram";var b=a.x+(0|a.pad),l=0,p=a.c&&a.c.reduce((h,t)=>h+(0|t.fillx),0);p||(b+=a.w-(a.pad<<1)-a.__w>>1,p=1);var q=b;a.c.forEach(h=>{h.x=0|q;b+=h._w;l+=0|h.fillx;q=b+n(l*(a.w-a._w)/p);h.w=0|q-h.x;h.h=0|(h.filly?a.h-(a.pad<<1):h._h);h.y=0|a.y+(0|a.pad)+((1+(0|h.valign))*(a.h-(a.pad<<1)-h.h)>>1);if(h.c)m[h.type](h);delete h._w;delete h._h});delete a.__w},v:function(a){"ram";var b=a.y+(0|a.pad),l=0,p=a.c&&a.c.reduce((h,t)=>h+(0|t.filly),0);p||(b+=a.h-(a.pad<<
1)-a.__h>>1,p=1);var q=b;a.c.forEach(h=>{h.y=0|q;b+=h._h;l+=0|h.filly;q=b+n(l*(a.h-a._h)/p);h.h=0|q-h.y;h.w=0|(h.fillx?a.w-(a.pad<<1):h._w);h.x=0|a.x+(0|a.pad)+((1+(0|h.halign))*(a.w-(a.pad<<1)-h.w)>>1);if(h.c)m[h.type](h);delete h._w;delete h._h});delete a.__h}};if(m[e.type])m[e.type](e);delete e._w;delete e._h};r.prototype.clear=function(c){c||(c=this._l);g.reset();void 0!==c.bgCol&&g.setBgColor(c.bgCol);g.clearRect(c.x,c.y,c.x+c.w-1,c.y+c.h-1)};exports=r