Bump version numbers for 3.13
[maemo-rb.git] / apps / plugins / clock / clock_draw.c
blobce5006d46d5bc3c2376804bdfa63863fc3073bb1
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2007 Copyright Kévin Ferrare
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #include "clock.h"
23 #include "clock_draw.h"
24 #include "clock_draw_digital.h"
25 #include "clock_draw_analog.h"
26 #include "clock_draw_binary.h"
27 #include "clock_settings.h"
29 static void black_background(struct screen* display){
30 #if (LCD_DEPTH > 1) || (defined(LCD_REMOTE_DEPTH) && (LCD_REMOTE_DEPTH > 1))
31 if(display->depth>1){
32 display->set_background(LCD_BLACK);
33 display->clear_display();
34 }else
35 #endif
37 display->clear_display();
38 display->fillrect(0,0,display->getwidth(),display->getheight());
42 static void white_background(struct screen* display){
43 #if (LCD_DEPTH > 1) || (defined(LCD_REMOTE_DEPTH) && (LCD_REMOTE_DEPTH > 1))
44 if(display->depth>1){
45 #if defined(HAVE_LCD_COLOR)
46 if(display->is_color)/* restore to the bitmap's background */
47 display->set_background(LCD_RGBPACK(180,200,230));
48 else
49 #endif
50 display->set_background(LCD_WHITE);
52 #endif
53 display->clear_display();
56 static bool skin_require_black_background(int mode, int skin){
57 return((mode==BINARY && skin==2) || (mode==DIGITAL && skin==1 ));
60 static void skin_set_background(struct screen* display, int mode, int skin){
61 if(skin_require_black_background(mode, skin) )
62 black_background(display);
63 else
64 white_background(display);
67 static void skin_restore_background(struct screen* display, int mode, int skin){
68 if(skin_require_black_background(mode, skin) )
69 white_background(display);
72 void clock_draw_set_colors(void){
73 FOR_NB_SCREENS(i)
74 skin_set_background(rb->screens[i],
75 clock_settings.mode,
76 clock_settings.skin[clock_settings.mode]);
79 void clock_draw_restore_colors(void){
80 FOR_NB_SCREENS(i){
81 skin_restore_background(rb->screens[i],
82 clock_settings.mode,
83 clock_settings.skin[clock_settings.mode]);
84 rb->screens[i]->update();
88 void clock_draw(struct screen* display, struct time* time,
89 struct counter* counter){
90 if(!clock_settings.general.show_counter)
91 counter=0;
92 int skin=clock_settings.skin[clock_settings.mode];
93 skin_set_background(display, clock_settings.mode, skin);
94 if(clock_settings.mode == ANALOG)
95 analog_clock_draw(display, time, &clock_settings, counter, skin);
97 else if(clock_settings.mode == DIGITAL)
98 digital_clock_draw(display, time, &clock_settings, counter, skin);
100 else if(clock_settings.mode == BINARY)
101 binary_clock_draw(display, time, skin);
102 display->update();