Introduce VR recovery ui

A version of screen ui with specific adjustments for vr device
compatibility.

Cherry picked from commit a44dba7f4e7296077f65fd571232e8a61aed9418

Bug: 37779982
Test: "adb reboot recovery" to view
Change-Id: If6b0f26c1b587f8d0176060685b5efb6c67593b1
diff --git a/screen_ui.cpp b/screen_ui.cpp
index 7334b71..ff51b53 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -260,6 +260,10 @@
     *y += 4;
 }
 
+void ScreenRecoveryUI::DrawHighlightBar(int x, int y, int width, int height) const {
+    gr_fill(x, y, x + width, y + height);
+}
+
 void ScreenRecoveryUI::DrawTextLine(int x, int* y, const char* line, bool bold) const {
     gr_text(gr_sys_font(), x, *y, line, bold);
     *y += char_height_ + 4;
@@ -290,7 +294,6 @@
     draw_foreground_locked();
     return;
   }
-
   gr_color(0, 0, 0, 255);
   gr_clear();
 
@@ -318,15 +321,14 @@
       if (i == menu_sel) {
         // Draw the highlight bar.
         SetColor(IsLongPress() ? MENU_SEL_BG_ACTIVE : MENU_SEL_BG);
-        gr_fill(0, y - 2, gr_fb_width(), y + char_height_ + 2);
+        DrawHighlightBar(0, y - 2, gr_fb_width(), char_height_ + 4);
         // Bold white text for the selected item.
         SetColor(MENU_SEL_FG);
-        gr_text(gr_sys_font(), 4, y, menu_[i], true);
+        DrawTextLine(x, &y, menu_[i], true);
         SetColor(MENU);
       } else {
-        gr_text(gr_sys_font(), 4, y, menu_[i], false);
+        DrawTextLine(x, &y, menu_[i], false);
       }
-      y += char_height_ + 4;
     }
     DrawHorizontalRule(&y);
   }
@@ -336,9 +338,10 @@
   SetColor(LOG);
   int row = (text_top_ + text_rows_ - 1) % text_rows_;
   size_t count = 0;
-  for (int ty = gr_fb_height() - kMarginHeight - char_height_;
+  for (int ty = gr_fb_height() - kMarginHeight - char_height_ - log_bottom_offset_;
        ty >= y && count < text_rows_; ty -= char_height_, ++count) {
-    gr_text(gr_sys_font(), 0, ty, text_[row], false);
+    int temp_y = ty;
+    DrawTextLine(x, &temp_y, text_[row], false);
     --row;
     if (row < 0) row = text_rows_ - 1;
   }
@@ -458,6 +461,7 @@
   gr_font_size(gr_sys_font(), &char_width_, &char_height_);
   text_rows_ = (gr_fb_height() - kMarginHeight * 2) / char_height_;
   text_cols_ = (gr_fb_width() - kMarginWidth * 2) / char_width_;
+  log_bottom_offset_ = 0;
   return true;
 }