#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(void) { 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 (OswaldState.idle_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(void) { 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 (OswaldState.idle_show_seconds) { gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX); gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second / 10)); gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second % 10)); }; }