diff options
author | Robert Hak <adiamas@rockbox.org> | 2002-04-23 08:50:38 +0000 |
---|---|---|
committer | Robert Hak <adiamas@rockbox.org> | 2002-04-23 08:50:38 +0000 |
commit | c92bead2cfefaff61008f358ab223cf7b77bdc29 (patch) | |
tree | 2c77af0a207a66051c7003dd40a351a049b7e21d /uisimulator | |
parent | 6755f82a7002b98fc522dab216ab32bb62c289c2 (diff) | |
download | rockbox-c92bead2cfefaff61008f358ab223cf7b77bdc29.tar.gz rockbox-c92bead2cfefaff61008f358ab223cf7b77bdc29.zip |
a simple battery function to display a battery of passed width, length,
and location on the player. As similar to the player display as I could get.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@186 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator')
-rw-r--r-- | uisimulator/battery.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/uisimulator/battery.c b/uisimulator/battery.c new file mode 100644 index 0000000000..1af8e71787 --- /dev/null +++ b/uisimulator/battery.c | |||
@@ -0,0 +1,102 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 1999 Robert Hak (rhak@ramapo.edu) | ||
11 | * | ||
12 | * Heavily modified for embedded use by Björn Stenberg (bjorn@haxx.se) | ||
13 | * | ||
14 | * All files in this archive are subject to the GNU General Public License. | ||
15 | * See the file COPYING in the source tree root for full license agreement. | ||
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 "types.h" | ||
23 | #include "lcd.h" | ||
24 | #include "debug.h" | ||
25 | #define HAVE_RECORDER_KEYPAD | ||
26 | #include "button.h" | ||
27 | |||
28 | #ifdef SIMULATOR | ||
29 | #include <stdio.h> | ||
30 | #include <unistd.h> | ||
31 | #endif | ||
32 | |||
33 | /* I hacked this function to be placed inside because I figure we will need | ||
34 | something like it eventually. | ||
35 | |||
36 | Args are fairly straight forward. | ||
37 | int xbase: location of "bottom" of battery on screen | ||
38 | int ybase: location of "left" edge of battery on screen | ||
39 | int len: how long is the battery to be (in pixels) | ||
40 | int wid: how tall is the battery to be (in pixels) | ||
41 | int percent: what percentage of the charge has been used | ||
42 | |||
43 | Note: I am making use of the Logf() function until logging is | ||
44 | straightened out. | ||
45 | */ | ||
46 | |||
47 | void draw_battery(int xbase, int ybase, int len, int wid, int percent) | ||
48 | { | ||
49 | float capacity = 0; | ||
50 | int bar_xoffset = 2; | ||
51 | int bar_yoffset = 2; | ||
52 | int bar_len = 0; | ||
53 | int bar_wid = wid - (bar_xoffset*2); | ||
54 | int i = 0; | ||
55 | |||
56 | /* We only worry about length and width because if you place | ||
57 | the battery off the screen, its your own damn fault. We log | ||
58 | and then just draw an empty battery */ | ||
59 | if((percent > 100) || (percent < 0) || (len < 0) || (wid < 0)) { | ||
60 | /* debug("Error: Battery data invalid"); */ | ||
61 | percent = 0; | ||
62 | } | ||
63 | |||
64 | /* top batt. edge */ | ||
65 | lcd_drawline(xbase, ybase, xbase+len-2, ybase); | ||
66 | |||
67 | /* bot batt. edge */ | ||
68 | lcd_drawline(xbase, ybase+wid, | ||
69 | xbase+len-2, ybase+wid); | ||
70 | |||
71 | /* left batt. edge */ | ||
72 | lcd_drawline(xbase, ybase, xbase, ybase+wid); | ||
73 | |||
74 | /* right batt. edge */ | ||
75 | lcd_drawline(xbase+len, ybase+1, | ||
76 | xbase+len, ybase+wid-1); | ||
77 | |||
78 | /* 2 dots that account for the nub on the right side of the battery */ | ||
79 | lcd_drawpixel(xbase+len-1, ybase+1); | ||
80 | lcd_drawpixel(xbase+len-1, ybase+wid-1); | ||
81 | |||
82 | if(percent > 0) { | ||
83 | /* % battery is full, 100% is length-bar_xoffset-1 pixels */ | ||
84 | capacity = ((float)percent / 100.0) * (len-(bar_xoffset*2)-1); | ||
85 | bar_len = capacity; | ||
86 | |||
87 | for(i = 0; i < bar_wid+1; i++) { | ||
88 | lcd_drawline(xbase+bar_xoffset, ybase+bar_yoffset+i, | ||
89 | xbase+bar_xoffset+bar_len, ybase+bar_yoffset+i); | ||
90 | } | ||
91 | } | ||
92 | lcd_update(); | ||
93 | } | ||
94 | |||
95 | |||
96 | |||
97 | |||
98 | |||
99 | |||
100 | |||
101 | |||
102 | |||