Project Submission (late)
Dependencies: mbed
Menus/OptionsMenu.h@3:83e79d31930c, 2019-05-10 (annotated)
- 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?
User | Revision | Line number | New 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 |