ELEC2645 (2018/19) / Mbed 2 deprecated el17ajf

Dependencies:   mbed

Fork of el17ajf by Angus Findlay

Menus/UI/UI.cpp

Committer:
el17ajf
Date:
2019-04-03
Revision:
17:cc448ab7266f
Parent:
16:3f84f2d7b910
Child:
18:24ce897024d0

File content as of revision 17:cc448ab7266f:

#include "UI.h"
#include "Graphics.h"

UI::UI() {
    reset();
}

void UI::reset() {
    buttonCurrentlySelected = 0; 
}

UI::~UI() {
    
}

void UI::clear() {
    buttonPressedFrame = false;
    nextYPos = PADDING_Y;
    buttonCurrentlyDrawing = -1;
}

void UI::drawTitle(const char * text) {
    drawLabel(text);
}

void UI::drawLabel(const char * text) {
    Graphics::UI::drawText(PADDING_X, nextY(), text);
}

void UI::newLine() {
    nextY();
}

bool UI::drawAndCheckButton(const char * text) {
    buttonCurrentlyDrawing++;
    
    int y = nextY();
    
    Graphics::UI::drawText(PADDING_X, y, text);
    
    bool selected = buttonCurrentlyDrawing == buttonCurrentlySelected;
    
    if (selected) {
        Graphics::UI::drawBorder(PADDING_X - 2, y - 2, PADDING_X + 50, y + Graphics::UI::CHAR_HEIGHT + 2);
    }

    return buttonPressedFrame && selected;
}

void UI::selectNextButton() {
    if (buttonCurrentlySelected < buttonCurrentlyDrawing) {
        buttonCurrentlySelected++;
    }
}

void UI::selectPreviousButton() {
    if (buttonCurrentlySelected > 0) {
        buttonCurrentlySelected--;
    }
}

void UI::pressButton() {
    buttonPressedFrame = true;
}

int UI::nextY() {
    int currentYPos = nextYPos;
    nextYPos += Graphics::UI::CHAR_HEIGHT + LINE_PADDING;
    return currentYPos;
}