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