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

Dependents:   ezSBC_MPU9250

Revision:
0:ccdf1edcbba6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Controls.cpp	Mon Apr 24 16:21:53 2017 +0000
@@ -0,0 +1,49 @@
+#include "Controls.h"
+
+#if (USE_BARGRAPH == 1)
+barGraph::barGraph(bgOrientation _orientation, int16_t _x0, int16_t _y0, int16_t _x1, int16_t _y1) :
+    baseControl()
+{
+    orientation = _orientation;
+    x0 = _x0;
+    y0 = _y0;
+    x1 = _x1;
+    y1 = _y1;
+}
+
+void barGraph::setScale(float _valMin, float _valMax)
+{
+    valMin = _valMin;
+    valMax = _valMax;
+    if (orientation == bgHorizontal) {
+        valScaleFactor = (x1 - x0) / (valMax - valMin);
+        zeroPos = x0 - valScaleFactor * valMin;
+    } else {
+        valScaleFactor = (y1 - y0) / (valMax - valMin);
+        zeroPos = y0 - valScaleFactor * valMin;
+    }
+}
+
+void barGraph::setValue(float _val)
+{
+    val = _val;
+}
+
+void barGraph::draw(Adafruit_GFX &canvas)
+{
+    int16_t p;
+    int16_t w;
+    
+    if (orientation == bgHorizontal) {
+        p = x0 + valScaleFactor * (val - valMin);
+        for (w = y0; w <= y1; w++)
+            canvas.drawLine(zeroPos, w, p, w, WHITE);
+        
+    } else {
+        p = y0 + valScaleFactor * (val - valMin);
+        for (w = x0; w <= x1; w++)
+            canvas.drawLine(zeroPos, w, p, w, WHITE);
+    }
+}
+
+#endif