iconbits: cleanups, implement line drawing.

master
Pavel Machek 2024-07-19 11:48:02 +02:00
parent 2d4ad4a756
commit b51a856576
1 changed files with 33 additions and 20 deletions

View File

@ -98,8 +98,8 @@ Bangle.on("lock", function() {
function nextPen () { function nextPen () {
switch (pen) { switch (pen) {
case 'circle': pen = 'pixel'; break; case 'circle': pen = 'pixel'; break;
case 'pixel': pen = 'crayon'; break; case 'pixel': pen = 'line'; break;
case 'crayon': pen = 'square'; break; case 'line': pen = 'square'; break;
case 'square': pen = 'circle'; break; case 'square': pen = 'circle'; break;
default: pen = 'pixel'; break; default: pen = 'pixel'; break;
} }
@ -108,8 +108,8 @@ Bangle.on("lock", function() {
discard = setTimeout(function () { oldX = -1; oldY = -1; console.log('timeout'); discard = null; }, 500); discard = setTimeout(function () { oldX = -1; oldY = -1; console.log('timeout'); discard = null; }, 500);
} }
var oldX = -1; var oldX = -1, oldY = -1;
var oldY = -1; var line_from = null;
function drawBrushIcon () { function drawBrushIcon () {
const w = g.getWidth(); const w = g.getWidth();
@ -129,6 +129,9 @@ Bangle.on("lock", function() {
g.drawLine(w - 14, 6, w - 10, 12); g.drawLine(w - 14, 6, w - 10, 12);
g.drawLine(w - 6, 6, w - 10, 12); g.drawLine(w - 6, 6, w - 10, 12);
break; break;
case 'line':
g.drawLine(w - 5, 5, w - 15, 15);
break;
} }
} }
@ -199,6 +202,7 @@ Bangle.on("lock", function() {
let YS = (to.y - from.y) / 32; let YS = (to.y - from.y) / 32;
switch (pen) { switch (pen) {
case 'line':
case 'pixel': case 'pixel':
g.drawLine(from.x, from.y, to.x, to.y); g.drawLine(from.x, from.y, to.x, to.y);
break; break;
@ -219,6 +223,8 @@ Bangle.on("lock", function() {
g.fillRect(posX - 4, posY - 4, posX + 4, posY + 4); g.fillRect(posX - 4, posY - 4, posX + 4, posY + 4);
} }
break; break;
default:
print("Unkown pen ", pen);
} }
} }
@ -229,9 +235,11 @@ Bangle.on("lock", function() {
} }
function do_draw(from, to) { function do_draw(from, to) {
print("do-draw", from, to);
from = transform(from); from = transform(from);
to = transform(to); to = transform(to);
if (from && to) { if (from && to) {
print("__draw", from, to);
__draw(sg, from, to); __draw(sg, from, to);
} }
update(); update();
@ -306,20 +314,31 @@ Bangle.on("lock", function() {
drawUtil(); drawUtil();
return; return;
} }
oldX = to.x;
oldY = to.y;
sg.setColor(kule[0], kule[1], kule[2]); sg.setColor(kule[0], kule[1], kule[2]);
g.setColor(kule[0], kule[1], kule[2]); g.setColor(kule[0], kule[1], kule[2]);
oldX = to.x;
oldY = to.y;
if (pen != "line") {
do_draw(from, to); do_draw(from, to);
} else {
if (tap.b == 1) {
print(line_from);
if (!line_from) {
line_from = to;
} else {
print("draw -- ", line_from, to);
do_draw(line_from, to);
line_from = null;
}
}
}
drawUtil(); drawUtil();
} }
function on_btn(n) { function on_btn(n) {
function f(i) { function f(i) {
return "\\x" + i.toString(16).padStart(2, '0'); return "\\x" + i.toString(16).padStart(2, '0');
} }
print("on_btn", n);
print(g.getPixel(0, 0));
let s = f(0) + f(font_width) + f(font_height) + f(1); let s = f(0) + f(font_width) + f(font_height) + f(1);
// 0..black, 65535..white // 0..black, 65535..white
for (let y = 0; y < font_height; y++) { for (let y = 0; y < font_height; y++) {
@ -330,18 +349,12 @@ Bangle.on("lock", function() {
} }
s += f(v); s += f(v);
} }
print("Manual bitmap\n"); if (mode == "font")
print('show_font("' + s + '");'); print('show_font("' + s + '");');
if (1) {
s = "";
var im = sg.asImage("string"); var im = sg.asImage("string");
for (var v of im) {
s += f(v);
}
//print('show_unc_icon("'+btoa(im)+'");'); //print('show_unc_icon("'+btoa(im)+'");');
print('show_icon("'+btoa(require('heatshrink').compress(im))+'");'); print('show_icon("'+btoa(require('heatshrink').compress(im))+'");');
} }
}
setup("icon"); setup("icon");
drawArea(); drawArea();