bd6aa260615bff06b797537cf85fac9757f17788
[oswald.git] / ui / oswald_watch_faces.c
1 #include <math.h>
2
3 #include "oswald.h"
4 #include "oswald_main.h"
5 #include "oswald-ui.h"
6 #include "Fonts.h"
7 #include "LcdDisplay.h"
8
9 #include "oswald_watch_faces.h"
10
11 void DrawLcdAnaClock(void)
12 {
13         unsigned char *bbuf;
14         char daystr[5];
15         int len;
16         register i, x, y, x2, y2;
17         double tmp, mf;
18         s8t hour, minute, seconds;
19
20         hour = OswaldClk.hour;
21         minute = OswaldClk.minute;
22         seconds = OswaldClk.second;
23
24         hour -= 3;
25         mf = (1. / 59.) * (double)minute;
26         minute -= 15;
27         seconds -= 15;
28
29         lcd_clear_display();
30
31         // plot(R*cos(360° * i/N), R*sin(360° * i/N))
32         for (i=0; i<12; i++) {
33                 tmp = 48. + (43. * cos(((2. * M_PI) / 12.) * (double)i));
34                 x =  tmp;
35                 tmp = 48 + (43. * sin(((2. * M_PI) / 12.) * (double)i));
36                 y =  tmp;
37                 tmp = 48. + (48. * cos(((2. * M_PI) / 12.) * (double)i));
38                 x2 =  tmp;
39                 tmp = 48 + (48. * sin(((2. * M_PI) / 12.) * (double)i));
40                 y2 =  tmp;
41                 DrawLcdLineBresenhamWW(x, y, x2, y2, 2);
42         };
43         // Hour
44         tmp = 48. + (30. * cos(((2. * M_PI) / 12.) * ((double)hour + mf)));
45         x =  tmp;
46         tmp = 48 + (30. * sin(((2. * M_PI) / 12.) * ((double)hour + mf)));
47         y =  tmp;
48         DrawLcdLineBresenhamWW(48, 48, x, y, 2);
49         // Minute
50         tmp = 48. + (40. * cos(((2. * M_PI) / 60.) * (double)minute));
51         x =  tmp;
52         tmp = 48 + (40. * sin(((2. * M_PI) / 60.) * (double)minute));
53         y =  tmp;
54         DrawLcdLineBresenhamWW(48, 48, x, y, 2);
55         if (OswaldState.idle_show_seconds) {
56                 // Seconds
57                 tmp = 48. + (40. * cos(((2. * M_PI) / 60.) * (double)seconds));
58                 x =  tmp;
59                 tmp = 48 + (40. * sin(((2. * M_PI) / 60.) * (double)seconds));
60                 y =  tmp;
61                 DrawLcdLineBresenham(48, 48, x, y);
62         };
63
64         //snprintf(daystr, 5, "%d", day);
65         // mw_buf_print(mwbuf, 74, 45, daystr, 0, MW_WHITE, MW_BLACK);
66 }
67
68 void DrawLcdDigitalClock(void)
69 {
70         gint gRow = 3;
71         gint gColumn = 4;
72
73         SetFont(MetaWatchTime);
74
75         lcd_clear_display();
76         //gRow += WriteLcdCharacter(ui, gRow, gColumn, TIME_CHARACTER_SPACE_INDEX);
77         gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour / 10));
78         gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour % 10));
79         gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
80         gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute / 10));
81         gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute % 10));
82         if (OswaldState.idle_show_seconds) {
83                 gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX);
84                 gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second / 10));
85                 gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.second % 10));
86         };
87 }
88