summaryrefslogtreecommitdiff
path: root/apps/recorder/keyboard.c
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2010-02-13 13:10:32 +0000
committerTeruaki Kawashima <teru@rockbox.org>2010-02-13 13:10:32 +0000
commit4c658f74a775bcccadbc682e2a173a9a452ee2a2 (patch)
treee7e140cefe307b10f15ae51bd061405293a4fdd5 /apps/recorder/keyboard.c
parenta583f7661f0e619c92711a781178c2b20c985194 (diff)
downloadrockbox-4c658f74a775bcccadbc682e2a173a9a452ee2a2.tar.gz
rockbox-4c658f74a775bcccadbc682e2a173a9a452ee2a2.zip
keyboard: stretch dispalying of virtual keyboard to fit the screen width if possible.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24631 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder/keyboard.c')
-rw-r--r--apps/recorder/keyboard.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 957f04349d..d6a76d7b08 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -95,6 +95,7 @@
95struct keyboard_parameters 95struct keyboard_parameters
96{ 96{
97 unsigned short kbd_buf[KBD_BUF_SIZE]; 97 unsigned short kbd_buf[KBD_BUF_SIZE];
98 unsigned short max_line_len;
98 int default_lines; 99 int default_lines;
99 int nchars; 100 int nchars;
100 int font_w; 101 int font_w;
@@ -156,7 +157,7 @@ static const unsigned char morse_codes[] = {
156int load_kbd(unsigned char* filename) 157int load_kbd(unsigned char* filename)
157{ 158{
158 int fd, l; 159 int fd, l;
159 int i = 0; 160 int i = 0, line_len, max_line_len;
160 unsigned char buf[4]; 161 unsigned char buf[4];
161 162
162 if (filename == NULL) 163 if (filename == NULL)
@@ -169,6 +170,8 @@ int load_kbd(unsigned char* filename)
169 if (fd < 0) 170 if (fd < 0)
170 return 1; 171 return 1;
171 172
173 line_len = 0;
174 max_line_len = 0;
172 while (read(fd, buf, 1) == 1 && i < KBD_BUF_SIZE) 175 while (read(fd, buf, 1) == 1 && i < KBD_BUF_SIZE)
173 { 176 {
174 /* check how many bytes to read for this character */ 177 /* check how many bytes to read for this character */
@@ -198,6 +201,14 @@ int load_kbd(unsigned char* filename)
198 FOR_NB_SCREENS(l) 201 FOR_NB_SCREENS(l)
199 kbd_param[l].kbd_buf[i] = ch; 202 kbd_param[l].kbd_buf[i] = ch;
200 i++; 203 i++;
204 if (ch == '\n')
205 {
206 if (max_line_len < line_len)
207 max_line_len = line_len;
208 line_len = 0;
209 }
210 else
211 line_len++;
201 } 212 }
202 } 213 }
203 214
@@ -211,6 +222,7 @@ int load_kbd(unsigned char* filename)
211 /* initialize parameters */ 222 /* initialize parameters */
212 pm->x = pm->y = pm->page = 0; 223 pm->x = pm->y = pm->page = 0;
213 pm->default_lines = 0; 224 pm->default_lines = 0;
225 pm->max_line_len = max_line_len;
214 } 226 }
215 227
216 return 0; 228 return 0;
@@ -354,6 +366,7 @@ int kbd_input(char* text, int buflen)
354 "òóôõöø çðþýÿ ùúûü ¼½¾¬¶¨:;"; 366 "òóôõöø çðþýÿ ùúûü ¼½¾¬¶¨:;";
355 367
356 pm->default_lines = 8; 368 pm->default_lines = 8;
369 pm->max_line_len = 26;
357 } 370 }
358 else 371 else
359#endif /* LCD_WIDTH >= 160 && LCD_HEIGHT >= 96 */ 372#endif /* LCD_WIDTH >= 160 && LCD_HEIGHT >= 96 */
@@ -374,6 +387,7 @@ int kbd_input(char* text, int buflen)
374 "òóôõöø çðþýÿ ùúûü"; 387 "òóôõöø çðþýÿ ùúûü";
375 388
376 pm->default_lines = 4; 389 pm->default_lines = 4;
390 pm->max_line_len = 18;
377 } 391 }
378 392
379 while (*p) 393 while (*p)
@@ -882,6 +896,8 @@ static void kbd_calc_params(struct keyboard_parameters *pm,
882 /* calculate how many characters to put in a row. */ 896 /* calculate how many characters to put in a row. */
883 icon_w = get_icon_width(sc->screen_type); 897 icon_w = get_icon_width(sc->screen_type);
884 sc_w = sc->getwidth(); 898 sc_w = sc->getwidth();
899 if (pm->font_w < sc_w / pm->max_line_len)
900 pm->font_w = sc_w / pm->max_line_len;
885 pm->max_chars = sc_w / pm->font_w; 901 pm->max_chars = sc_w / pm->font_w;
886 pm->max_chars_text = (sc_w - icon_w * 2 - 2) / pm->text_w; 902 pm->max_chars_text = (sc_w - icon_w * 2 - 2) / pm->text_w;
887 if (pm->max_chars_text < 3 && icon_w > pm->text_w) 903 if (pm->max_chars_text < 3 && icon_w > pm->text_w)