Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5efe2bca authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Introduce VR recovery ui"

parents ffd8505f e2bd8760
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ LOCAL_SRC_FILES := \
    rotate_logs.cpp \
    screen_ui.cpp \
    ui.cpp \
    vr_ui.cpp \
    wear_ui.cpp \
    wear_touch.cpp \

@@ -182,6 +183,17 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_CFLAGS := -Werror
include $(BUILD_STATIC_LIBRARY)

# vr headset default device
# ===============================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := vr_device.cpp

# should match TARGET_RECOVERY_UI_LIB set in BoardConfig.mk
LOCAL_MODULE := librecovery_ui_vr

include $(BUILD_STATIC_LIBRARY)

include \
    $(LOCAL_PATH)/applypatch/Android.mk \
    $(LOCAL_PATH)/boot_control/Android.mk \
+11 −6
Original line number Diff line number Diff line
@@ -256,6 +256,10 @@ void ScreenRecoveryUI::DrawHorizontalRule(int* y) {
    *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;
@@ -310,15 +314,14 @@ void ScreenRecoveryUI::draw_screen_locked() {
                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(TEXT_INDENT, &y, menu_[i], true);
                    SetColor(MENU);
                } else {
                    gr_text(gr_sys_font(), 4, y, menu_[i], false);
                    DrawTextLine(TEXT_INDENT, &y, menu_[i], false);
                }
                y += char_height_ + 4;
            }
            DrawHorizontalRule(&y);
        }
@@ -329,10 +332,11 @@ void ScreenRecoveryUI::draw_screen_locked() {
        SetColor(LOG);
        int row = (text_top_ + text_rows_ - 1) % text_rows_;
        size_t count = 0;
        for (int ty = gr_fb_height() - char_height_;
        for (int ty = gr_fb_height() - 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(0, &temp_y, text_[row], false);
            --row;
            if (row < 0) row = text_rows_ - 1;
        }
@@ -453,6 +457,7 @@ bool ScreenRecoveryUI::InitTextParams() {
    gr_font_size(gr_sys_font(), &char_width_, &char_height_);
    text_rows_ = gr_fb_height() / char_height_;
    text_cols_ = gr_fb_width() / char_width_;
    log_bottom_offset_ = 0;
    return true;
}

+4 −2
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ class ScreenRecoveryUI : public RecoveryUI {
    // Log text overlay, displayed when a magic key is pressed.
    char** text_;
    size_t text_col_, text_row_, text_top_;
    int log_bottom_offset_;

    bool show_text;
    bool show_text_ever;   // has show_text ever been true?
@@ -165,8 +166,9 @@ class ScreenRecoveryUI : public RecoveryUI {
    virtual int GetProgressBaseline();
    virtual int GetTextBaseline();

    void DrawHorizontalRule(int* y);
    void DrawTextLine(int x, int* y, const char* line, bool bold) const;
    virtual void DrawHorizontalRule(int* y);
    virtual void DrawHighlightBar(int x, int y, int width, int height) const;
    virtual void DrawTextLine(int x, int* y, const char* line, bool bold) const;
    void DrawTextLines(int x, int* y, const char* const* lines) const;
};

vr_device.cpp

0 → 100644
+23 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "device.h"
#include "vr_ui.h"

Device* make_device() {
    return new Device(new VrRecoveryUI);
}

vr_ui.cpp

0 → 100644
+56 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "vr_ui.h"

#include <minui/minui.h>

VrRecoveryUI::VrRecoveryUI() :
  x_offset(400),
  y_offset(400),
  stereo_offset(100) {
}

bool VrRecoveryUI::InitTextParams() {
  if (gr_init() < 0) {
    return false;
  }

  gr_font_size(gr_sys_font(), &char_width_, &char_height_);
  int mid_divide = gr_fb_width() / 2;
  text_rows_ = (gr_fb_height() - 2 * y_offset) / char_height_;
  text_cols_ = (mid_divide - x_offset - stereo_offset) / char_width_;
  log_bottom_offset_ = gr_fb_height() - 2 * y_offset;
  return true;
}

void VrRecoveryUI::DrawHorizontalRule(int* y) {
  SetColor(MENU);
  *y += 4;
  gr_fill(0, *y + y_offset, gr_fb_width(), *y + y_offset + 2);
  *y += 4;
}

void VrRecoveryUI::DrawHighlightBar(int x, int y, int width, int height) const {
  gr_fill(x, y + y_offset, x + width, y + y_offset + height);
}

void VrRecoveryUI::DrawTextLine(int x, int* y, const char* line, bool bold) const {
  int mid_divide = gr_fb_width() / 2;
  gr_text(gr_sys_font(), x + x_offset + stereo_offset, *y + y_offset, line, bold);
  gr_text(gr_sys_font(), x + x_offset - stereo_offset + mid_divide, *y + y_offset, line, bold);
  *y += char_height_ + 4;
}
Loading