Used to draw horizontal bar indicators using characters on a Gameduino display. Requires Gameduino library.

This is used to display moving bar style indicators on a Gameduino VGA display. You will require the Gameduino library in order to use this. The indicators are made up of a horizontal strip of characters. The left side of the indicator represents the minimum possible reading and the right side represents the maximum possible reading. When you draw the indicator you specify what reading to display and the code works out which characters to display so that a bar is drawn starting at the left and extending right up to an appropriate position. The BarIndicator class allows you to specify the location of the indicator on the screen, the length of the indicator (the number of characters to use) and the minimum and maximum values for the bar. You can also change which section of the character set to use when drawing the bar.

Committer:
RichardE
Date:
Sun Nov 11 17:06:06 2012 +0000
Revision:
3:6607ad01c5a1
Parent:
2:0ca3285971c6
BarIndicator constructor now defaults to using character codes 128 to 137 when drawing indicators.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 0:d4ba843a0e6a 1 /*
RichardE 0:d4ba843a0e6a 2 * SOURCE FILE : BarIndicator.h
RichardE 0:d4ba843a0e6a 3 *
RichardE 0:d4ba843a0e6a 4 * Definition of class BarIndicator.
RichardE 0:d4ba843a0e6a 5 *
RichardE 0:d4ba843a0e6a 6 */
RichardE 0:d4ba843a0e6a 7
RichardE 0:d4ba843a0e6a 8 #ifndef BarIndicatorDefined
RichardE 0:d4ba843a0e6a 9
RichardE 0:d4ba843a0e6a 10 #define BarIndicatorDefined
RichardE 0:d4ba843a0e6a 11
RichardE 0:d4ba843a0e6a 12 #include "Gameduino.h"
RichardE 0:d4ba843a0e6a 13
RichardE 0:d4ba843a0e6a 14 /** Used to draw moving bar indicators on a Gameduino display.
RichardE 0:d4ba843a0e6a 15 * The indicators are constructed using suitably defined characters.
RichardE 0:d4ba843a0e6a 16 */
RichardE 0:d4ba843a0e6a 17 class BarIndicator {
RichardE 0:d4ba843a0e6a 18
RichardE 0:d4ba843a0e6a 19 public :
RichardE 0:d4ba843a0e6a 20
RichardE 0:d4ba843a0e6a 21 /** Constructor.
RichardE 0:d4ba843a0e6a 22 */
RichardE 0:d4ba843a0e6a 23 BarIndicator();
RichardE 0:d4ba843a0e6a 24
RichardE 0:d4ba843a0e6a 25 /** Destructor.
RichardE 0:d4ba843a0e6a 26 */
RichardE 0:d4ba843a0e6a 27 virtual ~BarIndicator();
RichardE 0:d4ba843a0e6a 28
RichardE 0:d4ba843a0e6a 29 /** Set character code at which thermometer characters start.
RichardE 0:d4ba843a0e6a 30 * There should be 10 characters defined starting at this code, in this order:
RichardE 0:d4ba843a0e6a 31 * 0 : Empty
RichardE 0:d4ba843a0e6a 32 * 1 : 1/8 full
RichardE 1:2d2a358a8f7d 33 * 2 : 1/4 full
RichardE 0:d4ba843a0e6a 34 * 3 : 3/8 full
RichardE 0:d4ba843a0e6a 35 * 4 : 1/2 full
RichardE 0:d4ba843a0e6a 36 * 5 : 5/8 full
RichardE 0:d4ba843a0e6a 37 * 6 : 3/4 full
RichardE 0:d4ba843a0e6a 38 * 7 : 7/8 full
RichardE 0:d4ba843a0e6a 39 * 8 : Full
RichardE 0:d4ba843a0e6a 40 * 9 : Greyed out (used when reading is invalid).
RichardE 2:0ca3285971c6 41 * @param sc Character code at which thermometer characters start.
RichardE 0:d4ba843a0e6a 42 */
RichardE 0:d4ba843a0e6a 43 void SetStartCode( UInt8 sc ) {
RichardE 0:d4ba843a0e6a 44 startCode = sc;
RichardE 0:d4ba843a0e6a 45 }
RichardE 0:d4ba843a0e6a 46
RichardE 0:d4ba843a0e6a 47 /** Set minimum and maximum readings.
RichardE 0:d4ba843a0e6a 48 * @param min Smallest reading that can be shown on bar indicator.
RichardE 0:d4ba843a0e6a 49 * @param max Largest reading that can be shown on bar indicator.
RichardE 0:d4ba843a0e6a 50 */
RichardE 0:d4ba843a0e6a 51 void SetLimits( float min, float max ) {
RichardE 0:d4ba843a0e6a 52 this->min = min;
RichardE 0:d4ba843a0e6a 53 this->max = max;
RichardE 0:d4ba843a0e6a 54 }
RichardE 0:d4ba843a0e6a 55
RichardE 0:d4ba843a0e6a 56 /** Set location of indicator on screen using character coordinates.
RichardE 0:d4ba843a0e6a 57 * @param x X coordinate for indicator.
RichardE 0:d4ba843a0e6a 58 * @param y Y coordinate for indicator.
RichardE 0:d4ba843a0e6a 59 */
RichardE 0:d4ba843a0e6a 60 void SetLocation( UInt8 x, UInt8 y ) {
RichardE 0:d4ba843a0e6a 61 xco = x;
RichardE 0:d4ba843a0e6a 62 yco = y;
RichardE 0:d4ba843a0e6a 63 }
RichardE 0:d4ba843a0e6a 64
RichardE 0:d4ba843a0e6a 65 /** Set length of indicator (in characters).
RichardE 0:d4ba843a0e6a 66 * @param len Length of indicator.
RichardE 0:d4ba843a0e6a 67 */
RichardE 0:d4ba843a0e6a 68 void SetLength( UInt8 len ) {
RichardE 0:d4ba843a0e6a 69 length = len;
RichardE 0:d4ba843a0e6a 70 }
RichardE 0:d4ba843a0e6a 71
RichardE 0:d4ba843a0e6a 72 /** Draw bar indicator.
RichardE 0:d4ba843a0e6a 73 * Invalid readings are drawn using a greyed out indicator.
RichardE 0:d4ba843a0e6a 74 * @param gd Pointer to Gameduino to use for drawing.
RichardE 0:d4ba843a0e6a 75 * @param reading Reading to display on indicator.
RichardE 0:d4ba843a0e6a 76 * @param valid True if reading is valid, False if not.
RichardE 0:d4ba843a0e6a 77 */
RichardE 0:d4ba843a0e6a 78 void Draw( Gameduino *gd, float reading, bool valid );
RichardE 0:d4ba843a0e6a 79
RichardE 0:d4ba843a0e6a 80 private :
RichardE 0:d4ba843a0e6a 81
RichardE 0:d4ba843a0e6a 82 // Character code at which thermometer characters start.
RichardE 0:d4ba843a0e6a 83 UInt8 startCode;
RichardE 0:d4ba843a0e6a 84
RichardE 0:d4ba843a0e6a 85 // Minimum and maximum readings on thermometer.
RichardE 0:d4ba843a0e6a 86 float min, max;
RichardE 0:d4ba843a0e6a 87
RichardE 0:d4ba843a0e6a 88 // Coordinates of indicator.
RichardE 0:d4ba843a0e6a 89 UInt8 xco, yco;
RichardE 0:d4ba843a0e6a 90
RichardE 0:d4ba843a0e6a 91 // Length of indicator.
RichardE 0:d4ba843a0e6a 92 UInt8 length;
RichardE 0:d4ba843a0e6a 93
RichardE 0:d4ba843a0e6a 94 };
RichardE 0:d4ba843a0e6a 95
RichardE 0:d4ba843a0e6a 96 #endif
RichardE 0:d4ba843a0e6a 97
RichardE 0:d4ba843a0e6a 98 /* END of BarIndicator.h */