A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 Copyright Kévin Ferrare
11 *
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.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
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"
28
29static 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
36 {
37 display->clear_display();
38 display->fillrect(0,0,display->getwidth(),display->getheight());
39 }
40}
41
42static 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);
51 }
52#endif
53 display->clear_display();
54}
55
56static bool skin_require_black_background(int mode, int skin){
57 return((mode==BINARY && skin==2) || (mode==DIGITAL && skin==1 ));
58}
59
60static 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);
65}
66
67void clock_draw_set_colors(void){
68 FOR_NB_SCREENS(i)
69 skin_set_background(rb->screens[i],
70 clock_settings.mode,
71 clock_settings.skin[clock_settings.mode]);
72}
73
74void clock_draw(struct screen* display, struct time* time,
75 struct counter* counter){
76 if(!show_counter)
77 counter=0;
78 int skin=clock_settings.skin[clock_settings.mode];
79 skin_set_background(display, clock_settings.mode, skin);
80 if(clock_settings.mode == ANALOG)
81 analog_clock_draw(display, time, &clock_settings, counter, skin);
82
83 else if(clock_settings.mode == DIGITAL)
84 digital_clock_draw(display, time, &clock_settings, counter, skin);
85
86 else if(clock_settings.mode == BINARY)
87 binary_clock_draw(display, time, skin);
88 display->update();
89}