]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_watch_faces.c
Rework font code, add new fonts, also proportional, rework watch usage - "SET" button...
[oswald.git] / ui / oswald_watch_faces.c
index 49cf73a6bacd0cd2d81164701b2a85e3bd5004a2..8be07ea1cf07774b0da8011a375ec0451014383e 100644 (file)
@@ -3,8 +3,6 @@
 
 #include "oswald.h"
 #include "oswald_main.h"
-#include "Fonts.h"
-#include "LcdDisplay.h"
 #include "oswald_hal.h"
 #include "oswald_graphics.h"
 
@@ -120,15 +118,15 @@ void draw_status_icons(void)
                }
        } else {
                if (OswaldPowerState.percent > 75)
-                       oswald_draw_bitmap_offset(81, 0, 0,0, battery100_icon_width, battery100_icon_height, battery100_icon_bits);
+                       oswald_draw_bitmap(81, 0, battery100_icon_width, battery100_icon_height, battery100_icon_bits);
                else if (OswaldPowerState.percent > 50)
-                       oswald_draw_bitmap_offset(81, 0, 0,0, battery75_icon_width, battery75_icon_height, battery75_icon_bits);
+                       oswald_draw_bitmap(81, 0, battery75_icon_width, battery75_icon_height, battery75_icon_bits);
                else if (OswaldPowerState.percent > 25)
-                       oswald_draw_bitmap_offset(81, 0, 0,0, battery50_icon_width, battery50_icon_height, battery50_icon_bits);
+                       oswald_draw_bitmap(81, 0, battery50_icon_width, battery50_icon_height, battery50_icon_bits);
                else if (OswaldPowerState.percent > 5)
-                       oswald_draw_bitmap_offset(81, 0, 0,0, battery25_icon_width, battery25_icon_height, battery25_icon_bits);
+                       oswald_draw_bitmap(81, 0, battery25_icon_width, battery25_icon_height, battery25_icon_bits);
                else
-                       oswald_draw_bitmap_offset(81, 0, 0,0, battery0_icon_width, battery0_icon_height, battery0_icon_bits);
+                       oswald_draw_bitmap(81, 0, battery0_icon_width, battery0_icon_height, battery0_icon_bits);
        }
 
        if (hal_bluetooth_get_state() == BLUETOOTH_ON)
@@ -161,12 +159,12 @@ void DrawLcdAnaClock(boolean show_seconds)
 
        hal_lcd_clear_display();
 
-       snprintf(tstr, 16, "%02d", OswaldClk.day);
+       snprintf(tstr, 16, "%2d", OswaldClk.day);
 #if 0
        SetFont(MetaWatch16);
        WriteLcdString(70, 40, tstr);
 #else
-       oswald_write_string(70, 43, FONT_7x12b, tstr);
+       oswald_write_string(70, 43, FONT_6x9, tstr);
 #endif
 
        // Marker
@@ -210,8 +208,8 @@ void DrawLcdAnaClock(boolean show_seconds)
 
 void DrawLcdDigitalClock(boolean show_seconds)
 {
-       int gRow = 3;
-       int gColumn = 3;
+       int gRow = 1;
+       int gColumn = 1;
        char tstr[16];
        int i;
 
@@ -300,32 +298,50 @@ void DrawLcdDigitalClock(boolean show_seconds)
 #endif
 #else
        hal_lcd_clear_display();
-       snprintf(tstr, 16, "%02d", OswaldClk.hour);
-       oswald_write_string(0, 0, FONT_16x26, tstr);
-       oswald_write_character(26, 0, FONT_16x26, ':');
-       snprintf(tstr, 16, "%02d", OswaldClk.minute);
-       oswald_write_string(36, 0, FONT_16x26, tstr);
+
+       if (OswaldClk.clk24hr) {
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour / 10));
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour % 10));
+       } else {
+               unsigned char val = OswaldClk.hour;
+               if (val > 12)
+                       val -= 12;
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val / 10));
+               gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val % 10));
+       }
+       if (OswaldClk.second % 2)
+               oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, 10);
+       gRow += 5;
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute / 10));
+       gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute % 10));
+#endif
+       if (show_seconds) {
+               oswald_write_character(59, 9, FONT_LCD8x13, (OswaldClk.second / 10));
+               oswald_write_character(67, 9, FONT_LCD8x13, (OswaldClk.second % 10));
+       }
 
        if (OswaldClk.day_first)
-               snprintf(tstr, 16, "%d.%d.%d", OswaldClk.day, OswaldClk.month, OswaldClk.year);
+               snprintf(tstr, 16, "%2d.%2d.%4d", OswaldClk.day, OswaldClk.month, OswaldClk.year);
        else
-               snprintf(tstr, 16, "%d/%d %d", OswaldClk.month, OswaldClk.day, OswaldClk.year);
-       oswald_write_string(0, 25, FONT_7x12b, tstr);
+               snprintf(tstr, 16, "%2d/%2d %4d", OswaldClk.month, OswaldClk.day, OswaldClk.year);
+       oswald_write_string(0, 25, FONT_6x9, tstr);
 
        gRow = 0;
        gColumn = 45;
        for (i=0; i<strlen(MainMessage); i++) {
-               gRow += oswald_write_character(gRow, gColumn, FONT_6x8, MainMessage[i]);
+               if (gRow == 0 && MainMessage[i] == ' ')
+                       continue;
+               gRow += oswald_write_character(gRow, gColumn, FONT_DROID8x12, MainMessage[i]);
                if (gRow > 90) {
                        gRow = 0;
                        gColumn += 9;
                }
-               if (gColumn > 95)
+               if (gColumn > 86)
                        i = 255;
        }
 
        draw_status_icons();
-#endif
+
        hal_lcd_update_display();
 }