]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_watch_faces.c
Too much to note...
[oswald.git] / ui / oswald_watch_faces.c
diff --git a/ui/oswald_watch_faces.c b/ui/oswald_watch_faces.c
new file mode 100644 (file)
index 0000000..f8897df
--- /dev/null
@@ -0,0 +1,88 @@
+#include <math.h>
+
+#include "oswald.h"
+#include "oswald_main.h"
+#include "oswald-ui.h"
+#include "Fonts.h"
+#include "LcdDisplay.h"
+
+#include "oswald_watch_faces.h"
+
+void DrawLcdAnaClock(boolean show_seconds)
+{
+       unsigned char *bbuf;
+       char daystr[5];
+       int len;
+       register i, x, y, x2, y2;
+       double tmp, mf;
+       s8t hour, minute, seconds;
+
+       hour = OswaldClk.hour;
+       minute = OswaldClk.minute;
+       seconds = OswaldClk.second;
+
+       hour -= 3;
+       mf = (1. / 59.) * (double)minute;
+       minute -= 15;
+       seconds -= 15;
+
+       lcd_clear_display();
+
+       // plot(R*cos(360° * i/N), R*sin(360° * i/N))
+       for (i=0; i<12; i++) {
+               tmp = 48. + (43. * cos(((2. * M_PI) / 12.) * (double)i));
+               x =  tmp;
+               tmp = 48 + (43. * sin(((2. * M_PI) / 12.) * (double)i));
+               y =  tmp;
+               tmp = 48. + (48. * cos(((2. * M_PI) / 12.) * (double)i));
+               x2 =  tmp;
+               tmp = 48 + (48. * sin(((2. * M_PI) / 12.) * (double)i));
+               y2 =  tmp;
+               DrawLcdLineBresenhamWW(x, y, x2, y2, 2);
+       };
+       // Hour
+       tmp = 48. + (30. * cos(((2. * M_PI) / 12.) * ((double)hour + mf)));
+       x =  tmp;
+       tmp = 48 + (30. * sin(((2. * M_PI) / 12.) * ((double)hour + mf)));
+       y =  tmp;
+       DrawLcdLineBresenhamWW(48, 48, x, y, 2);
+       // Minute
+       tmp = 48. + (40. * cos(((2. * M_PI) / 60.) * (double)minute));
+       x =  tmp;
+       tmp = 48 + (40. * sin(((2. * M_PI) / 60.) * (double)minute));
+       y =  tmp;
+       DrawLcdLineBresenhamWW(48, 48, x, y, 2);
+       if (show_seconds) {
+               // Seconds
+               tmp = 48. + (40. * cos(((2. * M_PI) / 60.) * (double)seconds));
+               x =  tmp;
+               tmp = 48 + (40. * sin(((2. * M_PI) / 60.) * (double)seconds));
+               y =  tmp;
+               DrawLcdLineBresenham(48, 48, x, y);
+       };
+
+       //snprintf(daystr, 5, "%d", day);
+       // mw_buf_print(mwbuf, 74, 45, daystr, 0, MW_WHITE, MW_BLACK);
+}
+
+void DrawLcdDigitalClock(boolean show_seconds)
+{
+       gint gRow = 3;
+       gint gColumn = 4;
+
+       SetFont(MetaWatchTime);
+
+       lcd_clear_display();
+       //gRow += WriteLcdCharacter(ui, gRow, gColumn, TIME_CHARACTER_SPACE_INDEX);
+       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour / 10));
+       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour % 10));
+       gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
+       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute / 10));
+       gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute % 10));
+       if (show_seconds) {
+               gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
+               gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second / 10));
+               gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second % 10));
+       };
+}
+