Draws grids using frames of characters on a Gameduino display. Requires Gameduino library.
CharacterNet.h@0:c7d5d58ef13a, 2012-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 |