Graphical demo for the LPC4088 Experiment Base Board with one of the Display Expansion Kits. This program displays how to use the emWin library from Segger.
Dependencies: EALib ewgui mbed
This program requires the emWin library. Instructions and more information.
MyWindow.cpp@0:7f5765fcd048, 2015-07-14 (annotated)
- Committer:
- embeddedartists
- Date:
- Tue Jul 14 11:34:15 2015 +0000
- Revision:
- 0:7f5765fcd048
First version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
embeddedartists | 0:7f5765fcd048 | 1 | #include "mbed.h" |
embeddedartists | 0:7f5765fcd048 | 2 | |
embeddedartists | 0:7f5765fcd048 | 3 | #include "MyWindow.h" |
embeddedartists | 0:7f5765fcd048 | 4 | #include "EwPainter.h" |
embeddedartists | 0:7f5765fcd048 | 5 | |
embeddedartists | 0:7f5765fcd048 | 6 | MyWindow::MyWindow(EwWindow* parent) : |
embeddedartists | 0:7f5765fcd048 | 7 | EwWindow(5, 2, 300, 250, parent), |
embeddedartists | 0:7f5765fcd048 | 8 | _changeBtn(130, 200, 40, 20, this), |
embeddedartists | 0:7f5765fcd048 | 9 | _checkBox(0, 0, 80, 25, this), |
embeddedartists | 0:7f5765fcd048 | 10 | _dropDownLst(0, 0, 100, 50, this){ |
embeddedartists | 0:7f5765fcd048 | 11 | |
embeddedartists | 0:7f5765fcd048 | 12 | _changeBtn.setText("Click"); |
embeddedartists | 0:7f5765fcd048 | 13 | _changeBtn.setClickedListener(this, &MyWindow::clickListener); |
embeddedartists | 0:7f5765fcd048 | 14 | |
embeddedartists | 0:7f5765fcd048 | 15 | _checkBox.setText("CheckBox"); |
embeddedartists | 0:7f5765fcd048 | 16 | _checkBox.setChangedListener(this, &MyWindow::checkedListener); |
embeddedartists | 0:7f5765fcd048 | 17 | |
embeddedartists | 0:7f5765fcd048 | 18 | _dropDownLst.addString("First"); |
embeddedartists | 0:7f5765fcd048 | 19 | _dropDownLst.addString("Second"); |
embeddedartists | 0:7f5765fcd048 | 20 | _dropDownLst.addString("Third"); |
embeddedartists | 0:7f5765fcd048 | 21 | |
embeddedartists | 0:7f5765fcd048 | 22 | _clickCnt = 0; |
embeddedartists | 0:7f5765fcd048 | 23 | _pressed = false; |
embeddedartists | 0:7f5765fcd048 | 24 | _pressX = 0; |
embeddedartists | 0:7f5765fcd048 | 25 | _pressY = 0; |
embeddedartists | 0:7f5765fcd048 | 26 | |
embeddedartists | 0:7f5765fcd048 | 27 | resizeTo(parent->getWidth()-15, parent->getHeight()-35); |
embeddedartists | 0:7f5765fcd048 | 28 | _changeBtn.moveTo(getWidth()/2-_changeBtn.getWidth()/2, |
embeddedartists | 0:7f5765fcd048 | 29 | getHeight()-_changeBtn.getHeight()-5); |
embeddedartists | 0:7f5765fcd048 | 30 | |
embeddedartists | 0:7f5765fcd048 | 31 | _checkBox.moveTo(5, 35); |
embeddedartists | 0:7f5765fcd048 | 32 | |
embeddedartists | 0:7f5765fcd048 | 33 | _dropDownLst.move(getWidth()-_dropDownLst.getWidth()-5, 5); |
embeddedartists | 0:7f5765fcd048 | 34 | } |
embeddedartists | 0:7f5765fcd048 | 35 | |
embeddedartists | 0:7f5765fcd048 | 36 | bool MyWindow::paintEvent() { |
embeddedartists | 0:7f5765fcd048 | 37 | char buf[30]; |
embeddedartists | 0:7f5765fcd048 | 38 | EwPainter painter; |
embeddedartists | 0:7f5765fcd048 | 39 | |
embeddedartists | 0:7f5765fcd048 | 40 | painter.setBackgroundColor(EW_LIGHTGRAY); |
embeddedartists | 0:7f5765fcd048 | 41 | painter.clear(); |
embeddedartists | 0:7f5765fcd048 | 42 | |
embeddedartists | 0:7f5765fcd048 | 43 | if (_clickCnt > 0) { |
embeddedartists | 0:7f5765fcd048 | 44 | painter.setColor(EW_BLUE); |
embeddedartists | 0:7f5765fcd048 | 45 | if (_clickCnt == 1) { |
embeddedartists | 0:7f5765fcd048 | 46 | sprintf(buf, "Clicked %d time", _clickCnt); |
embeddedartists | 0:7f5765fcd048 | 47 | } |
embeddedartists | 0:7f5765fcd048 | 48 | else { |
embeddedartists | 0:7f5765fcd048 | 49 | sprintf(buf, "Clicked %d times", _clickCnt); |
embeddedartists | 0:7f5765fcd048 | 50 | } |
embeddedartists | 0:7f5765fcd048 | 51 | painter.drawStringClearEOL(buf, 5, 5); |
embeddedartists | 0:7f5765fcd048 | 52 | } |
embeddedartists | 0:7f5765fcd048 | 53 | |
embeddedartists | 0:7f5765fcd048 | 54 | if (_pressed) { |
embeddedartists | 0:7f5765fcd048 | 55 | painter.setColor(GUI_DARKRED); |
embeddedartists | 0:7f5765fcd048 | 56 | sprintf(buf, "Touch at %d,%d", _pressX, _pressY); |
embeddedartists | 0:7f5765fcd048 | 57 | painter.drawStringClearEOL(buf, 5, 15); |
embeddedartists | 0:7f5765fcd048 | 58 | } |
embeddedartists | 0:7f5765fcd048 | 59 | |
embeddedartists | 0:7f5765fcd048 | 60 | return true; |
embeddedartists | 0:7f5765fcd048 | 61 | } |
embeddedartists | 0:7f5765fcd048 | 62 | |
embeddedartists | 0:7f5765fcd048 | 63 | bool MyWindow::touchEvent(int x, int y, EwTouchState_t state) { |
embeddedartists | 0:7f5765fcd048 | 64 | |
embeddedartists | 0:7f5765fcd048 | 65 | if (state == TouchStatePressed) { |
embeddedartists | 0:7f5765fcd048 | 66 | _pressed = true; |
embeddedartists | 0:7f5765fcd048 | 67 | _pressX = x; |
embeddedartists | 0:7f5765fcd048 | 68 | _pressY = y; |
embeddedartists | 0:7f5765fcd048 | 69 | } |
embeddedartists | 0:7f5765fcd048 | 70 | else { |
embeddedartists | 0:7f5765fcd048 | 71 | _pressed = false; |
embeddedartists | 0:7f5765fcd048 | 72 | } |
embeddedartists | 0:7f5765fcd048 | 73 | |
embeddedartists | 0:7f5765fcd048 | 74 | invalidate(); |
embeddedartists | 0:7f5765fcd048 | 75 | |
embeddedartists | 0:7f5765fcd048 | 76 | return true; |
embeddedartists | 0:7f5765fcd048 | 77 | } |
embeddedartists | 0:7f5765fcd048 | 78 | |
embeddedartists | 0:7f5765fcd048 | 79 | void MyWindow::clickListener(EwWindow* w) { |
embeddedartists | 0:7f5765fcd048 | 80 | _clickCnt++; |
embeddedartists | 0:7f5765fcd048 | 81 | invalidate(); |
embeddedartists | 0:7f5765fcd048 | 82 | } |
embeddedartists | 0:7f5765fcd048 | 83 | |
embeddedartists | 0:7f5765fcd048 | 84 | void MyWindow::checkedListener(EwWindow* w) { |
embeddedartists | 0:7f5765fcd048 | 85 | EwCheckBox* b = (EwCheckBox*)w; |
embeddedartists | 0:7f5765fcd048 | 86 | |
embeddedartists | 0:7f5765fcd048 | 87 | ewCheckBoxState_t state = b->getState(); |
embeddedartists | 0:7f5765fcd048 | 88 | |
embeddedartists | 0:7f5765fcd048 | 89 | if (state == CheckBoxStateUnchecked) { |
embeddedartists | 0:7f5765fcd048 | 90 | b->setText("Unchecked"); |
embeddedartists | 0:7f5765fcd048 | 91 | } |
embeddedartists | 0:7f5765fcd048 | 92 | else { |
embeddedartists | 0:7f5765fcd048 | 93 | b->setText("Checked"); |
embeddedartists | 0:7f5765fcd048 | 94 | } |
embeddedartists | 0:7f5765fcd048 | 95 | |
embeddedartists | 0:7f5765fcd048 | 96 | } |
embeddedartists | 0:7f5765fcd048 | 97 |