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.

Dependents:   UTFT_SSD1289

Fork of TFTLCD by Todor Todorov

Revision:
10:69571adcfad5
Parent:
9:58b328831d0a
Child:
11:aeceefc5f9f2
--- a/lcd_base.h	Fri Dec 07 16:14:13 2012 +0000
+++ b/lcd_base.h	Tue Dec 11 03:18:43 2012 +0000
@@ -68,37 +68,62 @@
  */
 #define COLOR_BLUE              RGB( 0x00, 0x00, 0xFF )
 
-/** \typedef orientation_t
+/** \enum Orientation_enum
  *  \brief Display orientation.
  */
-typedef enum Orientation_enum
+enum Orientation_enum
 {
     PORTRAIT = 0, /**< Display height is bigger than its width. */ 
     LANDSCAPE = 1, /**< Display width is bigger than its height. */
-} orientation_t;
+};
+/** \typedef orientation_t
+ *  \brief Convenience shortcut for display orientation.
+ */
+typedef enum Orientation_enum orientation_t;
 
-/** \typedef align_t
+/** \enum ColorDepth_enum
+ *  \brief Color depth
+ */
+enum ColorDepth_enum
+{
+    RGB16, /**< 16-bit colors, pixels can have 65K distinct color values */
+    RGB18, /**< 18-bit colors, pixels can have 262K distinct color values */
+};
+/** \typedef colordepth_t
+ *  \brief Convenience shortcut for display color depth.
+ */
+typedef enum ColorDepth_enum colordepth_t;
+
+/** \enum Alignment_enum
  *  \brief Horizontal text alignment on the line.
  */
-typedef enum Alignment_enum
+enum Alignment_enum
 {
     LEFT = 0, /**< Left-oriented, naturally gravitate closer to the left edge of the screen. */
     CENTER = 9998, /**< Center-oriented, try to fit in the middle of the available space with equal free space to the left and right of the text. */
     RIGHT = 9999, /**< Right-oriented, naturally gravitate closer to the right edge of the screen, leaving any remaining free space to the left of the text. */
-} align_t;
+};
+/** \typedef align_t
+ *  \brief Convenience shortcut for text alignment.
+ */
+typedef enum Alignment_enum align_t;
 
-/** \typedef font_metrics_t
+/** \struct Font_struct
  *  \brief Describes fonts and their properties.
  *  \sa Comments in fonts.h
  */
-typedef struct Font_struct
+struct Font_struct
 {
     const    char* font; /**< A pointer to the first byte in the font. */
     unsigned char  width; /**< The width of each character, in pixels. */
     unsigned char  height; /**< Height of each character, in pixels. */
     unsigned char  offset; /**< Offset of the first character in the font. */
     unsigned char  numchars; /**< Count of the available characters in the font. */
-} font_metrics_t;
+};
+/** \typedef font_metrics_t
+ *  \brief Convenience shortcut for fonts properties.
+ */
+typedef struct Font_struct font_metrics_t;
 
 /** Base class for LCD implementations.
  *
@@ -405,6 +430,14 @@
      */
     virtual void ClearXY( void );
     
+    /** Sets the color of the pixel at the address pointer of the controller.
+     *
+     * This function is to be provided by each implementation separately in
+     * order to account for different color depth used by the controller.
+     * \param color The color of the pixel.
+     */
+    virtual void SetPixelColor( unsigned short color ) = 0;
+    
     /** Draws a horizontal line.
      *
      * This is a utility function to draw horizontal-only lines