diff options
author | Tomer Shalev <shalev.tomer@gmail.com> | 2010-03-30 17:09:04 +0000 |
---|---|---|
committer | Tomer Shalev <shalev.tomer@gmail.com> | 2010-03-30 17:09:04 +0000 |
commit | 4c7a16b43c1de03109162a5a50415f38ee009a65 (patch) | |
tree | e5717598e77c5999811abced1741a9e4a59ce1f1 /apps/plugins | |
parent | 88f76c97df94103a37f8bffc8bfe5ee0394f02ee (diff) | |
download | rockbox-4c7a16b43c1de03109162a5a50415f38ee009a65.tar.gz rockbox-4c7a16b43c1de03109162a5a50415f38ee009a65.zip |
Viewer: Implement alignment option, to provide alignment of RTL text (Hebrew, Arabic) to the right
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25400 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/viewer.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c index b9615bb475..929a2c0ee1 100644 --- a/apps/plugins/viewer.c +++ b/apps/plugins/viewer.c | |||
@@ -36,6 +36,7 @@ PLUGIN_HEADER | |||
36 | * word_mode 1 | 36 | * word_mode 1 |
37 | * line_mode 1 | 37 | * line_mode 1 |
38 | * view_mode 1 | 38 | * view_mode 1 |
39 | * alignment 1 | ||
39 | * encoding 1 | 40 | * encoding 1 |
40 | * scrollbar_mode 1 | 41 | * scrollbar_mode 1 |
41 | * need_scrollbar 1 | 42 | * need_scrollbar 1 |
@@ -71,6 +72,7 @@ PLUGIN_HEADER | |||
71 | * word_mode 1 | 72 | * word_mode 1 |
72 | * line_mode 1 | 73 | * line_mode 1 |
73 | * view_mode 1 | 74 | * view_mode 1 |
75 | * alignment 1 | ||
74 | * encoding 1 | 76 | * encoding 1 |
75 | * scrollbar_mode 1 | 77 | * scrollbar_mode 1 |
76 | * need_scrollbar 1 | 78 | * need_scrollbar 1 |
@@ -542,6 +544,11 @@ struct preferences { | |||
542 | WIDE, | 544 | WIDE, |
543 | } view_mode; | 545 | } view_mode; |
544 | 546 | ||
547 | enum { | ||
548 | LEFT=0, | ||
549 | RIGHT, | ||
550 | } alignment; | ||
551 | |||
545 | enum codepages encoding; | 552 | enum codepages encoding; |
546 | 553 | ||
547 | enum { | 554 | enum { |
@@ -1428,6 +1435,7 @@ static void viewer_draw(int col) | |||
1428 | bool bflag = (viewer_find_bookmark(dpage, dline) >= 0); | 1435 | bool bflag = (viewer_find_bookmark(dpage, dline) >= 0); |
1429 | #ifdef HAVE_LCD_BITMAP | 1436 | #ifdef HAVE_LCD_BITMAP |
1430 | int dy = i * pf->height + header_height; | 1437 | int dy = i * pf->height + header_height; |
1438 | int dx = (prefs.alignment == LEFT) ? left_col : LCD_WIDTH - line_width; | ||
1431 | #endif | 1439 | #endif |
1432 | if (bflag) | 1440 | if (bflag) |
1433 | #ifdef HAVE_LCD_BITMAP | 1441 | #ifdef HAVE_LCD_BITMAP |
@@ -1436,7 +1444,7 @@ static void viewer_draw(int col) | |||
1436 | rb->lcd_fillrect(left_col, dy, LCD_WIDTH, pf->height); | 1444 | rb->lcd_fillrect(left_col, dy, LCD_WIDTH, pf->height); |
1437 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | 1445 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); |
1438 | } | 1446 | } |
1439 | rb->lcd_putsxy(left_col, dy, utf8_buffer); | 1447 | rb->lcd_putsxy(dx, dy, utf8_buffer); |
1440 | rb->lcd_set_drawmode(DRMODE_SOLID); | 1448 | rb->lcd_set_drawmode(DRMODE_SOLID); |
1441 | #else | 1449 | #else |
1442 | { | 1450 | { |
@@ -1806,6 +1814,7 @@ static void viewer_default_preferences(void) | |||
1806 | prefs.word_mode = WRAP; | 1814 | prefs.word_mode = WRAP; |
1807 | prefs.line_mode = NORMAL; | 1815 | prefs.line_mode = NORMAL; |
1808 | prefs.view_mode = NARROW; | 1816 | prefs.view_mode = NARROW; |
1817 | prefs.alignment = LEFT; | ||
1809 | prefs.scroll_mode = PAGE; | 1818 | prefs.scroll_mode = PAGE; |
1810 | prefs.page_mode = NO_OVERLAP; | 1819 | prefs.page_mode = NO_OVERLAP; |
1811 | prefs.scrollbar_mode = SB_OFF; | 1820 | prefs.scrollbar_mode = SB_OFF; |
@@ -1834,6 +1843,7 @@ static bool viewer_read_preferences(int pfd) | |||
1834 | prefs.word_mode = *p++; | 1843 | prefs.word_mode = *p++; |
1835 | prefs.line_mode = *p++; | 1844 | prefs.line_mode = *p++; |
1836 | prefs.view_mode = *p++; | 1845 | prefs.view_mode = *p++; |
1846 | prefs.alignment = *p++; | ||
1837 | prefs.encoding = *p++; | 1847 | prefs.encoding = *p++; |
1838 | prefs.scrollbar_mode = *p++; | 1848 | prefs.scrollbar_mode = *p++; |
1839 | prefs.need_scrollbar = *p++; | 1849 | prefs.need_scrollbar = *p++; |
@@ -1855,6 +1865,7 @@ static bool viewer_write_preferences(int pfd) | |||
1855 | *p++ = prefs.word_mode; | 1865 | *p++ = prefs.word_mode; |
1856 | *p++ = prefs.line_mode; | 1866 | *p++ = prefs.line_mode; |
1857 | *p++ = prefs.view_mode; | 1867 | *p++ = prefs.view_mode; |
1868 | *p++ = prefs.alignment; | ||
1858 | *p++ = prefs.encoding; | 1869 | *p++ = prefs.encoding; |
1859 | *p++ = prefs.scrollbar_mode; | 1870 | *p++ = prefs.scrollbar_mode; |
1860 | *p++ = prefs.need_scrollbar; | 1871 | *p++ = prefs.need_scrollbar; |
@@ -2611,6 +2622,17 @@ static bool font_setting(void) | |||
2611 | 2622 | ||
2612 | return res; | 2623 | return res; |
2613 | } | 2624 | } |
2625 | |||
2626 | static bool alignment_setting(void) | ||
2627 | { | ||
2628 | static const struct opt_items names[] = { | ||
2629 | {"Left", -1}, | ||
2630 | {"Right", -1}, | ||
2631 | }; | ||
2632 | |||
2633 | return rb->set_option("Alignment", &prefs.alignment, INT, | ||
2634 | names , 2, NULL); | ||
2635 | } | ||
2614 | #endif | 2636 | #endif |
2615 | 2637 | ||
2616 | static bool autoscroll_speed_setting(void) | 2638 | static bool autoscroll_speed_setting(void) |
@@ -2628,6 +2650,8 @@ MENUITEM_FUNCTION(line_mode_item, 0, "Line Mode", line_mode_setting, | |||
2628 | MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting, | 2650 | MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting, |
2629 | NULL, NULL, Icon_NOICON); | 2651 | NULL, NULL, Icon_NOICON); |
2630 | #ifdef HAVE_LCD_BITMAP | 2652 | #ifdef HAVE_LCD_BITMAP |
2653 | MENUITEM_FUNCTION(alignment_item, 0, "Alignment", alignment_setting, | ||
2654 | NULL, NULL, Icon_NOICON); | ||
2631 | MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting, | 2655 | MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting, |
2632 | NULL, NULL, Icon_NOICON); | 2656 | NULL, NULL, Icon_NOICON); |
2633 | MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting, | 2657 | MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting, |
@@ -2646,7 +2670,8 @@ MENUITEM_FUNCTION(autoscroll_speed_item, 0, "Auto-Scroll Speed", | |||
2646 | MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON, | 2670 | MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON, |
2647 | &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item, | 2671 | &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item, |
2648 | #ifdef HAVE_LCD_BITMAP | 2672 | #ifdef HAVE_LCD_BITMAP |
2649 | &scrollbar_item, &page_mode_item, &header_item, &footer_item, &font_item, | 2673 | &alignment_item, &scrollbar_item, &page_mode_item, &header_item, |
2674 | &footer_item, &font_item, | ||
2650 | #endif | 2675 | #endif |
2651 | &scroll_mode_item, &autoscroll_speed_item); | 2676 | &scroll_mode_item, &autoscroll_speed_item); |
2652 | 2677 | ||