simple GUI elements for drawing on a canvas, works with adafruit graphics lib
Controls.cpp@0:ccdf1edcbba6, 2017-04-24 (annotated)
- Committer:
- JojoS
- Date:
- Mon Apr 24 16:21:53 2017 +0000
- Revision:
- 0:ccdf1edcbba6
simple GUI elements
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JojoS | 0:ccdf1edcbba6 | 1 | #include "Controls.h" |
JojoS | 0:ccdf1edcbba6 | 2 | |
JojoS | 0:ccdf1edcbba6 | 3 | #if (USE_BARGRAPH == 1) |
JojoS | 0:ccdf1edcbba6 | 4 | barGraph::barGraph(bgOrientation _orientation, int16_t _x0, int16_t _y0, int16_t _x1, int16_t _y1) : |
JojoS | 0:ccdf1edcbba6 | 5 | baseControl() |
JojoS | 0:ccdf1edcbba6 | 6 | { |
JojoS | 0:ccdf1edcbba6 | 7 | orientation = _orientation; |
JojoS | 0:ccdf1edcbba6 | 8 | x0 = _x0; |
JojoS | 0:ccdf1edcbba6 | 9 | y0 = _y0; |
JojoS | 0:ccdf1edcbba6 | 10 | x1 = _x1; |
JojoS | 0:ccdf1edcbba6 | 11 | y1 = _y1; |
JojoS | 0:ccdf1edcbba6 | 12 | } |
JojoS | 0:ccdf1edcbba6 | 13 | |
JojoS | 0:ccdf1edcbba6 | 14 | void barGraph::setScale(float _valMin, float _valMax) |
JojoS | 0:ccdf1edcbba6 | 15 | { |
JojoS | 0:ccdf1edcbba6 | 16 | valMin = _valMin; |
JojoS | 0:ccdf1edcbba6 | 17 | valMax = _valMax; |
JojoS | 0:ccdf1edcbba6 | 18 | if (orientation == bgHorizontal) { |
JojoS | 0:ccdf1edcbba6 | 19 | valScaleFactor = (x1 - x0) / (valMax - valMin); |
JojoS | 0:ccdf1edcbba6 | 20 | zeroPos = x0 - valScaleFactor * valMin; |
JojoS | 0:ccdf1edcbba6 | 21 | } else { |
JojoS | 0:ccdf1edcbba6 | 22 | valScaleFactor = (y1 - y0) / (valMax - valMin); |
JojoS | 0:ccdf1edcbba6 | 23 | zeroPos = y0 - valScaleFactor * valMin; |
JojoS | 0:ccdf1edcbba6 | 24 | } |
JojoS | 0:ccdf1edcbba6 | 25 | } |
JojoS | 0:ccdf1edcbba6 | 26 | |
JojoS | 0:ccdf1edcbba6 | 27 | void barGraph::setValue(float _val) |
JojoS | 0:ccdf1edcbba6 | 28 | { |
JojoS | 0:ccdf1edcbba6 | 29 | val = _val; |
JojoS | 0:ccdf1edcbba6 | 30 | } |
JojoS | 0:ccdf1edcbba6 | 31 | |
JojoS | 0:ccdf1edcbba6 | 32 | void barGraph::draw(Adafruit_GFX &canvas) |
JojoS | 0:ccdf1edcbba6 | 33 | { |
JojoS | 0:ccdf1edcbba6 | 34 | int16_t p; |
JojoS | 0:ccdf1edcbba6 | 35 | int16_t w; |
JojoS | 0:ccdf1edcbba6 | 36 | |
JojoS | 0:ccdf1edcbba6 | 37 | if (orientation == bgHorizontal) { |
JojoS | 0:ccdf1edcbba6 | 38 | p = x0 + valScaleFactor * (val - valMin); |
JojoS | 0:ccdf1edcbba6 | 39 | for (w = y0; w <= y1; w++) |
JojoS | 0:ccdf1edcbba6 | 40 | canvas.drawLine(zeroPos, w, p, w, WHITE); |
JojoS | 0:ccdf1edcbba6 | 41 | |
JojoS | 0:ccdf1edcbba6 | 42 | } else { |
JojoS | 0:ccdf1edcbba6 | 43 | p = y0 + valScaleFactor * (val - valMin); |
JojoS | 0:ccdf1edcbba6 | 44 | for (w = x0; w <= x1; w++) |
JojoS | 0:ccdf1edcbba6 | 45 | canvas.drawLine(zeroPos, w, p, w, WHITE); |
JojoS | 0:ccdf1edcbba6 | 46 | } |
JojoS | 0:ccdf1edcbba6 | 47 | } |
JojoS | 0:ccdf1edcbba6 | 48 | |
JojoS | 0:ccdf1edcbba6 | 49 | #endif |