diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2006-11-15 10:11:51 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2006-11-15 10:11:51 +0000 |
commit | 9270ee6aab0e1868bcd91966ac6c69b7d454dba6 (patch) | |
tree | 909dfe04561fe94dee071f6de49b9c1df1166a8c | |
parent | 3fb591c6afd18457bc45ea43e4a177c2da24f166 (diff) | |
download | rockbox-9270ee6aab0e1868bcd91966ac6c69b7d454dba6.tar.gz rockbox-9270ee6aab0e1868bcd91966ac6c69b7d454dba6.zip |
dump the old scrollbar(), make it a wrapper to gui_scrollbar_draw() only
drawing to the main LCD. Saves ~400bytes on the recorder.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11530 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/recorder/widgets.c | 78 |
1 files changed, 3 insertions, 75 deletions
diff --git a/apps/recorder/widgets.c b/apps/recorder/widgets.c index 278917da4f..f06ac4402f 100644 --- a/apps/recorder/widgets.c +++ b/apps/recorder/widgets.c | |||
@@ -18,8 +18,7 @@ | |||
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #include <lcd.h> | 19 | #include <lcd.h> |
20 | #include <limits.h> | 20 | #include <limits.h> |
21 | 21 | #include "scrollbar.h" | |
22 | #include "widgets.h" | ||
23 | 22 | ||
24 | #ifdef HAVE_LCD_BITMAP | 23 | #ifdef HAVE_LCD_BITMAP |
25 | 24 | ||
@@ -29,79 +28,8 @@ | |||
29 | void scrollbar(int x, int y, int width, int height, int items, int min_shown, | 28 | void scrollbar(int x, int y, int width, int height, int items, int min_shown, |
30 | int max_shown, int orientation) | 29 | int max_shown, int orientation) |
31 | { | 30 | { |
32 | int min; | 31 | gui_scrollbar_draw(&screens[SCREEN_MAIN],x,y,width,height, |
33 | int max; | 32 | items,min_shown, max_shown, orientation); |
34 | int inner_len; | ||
35 | int start; | ||
36 | int size; | ||
37 | |||
38 | /* draw box */ | ||
39 | lcd_drawrect(x, y, width, height); | ||
40 | |||
41 | lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | ||
42 | |||
43 | /* clear edge pixels */ | ||
44 | lcd_drawpixel(x, y); | ||
45 | lcd_drawpixel((x + width - 1), y); | ||
46 | lcd_drawpixel(x, (y + height - 1)); | ||
47 | lcd_drawpixel((x + width - 1), (y + height - 1)); | ||
48 | |||
49 | /* clear pixels in progress bar */ | ||
50 | lcd_fillrect(x + 1, y + 1, width - 2, height - 2); | ||
51 | |||
52 | /* min should be min */ | ||
53 | if(min_shown < max_shown) { | ||
54 | min = min_shown; | ||
55 | max = max_shown; | ||
56 | } | ||
57 | else { | ||
58 | min = max_shown; | ||
59 | max = min_shown; | ||
60 | } | ||
61 | |||
62 | /* limit min and max */ | ||
63 | if(min < 0) | ||
64 | min = 0; | ||
65 | if(min > items) | ||
66 | min = items; | ||
67 | |||
68 | if(max < 0) | ||
69 | max = 0; | ||
70 | if(max > items) | ||
71 | max = items; | ||
72 | |||
73 | if (orientation == VERTICAL) | ||
74 | inner_len = height - 2; | ||
75 | else | ||
76 | inner_len = width - 2; | ||
77 | |||
78 | /* avoid overflows */ | ||
79 | while (items > (INT_MAX / inner_len)) { | ||
80 | items >>= 1; | ||
81 | min >>= 1; | ||
82 | max >>= 1; | ||
83 | } | ||
84 | |||
85 | /* calc start and end of the knob */ | ||
86 | if (items > 0 && items > (max - min)) { | ||
87 | size = inner_len * (max - min) / items; | ||
88 | if (size == 0) { /* width of knob is null */ | ||
89 | size = 1; | ||
90 | start = (inner_len - 1) * min / items; | ||
91 | } else { | ||
92 | start = (inner_len - size) * min / (items - (max - min)); | ||
93 | } | ||
94 | } else { /* if null draw full bar */ | ||
95 | size = inner_len; | ||
96 | start = 0; | ||
97 | } | ||
98 | |||
99 | lcd_set_drawmode(DRMODE_SOLID); | ||
100 | |||
101 | if(orientation == VERTICAL) | ||
102 | lcd_fillrect(x + 1, y + start + 1, width - 2, size); | ||
103 | else | ||
104 | lcd_fillrect(x + start + 1, y + 1, size, height - 2); | ||
105 | } | 33 | } |
106 | 34 | ||
107 | /* | 35 | /* |