compass: eliminate flickering
parent
aba59bd2c2
commit
cc4757537a
|
|
@ -269,7 +269,7 @@
|
||||||
{ "id": "compass",
|
{ "id": "compass",
|
||||||
"name": "Compass",
|
"name": "Compass",
|
||||||
"icon": "compass.png",
|
"icon": "compass.png",
|
||||||
"version":"0.02",
|
"version":"0.03",
|
||||||
"description": "Simple compass that points North",
|
"description": "Simple compass that points North",
|
||||||
"tags": "tool,outdoors",
|
"tags": "tool,outdoors",
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Show text if uncalibrated
|
0.02: Show text if uncalibrated
|
||||||
|
0.03: Eliminate flickering
|
||||||
|
|
@ -1,43 +1,60 @@
|
||||||
g.clear();
|
var tg = Graphics.createArrayBuffer(120,20,1,{msb:true});
|
||||||
g.setColor(0,0.5,1);
|
var timg = {
|
||||||
g.fillCircle(120,130,80,80);
|
width:tg.getWidth(),
|
||||||
g.setColor(0,0,0);
|
height:tg.getHeight(),
|
||||||
g.fillCircle(120,130,70,70);
|
bpp:1,
|
||||||
|
buffer:tg.buffer
|
||||||
|
};
|
||||||
|
|
||||||
|
var ag = Graphics.createArrayBuffer(160,160,2,{msb:true});
|
||||||
|
var aimg = {
|
||||||
|
width:ag.getWidth(),
|
||||||
|
height:ag.getHeight(),
|
||||||
|
bpp:2,
|
||||||
|
buffer:ag.buffer,
|
||||||
|
palette:new Uint16Array([0,0x03FF,0xF800,0x001F])
|
||||||
|
};
|
||||||
|
ag.setColor(1);
|
||||||
|
ag.fillCircle(80,80,79,79);
|
||||||
|
ag.setColor(0);
|
||||||
|
ag.fillCircle(80,80,69,69);
|
||||||
|
|
||||||
function arrow(r,c) {
|
function arrow(r,c) {
|
||||||
r=r*Math.PI/180;
|
r=r*Math.PI/180;
|
||||||
var p = Math.PI/2;
|
var p = Math.PI/2;
|
||||||
g.setColor(c);
|
ag.setColor(c);
|
||||||
g.fillPoly([
|
ag.fillPoly([
|
||||||
120+60*Math.sin(r), 130-60*Math.cos(r),
|
80+60*Math.sin(r), 80-60*Math.cos(r),
|
||||||
120+10*Math.sin(r+p), 130-10*Math.cos(r+p),
|
80+10*Math.sin(r+p), 80-10*Math.cos(r+p),
|
||||||
120+10*Math.sin(r+-p), 130-10*Math.cos(r-p),
|
80+10*Math.sin(r-p), 80-10*Math.cos(r-p),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var oldHeading = 0;
|
var oldHeading = 0;
|
||||||
Bangle.on('mag', function(m) {
|
Bangle.on('mag', function(m) {
|
||||||
if (!Bangle.isLCDOn()) return;
|
if (!Bangle.isLCDOn()) return;
|
||||||
g.setFont("6x8",3);
|
tg.clear();
|
||||||
g.setColor(0);
|
tg.setFont("6x8",1);
|
||||||
g.fillRect(0,0,230,40);
|
tg.setColor(1);
|
||||||
g.setColor(0xffff);
|
|
||||||
if (isNaN(m.heading)) {
|
if (isNaN(m.heading)) {
|
||||||
g.setFontAlign(-1,-1);
|
tg.setFontAlign(0,-1);
|
||||||
g.setFont("6x8",2);
|
tg.setFont("6x8",1);
|
||||||
g.drawString("Uncalibrated",50,12);
|
tg.drawString("Uncalibrated",60,4);
|
||||||
g.drawString("turn 360° around",25,26);
|
tg.drawString("turn 360° around",60,12);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g.setFontAlign(0,0);
|
tg.setFontAlign(0,0);
|
||||||
g.setFont("6x8",3);
|
tg.setFont("6x8",2);
|
||||||
g.drawString(Math.round(m.heading),120,12);
|
tg.drawString(Math.round(m.heading),60,12);
|
||||||
}
|
}
|
||||||
g.setColor(0,0,0);
|
g.drawImage(timg,0,0,{scale:2});
|
||||||
|
|
||||||
|
ag.setColor(0);
|
||||||
arrow(oldHeading,0);
|
arrow(oldHeading,0);
|
||||||
arrow(oldHeading+180,0);
|
arrow(oldHeading+180,0);
|
||||||
arrow(m.heading,0xF800);
|
arrow(m.heading,2);
|
||||||
arrow(m.heading+180,0x001F);
|
arrow(m.heading+180,3);
|
||||||
|
g.drawImage(aimg,40,50);
|
||||||
oldHeading = m.heading;
|
oldHeading = m.heading;
|
||||||
});
|
});
|
||||||
Bangle.setCompassPower(1);
|
Bangle.setCompassPower(1);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue