simple GUI elements for drawing on a canvas, works with adafruit graphics lib

Dependents:   ezSBC_MPU9250

Committer:
JojoS
Date:
Mon Apr 24 16:21:53 2017 +0000
Revision:
0:ccdf1edcbba6
simple GUI elements

Who changed what in which revision?

UserRevisionLine numberNew 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