mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
3 lines
1.4 KiB
JavaScript
3 lines
1.4 KiB
JavaScript
(function(d){function k(a){return a*d.h+b.y-f}function l(a){return Math.floor((a+f-b.y)/d.h)}if(!d)return Bangle.setUI();var n=()=>{g.reset().clearRect(b).setClipRect(b.x,b.y,b.x2,b.y2);for(var a=l(b.y),c=Math.min(l(b.y2),d.c-1);a<=c;a++)d.draw(a,{x:b.x,y:k(a),w:b.w,h:d.h});g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)};Bangle.setUI({mode:"custom",back:d.back,remove:d.remove,redraw:n,drag:a=>{var c=a.dy;e.scroll-c>m&&(c=e.scroll-m);e.scroll-c<h&&(c=e.scroll-h);e.scroll-=
|
|
c;c=f;f=e.scroll&-2;if(c-=f){g.reset().setClipRect(b.x,b.y,b.x2,b.y2).scroll(0,c);a=a.dy;if(0>a)for(a=Math.max(b.y2-(1-a),b.y),g.setClipRect(b.x,a,b.x2,b.y2),c=l(a),a=k(c);a<b.y2;)d.draw(c,{x:b.x,y:a,w:b.w,h:d.h}),c++,a+=d.h;else for(a=Math.min(b.y+a,b.y2),g.setClipRect(b.x,b.y,b.x2,a),c=l(a),a=k(c);a>b.y-d.h;)d.draw(c,{x:b.x,y:a,w:b.w,h:d.h}),a-=d.h,c--;g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)}},touch:(a,c)=>{if(!(c.y<b.y-4)){a=l(c.y);var p=c.y+f-b.y-a*d.h;163<c.y&&163<k(a)&&(a--,p=d.h-
|
|
1);(0>h||0<=a)&&a<d.c&&d.select(a,{x:c.x,y:p})}}});var b=Bangle.appRect,h=0|d.scrollMin,m=d.h*d.c-b.h;m<h&&(m=h);var e={scroll:E.clip(0|d.scroll,h,m),draw:n,drawItem:a=>{var c=k(a);g.reset().setClipRect(b.x,Math.max(c,b.y),b.x2,Math.min(c+d.h,b.y2));d.draw(a,{x:b.x,y:c,w:b.w,h:d.h});g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)},isActive:()=>Bangle.uiRedraw==n},f=e.scroll&-2;e.draw();g.flip();return e}) |