From 9ea1fe4dcfcce5f2e31249765def2d779d211bc0 Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Tue, 25 Jul 2023 22:38:08 +0200 Subject: [PATCH] widclkscrl: Draw only in draw method --- apps/widclkscrl/widget.js | 52 +++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/apps/widclkscrl/widget.js b/apps/widclkscrl/widget.js index 3f0316d79..910108da5 100644 --- a/apps/widclkscrl/widget.js +++ b/apps/widclkscrl/widget.js @@ -16,49 +16,49 @@ pos: 10, dir: -1, eventHandlerSet: false, - draw: function() { + draw: function(_w, scroll) { if (!this.eventHandlerSet) { Bangle.on('lock', (on) => { this.run(!on); }); this.eventHandlerSet = true; } + if (scroll) { + const buf = Graphics.createArrayBuffer(WIDTH,24,1,{msb:true}).setFont("Teletext5x9Ascii:1x2").setFontAlign(-1, 0); + buf.drawString(this.text, this.pos, 12); + + if (this.dir === 1 && this.pos === 0 || this.dir === -1 && Math.abs(this.pos) === buf.stringWidth(this.text) - WIDTH) { + if (CONTINOUS) { + this.dir*=-1; + this.text = getDateText(); + } else { + this.pos = 0; + this.run(false); + return; + } + } + this.pos+=this.dir; + + g.reset().drawImage({ + width:buf.getWidth(), height:buf.getHeight(), + bpp:buf.getBPP(), + buffer:buf.buffer + }, this.x+1, this.y); + } }, run: function (on) { if (!Bangle.CLOCK && on && !this.interval) { this.text = getDateText(); this.interval = setInterval(() => { - this.scroll(); + this.draw(this, true); }, 100); this.width = WIDTH+2; Bangle.drawWidgets(); } else if (!on && this.interval) { clearInterval(this.interval); - this.interval = undefined; - this.width = 0; Bangle.drawWidgets(); + delete this.interval; delete this.text; + this.width = 0; Bangle.drawWidgets(); } }, - scroll: function() { - const buf = Graphics.createArrayBuffer(WIDTH,24,1,{msb:true}).setFont("Teletext5x9Ascii:1x2").setFontAlign(-1, 0); - buf.drawString(this.text, this.pos, 12); - - if (this.dir === 1 && this.pos === 0 || this.dir === -1 && Math.abs(this.pos) === buf.stringWidth(this.text) - WIDTH) { - if (CONTINOUS) { - this.dir*=-1; - this.text = getDateText(); - } else { - this.pos = 0; - this.run(false); - return; - } - } - this.pos+=this.dir; - - g.reset().drawImage({ - width:buf.getWidth(), height:buf.getHeight(), - bpp:buf.getBPP(), - buffer:buf.buffer - }, this.x+1, this.y); - }, }; })();