+#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));
+ };
+}
+