summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-10-19 22:49:47 +0000
committerThomas Martitz <kugel@rockbox.org>2009-10-19 22:49:47 +0000
commit72f93e5f10401e9d03a9ecf70161b099cf9394d5 (patch)
tree28564ceadfbb76918a8a048a0a7a657ece7e7ded /apps
parent137d27af42d3d8b75eb809190454b598caa750c6 (diff)
downloadrockbox-72f93e5f10401e9d03a9ecf70161b099cf9394d5.tar.gz
rockbox-72f93e5f10401e9d03a9ecf70161b099cf9394d5.zip
Cleanup quickscreen text drawing by using text alignment flags for viewports.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23283 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/quickscreen.c46
1 files changed, 13 insertions, 33 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index c10e688c3e..1abe2d5992 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -149,34 +149,13 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
149 vp_icons->height -= CENTER_ICONAREA_SIZE*2/3; 149 vp_icons->height -= CENTER_ICONAREA_SIZE*2/3;
150 vp_icons->y += CENTER_ICONAREA_SIZE*2/6; 150 vp_icons->y += CENTER_ICONAREA_SIZE*2/6;
151 } 151 }
152}
153
154static void quickscreen_draw_text(const char *s, int item, bool title,
155 struct screen *display, struct viewport *vp)
156{
157 int nb_lines = viewport_get_nb_lines(vp);
158 int w, h, line = 0, x = 0;
159 display->getstringsize(s, &w, &h);
160 152
161 if (nb_lines > 1 && !title) 153 /* text alignment */
162 line = 1; 154 vps[QUICKSCREEN_LEFT].flags &= ~VP_FLAG_ALIGNMENT_MASK; /* left-aligned */
163 switch (item) 155 vps[QUICKSCREEN_TOP].flags |= VP_FLAG_ALIGN_CENTER; /* centered */
164 { 156 vps[QUICKSCREEN_BOTTOM].flags |= VP_FLAG_ALIGN_CENTER; /* centered */
165 case QUICKSCREEN_TOP: 157 vps[QUICKSCREEN_RIGHT].flags &= ~VP_FLAG_ALIGNMENT_MASK;/* right aligned*/
166 case QUICKSCREEN_BOTTOM: 158 vps[QUICKSCREEN_RIGHT].flags |= VP_FLAG_ALIGN_RIGHT;
167 x = (vp->width - w)/2;
168 break;
169 case QUICKSCREEN_LEFT:
170 x = 0;
171 break;
172 case QUICKSCREEN_RIGHT:
173 x = vp->width - w;
174 break;
175 }
176 if (w>vp->width)
177 display->puts_scroll(0, line, s);
178 else
179 display->putsxy(x, line*h, s);
180} 159}
181 160
182static void gui_quickscreen_draw(const struct gui_quickscreen *qs, 161static void gui_quickscreen_draw(const struct gui_quickscreen *qs,
@@ -194,10 +173,11 @@ static void gui_quickscreen_draw(const struct gui_quickscreen *qs,
194 display->clear_viewport(); 173 display->clear_viewport();
195 for (i = 0; i < QUICKSCREEN_ITEM_COUNT; i++) 174 for (i = 0; i < QUICKSCREEN_ITEM_COUNT; i++)
196 { 175 {
176 struct viewport *vp = &vps[i];
197 if (!qs->items[i]) 177 if (!qs->items[i])
198 continue; 178 continue;
199 display->set_viewport(&vps[i]); 179 display->set_viewport(vp);
200 display->scroll_stop(&vps[i]); 180 display->scroll_stop(vp);
201 181
202 title = P2STR(ID2P(qs->items[i]->lang_id)); 182 title = P2STR(ID2P(qs->items[i]->lang_id));
203 setting = qs->items[i]->setting; 183 setting = qs->items[i]->setting;
@@ -205,16 +185,16 @@ static void gui_quickscreen_draw(const struct gui_quickscreen *qs,
205 value = option_get_valuestring((struct settings_list*)qs->items[i], 185 value = option_get_valuestring((struct settings_list*)qs->items[i],
206 buf, MAX_PATH, temp); 186 buf, MAX_PATH, temp);
207 187
208 if (vps[i].height < display->getcharheight()*2) 188 if (viewport_get_nb_lines(vp) < 2)
209 { 189 {
210 char text[MAX_PATH]; 190 char text[MAX_PATH];
211 snprintf(text, MAX_PATH, "%s: %s", title, value); 191 snprintf(text, MAX_PATH, "%s: %s", title, value);
212 quickscreen_draw_text(text, i, true, display, &vps[i]); 192 display->puts_scroll(0, 0, text);
213 } 193 }
214 else 194 else
215 { 195 {
216 quickscreen_draw_text(title, i, true, display, &vps[i]); 196 display->puts_scroll(0, 0, title);
217 quickscreen_draw_text(value, i, false, display, &vps[i]); 197 display->puts_scroll(0, 1, value);
218 } 198 }
219 display->update_viewport(); 199 display->update_viewport();
220 } 200 }