Subversion Repositories libOLED

Rev

Rev 7 | Rev 15 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #pragma once
  2. #include <cstdint>
  3.  
  4. class displayDial_t
  5. {
  6. public:
  7.   /// \param display the parent display
  8.   /// \param x x pos
  9.   /// \param y y pos
  10.   /// \param siz = size
  11.   /// \param angle Angle from straight up for lowest (-angle) and highest (angle) reading
  12.   displayDial_t(display_t &display,
  13.                 uint8_t x,
  14.                 uint8_t y,
  15.                 uint8_t siz,
  16.                 uint16_t angle = 90);
  17.  
  18.   /// @brief Construct a display with angle from Angle high to angle low
  19.   /// @param display
  20.   /// @param x
  21.   /// @param y
  22.   /// @param siz
  23.   /// @param angle_high Angle relative to straight up for highest reading
  24.   /// @param angle_low Angle relative to straight up for lowest reading
  25.   displayDial_t(display_t &display,
  26.                 uint8_t x,
  27.                 uint8_t y,
  28.                 uint8_t siz,
  29.                 int16_t angle_low,
  30.                 int16_t angle_high);
  31.  
  32.   // put the dial needle on the display
  33.   void draw_needle(int16_t position);
  34.  
  35.   // draw the scale
  36.   /// \param low low end of range
  37.   /// \param high high end of range
  38.   /// \param width length of long marker
  39.   /// \param num_step number of ticks
  40.   /// \param scale
  41.   void draw_scale(int16_t low, int16_t high, uint8_t width, uint8_t num_step, int16_t scale);
  42.  
  43.   /// print min/max limits
  44.   void draw_limits();
  45.  
  46. private:
  47.   display_t &m_display;
  48.   uint8_t const m_xo;    ///< Position of origin
  49.   uint8_t const m_yo;    ///< Position of origin
  50.   uint8_t const m_siz;   ///< Display size
  51.   int16_t const m_angleLow;  ///< Angle for lowest value
  52.   int16_t const m_angleRange; ///< Angle range from lowest to highest  value
  53.   int16_t m_low;         ///< lower scale limit
  54.   int16_t m_high;        ///< upper scale limit
  55. };
  56.