-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
86c154a
commit c95e5aa
Showing
18 changed files
with
2,147 additions
and
1,463 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
using Toybox.Math as Math; | ||
using Toybox.System as Sys; | ||
using Toybox.WatchUi as Ui; | ||
using Toybox.Graphics as Gfx; | ||
using Toybox.Application as App; | ||
|
||
// By using updateable_calcmoonphase, the moon phase picture will be drawn, | ||
// but it will be only recomputed once a day. | ||
class Moon { | ||
var moon_width; | ||
var moon_bitmap; | ||
var moonx, moony; | ||
|
||
var c_phase, t_phase; // day of month when last updated | ||
var c_moon_label, c_moon_y; // y1, y2, y1, y2, ... for the moon shadow | ||
|
||
function initialize(bitmap, width, x, y) { | ||
moon_bitmap = bitmap; // Ui.loadResource(Rez.Drawables.moon); | ||
moon_width = width; | ||
moonx = x; | ||
moony = y; | ||
t_phase = -1; | ||
} | ||
|
||
|
||
function calcmoonphase(day, month, year) { | ||
var r = (year % 100); | ||
r = (r % 19); | ||
if (r>9) { | ||
r = r - 19; | ||
} | ||
r = ((r * 11) % 30) + month + day; | ||
if (month<3) { | ||
r = r + 2; | ||
} | ||
r = 1.0*r - 8.3 + 0.5; | ||
r = (r.toNumber() % 30); | ||
if (r < 0) { | ||
r = r + 30; | ||
} | ||
return r; | ||
} | ||
|
||
function updateable_calcmoonphase(dc, dateinfo, hour) { | ||
if (t_phase != dateinfo.day) { | ||
t_phase = dateinfo.day; | ||
|
||
c_phase = calcmoonphase(dateinfo.day, dateinfo.month, dateinfo.year); | ||
if (hour > 12) { // change it at noon | ||
c_phase = (c_phase + 1) % 30; | ||
} | ||
|
||
calc_drawmoon(c_phase);// updates c_moon_label and c_moon_y | ||
|
||
} | ||
|
||
drawmoon(dc, moonx, moony); // uses c_moon_y | ||
|
||
return c_phase; | ||
} | ||
|
||
function drawmoon(dc, moonx, moony) { | ||
dc.drawBitmap(moonx, moony, moon_bitmap); | ||
var x, xby2; | ||
dc.setColor(App.getApp().getProperty("BackgroundColor"), Gfx.COLOR_TRANSPARENT); | ||
// dc.setColor(Gfx.COLOR_RED, Gfx.COLOR_WHITE); | ||
for (x=1; x<moon_width; x++) { | ||
xby2 = x*2; | ||
if (c_moon_y[xby2] >= 0) { | ||
dc.drawLine(moonx+x, moony+c_moon_y[xby2], moonx+x, moony+c_moon_y[xby2+1]); | ||
} else { | ||
dc.drawLine(moonx+x, moony+1, moonx+x, moony-c_moon_y[xby2]); | ||
dc.drawLine(moonx+x, moony-c_moon_y[xby2+1], moonx+x, moony+moon_width); | ||
} | ||
} | ||
} | ||
|
||
function calc_drawmoon(moonphase) { | ||
var mw = moon_width; // image width | ||
var c = mw/2; // image center | ||
var intc = c.toNumber(); | ||
var r = (mw-2)*0.5-0.5; // radius depends on image | ||
c_moon_label = ""; | ||
var step = 1; | ||
var r1edge= -1; | ||
var rSedge= 0; | ||
var r1rest= -1; | ||
var rSrest= 0; | ||
var edgelight = false; | ||
if (moonphase <= 8) { | ||
c_moon_label = "wax."; | ||
r1edge = intc; rSedge = step; | ||
r1rest = intc; rSrest = -step; | ||
edgelight = true; | ||
if (moonphase == 8) { | ||
r1edge = -1; rSedge = 0; | ||
} else { | ||
if (moonphase == 0) { | ||
c_moon_label = "new"; | ||
} | ||
} | ||
} else { | ||
if (moonphase <=16) { | ||
c_moon_label = "wax."; | ||
r1rest = -1; rSrest = 0; | ||
r1edge = intc; rSedge = -step; | ||
edgelight = false; | ||
if (moonphase == 16) { | ||
c_moon_label = "full"; | ||
r1edge = -1; rSedge = 0; | ||
} | ||
} else { | ||
c_moon_label = "wan."; | ||
if (moonphase <=23) { | ||
r1rest = -1; rSrest = 0; | ||
r1edge = intc; rSedge = step; | ||
edgelight = false; | ||
if (moonphase == 23) { | ||
r1edge = -1; rSedge = 0; | ||
r1rest = intc; rSrest = step; | ||
} | ||
} else { | ||
r1edge = intc; rSedge = -step; | ||
r1rest = intc; rSrest = step; | ||
edgelight = true; | ||
} | ||
} | ||
} | ||
|
||
var a; | ||
if (moonphase > 16) { | ||
a = 1.0 - (moonphase - 16.0) / 7.0; | ||
} else { | ||
a = 1.0 - moonphase/8.0; | ||
} | ||
|
||
|
||
c_moon_y = new [mw*2+2]; | ||
var i; | ||
for (i = 0; i<mw*2; i++) { | ||
c_moon_y[i] = 0; | ||
} | ||
|
||
var x, xx, ra, sq, y1, y2, xby2; | ||
for (x=r1rest; x<=mw && x>=1; x+=rSrest) { | ||
//dc.drawLine(moonx+x, moony+1, moonx+x, moony+mw); | ||
xby2 = 2*x; | ||
c_moon_y[xby2] = 1; | ||
c_moon_y[xby2+1] = mw; | ||
} | ||
for (x=r1edge; x<=mw && x>=1; x+=rSedge) { | ||
xx = (x-c)/a; | ||
ra = r*r - xx*xx; | ||
xby2 = 2*x; | ||
|
||
if (ra > 0) { | ||
sq = Math.sqrt(ra); | ||
y1 = c - sq + 0.5; | ||
y1 = y1.toNumber(); | ||
y2 = c + sq + 0.5; | ||
y2 = y2.toNumber(); | ||
if (edgelight) { | ||
// dc.drawLine(moonx+x, moony+y1, moonx+x, moony+y2); | ||
c_moon_y[xby2] = y1; | ||
c_moon_y[xby2+1] = y2; | ||
} else { | ||
//dc.drawLine(moonx+x, moony+1, moonx+x, moony+y1); | ||
//dc.drawLine(moonx+x, moony+y2, moonx+x, moony+mw); | ||
c_moon_y[xby2] = -y1; | ||
c_moon_y[xby2+1] = -y2; | ||
} | ||
} else { | ||
if (!edgelight) { | ||
// dc.drawLine(moonx+x, moony+1, moonx+x, moony+mw); | ||
c_moon_y[xby2] = 1; | ||
c_moon_y[xby2+1] = mw; | ||
} | ||
} | ||
} | ||
|
||
return c_moon_label; | ||
} | ||
|
||
|
||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<drawable-list id="lowerDisplay"> | ||
<shape type="rectangle" x="37" y="137" corner_radius="5" width="144" height="35"/> | ||
</drawable-list> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<drawable-list id="upperDisplay"> | ||
<shape type="rectangle" x="37" y="50" corner_radius="5" width="144" height="35"/> | ||
</drawable-list> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<drawable-list id="lowerDisplay"> | ||
<shape type="rectangle" x="37" y="109" corner_radius="5" width="144" height="35"/> | ||
</drawable-list> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<drawable-list id="upperDisplay"> | ||
<shape type="rectangle" x="37" y="37" corner_radius="5" width="144" height="35"/> | ||
</drawable-list> |
Binary file not shown.
Oops, something went wrong.