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

Committer:
RichardE
Date:
Wed Nov 21 22:17:26 2012 +0000
Revision:
0:c7d5d58ef13a
Child:
1:b5d8f8deafa5
Not finished. Only draws top left character for each cell in grid.

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 0:c7d5d58ef13a 40 /** Set characters 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 0:c7d5d58ef13a 48
RichardE 0:c7d5d58ef13a 49 /** Draw a net of characters.
RichardE 0:c7d5d58ef13a 50 * @param gd The Gameduino to draw on.
RichardE 0:c7d5d58ef13a 51 * @param xco X coordinate for top left.
RichardE 0:c7d5d58ef13a 52 * @param yco Y coordinate for top left.
RichardE 0:c7d5d58ef13a 53 * @param columnCount The number of columns to draw.
RichardE 0:c7d5d58ef13a 54 * @param rowCount The number of rows to draw.
RichardE 0:c7d5d58ef13a 55 * @param cellWidth The width of each cell in characters.
RichardE 0:c7d5d58ef13a 56 * @param cellHeight The height of each cell in characters.
RichardE 0:c7d5d58ef13a 57 */
RichardE 0:c7d5d58ef13a 58 void Draw( Gameduino *gd, UInt8 xco, UInt8 yco, UInt8 columnCount, UInt8 rowCount, UInt8 cellWidth, UInt8 cellHeight );
RichardE 0:c7d5d58ef13a 59
RichardE 0:c7d5d58ef13a 60 /** Draw a single cell.
RichardE 0:c7d5d58ef13a 61 * Note that only the upper and left hand edges are drawn.
RichardE 0:c7d5d58ef13a 62 * @param gd Gameduino to draw on.
RichardE 0:c7d5d58ef13a 63 * @param xco X coordinate for top left.
RichardE 0:c7d5d58ef13a 64 * @param yco Y coordinate for top left.
RichardE 0:c7d5d58ef13a 65 * @param cellWidth Width of cell in characters.
RichardE 0:c7d5d58ef13a 66 * @param cellHeight Height of cell in characters.
RichardE 0:c7d5d58ef13a 67 * @param topRow Set to true if this is a cell in the top row of the net.
RichardE 0:c7d5d58ef13a 68 * @param leftColumn Set to true if this is a cell in the leftmost column of the net.
RichardE 0:c7d5d58ef13a 69 */
RichardE 0:c7d5d58ef13a 70 void DrawCell( Gameduino *gd, UInt8 xco, UInt8 yco, UInt8 cellWidth, UInt8 cellHeight, bool topRow, bool leftColumn );
RichardE 0:c7d5d58ef13a 71
RichardE 0:c7d5d58ef13a 72 /** Get an instance of this class.
RichardE 0:c7d5d58ef13a 73 * @param Returns a pointer to a static instance of this class.
RichardE 0:c7d5d58ef13a 74 */
RichardE 0:c7d5d58ef13a 75 static CharacterNet *GetInstance( void ) {
RichardE 0:c7d5d58ef13a 76 return &instance;
RichardE 0:c7d5d58ef13a 77 }
RichardE 0:c7d5d58ef13a 78
RichardE 0:c7d5d58ef13a 79 private :
RichardE 0:c7d5d58ef13a 80
RichardE 0:c7d5d58ef13a 81 // An instance of this class.
RichardE 0:c7d5d58ef13a 82 static CharacterNet instance;
RichardE 0:c7d5d58ef13a 83
RichardE 0:c7d5d58ef13a 84 // Default character codes to use.
RichardE 0:c7d5d58ef13a 85 static const UInt8 defaultCodes[ CodePosCount ];
RichardE 0:c7d5d58ef13a 86
RichardE 0:c7d5d58ef13a 87 // Pointer to character codes currently in use.
RichardE 0:c7d5d58ef13a 88 const UInt8 *characterCodes;
RichardE 0:c7d5d58ef13a 89
RichardE 0:c7d5d58ef13a 90 };
RichardE 0:c7d5d58ef13a 91
RichardE 0:c7d5d58ef13a 92 #endif
RichardE 0:c7d5d58ef13a 93
RichardE 0:c7d5d58ef13a 94 /* END of CharacterNet.h */
RichardE 0:c7d5d58ef13a 95