Draws grids using frames of characters on a Gameduino display. Requires Gameduino library.

Committer:
RichardE
Date:
Sat Nov 24 17:18:47 2012 +0000
Revision:
2:fa0d977ce89f
Parent:
1:b5d8f8deafa5
Added GetCharacterCodes method.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 0:c7d5d58ef13a 1 /*
RichardE 0:c7d5d58ef13a 2 * SOURCE FILE : CharacterNet.h
RichardE 0:c7d5d58ef13a 3 *
RichardE 0:c7d5d58ef13a 4 */
RichardE 0:c7d5d58ef13a 5
RichardE 0:c7d5d58ef13a 6 #ifndef CharacterNetIncluded
RichardE 0:c7d5d58ef13a 7
RichardE 0:c7d5d58ef13a 8 #define CharacterNetIncluded
RichardE 0:c7d5d58ef13a 9
RichardE 0:c7d5d58ef13a 10 #include "Gameduino.h"
RichardE 0:c7d5d58ef13a 11
RichardE 0:c7d5d58ef13a 12 /** Used to draw net like grids of characters on a Gameduino display.
RichardE 0:c7d5d58ef13a 13 * Requires the Gameduino library.
RichardE 0:c7d5d58ef13a 14 */
RichardE 0:c7d5d58ef13a 15 class CharacterNet {
RichardE 0:c7d5d58ef13a 16
RichardE 0:c7d5d58ef13a 17 public :
RichardE 0:c7d5d58ef13a 18
RichardE 0:c7d5d58ef13a 19 /** Constructor.
RichardE 0:c7d5d58ef13a 20 */
RichardE 0:c7d5d58ef13a 21 CharacterNet();
RichardE 0:c7d5d58ef13a 22
RichardE 0:c7d5d58ef13a 23 /** Enumeration defining order of codes in array passed to SetCharacterCodes.
RichardE 0:c7d5d58ef13a 24 */
RichardE 0:c7d5d58ef13a 25 enum CodePos {
RichardE 0:c7d5d58ef13a 26 TopLeftCorner,
RichardE 0:c7d5d58ef13a 27 TopRightCorner,
RichardE 0:c7d5d58ef13a 28 BottomLeftCorner,
RichardE 0:c7d5d58ef13a 29 BottomRightCorner,
RichardE 0:c7d5d58ef13a 30 Horizontal,
RichardE 0:c7d5d58ef13a 31 Vertical,
RichardE 0:c7d5d58ef13a 32 TDown,
RichardE 0:c7d5d58ef13a 33 TUp,
RichardE 0:c7d5d58ef13a 34 TLeft,
RichardE 0:c7d5d58ef13a 35 TRight,
RichardE 0:c7d5d58ef13a 36 Cross,
RichardE 0:c7d5d58ef13a 37 CodePosCount // number of codes, MUST COME LAST
RichardE 0:c7d5d58ef13a 38 };
RichardE 0:c7d5d58ef13a 39
RichardE 2:fa0d977ce89f 40 /** Set character codes to use when drawing.
RichardE 0:c7d5d58ef13a 41 * Array must contain CodePosCount items and order of
RichardE 0:c7d5d58ef13a 42 * codes is defined by CodePos enumeration.
RichardE 0:c7d5d58ef13a 43 * @param codes Array of characters codes to use.
RichardE 0:c7d5d58ef13a 44 */
RichardE 0:c7d5d58ef13a 45 void SetCharacterCodes( const UInt8 *codes ) {
RichardE 0:c7d5d58ef13a 46 characterCodes = codes;
RichardE 0:c7d5d58ef13a 47 }
RichardE 2:fa0d977ce89f 48
RichardE 2:fa0d977ce89f 49 /** Get character codes currently in use when drawing.
RichardE 2:fa0d977ce89f 50 * @param codes Array of characters codes in use.
RichardE 2:fa0d977ce89f 51 */
RichardE 2:fa0d977ce89f 52 const UInt8 *GetCharacterCodes( void ) const {
RichardE 2:fa0d977ce89f 53 return characterCodes;
RichardE 2:fa0d977ce89f 54 }
RichardE 2:fa0d977ce89f 55
RichardE 0:c7d5d58ef13a 56 /** Draw a net of characters.
RichardE 0:c7d5d58ef13a 57 * @param gd The Gameduino to draw on.
RichardE 0:c7d5d58ef13a 58 * @param xco X coordinate for top left.
RichardE 0:c7d5d58ef13a 59 * @param yco Y coordinate for top left.
RichardE 0:c7d5d58ef13a 60 * @param columnCount The number of columns to draw.
RichardE 0:c7d5d58ef13a 61 * @param rowCount The number of rows to draw.
RichardE 0:c7d5d58ef13a 62 * @param cellWidth The width of each cell in characters.
RichardE 0:c7d5d58ef13a 63 * @param cellHeight The height of each cell in characters.
RichardE 0:c7d5d58ef13a 64 */
RichardE 0:c7d5d58ef13a 65 void Draw( Gameduino *gd, UInt8 xco, UInt8 yco, UInt8 columnCount, UInt8 rowCount, UInt8 cellWidth, UInt8 cellHeight );
RichardE 0:c7d5d58ef13a 66
RichardE 0:c7d5d58ef13a 67 /** Draw a single cell.
RichardE 0:c7d5d58ef13a 68 * Note that only the upper and left hand edges are drawn.
RichardE 0:c7d5d58ef13a 69 * @param gd Gameduino to draw on.
RichardE 0:c7d5d58ef13a 70 * @param xco X coordinate for top left.
RichardE 0:c7d5d58ef13a 71 * @param yco Y coordinate for top left.
RichardE 0:c7d5d58ef13a 72 * @param cellWidth Width of cell in characters.
RichardE 0:c7d5d58ef13a 73 * @param cellHeight Height of cell in characters.
RichardE 0:c7d5d58ef13a 74 * @param topRow Set to true if this is a cell in the top row of the net.
RichardE 0:c7d5d58ef13a 75 * @param leftColumn Set to true if this is a cell in the leftmost column of the net.
RichardE 1:b5d8f8deafa5 76 * @param bottomRow Set to true if this is a cell in the bottom row of the net.
RichardE 1:b5d8f8deafa5 77 * @param rightColumn Set to true if this is a cell in the rightmost column of the net.
RichardE 0:c7d5d58ef13a 78 */
RichardE 1:b5d8f8deafa5 79 void DrawCell( Gameduino *gd, UInt8 xco, UInt8 yco, UInt8 cellWidth, UInt8 cellHeight, bool topRow, bool leftColumn, bool bottomRow, bool rightColumn );
RichardE 0:c7d5d58ef13a 80
RichardE 0:c7d5d58ef13a 81 /** Get an instance of this class.
RichardE 0:c7d5d58ef13a 82 * @param Returns a pointer to a static instance of this class.
RichardE 0:c7d5d58ef13a 83 */
RichardE 0:c7d5d58ef13a 84 static CharacterNet *GetInstance( void ) {
RichardE 0:c7d5d58ef13a 85 return &instance;
RichardE 0:c7d5d58ef13a 86 }
RichardE 0:c7d5d58ef13a 87
RichardE 0:c7d5d58ef13a 88 private :
RichardE 0:c7d5d58ef13a 89
RichardE 0:c7d5d58ef13a 90 // An instance of this class.
RichardE 0:c7d5d58ef13a 91 static CharacterNet instance;
RichardE 0:c7d5d58ef13a 92
RichardE 0:c7d5d58ef13a 93 // Default character codes to use.
RichardE 0:c7d5d58ef13a 94 static const UInt8 defaultCodes[ CodePosCount ];
RichardE 0:c7d5d58ef13a 95
RichardE 0:c7d5d58ef13a 96 // Pointer to character codes currently in use.
RichardE 0:c7d5d58ef13a 97 const UInt8 *characterCodes;
RichardE 0:c7d5d58ef13a 98
RichardE 0:c7d5d58ef13a 99 };
RichardE 0:c7d5d58ef13a 100
RichardE 0:c7d5d58ef13a 101 #endif
RichardE 0:c7d5d58ef13a 102
RichardE 0:c7d5d58ef13a 103 /* END of CharacterNet.h */
RichardE 0:c7d5d58ef13a 104