Uses the same fonts as the SPI_TFT_ILI9341 Library (I have many, and a html/php font editor for that)

Committer:
JackB
Date:
Wed Nov 23 01:05:59 2016 +0000
Revision:
0:cc1fb45bc3ad
Child:
1:8e447a4c8995
Uses the same fonts as the SPI_TFT_ILI9341 Library (I have many, and a html/php font editor for that)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JackB 0:cc1fb45bc3ad 1 #ifndef TFT_22_ILI9225_h
JackB 0:cc1fb45bc3ad 2 #define TFT_22_ILI9225_h
JackB 0:cc1fb45bc3ad 3 #include "mbed.h"
JackB 0:cc1fb45bc3ad 4
JackB 0:cc1fb45bc3ad 5 #define FONT_LENGTH 0
JackB 0:cc1fb45bc3ad 6 #define FONT_HORZ 1
JackB 0:cc1fb45bc3ad 7 #define FONT_VERT 2
JackB 0:cc1fb45bc3ad 8 #define FONT_BYTES_VERT 3
JackB 0:cc1fb45bc3ad 9
JackB 0:cc1fb45bc3ad 10 #define ILI9225_CHARS_PER_LINE 36
JackB 0:cc1fb45bc3ad 11
JackB 0:cc1fb45bc3ad 12 /* ILI9225 screen size */
JackB 0:cc1fb45bc3ad 13 #define ILI9225_LCD_WIDTH 176
JackB 0:cc1fb45bc3ad 14 #define ILI9225_LCD_HEIGHT 220
JackB 0:cc1fb45bc3ad 15
JackB 0:cc1fb45bc3ad 16 #define ILI9225_PORTRAIT_B 0 // Connector at the bottom
JackB 0:cc1fb45bc3ad 17 #define ILI9225_LANDSCAPE_R 1 // Connector at the right side
JackB 0:cc1fb45bc3ad 18 #define ILI9225_PORTRAIT_T 2 // Connector at the top side
JackB 0:cc1fb45bc3ad 19 #define ILI9225_LANDSCAPE_L 3 // Connector at the left side
JackB 0:cc1fb45bc3ad 20
JackB 0:cc1fb45bc3ad 21 /* ILI9225 LCD Registers */
JackB 0:cc1fb45bc3ad 22 #define ILI9225_DRIVER_OUTPUT_CTRL (0x01u) // Driver Output Control
JackB 0:cc1fb45bc3ad 23 #define ILI9225_LCD_AC_DRIVING_CTRL (0x02u) // LCD AC Driving Control
JackB 0:cc1fb45bc3ad 24 #define ILI9225_ENTRY_MODE (0x03u) // Entry Mode
JackB 0:cc1fb45bc3ad 25 #define ILI9225_DISP_CTRL1 (0x07u) // Display Control 1
JackB 0:cc1fb45bc3ad 26 #define ILI9225_BLANK_PERIOD_CTRL1 (0x08u) // Blank Period Control
JackB 0:cc1fb45bc3ad 27 #define ILI9225_FRAME_CYCLE_CTRL (0x0Bu) // Frame Cycle Control
JackB 0:cc1fb45bc3ad 28 #define ILI9225_INTERFACE_CTRL (0x0Cu) // Interface Control
JackB 0:cc1fb45bc3ad 29 #define ILI9225_OSC_CTRL (0x0Fu) // Osc Control
JackB 0:cc1fb45bc3ad 30 #define ILI9225_POWER_CTRL1 (0x10u) // Power Control 1
JackB 0:cc1fb45bc3ad 31 #define ILI9225_POWER_CTRL2 (0x11u) // Power Control 2
JackB 0:cc1fb45bc3ad 32 #define ILI9225_POWER_CTRL3 (0x12u) // Power Control 3
JackB 0:cc1fb45bc3ad 33 #define ILI9225_POWER_CTRL4 (0x13u) // Power Control 4
JackB 0:cc1fb45bc3ad 34 #define ILI9225_POWER_CTRL5 (0x14u) // Power Control 5
JackB 0:cc1fb45bc3ad 35 #define ILI9225_VCI_RECYCLING (0x15u) // VCI Recycling
JackB 0:cc1fb45bc3ad 36 #define ILI9225_RAM_ADDR_SET1 (0x20u) // Horizontal GRAM Address Set
JackB 0:cc1fb45bc3ad 37 #define ILI9225_RAM_ADDR_SET2 (0x21u) // Vertical GRAM Address Set
JackB 0:cc1fb45bc3ad 38 #define ILI9225_GRAM_DATA_REG (0x22u) // GRAM Data Register
JackB 0:cc1fb45bc3ad 39 #define ILI9225_GATE_SCAN_CTRL (0x30u) // Gate Scan Control Register
JackB 0:cc1fb45bc3ad 40 #define ILI9225_VERTICAL_SCROLL_CTRL1 (0x31u) // Vertical Scroll Control 1 Register
JackB 0:cc1fb45bc3ad 41 #define ILI9225_VERTICAL_SCROLL_CTRL2 (0x32u) // Vertical Scroll Control 2 Register
JackB 0:cc1fb45bc3ad 42 #define ILI9225_VERTICAL_SCROLL_CTRL3 (0x33u) // Vertical Scroll Control 3 Register
JackB 0:cc1fb45bc3ad 43 #define ILI9225_PARTIAL_DRIVING_POS1 (0x34u) // Partial Driving Position 1 Register
JackB 0:cc1fb45bc3ad 44 #define ILI9225_PARTIAL_DRIVING_POS2 (0x35u) // Partial Driving Position 2 Register
JackB 0:cc1fb45bc3ad 45 #define ILI9225_HORIZONTAL_WINDOW_ADDR1 (0x36u) // Horizontal Address Start Position
JackB 0:cc1fb45bc3ad 46 #define ILI9225_HORIZONTAL_WINDOW_ADDR2 (0x37u) // Horizontal Address End Position
JackB 0:cc1fb45bc3ad 47 #define ILI9225_VERTICAL_WINDOW_ADDR1 (0x38u) // Vertical Address Start Position
JackB 0:cc1fb45bc3ad 48 #define ILI9225_VERTICAL_WINDOW_ADDR2 (0x39u) // Vertical Address End Position
JackB 0:cc1fb45bc3ad 49 #define ILI9225_GAMMA_CTRL1 (0x50u) // Gamma Control 1
JackB 0:cc1fb45bc3ad 50 #define ILI9225_GAMMA_CTRL2 (0x51u) // Gamma Control 2
JackB 0:cc1fb45bc3ad 51 #define ILI9225_GAMMA_CTRL3 (0x52u) // Gamma Control 3
JackB 0:cc1fb45bc3ad 52 #define ILI9225_GAMMA_CTRL4 (0x53u) // Gamma Control 4
JackB 0:cc1fb45bc3ad 53 #define ILI9225_GAMMA_CTRL5 (0x54u) // Gamma Control 5
JackB 0:cc1fb45bc3ad 54 #define ILI9225_GAMMA_CTRL6 (0x55u) // Gamma Control 6
JackB 0:cc1fb45bc3ad 55 #define ILI9225_GAMMA_CTRL7 (0x56u) // Gamma Control 7
JackB 0:cc1fb45bc3ad 56 #define ILI9225_GAMMA_CTRL8 (0x57u) // Gamma Control 8
JackB 0:cc1fb45bc3ad 57 #define ILI9225_GAMMA_CTRL9 (0x58u) // Gamma Control 9
JackB 0:cc1fb45bc3ad 58 #define ILI9225_GAMMA_CTRL10 (0x59u) // Gamma Control 10
JackB 0:cc1fb45bc3ad 59
JackB 0:cc1fb45bc3ad 60 #define ILI9225C_INVOFF 0x20
JackB 0:cc1fb45bc3ad 61 #define ILI9225C_INVON 0x21
JackB 0:cc1fb45bc3ad 62
JackB 0:cc1fb45bc3ad 63
JackB 0:cc1fb45bc3ad 64 /* RGB 24-bits color table definition (RGB888). */
JackB 0:cc1fb45bc3ad 65 #define RGB888_RGB565(color) ((((color) >> 19) & 0x1f) << 11) | ((((color) >> 10) & 0x3f) << 5) | (((color) >> 3) & 0x1f)
JackB 0:cc1fb45bc3ad 66
JackB 0:cc1fb45bc3ad 67 #define COLOR_BLACK RGB888_RGB565(0x000000u)
JackB 0:cc1fb45bc3ad 68 #define COLOR_WHITE RGB888_RGB565(0xFFFFFFu)
JackB 0:cc1fb45bc3ad 69 #define COLOR_BLUE RGB888_RGB565(0x0000FFu)
JackB 0:cc1fb45bc3ad 70 #define COLOR_GREEN RGB888_RGB565(0x00FF00u)
JackB 0:cc1fb45bc3ad 71 #define COLOR_RED RGB888_RGB565(0xFF0000u)
JackB 0:cc1fb45bc3ad 72 #define COLOR_NAVY RGB888_RGB565(0x000080u)
JackB 0:cc1fb45bc3ad 73 #define COLOR_DARKBLUE RGB888_RGB565(0x00008Bu)
JackB 0:cc1fb45bc3ad 74 #define COLOR_DARKGREEN RGB888_RGB565(0x006400u)
JackB 0:cc1fb45bc3ad 75 #define COLOR_DARKCYAN RGB888_RGB565(0x008B8Bu)
JackB 0:cc1fb45bc3ad 76 #define COLOR_CYAN RGB888_RGB565(0x00FFFFu)
JackB 0:cc1fb45bc3ad 77 #define COLOR_TURQUOISE RGB888_RGB565(0x40E0D0u)
JackB 0:cc1fb45bc3ad 78 #define COLOR_INDIGO RGB888_RGB565(0x4B0082u)
JackB 0:cc1fb45bc3ad 79 #define COLOR_DARKRED RGB888_RGB565(0x800000u)
JackB 0:cc1fb45bc3ad 80 #define COLOR_OLIVE RGB888_RGB565(0x808000u)
JackB 0:cc1fb45bc3ad 81 #define COLOR_GRAY RGB888_RGB565(0x808080u)
JackB 0:cc1fb45bc3ad 82 #define COLOR_SKYBLUE RGB888_RGB565(0x87CEEBu)
JackB 0:cc1fb45bc3ad 83 #define COLOR_BLUEVIOLET RGB888_RGB565(0x8A2BE2u)
JackB 0:cc1fb45bc3ad 84 #define COLOR_LIGHTGREEN RGB888_RGB565(0x90EE90u)
JackB 0:cc1fb45bc3ad 85 #define COLOR_DARKVIOLET RGB888_RGB565(0x9400D3u)
JackB 0:cc1fb45bc3ad 86 #define COLOR_YELLOWGREEN RGB888_RGB565(0x9ACD32u)
JackB 0:cc1fb45bc3ad 87 #define COLOR_BROWN RGB888_RGB565(0xA52A2Au)
JackB 0:cc1fb45bc3ad 88 #define COLOR_DARKGRAY RGB888_RGB565(0xA9A9A9u)
JackB 0:cc1fb45bc3ad 89 #define COLOR_SIENNA RGB888_RGB565(0xA0522Du)
JackB 0:cc1fb45bc3ad 90 #define COLOR_LIGHTBLUE RGB888_RGB565(0xADD8E6u)
JackB 0:cc1fb45bc3ad 91 #define COLOR_GREENYELLOW RGB888_RGB565(0xADFF2Fu)
JackB 0:cc1fb45bc3ad 92 #define COLOR_SILVER RGB888_RGB565(0xC0C0C0u)
JackB 0:cc1fb45bc3ad 93 #define COLOR_LIGHTGREY RGB888_RGB565(0xD3D3D3u)
JackB 0:cc1fb45bc3ad 94 #define COLOR_LIGHTCYAN RGB888_RGB565(0xE0FFFFu)
JackB 0:cc1fb45bc3ad 95 #define COLOR_VIOLET RGB888_RGB565(0xEE82EEu)
JackB 0:cc1fb45bc3ad 96 #define COLOR_AZUR RGB888_RGB565(0xF0FFFFu)
JackB 0:cc1fb45bc3ad 97 #define COLOR_BEIGE RGB888_RGB565(0xF5F5DCu)
JackB 0:cc1fb45bc3ad 98 #define COLOR_MAGENTA RGB888_RGB565(0xFF00FFu)
JackB 0:cc1fb45bc3ad 99 #define COLOR_TOMATO RGB888_RGB565(0xFF6347u)
JackB 0:cc1fb45bc3ad 100 #define COLOR_GOLD RGB888_RGB565(0xFFD700u)
JackB 0:cc1fb45bc3ad 101 #define COLOR_ORANGE RGB888_RGB565(0xFFA500u)
JackB 0:cc1fb45bc3ad 102 #define COLOR_SNOW RGB888_RGB565(0xFFFAFAu)
JackB 0:cc1fb45bc3ad 103 #define COLOR_YELLOW RGB888_RGB565(0xFFFF00u)
JackB 0:cc1fb45bc3ad 104
JackB 0:cc1fb45bc3ad 105 /* Font defines */
JackB 0:cc1fb45bc3ad 106 #define FONT_HEADER_SIZE 4 // 1: pixel width of 1 font character, 2: pixel height,
JackB 0:cc1fb45bc3ad 107 #define readFontByte(x) pgm_read_byte(&cfont.font[x])
JackB 0:cc1fb45bc3ad 108
JackB 0:cc1fb45bc3ad 109 extern uint8_t Terminal6x8[];
JackB 0:cc1fb45bc3ad 110 extern uint8_t Terminal11x16[];
JackB 0:cc1fb45bc3ad 111 extern uint8_t Terminal12x16[];
JackB 0:cc1fb45bc3ad 112 extern uint8_t Trebuchet_MS16x21[];
JackB 0:cc1fb45bc3ad 113
JackB 0:cc1fb45bc3ad 114 struct _currentFont
JackB 0:cc1fb45bc3ad 115 {
JackB 0:cc1fb45bc3ad 116 uint8_t* font;
JackB 0:cc1fb45bc3ad 117 uint8_t width;
JackB 0:cc1fb45bc3ad 118 uint8_t height;
JackB 0:cc1fb45bc3ad 119 uint8_t offset;
JackB 0:cc1fb45bc3ad 120 uint8_t numchars;
JackB 0:cc1fb45bc3ad 121 uint8_t nbrows;
JackB 0:cc1fb45bc3ad 122 };
JackB 0:cc1fb45bc3ad 123
JackB 0:cc1fb45bc3ad 124 /// Main and core class
JackB 0:cc1fb45bc3ad 125 class TFT_22_ILI9225 : public Stream {
JackB 0:cc1fb45bc3ad 126
JackB 0:cc1fb45bc3ad 127 public:
JackB 0:cc1fb45bc3ad 128
JackB 0:cc1fb45bc3ad 129 TFT_22_ILI9225(PinName sdi, PinName clk, PinName cs, PinName rs, PinName rst, PinName led, const char *name);
JackB 0:cc1fb45bc3ad 130 //TFT_22_ILI9225(PinName RST, PinName RS, PinName CS, PinName LED);
JackB 0:cc1fb45bc3ad 131
JackB 0:cc1fb45bc3ad 132 virtual bool claim (FILE *stream);
JackB 0:cc1fb45bc3ad 133
JackB 0:cc1fb45bc3ad 134 /// Initialization
JackB 0:cc1fb45bc3ad 135 void init(void);
JackB 0:cc1fb45bc3ad 136
JackB 0:cc1fb45bc3ad 137 /// Clear the screen
JackB 0:cc1fb45bc3ad 138 void cls(void);
JackB 0:cc1fb45bc3ad 139
JackB 0:cc1fb45bc3ad 140 /// fill the screen with color:
JackB 0:cc1fb45bc3ad 141 void fill(uint16_t color);
JackB 0:cc1fb45bc3ad 142
JackB 0:cc1fb45bc3ad 143 /// Invert screen
JackB 0:cc1fb45bc3ad 144 /// @param flag true to invert, false for normal screen
JackB 0:cc1fb45bc3ad 145 void invert(bool flag);
JackB 0:cc1fb45bc3ad 146
JackB 0:cc1fb45bc3ad 147 /// Switch backlight on or off
JackB 0:cc1fb45bc3ad 148 /// @param flag true=on, false=off
JackB 0:cc1fb45bc3ad 149 void setBacklight(double value);
JackB 0:cc1fb45bc3ad 150
JackB 0:cc1fb45bc3ad 151 /// Switch backlight off
JackB 0:cc1fb45bc3ad 152 void setBacklightOff(void);
JackB 0:cc1fb45bc3ad 153
JackB 0:cc1fb45bc3ad 154 /// Switch backlight on
JackB 0:cc1fb45bc3ad 155 void setBacklightOn(void);
JackB 0:cc1fb45bc3ad 156
JackB 0:cc1fb45bc3ad 157 /// Switch display on or off
JackB 0:cc1fb45bc3ad 158 /// @param flag true=on, false=off
JackB 0:cc1fb45bc3ad 159 void setDisplay(bool flag);
JackB 0:cc1fb45bc3ad 160
JackB 0:cc1fb45bc3ad 161 /// Set orientation
JackB 0:cc1fb45bc3ad 162 /// @param orientation orientation, 0=portrait, 1=right rotated landscape, 2=reverse portrait, 3=left rotated landscape
JackB 0:cc1fb45bc3ad 163 void setOrientation(uint8_t orientation);
JackB 0:cc1fb45bc3ad 164
JackB 0:cc1fb45bc3ad 165 /// Get orientation
JackB 0:cc1fb45bc3ad 166 /// @return orientation orientation, 0=portrait, 1=right rotated landscape, 2=reverse portrait, 3=left rotated landscape
JackB 0:cc1fb45bc3ad 167 uint8_t getOrientation(void);
JackB 0:cc1fb45bc3ad 168
JackB 0:cc1fb45bc3ad 169 /// Font size, x-axis
JackB 0:cc1fb45bc3ad 170 /// @return horizontal size of current font, in pixels
JackB 0:cc1fb45bc3ad 171 uint8_t fontX(void);
JackB 0:cc1fb45bc3ad 172
JackB 0:cc1fb45bc3ad 173 /// Font size, y-axis
JackB 0:cc1fb45bc3ad 174 /// @return vertical size of current font, in pixels
JackB 0:cc1fb45bc3ad 175 uint8_t fontY(void);
JackB 0:cc1fb45bc3ad 176
JackB 0:cc1fb45bc3ad 177 /// Screen size, x-axis
JackB 0:cc1fb45bc3ad 178 /// @return horizontal size of the screen, in pixels
JackB 0:cc1fb45bc3ad 179 /// @note 219 means 0..219 coordinates (decimal)
JackB 0:cc1fb45bc3ad 180 uint16_t maxX(void);
JackB 0:cc1fb45bc3ad 181
JackB 0:cc1fb45bc3ad 182 /// Screen size, x-axis
JackB 0:cc1fb45bc3ad 183 /// @return horizontal size of the screen, in pixels
JackB 0:cc1fb45bc3ad 184 /// @note 220 means 220 pixels and thus 0..219 coordinates (decimal)
JackB 0:cc1fb45bc3ad 185 uint16_t width(void);
JackB 0:cc1fb45bc3ad 186
JackB 0:cc1fb45bc3ad 187 /// Screen size, y-axis
JackB 0:cc1fb45bc3ad 188 /// @return vertical size of the screen, in pixels
JackB 0:cc1fb45bc3ad 189 /// @note 175 means 0..175 coordinates (decimal)
JackB 0:cc1fb45bc3ad 190 uint16_t maxY(void);
JackB 0:cc1fb45bc3ad 191
JackB 0:cc1fb45bc3ad 192 /// Screen size, y-axis
JackB 0:cc1fb45bc3ad 193 /// @return vertical size of the screen, in pixels
JackB 0:cc1fb45bc3ad 194 /// @note 176 means 176 pixels and thus 0..175 coordinates (decimal)
JackB 0:cc1fb45bc3ad 195 uint16_t height(void);
JackB 0:cc1fb45bc3ad 196
JackB 0:cc1fb45bc3ad 197 /// Draw circle
JackB 0:cc1fb45bc3ad 198 /// @param x0 center, point coordinate, x-axis
JackB 0:cc1fb45bc3ad 199 /// @param y0 center, point coordinate, y-axis
JackB 0:cc1fb45bc3ad 200 /// @param radius radius
JackB 0:cc1fb45bc3ad 201 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 202 void drawCircle(uint16_t x0, uint16_t y0, uint16_t radius, uint16_t color);
JackB 0:cc1fb45bc3ad 203
JackB 0:cc1fb45bc3ad 204 /// Draw solid circle
JackB 0:cc1fb45bc3ad 205 /// @param x0 center, point coordinate, x-axis
JackB 0:cc1fb45bc3ad 206 /// @param y0 center, point coordinate, y-axis
JackB 0:cc1fb45bc3ad 207 /// @param radius radius
JackB 0:cc1fb45bc3ad 208 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 209 void fillCircle(uint8_t x0, uint8_t y0, uint8_t radius, uint16_t color);
JackB 0:cc1fb45bc3ad 210
JackB 0:cc1fb45bc3ad 211 /// Draw line, rectangle coordinates
JackB 0:cc1fb45bc3ad 212 /// @param x1 top left coordinate, x-axis
JackB 0:cc1fb45bc3ad 213 /// @param y1 top left coordinate, y-axis
JackB 0:cc1fb45bc3ad 214 /// @param x2 bottom right coordinate, x-axis
JackB 0:cc1fb45bc3ad 215 /// @param y2 bottom right coordinate, y-axis
JackB 0:cc1fb45bc3ad 216 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 217 void drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
JackB 0:cc1fb45bc3ad 218
JackB 0:cc1fb45bc3ad 219 /// Draw rectangle, rectangle coordinates
JackB 0:cc1fb45bc3ad 220 /// @param x1 top left coordinate, x-axis
JackB 0:cc1fb45bc3ad 221 /// @param y1 top left coordinate, y-axis
JackB 0:cc1fb45bc3ad 222 /// @param x2 bottom right coordinate, x-axis
JackB 0:cc1fb45bc3ad 223 /// @param y2 bottom right coordinate, y-axis
JackB 0:cc1fb45bc3ad 224 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 225 void drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
JackB 0:cc1fb45bc3ad 226
JackB 0:cc1fb45bc3ad 227 /// Draw solid rectangle, rectangle coordinates
JackB 0:cc1fb45bc3ad 228 /// @param x1 top left coordinate, x-axis
JackB 0:cc1fb45bc3ad 229 /// @param y1 top left coordinate, y-axis
JackB 0:cc1fb45bc3ad 230 /// @param x2 bottom right coordinate, x-axis
JackB 0:cc1fb45bc3ad 231 /// @param y2 bottom right coordinate, y-axis
JackB 0:cc1fb45bc3ad 232 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 233 void fillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
JackB 0:cc1fb45bc3ad 234
JackB 0:cc1fb45bc3ad 235 /// Draw pixel
JackB 0:cc1fb45bc3ad 236 /// @param x1 point coordinate, x-axis
JackB 0:cc1fb45bc3ad 237 /// @param y1 point coordinate, y-axis
JackB 0:cc1fb45bc3ad 238 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 239 void drawPixel(uint16_t x1, uint16_t y1, uint16_t color);
JackB 0:cc1fb45bc3ad 240
JackB 0:cc1fb45bc3ad 241 /// Calculate 16-bit color from 8-bit Red-Green-Blue components
JackB 0:cc1fb45bc3ad 242 /// @param red red component, 0x00..0xff
JackB 0:cc1fb45bc3ad 243 /// @param green green component, 0x00..0xff
JackB 0:cc1fb45bc3ad 244 /// @param blue blue component, 0x00..0xff
JackB 0:cc1fb45bc3ad 245 /// @return 16-bit color
JackB 0:cc1fb45bc3ad 246 uint16_t setColor(uint8_t red, uint8_t green, uint8_t blue);
JackB 0:cc1fb45bc3ad 247
JackB 0:cc1fb45bc3ad 248 /// Calculate 8-bit Red-Green-Blue components from 16-bit color
JackB 0:cc1fb45bc3ad 249 /// @param rgb 16-bit color
JackB 0:cc1fb45bc3ad 250 /// @param red red component, 0x00..0xff
JackB 0:cc1fb45bc3ad 251 /// @param green green component, 0x00..0xff
JackB 0:cc1fb45bc3ad 252 /// @param blue blue component, 0x00..0xff
JackB 0:cc1fb45bc3ad 253 void splitColor(uint16_t rgb, uint8_t &red, uint8_t &green, uint8_t &blue);
JackB 0:cc1fb45bc3ad 254
JackB 0:cc1fb45bc3ad 255 /// Draw triangle, triangle coordinates
JackB 0:cc1fb45bc3ad 256 /// @param x1 corner 1 coordinate, x-axis
JackB 0:cc1fb45bc3ad 257 /// @param y1 corner 1 coordinate, y-axis
JackB 0:cc1fb45bc3ad 258 /// @param x2 corner 2 coordinate, x-axis
JackB 0:cc1fb45bc3ad 259 /// @param y2 corner 2 coordinate, y-axis
JackB 0:cc1fb45bc3ad 260 /// @param x3 corner 3 coordinate, x-axis
JackB 0:cc1fb45bc3ad 261 /// @param y3 corner 3 coordinate, y-axis
JackB 0:cc1fb45bc3ad 262 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 263 void drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color);
JackB 0:cc1fb45bc3ad 264
JackB 0:cc1fb45bc3ad 265 /// Draw solid triangle, triangle coordinates
JackB 0:cc1fb45bc3ad 266 /// @param x1 corner 1 coordinate, x-axis
JackB 0:cc1fb45bc3ad 267 /// @param y1 corner 1 coordinate, y-axis
JackB 0:cc1fb45bc3ad 268 /// @param x2 corner 2 coordinate, x-axis
JackB 0:cc1fb45bc3ad 269 /// @param y2 corner 2 coordinate, y-axis
JackB 0:cc1fb45bc3ad 270 /// @param x3 corner 3 coordinate, x-axis
JackB 0:cc1fb45bc3ad 271 /// @param y3 corner 3 coordinate, y-axis
JackB 0:cc1fb45bc3ad 272 /// @param color 16-bit color
JackB 0:cc1fb45bc3ad 273 void fillTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color);
JackB 0:cc1fb45bc3ad 274
JackB 0:cc1fb45bc3ad 275 /// Set current font
JackB 0:cc1fb45bc3ad 276 /// @param font Font name
JackB 0:cc1fb45bc3ad 277 void setFont(uint8_t* font);
JackB 0:cc1fb45bc3ad 278
JackB 0:cc1fb45bc3ad 279 /** put a char on the screen
JackB 0:cc1fb45bc3ad 280 *
JackB 0:cc1fb45bc3ad 281 * @param value char to print
JackB 0:cc1fb45bc3ad 282 * @returns printed char
JackB 0:cc1fb45bc3ad 283 *
JackB 0:cc1fb45bc3ad 284 */
JackB 0:cc1fb45bc3ad 285 virtual int putc(int value);
JackB 0:cc1fb45bc3ad 286
JackB 0:cc1fb45bc3ad 287 /** draw a character on given position out of the active font to the TFT
JackB 0:cc1fb45bc3ad 288 *
JackB 0:cc1fb45bc3ad 289 * @param x x-position of char (top left)
JackB 0:cc1fb45bc3ad 290 * @param y y-position
JackB 0:cc1fb45bc3ad 291 * @param c char to print
JackB 0:cc1fb45bc3ad 292 *
JackB 0:cc1fb45bc3ad 293 */
JackB 0:cc1fb45bc3ad 294 void character(int x, int y, int c);
JackB 0:cc1fb45bc3ad 295
JackB 0:cc1fb45bc3ad 296 void foreground(uint16_t colour);
JackB 0:cc1fb45bc3ad 297
JackB 0:cc1fb45bc3ad 298 void background(uint16_t colour);
JackB 0:cc1fb45bc3ad 299 void locate(int x, int y);
JackB 0:cc1fb45bc3ad 300 void gotoxy(int x, int y);
JackB 0:cc1fb45bc3ad 301 void home(void);
JackB 0:cc1fb45bc3ad 302 void linespacing(int line_spacing);
JackB 0:cc1fb45bc3ad 303
JackB 0:cc1fb45bc3ad 304 /** calculate the max number of char in a line
JackB 0:cc1fb45bc3ad 305 *
JackB 0:cc1fb45bc3ad 306 * @returns max columns
JackB 0:cc1fb45bc3ad 307 * depends on actual font size
JackB 0:cc1fb45bc3ad 308 *
JackB 0:cc1fb45bc3ad 309 */
JackB 0:cc1fb45bc3ad 310 virtual int columns(void);
JackB 0:cc1fb45bc3ad 311
JackB 0:cc1fb45bc3ad 312 /** calculate the max number of columns
JackB 0:cc1fb45bc3ad 313 *
JackB 0:cc1fb45bc3ad 314 * @returns max column
JackB 0:cc1fb45bc3ad 315 * depends on actual font size
JackB 0:cc1fb45bc3ad 316 *
JackB 0:cc1fb45bc3ad 317 */
JackB 0:cc1fb45bc3ad 318 virtual int rows(void);
JackB 0:cc1fb45bc3ad 319
JackB 0:cc1fb45bc3ad 320 void unicode2ascii(char *uni_str, char *ascii_str);
JackB 0:cc1fb45bc3ad 321 void roundRectangle(int x0, int y0, int x1, int y1, int rad, bool fill, int color);
JackB 0:cc1fb45bc3ad 322
JackB 0:cc1fb45bc3ad 323 void window (unsigned int x, unsigned int y, unsigned int w, unsigned int h);
JackB 0:cc1fb45bc3ad 324
JackB 0:cc1fb45bc3ad 325
JackB 0:cc1fb45bc3ad 326 private:
JackB 0:cc1fb45bc3ad 327 SPI spi;
JackB 0:cc1fb45bc3ad 328
JackB 0:cc1fb45bc3ad 329 unsigned char* font;
JackB 0:cc1fb45bc3ad 330 unsigned int char_x;
JackB 0:cc1fb45bc3ad 331 unsigned int char_y;
JackB 0:cc1fb45bc3ad 332 unsigned int char_line_spacing;
JackB 0:cc1fb45bc3ad 333
JackB 0:cc1fb45bc3ad 334 // colours
JackB 0:cc1fb45bc3ad 335 uint16_t _foreground;
JackB 0:cc1fb45bc3ad 336 uint16_t _background;
JackB 0:cc1fb45bc3ad 337
JackB 0:cc1fb45bc3ad 338 void _swap(uint16_t &a, uint16_t &b);
JackB 0:cc1fb45bc3ad 339 void _setWindowMax(void);
JackB 0:cc1fb45bc3ad 340 void _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
JackB 0:cc1fb45bc3ad 341 void _orientCoordinates(uint16_t &x1, uint16_t &y1);
JackB 0:cc1fb45bc3ad 342 void _writeRegister(uint16_t reg, uint16_t data);
JackB 0:cc1fb45bc3ad 343
JackB 0:cc1fb45bc3ad 344 void _startData(void);
JackB 0:cc1fb45bc3ad 345 void _endData(void);
JackB 0:cc1fb45bc3ad 346 void _writeData(uint16_t data);
JackB 0:cc1fb45bc3ad 347 void _writeCommand(uint8_t HI, uint8_t LO);
JackB 0:cc1fb45bc3ad 348
JackB 0:cc1fb45bc3ad 349 float _brightness;
JackB 0:cc1fb45bc3ad 350
JackB 0:cc1fb45bc3ad 351 uint16_t _maxX, _maxY;
JackB 0:cc1fb45bc3ad 352
JackB 0:cc1fb45bc3ad 353 DigitalOut _rst;
JackB 0:cc1fb45bc3ad 354 DigitalOut _rs;
JackB 0:cc1fb45bc3ad 355 DigitalOut _cs;
JackB 0:cc1fb45bc3ad 356
JackB 0:cc1fb45bc3ad 357 uint8_t _orientation;
JackB 0:cc1fb45bc3ad 358
JackB 0:cc1fb45bc3ad 359 PwmOut _led;
JackB 0:cc1fb45bc3ad 360
JackB 0:cc1fb45bc3ad 361 _currentFont cfont;
JackB 0:cc1fb45bc3ad 362
JackB 0:cc1fb45bc3ad 363 // character location
JackB 0:cc1fb45bc3ad 364 uint16_t _column;
JackB 0:cc1fb45bc3ad 365 uint16_t _row;
JackB 0:cc1fb45bc3ad 366 char *_path;
JackB 0:cc1fb45bc3ad 367
JackB 0:cc1fb45bc3ad 368 protected:
JackB 0:cc1fb45bc3ad 369 //used by printf - supply a new _putc virtual function for the new device
JackB 0:cc1fb45bc3ad 370 virtual int _putc(int c) {
JackB 0:cc1fb45bc3ad 371 putc(c); //your new LCD put to print an ASCII character on LCD
JackB 0:cc1fb45bc3ad 372 return 0;
JackB 0:cc1fb45bc3ad 373 };
JackB 0:cc1fb45bc3ad 374 //assuming no reads from LCD
JackB 0:cc1fb45bc3ad 375 virtual int _getc() {
JackB 0:cc1fb45bc3ad 376 return -1;
JackB 0:cc1fb45bc3ad 377 }
JackB 0:cc1fb45bc3ad 378
JackB 0:cc1fb45bc3ad 379 };
JackB 0:cc1fb45bc3ad 380
JackB 0:cc1fb45bc3ad 381 #endif