From 5e24583c311d91851bc8bf05aa91b81593e78b5a Mon Sep 17 00:00:00 2001 From: Scott Allen Date: Thu, 25 Sep 2014 16:43:43 -0400 Subject: [PATCH] Refactored widget code to eliminate needFirstDraw variable --- MicroView.cpp | 37 ++++++++++++------------------------- MicroView.h | 7 ++++--- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/MicroView.cpp b/MicroView.cpp index 5b90a98..6c6f00c 100644 --- a/MicroView.cpp +++ b/MicroView.cpp @@ -1366,8 +1366,7 @@ MicroViewWidget::MicroViewWidget(uint8_t newx, uint8_t newy, int16_t min, int16_ posY(newy), minValue(min), maxValue(max), - value(min), - needFirstDraw(true) + value(min) { valLen=getInt16PrintLen(value); setMaxValLen(); @@ -1450,8 +1449,8 @@ uint8_t MicroViewWidget::getValLen() { return valLen; } Redraws the widget. */ void MicroViewWidget::reDraw() { - needFirstDraw=true; this->drawFace(); + this->drawPointer(); // initial pointer (will be erased) this->draw(); } @@ -1498,6 +1497,7 @@ MicroViewSlider::MicroViewSlider(uint8_t newx, uint8_t newy, int16_t min, int16_ prevValue(value) { drawFace(); + drawPointer(); // Initial pointer (will be erased) draw(); } @@ -1532,6 +1532,7 @@ MicroViewSlider::MicroViewSlider(uint8_t newx, uint8_t newy, int16_t min, int16_ } drawFace(); + drawPointer(); // Initial pointer (will be erased) draw(); } @@ -1573,17 +1574,9 @@ void MicroViewSlider::drawFace() { Convert the current value of the widget and draw the ticker representing the value. */ void MicroViewSlider::draw() { - // Draw the initial pointer or erase the previous pointer - drawPointer(); - - if (needFirstDraw) { - needFirstDraw=false; - } - else { - prevValue=value; - // Draw current pointer - drawPointer(); - } + drawPointer(); // Erase the previous pointer + prevValue=value; + drawPointer(); // Draw the current pointer // Draw numeric value if required if (!noValDraw) { @@ -1642,6 +1635,7 @@ MicroViewGauge::MicroViewGauge(uint8_t newx, uint8_t newy, int16_t min, int16_t prevValue(value) { drawFace(); + drawPointer(); // Initial pointer (will be erased) draw(); } @@ -1666,6 +1660,7 @@ MicroViewGauge::MicroViewGauge(uint8_t newx, uint8_t newy, int16_t min, int16_t } drawFace(); + drawPointer(); // Initial pointer (will be erased) draw(); } @@ -1704,17 +1699,9 @@ void MicroViewGauge::drawFace() { Convert the current value of the widget and draw the ticker representing the value. */ void MicroViewGauge::draw() { - // Draw the initial pointer or erase the previous pointer - drawPointer(); - - if (needFirstDraw) { - needFirstDraw=false; - } - else { - prevValue=value; - // Draw current pointer - drawPointer(); - } + drawPointer(); // Erase the previous pointer + prevValue=value; + drawPointer(); // Draw the current pointer // Draw numeric value if required if (!noValDraw) { diff --git a/MicroView.h b/MicroView.h index 8147ae9..bd29b57 100644 --- a/MicroView.h +++ b/MicroView.h @@ -244,8 +244,8 @@ public: uint8_t getValLen(); uint8_t getMaxValLen(); /** \brief Draw widget value overridden by child class. */ - virtual void draw(){}; - /** \brief Draw widget face overridden by child class. */ + virtual void draw(){}; + /** \brief Draw widget face overridden by child class. */ virtual void drawFace(){}; void reDraw(); void drawNumValue(int16_t value); @@ -258,8 +258,9 @@ protected: int16_t value; uint8_t valLen; uint8_t maxValLen; - bool needFirstDraw; private: + /** \brief Draw or erase the widget pointer. Overridden by child class. */ + virtual void drawPointer(){}; void setMaxValLen(); };