This is a port of Henning Kralsen's UTFT library for Arduino/chipKIT to mbed, refactored to make full use of C inheritance and access control, in order to reduce work when implementing new drivers and at the same time make the code more readable and easier to maintain. As of now supported are SSD1289 (16-bit interface), HX8340-B (serial interface) and ST7735 (serial interface). Drivers for other controllers will be added as time and resources to acquire the displays to test the code permit.
Fork of TFTLCD by
Diff: lcd_base.h
- Revision:
- 2:81ed304b7e9b
- Parent:
- 0:881ff0b71102
- Child:
- 3:64a5b67d5b51
--- a/lcd_base.h Sat Dec 01 23:49:10 2012 +0000 +++ b/lcd_base.h Sun Dec 02 00:12:43 2012 +0000 @@ -33,9 +33,18 @@ #include "mbed.h" #include "fonts.h" +/** \def HIGH + * \brief User-friendly high pin level designation. + */ #define HIGH 1 +/** \def LOW + * \brief User-friendly low pin level designation. + */ #define LOW 0 +/** \def swap( type, a, b ) + * \brief Convenience macro to swap two values. + */ #define swap( type, a, b ) { type tmp = ( a ); ( a ) = ( b ); ( b ) = tmp; } /** \def RGB(r,g,b) @@ -326,7 +335,7 @@ * \remarks Commands are controller-specific and this function needs to * be implemented separately for each available controller. */ - virtual void writeCmd( unsigned short cmd ) = 0; + virtual void WriteCmd( unsigned short cmd ) = 0; /** Sends pixel data to the display. * @@ -334,7 +343,7 @@ * \remarks Sendin data is controller-specific and this function needs to * be implemented separately for each available controller. */ - virtual void writeData( unsigned short data ) = 0; + virtual void WriteData( unsigned short data ) = 0; /** Sends both command and data to the display controller. * @@ -344,7 +353,7 @@ * \param cmd The display command. * \param data The display pixel data. */ - virtual void writeCmdData( unsigned short cmd, unsigned short data ); + virtual void WriteCmdData( unsigned short cmd, unsigned short data ); /** Assigns a chunk of the display memory to receive data. * @@ -362,16 +371,63 @@ * \remarks Addressing commands are controller-specific and this function needs to be * implemented separately for each available controller. */ - virtual void setXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) = 0; + virtual void SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) = 0; /** Resets the memory address for the next display write operation to the screen origins (0,0). */ - virtual void clearXY( void ); + virtual void ClearXY( void ); + + /** Draws a horizontal line. + * + * This is a utility function to draw horizontal-only lines + * for reduced code complexity and faster execution. + * + * \param x X coordinate of the starting point of the line. + * \param y Y coordinate of the starting point of the line. + * \param len Length of the line. + * \param color The color to use to draw the line. By default the global foreground color is used ( -2 ), + * -1 switches to the default background color, or any other RGB-565 color can be used. + */ + virtual void DrawHLine( unsigned short x, unsigned short y, unsigned short len, int color = -2 ); - virtual void drawHLine( unsigned short x, unsigned short y, unsigned short len, int color = -2 ); - virtual void drawVLine( unsigned short x, unsigned short y, unsigned short len, int color = -2 ); - virtual void printChar( char c, unsigned short x, unsigned short y, int fgColor = -2, int bgColor = -1 ); - virtual void rotateChar( char c, unsigned short x, unsigned short y, int pos, int fgColor = -2, int bgColor = -1, unsigned short deg = 0 ); + /** Draws a vertical line. + * + * This is a utility function to draw vertical-only lines + * for reduced code complexity and faster execution. + * + * \param x X coordinate of the starting point of the line. + * \param y Y coordinate of the starting point of the line. + * \param len Height of the line. + * \param color The color to use to draw the line. By default the global foreground color is used ( -2 ), + * -1 switches to the default background color, or any other RGB-565 color can be used. + */ + virtual void DrawVLine( unsigned short x, unsigned short y, unsigned short len, int color = -2 ); + + /** Prints a character at the given position and using the given color. + * + * \param c The character. + * \param x X coordinate of the character position. + * \param y Y coordinate of the character position. + * \param fgColor Foreground color for drawing. By default the global foreground color is used ( -2 ), + * -1 switches to the default background color, or any other RGB-565 color can be used. + * \param bgColor Background color for drawing. By default the global background color is used ( -1 ), + * -2 switches to the default foreground color, or any other RGB-565 color can be used. + */ + virtual void PrintChar( char c, unsigned short x, unsigned short y, int fgColor = -2, int bgColor = -1 ); + + /** Prints a character at the given position and using the given color and with the given rotation. + * + * \param c The character. + * \param x X coordinate of the character position. + * \param y Y coordinate of the character position. + * \param pos Position of the character in the string from which it originates (used to rotate a whole string). + * \param fgColor Foreground color for drawing. By default the global foreground color is used ( -2 ), + * -1 switches to the default background color, or any other RGB-565 color can be used. + * \param bgColor Background color for drawing. By default the global background color is used ( -1 ), + * -2 switches to the default foreground color, or any other RGB-565 color can be used. + * \param deg The angle at which to rotate. + */ + virtual void RotateChar( char c, unsigned short x, unsigned short y, int pos, int fgColor = -2, int bgColor = -1, unsigned short deg = 0 ); protected: unsigned short _disp_width, _disp_height;