[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rockbox-cvs
Subject:    tomers: r25400 - trunk/apps/plugins
From:       mailer () svn ! rockbox ! org
Date:       2010-03-30 17:09:04
Message-ID: 201003301709.o2UH94jB004772 () giant ! haxx ! se
[Download RAW message or body]

Date: 2010-03-30 19:09:04 +0200 (Tue, 30 Mar 2010)
New Revision: 25400

Log Message:
Viewer: Implement alignment option, to provide alignment of RTL text (Hebrew, Arabic) to the right

Modified:
   trunk/apps/plugins/viewer.c

Modified: trunk/apps/plugins/viewer.c
===================================================================
--- trunk/apps/plugins/viewer.c	2010-03-30 12:26:10 UTC (rev 25399)
+++ trunk/apps/plugins/viewer.c	2010-03-30 17:09:04 UTC (rev 25400)
@@ -36,6 +36,7 @@
  * word_mode            1
  * line_mode            1
  * view_mode            1
+ * alignment            1
  * encoding             1
  * scrollbar_mode       1
  * need_scrollbar       1
@@ -71,6 +72,7 @@
  *     word_mode        1
  *     line_mode        1
  *     view_mode        1
+ *     alignment        1
  *     encoding         1
  *     scrollbar_mode   1
  *     need_scrollbar   1
@@ -542,6 +544,11 @@
         WIDE,
     } view_mode;
 
+    enum {
+        LEFT=0,
+        RIGHT,
+    } alignment;
+
     enum codepages encoding;
 
     enum {
@@ -1428,6 +1435,7 @@
             bool bflag = (viewer_find_bookmark(dpage, dline) >= 0);
 #ifdef HAVE_LCD_BITMAP
             int dy = i * pf->height + header_height;
+            int dx = (prefs.alignment == LEFT) ? left_col : LCD_WIDTH - line_width;
 #endif
             if (bflag)
 #ifdef HAVE_LCD_BITMAP
@@ -1436,7 +1444,7 @@
                 rb->lcd_fillrect(left_col, dy, LCD_WIDTH, pf->height);
                 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
             }
-            rb->lcd_putsxy(left_col, dy, utf8_buffer);
+            rb->lcd_putsxy(dx, dy, utf8_buffer);
             rb->lcd_set_drawmode(DRMODE_SOLID);
 #else
             {
@@ -1806,6 +1814,7 @@
     prefs.word_mode = WRAP;
     prefs.line_mode = NORMAL;
     prefs.view_mode = NARROW;
+    prefs.alignment = LEFT;
     prefs.scroll_mode = PAGE;
     prefs.page_mode = NO_OVERLAP;
     prefs.scrollbar_mode = SB_OFF;
@@ -1834,6 +1843,7 @@
     prefs.word_mode        = *p++;
     prefs.line_mode        = *p++;
     prefs.view_mode        = *p++;
+    prefs.alignment        = *p++;
     prefs.encoding         = *p++;
     prefs.scrollbar_mode   = *p++;
     prefs.need_scrollbar   = *p++;
@@ -1855,6 +1865,7 @@
     *p++ = prefs.word_mode;
     *p++ = prefs.line_mode;
     *p++ = prefs.view_mode;
+    *p++ = prefs.alignment;
     *p++ = prefs.encoding;
     *p++ = prefs.scrollbar_mode;
     *p++ = prefs.need_scrollbar;
@@ -2611,6 +2622,17 @@
 
     return res;
 }
+
+static bool alignment_setting(void)
+{
+    static const struct opt_items names[] = {
+        {"Left", -1},
+        {"Right", -1},
+    };
+
+    return rb->set_option("Alignment", &prefs.alignment, INT,
+                           names , 2, NULL);
+}
 #endif
 
 static bool autoscroll_speed_setting(void)
@@ -2628,6 +2650,8 @@
 MENUITEM_FUNCTION(view_mode_item, 0, "Wide View", view_mode_setting,
                   NULL, NULL, Icon_NOICON);
 #ifdef HAVE_LCD_BITMAP
+MENUITEM_FUNCTION(alignment_item, 0, "Alignment", alignment_setting,
+                  NULL, NULL, Icon_NOICON);
 MENUITEM_FUNCTION(scrollbar_item, 0, "Show Scrollbar", scrollbar_setting,
                   NULL, NULL, Icon_NOICON);
 MENUITEM_FUNCTION(page_mode_item, 0, "Overlap Pages", page_mode_setting,
@@ -2646,7 +2670,8 @@
 MAKE_MENU(option_menu, "Viewer Options", NULL, Icon_NOICON,
             &encoding_item, &word_wrap_item, &line_mode_item, &view_mode_item,
 #ifdef HAVE_LCD_BITMAP
-            &scrollbar_item, &page_mode_item, &header_item, &footer_item, &font_item,
+            &alignment_item, &scrollbar_item, &page_mode_item, &header_item,
+            &footer_item, &font_item,
 #endif
             &scroll_mode_item, &autoscroll_speed_item);
 

_______________________________________________
rockbox-cvs mailing list
rockbox-cvs@cool.haxx.se
http://cool.haxx.se/cgi-bin/mailman/listinfo/rockbox-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic