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

Commit 8daabacc authored by Luke Song's avatar Luke Song Committed by android-build-merger
Browse files

Merge "Introduce VR recovery ui" am: 5efe2bca

am: 850e0095

Change-Id: I498b7b568523631f41f92994a003e77492616916
parents 80eb02dc 850e0095
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -76,6 +76,7 @@ LOCAL_SRC_FILES := \
    rotate_logs.cpp \
    rotate_logs.cpp \
    screen_ui.cpp \
    screen_ui.cpp \
    ui.cpp \
    ui.cpp \
    vr_ui.cpp \
    wear_ui.cpp \
    wear_ui.cpp \
    wear_touch.cpp \
    wear_touch.cpp \


@@ -182,6 +183,17 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_CFLAGS := -Werror
LOCAL_CFLAGS := -Werror
include $(BUILD_STATIC_LIBRARY)
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 \
include \
    $(LOCAL_PATH)/applypatch/Android.mk \
    $(LOCAL_PATH)/applypatch/Android.mk \
    $(LOCAL_PATH)/boot_control/Android.mk \
    $(LOCAL_PATH)/boot_control/Android.mk \
+11 −6
Original line number Original line Diff line number Diff line
@@ -256,6 +256,10 @@ void ScreenRecoveryUI::DrawHorizontalRule(int* y) {
    *y += 4;
    *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 {
void ScreenRecoveryUI::DrawTextLine(int x, int* y, const char* line, bool bold) const {
    gr_text(gr_sys_font(), x, *y, line, bold);
    gr_text(gr_sys_font(), x, *y, line, bold);
    *y += char_height_ + 4;
    *y += char_height_ + 4;
@@ -310,15 +314,14 @@ void ScreenRecoveryUI::draw_screen_locked() {
                if (i == menu_sel) {
                if (i == menu_sel) {
                    // Draw the highlight bar.
                    // Draw the highlight bar.
                    SetColor(IsLongPress() ? MENU_SEL_BG_ACTIVE : MENU_SEL_BG);
                    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.
                    // Bold white text for the selected item.
                    SetColor(MENU_SEL_FG);
                    SetColor(MENU_SEL_FG);
                    gr_text(gr_sys_font(), 4, y, menu_[i], true);
                    DrawTextLine(TEXT_INDENT, &y, menu_[i], true);
                    SetColor(MENU);
                    SetColor(MENU);
                } else {
                } else {
                    gr_text(gr_sys_font(), 4, y, menu_[i], false);
                    DrawTextLine(TEXT_INDENT, &y, menu_[i], false);
                }
                }
                y += char_height_ + 4;
            }
            }
            DrawHorizontalRule(&y);
            DrawHorizontalRule(&y);
        }
        }
@@ -329,10 +332,11 @@ void ScreenRecoveryUI::draw_screen_locked() {
        SetColor(LOG);
        SetColor(LOG);
        int row = (text_top_ + text_rows_ - 1) % text_rows_;
        int row = (text_top_ + text_rows_ - 1) % text_rows_;
        size_t count = 0;
        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 >= y && count < text_rows_;
             ty -= char_height_, ++count) {
             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;
            --row;
            if (row < 0) row = text_rows_ - 1;
            if (row < 0) row = text_rows_ - 1;
        }
        }
@@ -453,6 +457,7 @@ bool ScreenRecoveryUI::InitTextParams() {
    gr_font_size(gr_sys_font(), &char_width_, &char_height_);
    gr_font_size(gr_sys_font(), &char_width_, &char_height_);
    text_rows_ = gr_fb_height() / char_height_;
    text_rows_ = gr_fb_height() / char_height_;
    text_cols_ = gr_fb_width() / char_width_;
    text_cols_ = gr_fb_width() / char_width_;
    log_bottom_offset_ = 0;
    return true;
    return true;
}
}


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


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


    void DrawHorizontalRule(int* y);
    virtual void DrawHorizontalRule(int* y);
    void DrawTextLine(int x, int* y, const char* line, bool bold) const;
    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;
    void DrawTextLines(int x, int* y, const char* const* lines) const;
};
};


vr_device.cpp

0 → 100644
+23 −0
Original line number Original line 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 Original line 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