Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17ajf by
Diff: Menus/UI/UI.cpp
- Revision:
- 17:cc448ab7266f
- Parent:
- 16:3f84f2d7b910
- Child:
- 18:24ce897024d0
--- a/Menus/UI/UI.cpp Tue Mar 26 10:18:17 2019 +0000 +++ b/Menus/UI/UI.cpp Wed Apr 03 13:37:56 2019 +0000 @@ -1,10 +1,70 @@ - void clear(); +#include "UI.h" +#include "Graphics.h" + +UI::UI() { + reset(); +} + +void UI::reset() { + buttonCurrentlySelected = 0; +} + +UI::~UI() { - void drawTitle(const char * text); - void drawLabel(const char * text); - bool drawAndCheckButton(const char * text); +} + +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(); +} - void selectNextButton(); - void selectPreviousButton(); - void pressButton(); -}; +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; +} \ No newline at end of file