Project Submission (late)

Dependencies:   mbed

Committer:
el17tc
Date:
Fri May 10 14:52:28 2019 +0000
Revision:
3:83e79d31930c
Parent:
0:72f372170a73
final commit, API is added.; I'm not sure if there is a specific statement of academic integrity wanted but- I declare that this work is 100% my own, I have not plagiarised any work or attempted to fabricate any part of it for extra marks.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17tc 0:72f372170a73 1 #ifndef OPTIONSMENU_H
el17tc 0:72f372170a73 2 #define OPTIONSMENU_H
el17tc 0:72f372170a73 3
el17tc 0:72f372170a73 4 #include "Menus.h"
el17tc 0:72f372170a73 5
el17tc 0:72f372170a73 6 // Button class that can modify brightness
el17tc 0:72f372170a73 7
el17tc 3:83e79d31930c 8 /** BrightnessButton Class
el17tc 3:83e79d31930c 9 * @brief Derived from Button. Can incremement or decremement the lcd brightness.
el17tc 3:83e79d31930c 10 * @brief Can only do so in incremements of 5% and can be volatile due to inputs firing twice.
el17tc 3:83e79d31930c 11 */
el17tc 0:72f372170a73 12 class BrightnessButton : public Button {
el17tc 0:72f372170a73 13 public:
el17tc 0:72f372170a73 14 N5110* lcd;
el17tc 0:72f372170a73 15 BrightnessButton(N5110* screenPtr) : lcd(screenPtr) {
el17tc 0:72f372170a73 16 x = 25;
el17tc 0:72f372170a73 17 y = 16;
el17tc 0:72f372170a73 18 }
el17tc 0:72f372170a73 19 void virtual run() {
el17tc 0:72f372170a73 20 if (brightnessVal < 0.97)
el17tc 0:72f372170a73 21 brightnessVal += 0.05;
el17tc 0:72f372170a73 22 lcd->setBrightness(brightnessVal);
el17tc 0:72f372170a73 23 printf("Brightness increasing\n");
el17tc 0:72f372170a73 24 }
el17tc 0:72f372170a73 25 void virtual runBack() {
el17tc 0:72f372170a73 26 if (brightnessVal > 0.03)
el17tc 0:72f372170a73 27 brightnessVal -= 0.05;
el17tc 0:72f372170a73 28 lcd->setBrightness(brightnessVal);
el17tc 0:72f372170a73 29 printf("Brightness decreasing\n");
el17tc 0:72f372170a73 30 }
el17tc 0:72f372170a73 31 };
el17tc 0:72f372170a73 32
el17tc 0:72f372170a73 33 // Button class that can modify contrast
el17tc 3:83e79d31930c 34 /** ContrastButton Class
el17tc 3:83e79d31930c 35 * @brief Derived from Button. Can incremement or decremement the lcd contrast.
el17tc 3:83e79d31930c 36 * @brief Can only do so in incremements of 5% and can be volatile due to inputs firing twice.
el17tc 3:83e79d31930c 37 */
el17tc 0:72f372170a73 38 class ContrastButton : public Button {
el17tc 0:72f372170a73 39 public:
el17tc 0:72f372170a73 40 N5110* lcd;
el17tc 0:72f372170a73 41 ContrastButton(N5110* screenPtr) : lcd(screenPtr) {
el17tc 0:72f372170a73 42 x = 25;
el17tc 0:72f372170a73 43 y = 32;
el17tc 0:72f372170a73 44 }
el17tc 0:72f372170a73 45 void virtual run() {
el17tc 0:72f372170a73 46 if (contrastVal < 0.97)
el17tc 0:72f372170a73 47 contrastVal += 0.05;
el17tc 0:72f372170a73 48 lcd->setContrast(contrastVal);
el17tc 0:72f372170a73 49 printf("Contrast increasing\n");
el17tc 0:72f372170a73 50 }
el17tc 0:72f372170a73 51 void virtual runBack() {
el17tc 0:72f372170a73 52 if (contrastVal > 0.03)
el17tc 0:72f372170a73 53 contrastVal -= 0.05;
el17tc 0:72f372170a73 54 lcd->setContrast(contrastVal);
el17tc 0:72f372170a73 55 printf("Contrast decreasing\n");
el17tc 0:72f372170a73 56 }
el17tc 0:72f372170a73 57 };
el17tc 0:72f372170a73 58
el17tc 0:72f372170a73 59 // OptionsMenu lets the player modify the brightness and contrast
el17tc 0:72f372170a73 60 // of the lcd screen. can only increment in 5% steps.
el17tc 0:72f372170a73 61
el17tc 3:83e79d31930c 62 /** OptionsMenu Class
el17tc 3:83e79d31930c 63 * @brief Derived from Menu. Displays the options to change brightness and contrast.
el17tc 3:83e79d31930c 64 */
el17tc 0:72f372170a73 65 class OptionsMenu : public Menu {
el17tc 0:72f372170a73 66 public:
el17tc 0:72f372170a73 67 OptionsMenu(N5110* screenPtr) : Menu(screenPtr) {
el17tc 0:72f372170a73 68 buttons[0] = new BrightnessButton(lcd);
el17tc 0:72f372170a73 69 buttons[1] = new ContrastButton(lcd);
el17tc 0:72f372170a73 70 currentButton = buttons[0];
el17tc 0:72f372170a73 71 numOfButtons = 2;
el17tc 0:72f372170a73 72 buttonIndex = 0;
el17tc 0:72f372170a73 73 }
el17tc 0:72f372170a73 74 void virtual draw() {
el17tc 0:72f372170a73 75 std::stringstream ssb;
el17tc 0:72f372170a73 76 std::stringstream ssc;
el17tc 0:72f372170a73 77 ssc << (contrastVal*100) << "%";
el17tc 0:72f372170a73 78 ssb << (brightnessVal*100) << "%";
el17tc 0:72f372170a73 79 lcd->printString("Options:",10,0);
el17tc 0:72f372170a73 80 lcd->printString("Brightness:",10,1);
el17tc 0:72f372170a73 81 lcd->printString(ssb.str().c_str(),30,2);
el17tc 0:72f372170a73 82 lcd->printString("Contrast:",10,3);
el17tc 0:72f372170a73 83 lcd->printString(ssc.str().c_str(),30,4);
el17tc 0:72f372170a73 84 }
el17tc 3:83e79d31930c 85 /** Destructor
el17tc 3:83e79d31930c 86 */
el17tc 0:72f372170a73 87 ~OptionsMenu() {
el17tc 0:72f372170a73 88 delete buttons[0];
el17tc 0:72f372170a73 89 delete buttons[1];
el17tc 0:72f372170a73 90 }
el17tc 0:72f372170a73 91 };
el17tc 0:72f372170a73 92
el17tc 0:72f372170a73 93 #endif // OPTIONSMENU_H