Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Committer:
WiredHome
Date:
Sun Jan 12 18:44:58 2014 +0000
Revision:
20:6e2e4a8372eb
Parent:
19:3f82c1161fd2
Child:
21:3c1efb192927
Triangle methods are now working - now does not perform unintended recursive call...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 19:3f82c1161fd2 1 #ifndef RA8875_H
WiredHome 19:3f82c1161fd2 2 #define RA8875_H
WiredHome 19:3f82c1161fd2 3 #include <mbed.h>
WiredHome 19:3f82c1161fd2 4
WiredHome 19:3f82c1161fd2 5 #include "GraphicsDisplay.h"
WiredHome 19:3f82c1161fd2 6
WiredHome 19:3f82c1161fd2 7 #define RA8875_DEFAULT_SPI_FREQ 1000000
WiredHome 19:3f82c1161fd2 8
WiredHome 19:3f82c1161fd2 9 // Define this to enable code that monitors the performance of various
WiredHome 19:3f82c1161fd2 10 // graphics commands.
WiredHome 19:3f82c1161fd2 11 //#define PERF_METRICS
WiredHome 19:3f82c1161fd2 12
WiredHome 19:3f82c1161fd2 13 // What better place for some test code than in here...
WiredHome 19:3f82c1161fd2 14 #define TESTENABLE
WiredHome 19:3f82c1161fd2 15
WiredHome 19:3f82c1161fd2 16 #define RGB(r,g,b) ( ((r<<8)&0xF800) | ((g<<3)&0x07E0) | (b>>3) )
WiredHome 19:3f82c1161fd2 17
WiredHome 19:3f82c1161fd2 18 /// DOS colors - slightly color enhanced
WiredHome 20:6e2e4a8372eb 19 #define Black (color_t)(RGB(0,0,0))
WiredHome 20:6e2e4a8372eb 20 #define Blue (color_t)(RGB(0,0,187))
WiredHome 20:6e2e4a8372eb 21 #define Green (color_t)(RGB(0,187,0))
WiredHome 20:6e2e4a8372eb 22 #define Cyan (color_t)(RGB(0,187,187))
WiredHome 20:6e2e4a8372eb 23 #define Red (color_t)(RGB(187,0,0))
WiredHome 20:6e2e4a8372eb 24 #define Magenta (color_t)(RGB(187,0,187))
WiredHome 20:6e2e4a8372eb 25 #define Brown (color_t)(RGB(187,187,0))
WiredHome 20:6e2e4a8372eb 26 #define Gray (color_t)(RGB(187,187,187))
WiredHome 20:6e2e4a8372eb 27 #define Charcoal (color_t)(RGB(85,85,85))
WiredHome 20:6e2e4a8372eb 28 #define BrightBlue (color_t)(RGB(85,85,255))
WiredHome 20:6e2e4a8372eb 29 #define BrightGreen (color_t)(RGB(85,255,85))
WiredHome 20:6e2e4a8372eb 30 #define BrightCyan (color_t)(RGB(85,255,255))
WiredHome 20:6e2e4a8372eb 31 #define Orange (color_t)(RGB(255,85,85))
WiredHome 20:6e2e4a8372eb 32 #define Pink (color_t)(RGB(255,85,255))
WiredHome 20:6e2e4a8372eb 33 #define Yellow (color_t)(RGB(255,255,85))
WiredHome 20:6e2e4a8372eb 34 #define White (color_t)(RGB(255,255,255))
WiredHome 20:6e2e4a8372eb 35
WiredHome 20:6e2e4a8372eb 36 #define BrightRed (color_t)(RGB(255,0,0))
WiredHome 19:3f82c1161fd2 37
WiredHome 19:3f82c1161fd2 38 //namespace SW_graphics
WiredHome 19:3f82c1161fd2 39 //{
WiredHome 19:3f82c1161fd2 40
WiredHome 19:3f82c1161fd2 41 /// color type definition to let the compiler help keep us honest.
WiredHome 19:3f82c1161fd2 42 ///
WiredHome 19:3f82c1161fd2 43 /// colors can be defined with the RGB(r,g,b) macro, and there
WiredHome 19:3f82c1161fd2 44 /// are a number of predefined colors:
WiredHome 19:3f82c1161fd2 45 /// - Black, Blue, Green, Cyan,
WiredHome 19:3f82c1161fd2 46 /// - Red, Magenta, Brown, Gray,
WiredHome 19:3f82c1161fd2 47 /// - Charcoal, BrightBlue, BrightGreen, BrightCyan,
WiredHome 19:3f82c1161fd2 48 /// - Orange, Pink, Yellow, White
WiredHome 19:3f82c1161fd2 49 ///
WiredHome 19:3f82c1161fd2 50 typedef uint16_t color_t;
WiredHome 19:3f82c1161fd2 51
WiredHome 19:3f82c1161fd2 52 /// background fill info for drawing Text, Rectangles, RoundedRectanges, Circles, Ellipses and Triangles.
WiredHome 19:3f82c1161fd2 53 typedef enum
WiredHome 19:3f82c1161fd2 54 {
WiredHome 19:3f82c1161fd2 55 NOFILL, ///< do not fill the object with the background color
WiredHome 19:3f82c1161fd2 56 FILL ///< fill the object space with the background color
WiredHome 19:3f82c1161fd2 57 } fill_t;
WiredHome 19:3f82c1161fd2 58
WiredHome 19:3f82c1161fd2 59 /// return values from functions
WiredHome 19:3f82c1161fd2 60 //typedef enum
WiredHome 19:3f82c1161fd2 61 //{
WiredHome 19:3f82c1161fd2 62 // noerror,
WiredHome 19:3f82c1161fd2 63 // bad_parameter
WiredHome 19:3f82c1161fd2 64 //} RetCode_t;
WiredHome 19:3f82c1161fd2 65
WiredHome 19:3f82c1161fd2 66 class RA8875 : public GraphicsDisplay
WiredHome 19:3f82c1161fd2 67 {
WiredHome 19:3f82c1161fd2 68 public:
WiredHome 19:3f82c1161fd2 69 /// font type selection.
WiredHome 19:3f82c1161fd2 70 typedef enum
WiredHome 19:3f82c1161fd2 71 {
WiredHome 19:3f82c1161fd2 72 ISO8859_1,
WiredHome 19:3f82c1161fd2 73 ISO8859_2,
WiredHome 19:3f82c1161fd2 74 ISO8859_3,
WiredHome 19:3f82c1161fd2 75 ISO8859_4
WiredHome 19:3f82c1161fd2 76 } font_t;
WiredHome 19:3f82c1161fd2 77
WiredHome 19:3f82c1161fd2 78 /// font rotation selection
WiredHome 19:3f82c1161fd2 79 typedef enum
WiredHome 19:3f82c1161fd2 80 {
WiredHome 19:3f82c1161fd2 81 normal,
WiredHome 19:3f82c1161fd2 82 rotated
WiredHome 19:3f82c1161fd2 83 } font_angle_t;
WiredHome 19:3f82c1161fd2 84
WiredHome 19:3f82c1161fd2 85 /// alignment
WiredHome 19:3f82c1161fd2 86 typedef enum
WiredHome 19:3f82c1161fd2 87 {
WiredHome 19:3f82c1161fd2 88 align_none,
WiredHome 19:3f82c1161fd2 89 align_full
WiredHome 19:3f82c1161fd2 90 } alignment_t;
WiredHome 19:3f82c1161fd2 91
WiredHome 19:3f82c1161fd2 92 /// Scale factor - 1, 2, 3 4
WiredHome 19:3f82c1161fd2 93 typedef unsigned int HorizontalScale;
WiredHome 19:3f82c1161fd2 94
WiredHome 19:3f82c1161fd2 95 /// Scale factor - 1, 2, 3, 4
WiredHome 19:3f82c1161fd2 96 typedef unsigned int VerticalScale;
WiredHome 19:3f82c1161fd2 97
WiredHome 19:3f82c1161fd2 98 /// Clear screen region
WiredHome 19:3f82c1161fd2 99 typedef enum
WiredHome 19:3f82c1161fd2 100 {
WiredHome 19:3f82c1161fd2 101 FULLWINDOW,
WiredHome 19:3f82c1161fd2 102 ACTIVEWINDOW
WiredHome 19:3f82c1161fd2 103 } Region_t;
WiredHome 19:3f82c1161fd2 104
WiredHome 19:3f82c1161fd2 105 /// Constructor for a display based on the RAiO RA8875
WiredHome 19:3f82c1161fd2 106 /// display controller.
WiredHome 19:3f82c1161fd2 107 ///
WiredHome 19:3f82c1161fd2 108 /// @param mosi is the SPI master out slave in pin on the mbed.
WiredHome 19:3f82c1161fd2 109 /// @param miso is the SPI master in slave out pin on the mbed.
WiredHome 19:3f82c1161fd2 110 /// @param sclk is the SPI shift clock pin on the mbed.
WiredHome 19:3f82c1161fd2 111 /// @param csel is the DigitalOut pin on the mbed to use as the
WiredHome 19:3f82c1161fd2 112 /// active low chip select for the display controller.
WiredHome 19:3f82c1161fd2 113 /// @param reset is the DigitalOut pin on the mbed to use as the
WiredHome 19:3f82c1161fd2 114 /// active low reset input on the display controller -
WiredHome 19:3f82c1161fd2 115 /// but this is not currently used.
WiredHome 19:3f82c1161fd2 116 /// @param name is a text name for this object, which will permit
WiredHome 19:3f82c1161fd2 117 /// capturing stdout and printf() directly to it.
WiredHome 19:3f82c1161fd2 118 ///
WiredHome 19:3f82c1161fd2 119 RA8875(PinName mosi, PinName miso, PinName sclk, PinName csel, PinName reset, const char * name = "lcd");
WiredHome 19:3f82c1161fd2 120
WiredHome 19:3f82c1161fd2 121 /// Destructor doesn't have much to do.
WiredHome 19:3f82c1161fd2 122 //~RA8875();
WiredHome 19:3f82c1161fd2 123
WiredHome 19:3f82c1161fd2 124 /// Write a command to the display
WiredHome 19:3f82c1161fd2 125 ///
WiredHome 19:3f82c1161fd2 126 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 127 ///
WiredHome 19:3f82c1161fd2 128 /// @param command is the command to write.
WiredHome 19:3f82c1161fd2 129 /// @data is optional data to be written to the command register
WiredHome 19:3f82c1161fd2 130 /// and only occurs if the data is in the range [0 - 0xFF].
WiredHome 19:3f82c1161fd2 131 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 132 ///
WiredHome 19:3f82c1161fd2 133 RetCode_t WriteCommand(unsigned char command, unsigned int data = 0xFFFF);
WiredHome 19:3f82c1161fd2 134
WiredHome 19:3f82c1161fd2 135 /// Write a data byte to the display
WiredHome 19:3f82c1161fd2 136 ///
WiredHome 19:3f82c1161fd2 137 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 138 ///
WiredHome 19:3f82c1161fd2 139 /// @param data is the data to write.
WiredHome 19:3f82c1161fd2 140 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 141 ///
WiredHome 19:3f82c1161fd2 142 RetCode_t WriteData(unsigned char data);
WiredHome 19:3f82c1161fd2 143
WiredHome 19:3f82c1161fd2 144 /// Read a command register
WiredHome 19:3f82c1161fd2 145 ///
WiredHome 19:3f82c1161fd2 146 /// @param command is the command register to read.
WiredHome 19:3f82c1161fd2 147 /// @returns the value read from the register.
WiredHome 19:3f82c1161fd2 148 ///
WiredHome 19:3f82c1161fd2 149 unsigned char ReadCommand(unsigned char command);
WiredHome 19:3f82c1161fd2 150
WiredHome 19:3f82c1161fd2 151 /// Read a data byte to the display
WiredHome 19:3f82c1161fd2 152 ///
WiredHome 19:3f82c1161fd2 153 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 154 ///
WiredHome 19:3f82c1161fd2 155 /// @returns data that was read.
WiredHome 19:3f82c1161fd2 156 ///
WiredHome 19:3f82c1161fd2 157 unsigned char ReadData(void);
WiredHome 19:3f82c1161fd2 158
WiredHome 19:3f82c1161fd2 159 /// Read the display status
WiredHome 19:3f82c1161fd2 160 ///
WiredHome 19:3f82c1161fd2 161 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 162 ///
WiredHome 19:3f82c1161fd2 163 /// @returns data that was read.
WiredHome 19:3f82c1161fd2 164 ///
WiredHome 19:3f82c1161fd2 165 unsigned char ReadStatus(void);
WiredHome 19:3f82c1161fd2 166
WiredHome 19:3f82c1161fd2 167 /// get the width in pixels of the currently active font
WiredHome 19:3f82c1161fd2 168 ///
WiredHome 19:3f82c1161fd2 169 /// @returns font width in pixels.
WiredHome 19:3f82c1161fd2 170 ///
WiredHome 19:3f82c1161fd2 171 unsigned int fontwidth(void);
WiredHome 19:3f82c1161fd2 172
WiredHome 19:3f82c1161fd2 173 /// get the height in pixels of the currently active font
WiredHome 19:3f82c1161fd2 174 ///
WiredHome 19:3f82c1161fd2 175 /// @returns font height in pixels.
WiredHome 19:3f82c1161fd2 176 ///
WiredHome 19:3f82c1161fd2 177 unsigned int fontheight(void);
WiredHome 19:3f82c1161fd2 178
WiredHome 19:3f82c1161fd2 179 /// get the number of colums based on the currently active font
WiredHome 19:3f82c1161fd2 180 ///
WiredHome 19:3f82c1161fd2 181 /// @returns number of columns.
WiredHome 19:3f82c1161fd2 182 ///
WiredHome 19:3f82c1161fd2 183 virtual int columns(void);
WiredHome 19:3f82c1161fd2 184
WiredHome 19:3f82c1161fd2 185 /// get the number of rows based on the currently active font
WiredHome 19:3f82c1161fd2 186 ///
WiredHome 19:3f82c1161fd2 187 /// @returns number of rows.
WiredHome 19:3f82c1161fd2 188 ///
WiredHome 19:3f82c1161fd2 189 virtual int rows(void);
WiredHome 19:3f82c1161fd2 190
WiredHome 19:3f82c1161fd2 191 /// get the screen width in pixels
WiredHome 19:3f82c1161fd2 192 ///
WiredHome 19:3f82c1161fd2 193 /// @returns screen width in pixels.
WiredHome 19:3f82c1161fd2 194 ///
WiredHome 19:3f82c1161fd2 195 virtual int width(void);
WiredHome 19:3f82c1161fd2 196
WiredHome 19:3f82c1161fd2 197 /// get the screen height in pixels
WiredHome 19:3f82c1161fd2 198 ///
WiredHome 19:3f82c1161fd2 199 /// @returns screen height in pixels.
WiredHome 19:3f82c1161fd2 200 ///
WiredHome 19:3f82c1161fd2 201 virtual int height(void);
WiredHome 19:3f82c1161fd2 202
WiredHome 19:3f82c1161fd2 203 /// Set cursor position based on the current font size.
WiredHome 19:3f82c1161fd2 204 ///
WiredHome 19:3f82c1161fd2 205 /// @param x is the horizontal position in character positions
WiredHome 19:3f82c1161fd2 206 /// @param y is the vertical position in character positions
WiredHome 19:3f82c1161fd2 207 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 208 ///
WiredHome 19:3f82c1161fd2 209 virtual RetCode_t locate(unsigned int x, unsigned int y);
WiredHome 19:3f82c1161fd2 210
WiredHome 19:3f82c1161fd2 211 /// Prepare the controller to write text to the screen by positioning
WiredHome 19:3f82c1161fd2 212 /// the cursor.
WiredHome 19:3f82c1161fd2 213 ///
WiredHome 19:3f82c1161fd2 214 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 215 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 216 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 217 ///
WiredHome 19:3f82c1161fd2 218 RetCode_t SetTextCursor(unsigned int x, unsigned int y);
WiredHome 19:3f82c1161fd2 219
WiredHome 19:3f82c1161fd2 220 /// Select the ISO 8859-X font to use next.
WiredHome 19:3f82c1161fd2 221 ///
WiredHome 19:3f82c1161fd2 222 /// Supported fonts: ISO 8859-1, -2, -3, -4
WiredHome 19:3f82c1161fd2 223 ///
WiredHome 19:3f82c1161fd2 224 /// @param font selects the font for the subsequent text rendering.
WiredHome 19:3f82c1161fd2 225 ///
WiredHome 19:3f82c1161fd2 226 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 227 /// the command is not executed.
WiredHome 19:3f82c1161fd2 228 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 229 ///
WiredHome 19:3f82c1161fd2 230 RetCode_t SetTextFont(font_t font = ISO8859_1);
WiredHome 19:3f82c1161fd2 231
WiredHome 19:3f82c1161fd2 232 /// Control the font behavior.
WiredHome 19:3f82c1161fd2 233 ///
WiredHome 19:3f82c1161fd2 234 /// This command lets you make several modifications to any text that
WiredHome 19:3f82c1161fd2 235 /// is written.
WiredHome 19:3f82c1161fd2 236 ///
WiredHome 19:3f82c1161fd2 237 /// Options can be combined:
WiredHome 19:3f82c1161fd2 238 /// Default:
WiredHome 19:3f82c1161fd2 239 /// @li Full alignment disabled,
WiredHome 19:3f82c1161fd2 240 /// @li Font with Background color,
WiredHome 19:3f82c1161fd2 241 /// @li Font in normal orientiation,
WiredHome 19:3f82c1161fd2 242 /// @li Horizontal scale x 1
WiredHome 19:3f82c1161fd2 243 /// @li Vertical scale x 1
WiredHome 19:3f82c1161fd2 244 /// @li alignment
WiredHome 19:3f82c1161fd2 245 ///
WiredHome 19:3f82c1161fd2 246 /// @param fillit defaults to FILL, but can be NOFILL
WiredHome 19:3f82c1161fd2 247 /// @param angle defaults to normal, but can be rotated
WiredHome 19:3f82c1161fd2 248 /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 249 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 250 /// @param vScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 251 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 252 /// @param alignment defaults to align_none, but can be
WiredHome 19:3f82c1161fd2 253 /// align_full.
WiredHome 19:3f82c1161fd2 254 ///
WiredHome 19:3f82c1161fd2 255 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 256 /// the command is not executed.
WiredHome 19:3f82c1161fd2 257 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 258 ///
WiredHome 19:3f82c1161fd2 259 RetCode_t SetTextFontControl(fill_t fillit = FILL,
WiredHome 19:3f82c1161fd2 260 font_angle_t angle = normal,
WiredHome 19:3f82c1161fd2 261 HorizontalScale hScale = 1,
WiredHome 19:3f82c1161fd2 262 VerticalScale vScale = 1,
WiredHome 19:3f82c1161fd2 263 alignment_t alignment = align_none);
WiredHome 19:3f82c1161fd2 264
WiredHome 19:3f82c1161fd2 265 /// Control the font size
WiredHome 19:3f82c1161fd2 266 ///
WiredHome 19:3f82c1161fd2 267 /// This command lets you set the font enlargement for both horizontal
WiredHome 19:3f82c1161fd2 268 /// and vertical, independent of the rotation, background, and
WiredHome 19:3f82c1161fd2 269 /// alignment. @see SetTextFontControl.
WiredHome 19:3f82c1161fd2 270 ///
WiredHome 19:3f82c1161fd2 271 /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 272 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 273 /// @param vScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 274 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 275 ///
WiredHome 19:3f82c1161fd2 276 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 277 /// the command is not executed.
WiredHome 19:3f82c1161fd2 278 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 279 ///
WiredHome 19:3f82c1161fd2 280 RetCode_t SetTextFontSize(HorizontalScale hScale = 1, VerticalScale vScale = 1);
WiredHome 19:3f82c1161fd2 281
WiredHome 19:3f82c1161fd2 282 /// put a character on the screen.
WiredHome 19:3f82c1161fd2 283 ///
WiredHome 19:3f82c1161fd2 284 /// @param c is the character.
WiredHome 19:3f82c1161fd2 285 /// @returns the character, or EOF if there is an error.
WiredHome 19:3f82c1161fd2 286 ///
WiredHome 19:3f82c1161fd2 287 virtual int _putc(int c);
WiredHome 19:3f82c1161fd2 288
WiredHome 19:3f82c1161fd2 289 /// Write string of text to the display
WiredHome 19:3f82c1161fd2 290 ///
WiredHome 19:3f82c1161fd2 291 /// @param string is the null terminated string to send to the display.
WiredHome 19:3f82c1161fd2 292 ///
WiredHome 19:3f82c1161fd2 293 void puts(const char * string);
WiredHome 19:3f82c1161fd2 294
WiredHome 19:3f82c1161fd2 295 /// Write string of text to the display at the specified location.
WiredHome 19:3f82c1161fd2 296 ///
WiredHome 19:3f82c1161fd2 297 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 298 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 299 /// @param string is the null terminated string to send to the display.
WiredHome 19:3f82c1161fd2 300 ///
WiredHome 19:3f82c1161fd2 301 void puts(unsigned int x, unsigned int y, const char * string);
WiredHome 19:3f82c1161fd2 302
WiredHome 19:3f82c1161fd2 303 /// Prepare the controller to write binary data to the screen by positioning
WiredHome 19:3f82c1161fd2 304 /// the memory cursor.
WiredHome 19:3f82c1161fd2 305 ///
WiredHome 19:3f82c1161fd2 306 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 307 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 308 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 309 ///
WiredHome 19:3f82c1161fd2 310 RetCode_t SetMemoryCursor(unsigned int x, unsigned int y);
WiredHome 19:3f82c1161fd2 311
WiredHome 19:3f82c1161fd2 312 /// Set the window, which controls where items are written to the screen.
WiredHome 19:3f82c1161fd2 313 ///
WiredHome 19:3f82c1161fd2 314 /// When something hits the window width, it wraps back to the left side
WiredHome 19:3f82c1161fd2 315 /// and down a row. If the initial write is outside the window, it will
WiredHome 19:3f82c1161fd2 316 /// be captured into the window when it crosses a boundary.
WiredHome 19:3f82c1161fd2 317 ///
WiredHome 19:3f82c1161fd2 318 /// @param x is the left edge in pixels.
WiredHome 19:3f82c1161fd2 319 /// @param y is the top edge in pixels.
WiredHome 19:3f82c1161fd2 320 /// @param width is the window width in pixels.
WiredHome 19:3f82c1161fd2 321 /// @param height is the window height in pixels.
WiredHome 19:3f82c1161fd2 322 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 323 ///
WiredHome 19:3f82c1161fd2 324 RetCode_t SetWindow(unsigned int x, unsigned int y, unsigned int width, unsigned int height);
WiredHome 19:3f82c1161fd2 325
WiredHome 19:3f82c1161fd2 326 /// Clear the screen.
WiredHome 19:3f82c1161fd2 327 ///
WiredHome 19:3f82c1161fd2 328 /// The behavior is to clear the whole screen. @see clsw().
WiredHome 19:3f82c1161fd2 329 ///
WiredHome 19:3f82c1161fd2 330 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 331 ///
WiredHome 19:3f82c1161fd2 332 virtual RetCode_t cls(void);
WiredHome 19:3f82c1161fd2 333
WiredHome 19:3f82c1161fd2 334 /// Clear the screen, or clear only the active window.
WiredHome 19:3f82c1161fd2 335 ///
WiredHome 19:3f82c1161fd2 336 /// The default behavior is to clear the whole screen. With the optional
WiredHome 19:3f82c1161fd2 337 /// parameter, the action can be restricted to the active window, which
WiredHome 19:3f82c1161fd2 338 /// can be set with the @see SetWindow method.
WiredHome 19:3f82c1161fd2 339 ///
WiredHome 19:3f82c1161fd2 340 /// @param region is an optional parameter that defaults to FULLWINDOW
WiredHome 19:3f82c1161fd2 341 /// or may be set to ACTIVEWINDOW.
WiredHome 19:3f82c1161fd2 342 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 343 ///
WiredHome 19:3f82c1161fd2 344 RetCode_t clsw(RA8875::Region_t region = FULLWINDOW);
WiredHome 19:3f82c1161fd2 345
WiredHome 19:3f82c1161fd2 346 /// Set the background color.
WiredHome 19:3f82c1161fd2 347 ///
WiredHome 19:3f82c1161fd2 348 /// @param color is expressed in 16-bit format.
WiredHome 19:3f82c1161fd2 349 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 350 ///
WiredHome 19:3f82c1161fd2 351 virtual RetCode_t background(color_t color);
WiredHome 19:3f82c1161fd2 352
WiredHome 19:3f82c1161fd2 353 /// Set the background color.
WiredHome 19:3f82c1161fd2 354 ///
WiredHome 19:3f82c1161fd2 355 /// @param r is the red element of the color.
WiredHome 19:3f82c1161fd2 356 /// @param g is the green element of the color.
WiredHome 19:3f82c1161fd2 357 /// @param b is the blue element of the color.
WiredHome 19:3f82c1161fd2 358 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 359 ///
WiredHome 19:3f82c1161fd2 360 virtual RetCode_t background(unsigned char r, unsigned char g, unsigned char b);
WiredHome 19:3f82c1161fd2 361
WiredHome 19:3f82c1161fd2 362 /// Set the foreground color.
WiredHome 19:3f82c1161fd2 363 ///
WiredHome 19:3f82c1161fd2 364 /// @param color is expressed in 16-bit format.
WiredHome 19:3f82c1161fd2 365 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 366 ///
WiredHome 19:3f82c1161fd2 367 virtual RetCode_t foreground(color_t color);
WiredHome 19:3f82c1161fd2 368
WiredHome 19:3f82c1161fd2 369 /// Set the foreground color.
WiredHome 19:3f82c1161fd2 370 ///
WiredHome 19:3f82c1161fd2 371 /// @param R is the red element of the color.
WiredHome 19:3f82c1161fd2 372 /// @param G is the green element of the color.
WiredHome 19:3f82c1161fd2 373 /// @param B is the blue element of the color.
WiredHome 19:3f82c1161fd2 374 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 375 ///
WiredHome 19:3f82c1161fd2 376 virtual RetCode_t foreground(unsigned char R, unsigned char G, unsigned char B);
WiredHome 19:3f82c1161fd2 377
WiredHome 19:3f82c1161fd2 378 /// Get the current foreground color value.
WiredHome 19:3f82c1161fd2 379 ///
WiredHome 19:3f82c1161fd2 380 /// @returns the current foreground color.
WiredHome 19:3f82c1161fd2 381 ///
WiredHome 19:3f82c1161fd2 382 unsigned int GetForeColor(void);
WiredHome 19:3f82c1161fd2 383
WiredHome 19:3f82c1161fd2 384 /// Draw a pixel in the specified color.
WiredHome 19:3f82c1161fd2 385 ///
WiredHome 19:3f82c1161fd2 386 /// @note As a side effect, this also sets the foreground color
WiredHome 19:3f82c1161fd2 387 /// affecting all subsequent operations.
WiredHome 19:3f82c1161fd2 388 ///
WiredHome 19:3f82c1161fd2 389 /// @param x is the horizontal offset to this pixel.
WiredHome 19:3f82c1161fd2 390 /// @param y is the vertical offset to this pixel.
WiredHome 19:3f82c1161fd2 391 /// @param color defines the color for the pixel.
WiredHome 19:3f82c1161fd2 392 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 393 ///
WiredHome 19:3f82c1161fd2 394 virtual RetCode_t pixel(unsigned int x, unsigned int y, color_t color);
WiredHome 19:3f82c1161fd2 395
WiredHome 19:3f82c1161fd2 396 /// Draw a pixel in the current foreground color.
WiredHome 19:3f82c1161fd2 397 ///
WiredHome 19:3f82c1161fd2 398 /// @param x is the horizontal offset to this pixel.
WiredHome 19:3f82c1161fd2 399 /// @param y is the veritical offset to this pixel.
WiredHome 19:3f82c1161fd2 400 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 401 ///
WiredHome 19:3f82c1161fd2 402 virtual RetCode_t pixel(unsigned int x, unsigned int y);
WiredHome 19:3f82c1161fd2 403
WiredHome 19:3f82c1161fd2 404 /// Draw a line in the specified color
WiredHome 19:3f82c1161fd2 405 ///
WiredHome 19:3f82c1161fd2 406 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 407 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 408 ///
WiredHome 19:3f82c1161fd2 409 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 410 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 411 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 412 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 413 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 414 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 415 ///
WiredHome 19:3f82c1161fd2 416 RetCode_t line(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 417 color_t color);
WiredHome 19:3f82c1161fd2 418
WiredHome 19:3f82c1161fd2 419 /// Draw a line
WiredHome 19:3f82c1161fd2 420 ///
WiredHome 19:3f82c1161fd2 421 /// Draws a line using the foreground color setting.
WiredHome 19:3f82c1161fd2 422 ///
WiredHome 19:3f82c1161fd2 423 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 424 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 425 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 426 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 427 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 428 ///
WiredHome 19:3f82c1161fd2 429 RetCode_t line(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);
WiredHome 19:3f82c1161fd2 430
WiredHome 19:3f82c1161fd2 431 /// Draw a rectangle in the specified color
WiredHome 19:3f82c1161fd2 432 ///
WiredHome 19:3f82c1161fd2 433 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 434 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 435 ///
WiredHome 19:3f82c1161fd2 436 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 437 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 438 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 439 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 440 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 441 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 442 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 443 ///
WiredHome 19:3f82c1161fd2 444 RetCode_t rect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 445 color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 446
WiredHome 19:3f82c1161fd2 447 /// Draw a filled rectangle in the specified color
WiredHome 19:3f82c1161fd2 448 ///
WiredHome 19:3f82c1161fd2 449 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 450 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 451 ///
WiredHome 19:3f82c1161fd2 452 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 453 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 454 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 455 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 456 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 457 /// @param fillit is optional to NOFILL the rectangle. default is FILL.
WiredHome 19:3f82c1161fd2 458 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 459 ///
WiredHome 19:3f82c1161fd2 460 RetCode_t fillrect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 461 color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 462
WiredHome 19:3f82c1161fd2 463 /// Draw a rectangle
WiredHome 19:3f82c1161fd2 464 ///
WiredHome 19:3f82c1161fd2 465 /// Draws a rectangle using the foreground color setting.
WiredHome 19:3f82c1161fd2 466 ///
WiredHome 19:3f82c1161fd2 467 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 468 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 469 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 470 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 471 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 472 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 473 ///
WiredHome 19:3f82c1161fd2 474 RetCode_t rect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 475 fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 476
WiredHome 19:3f82c1161fd2 477 /// Draw a filled rectangle with rounded corners using the specified color.
WiredHome 19:3f82c1161fd2 478 ///
WiredHome 19:3f82c1161fd2 479 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 480 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 481 ///
WiredHome 19:3f82c1161fd2 482 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 483 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 484 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 485 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 486 /// @param radius1 defines the horizontal width of the curved corner.
WiredHome 19:3f82c1161fd2 487 /// @param radius2 defines the vertical width of the curved corner.
WiredHome 19:3f82c1161fd2 488 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 489 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 490 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 491 ///
WiredHome 19:3f82c1161fd2 492 RetCode_t fillroundrect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 493 unsigned int radius1, unsigned int radius2, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 494
WiredHome 19:3f82c1161fd2 495 /// Draw a rectangle with rounded corners using the specified color.
WiredHome 19:3f82c1161fd2 496 ///
WiredHome 19:3f82c1161fd2 497 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 498 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 499 ///
WiredHome 19:3f82c1161fd2 500 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 501 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 502 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 503 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 504 /// @param radius1 defines the horizontal width of the curved corner.
WiredHome 19:3f82c1161fd2 505 /// @param radius2 defines the vertical width of the curved corner.
WiredHome 19:3f82c1161fd2 506 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 507 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 508 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 509 ///
WiredHome 19:3f82c1161fd2 510 RetCode_t roundrect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 511 unsigned int radius1, unsigned int radius2, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 512
WiredHome 19:3f82c1161fd2 513 /// Draw a rectangle with rounded corners.
WiredHome 19:3f82c1161fd2 514 ///
WiredHome 19:3f82c1161fd2 515 /// Draws a rectangle with rounded corners using the foreground color setting.
WiredHome 19:3f82c1161fd2 516 ///
WiredHome 19:3f82c1161fd2 517 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 518 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 519 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 520 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 521 /// @param radius1 defines the horizontal width of the curved corner.
WiredHome 19:3f82c1161fd2 522 /// @param radius2 defines the vertical width of the curved corner.
WiredHome 19:3f82c1161fd2 523 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 524 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 525 ///
WiredHome 19:3f82c1161fd2 526 RetCode_t roundrect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 527 unsigned int radius1, unsigned int radius2, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 528
WiredHome 19:3f82c1161fd2 529 /// Draw a triangle in the specified color.
WiredHome 19:3f82c1161fd2 530 ///
WiredHome 19:3f82c1161fd2 531 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 532 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 533 ///
WiredHome 19:3f82c1161fd2 534 /// @param x1 is the horizontal for point 1.
WiredHome 19:3f82c1161fd2 535 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 536 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 537 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 538 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 539 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 540 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 541 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 542 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 543 ///
WiredHome 19:3f82c1161fd2 544 RetCode_t triangle(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 545 unsigned int x3, unsigned int y3, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 546
WiredHome 19:3f82c1161fd2 547 /// Draw a filled triangle in the specified color.
WiredHome 19:3f82c1161fd2 548 ///
WiredHome 19:3f82c1161fd2 549 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 550 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 551 ///
WiredHome 19:3f82c1161fd2 552 /// @param x1 is the horizontal for point 1.
WiredHome 19:3f82c1161fd2 553 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 554 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 555 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 556 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 557 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 558 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 559 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 560 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 561 ///
WiredHome 19:3f82c1161fd2 562 RetCode_t filltriangle(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 563 unsigned int x3, unsigned int y3, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 564
WiredHome 19:3f82c1161fd2 565 /// Draw a triangle
WiredHome 19:3f82c1161fd2 566 ///
WiredHome 19:3f82c1161fd2 567 /// Draws a triangle using the foreground color setting.
WiredHome 19:3f82c1161fd2 568 ///
WiredHome 19:3f82c1161fd2 569 /// @param x1 is the horizontal for point 1.
WiredHome 19:3f82c1161fd2 570 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 571 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 572 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 573 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 574 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 575 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 576 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 577 ///
WiredHome 19:3f82c1161fd2 578 RetCode_t triangle(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2,
WiredHome 19:3f82c1161fd2 579 unsigned int x3, unsigned int y3, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 580
WiredHome 19:3f82c1161fd2 581 /// Draw a circle using the specified color.
WiredHome 19:3f82c1161fd2 582 ///
WiredHome 19:3f82c1161fd2 583 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 584 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 585 ///
WiredHome 19:3f82c1161fd2 586 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 587 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 588 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 589 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 590 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 591 ///
WiredHome 19:3f82c1161fd2 592 RetCode_t circle(unsigned int x, unsigned int y, unsigned int radius, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 593
WiredHome 19:3f82c1161fd2 594 /// Draw a filled circle using the specified color.
WiredHome 19:3f82c1161fd2 595 ///
WiredHome 19:3f82c1161fd2 596 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 597 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 598 ///
WiredHome 19:3f82c1161fd2 599 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 600 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 601 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 602 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 603 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 604 ///
WiredHome 19:3f82c1161fd2 605 RetCode_t fillcircle(unsigned int x, unsigned int y, unsigned int radius, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 606
WiredHome 19:3f82c1161fd2 607 /// Draw a circle.
WiredHome 19:3f82c1161fd2 608 ///
WiredHome 19:3f82c1161fd2 609 /// Draws a circle using the foreground color setting.
WiredHome 19:3f82c1161fd2 610 ///
WiredHome 19:3f82c1161fd2 611 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 612 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 613 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 614 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 615 ///
WiredHome 19:3f82c1161fd2 616 RetCode_t circle(unsigned int x, unsigned int y, unsigned int radius, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 617
WiredHome 19:3f82c1161fd2 618 /// Draw an Ellipse using the specified color
WiredHome 19:3f82c1161fd2 619 ///
WiredHome 19:3f82c1161fd2 620 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 621 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 622 ///
WiredHome 19:3f82c1161fd2 623 /// @param x is the horizontal center of the ellipse.
WiredHome 19:3f82c1161fd2 624 /// @param y is the vertical center of the ellipse.
WiredHome 19:3f82c1161fd2 625 /// @param radius1 defines the horizontal width of the ellipse.
WiredHome 19:3f82c1161fd2 626 /// @param radius2 defines the vertical width of the ellipse.
WiredHome 19:3f82c1161fd2 627 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 628 /// @param fillit defines whether the circle is filled or not.
WiredHome 19:3f82c1161fd2 629 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 630 ///
WiredHome 19:3f82c1161fd2 631 RetCode_t ellipse(unsigned int x, unsigned int y, unsigned int radius1, unsigned int radius1,
WiredHome 19:3f82c1161fd2 632 color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 633
WiredHome 19:3f82c1161fd2 634 /// Draw an Ellipse
WiredHome 19:3f82c1161fd2 635 ///
WiredHome 19:3f82c1161fd2 636 /// Draws it using the foreground color setting.
WiredHome 19:3f82c1161fd2 637 ///
WiredHome 19:3f82c1161fd2 638 /// @param x is the horizontal center of the ellipse.
WiredHome 19:3f82c1161fd2 639 /// @param y is the vertical center of the ellipse.
WiredHome 19:3f82c1161fd2 640 /// @param radius1 defines the horizontal width of the ellipse.
WiredHome 19:3f82c1161fd2 641 /// @param radius2 defines the vertical width of the ellipse.
WiredHome 19:3f82c1161fd2 642 /// @param fillit defines whether the circle is filled or not.
WiredHome 19:3f82c1161fd2 643 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 644 ///
WiredHome 19:3f82c1161fd2 645 RetCode_t ellipse(unsigned int x, unsigned int y, unsigned int radius1, unsigned int radius1, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 646
WiredHome 19:3f82c1161fd2 647 /// Control display power
WiredHome 19:3f82c1161fd2 648 ///
WiredHome 19:3f82c1161fd2 649 /// @param on when set to true will turn on the display, when false it is turned off.
WiredHome 19:3f82c1161fd2 650 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 651 ///
WiredHome 19:3f82c1161fd2 652 RetCode_t Power(bool on);
WiredHome 19:3f82c1161fd2 653
WiredHome 19:3f82c1161fd2 654 /// Reset the display controller via the Software Reset interface.
WiredHome 19:3f82c1161fd2 655 ///
WiredHome 19:3f82c1161fd2 656 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 657 ///
WiredHome 19:3f82c1161fd2 658 RetCode_t Reset(void);
WiredHome 19:3f82c1161fd2 659
WiredHome 19:3f82c1161fd2 660 /// Set backlight brightness.
WiredHome 19:3f82c1161fd2 661 ///
WiredHome 19:3f82c1161fd2 662 /// When the built-in PWM is used to control the backlight, this
WiredHome 19:3f82c1161fd2 663 /// API can be used to set the brightness.
WiredHome 19:3f82c1161fd2 664 ///
WiredHome 19:3f82c1161fd2 665 /// @param brightness ranges from 0 (off) to 255 (full on)
WiredHome 19:3f82c1161fd2 666 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 667 ///
WiredHome 19:3f82c1161fd2 668 RetCode_t Backlight_u8(unsigned char brightness);
WiredHome 19:3f82c1161fd2 669
WiredHome 19:3f82c1161fd2 670 /// Set backlight brightness.
WiredHome 19:3f82c1161fd2 671 ///
WiredHome 19:3f82c1161fd2 672 /// When the built-in PWM is used to control the backlight, this
WiredHome 19:3f82c1161fd2 673 /// API can be used to set the brightness.
WiredHome 19:3f82c1161fd2 674 ///
WiredHome 19:3f82c1161fd2 675 /// @param brightness ranges from 0.0 (off) to 1.0 (full on)
WiredHome 19:3f82c1161fd2 676 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 677 ///
WiredHome 19:3f82c1161fd2 678 RetCode_t Backlight(float brightness);
WiredHome 19:3f82c1161fd2 679
WiredHome 19:3f82c1161fd2 680 /// Set a reference to a bitmap font, provided by the user.
WiredHome 19:3f82c1161fd2 681 ///
WiredHome 19:3f82c1161fd2 682 /// @note Tool to create the fonts is accessible from its creator
WiredHome 19:3f82c1161fd2 683 /// available at http://www.mikroe.com.
WiredHome 19:3f82c1161fd2 684 /// Change the data to an array of type char[].
WiredHome 19:3f82c1161fd2 685 ///
WiredHome 19:3f82c1161fd2 686 /// @param font is a pointer to a specially formed font array.
WiredHome 19:3f82c1161fd2 687 /// This special font array has a 4-byte header, followed by
WiredHome 19:3f82c1161fd2 688 /// the data:
WiredHome 19:3f82c1161fd2 689 /// - the number of bytes per char
WiredHome 19:3f82c1161fd2 690 /// - the vertical size in pixels for each character
WiredHome 19:3f82c1161fd2 691 /// - the horizontal size in pixels for each character
WiredHome 19:3f82c1161fd2 692 /// - the number of bytes per vertical line (width of the array)
WiredHome 19:3f82c1161fd2 693 /// @returns error code.
WiredHome 19:3f82c1161fd2 694 ///
WiredHome 19:3f82c1161fd2 695 RetCode_t set_font(const unsigned char * font);
WiredHome 19:3f82c1161fd2 696
WiredHome 19:3f82c1161fd2 697 /// Get the RGB value for a DOS color.
WiredHome 19:3f82c1161fd2 698 ///
WiredHome 19:3f82c1161fd2 699 /// @param i is the color, in the range 0 to 15;
WiredHome 19:3f82c1161fd2 700 /// @returns the RGB color of the selected index, or 0
WiredHome 19:3f82c1161fd2 701 /// if the index is out of bounds.
WiredHome 19:3f82c1161fd2 702 ///
WiredHome 19:3f82c1161fd2 703 color_t DOSColor(int i);
WiredHome 19:3f82c1161fd2 704
WiredHome 19:3f82c1161fd2 705 /// Get the color name (string) for a DOS color.
WiredHome 19:3f82c1161fd2 706 ///
WiredHome 19:3f82c1161fd2 707 /// @param i is the color, in the range 0 to 15;
WiredHome 19:3f82c1161fd2 708 /// @returns a pointer to a string with the color name,
WiredHome 19:3f82c1161fd2 709 /// or NULL if the index is out of bounds.
WiredHome 19:3f82c1161fd2 710 ///
WiredHome 19:3f82c1161fd2 711 const char * DOSColorNames(int i);
WiredHome 19:3f82c1161fd2 712
WiredHome 19:3f82c1161fd2 713
WiredHome 19:3f82c1161fd2 714 #ifdef PERF_METRICS
WiredHome 19:3f82c1161fd2 715 /// Clear the performance metrics to zero.
WiredHome 19:3f82c1161fd2 716 void ClearPerformance();
WiredHome 19:3f82c1161fd2 717
WiredHome 19:3f82c1161fd2 718 /// Report the performance metrics for drawing functions using
WiredHome 19:3f82c1161fd2 719 /// printf()
WiredHome 19:3f82c1161fd2 720 void ReportPerformance();
WiredHome 19:3f82c1161fd2 721 #endif
WiredHome 19:3f82c1161fd2 722
WiredHome 19:3f82c1161fd2 723 private:
WiredHome 19:3f82c1161fd2 724 /// Set the SPI port frequency (in Hz).
WiredHome 19:3f82c1161fd2 725 ///
WiredHome 19:3f82c1161fd2 726 /// @note attempts to call this API at runtime, with the display
WiredHome 19:3f82c1161fd2 727 /// already online, cause the system to lockup.
WiredHome 19:3f82c1161fd2 728 /// Not sure why, so moving this to private to run once.
WiredHome 19:3f82c1161fd2 729 ///
WiredHome 19:3f82c1161fd2 730 /// This uses the mbed SPI driver, and is therefore dependent on
WiredHome 19:3f82c1161fd2 731 /// its capabilities. Limited tests were performed for the display
WiredHome 19:3f82c1161fd2 732 /// in the range of 1,000,000 to 50,000,000 Hz. The display was
WiredHome 19:3f82c1161fd2 733 /// a bit erratic above 20,000,000 Hz, so this became the default,
WiredHome 19:3f82c1161fd2 734 /// even though it might have been the bench-level wiring that posed
WiredHome 19:3f82c1161fd2 735 /// the limit.
WiredHome 19:3f82c1161fd2 736 ///
WiredHome 19:3f82c1161fd2 737 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 738 ///
WiredHome 19:3f82c1161fd2 739 RetCode_t frequency(unsigned long Hz = RA8875_DEFAULT_SPI_FREQ);
WiredHome 19:3f82c1161fd2 740
WiredHome 19:3f82c1161fd2 741
WiredHome 19:3f82c1161fd2 742 /// Initialize the chip, which is normally done as part of the
WiredHome 19:3f82c1161fd2 743 /// constructor, so not called by the user.
WiredHome 19:3f82c1161fd2 744 ///
WiredHome 19:3f82c1161fd2 745 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 746 ///
WiredHome 19:3f82c1161fd2 747 RetCode_t init(void);
WiredHome 19:3f82c1161fd2 748
WiredHome 19:3f82c1161fd2 749 /// Select the peripheral to use it.
WiredHome 19:3f82c1161fd2 750 ///
WiredHome 19:3f82c1161fd2 751 /// @param chipsel when true will select the peripheral, and when false
WiredHome 19:3f82c1161fd2 752 /// will deselect the chip. This is the logical selection, and
WiredHome 19:3f82c1161fd2 753 /// the pin selection is the invert of this.
WiredHome 19:3f82c1161fd2 754 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 755 ///
WiredHome 19:3f82c1161fd2 756 RetCode_t select(bool chipsel);
WiredHome 19:3f82c1161fd2 757
WiredHome 19:3f82c1161fd2 758 /// The most primitive - to write a data value to the SPI interface.
WiredHome 19:3f82c1161fd2 759 ///
WiredHome 19:3f82c1161fd2 760 /// @param data is the value to write.
WiredHome 19:3f82c1161fd2 761 /// @returns a value read from the port, since SPI is often shift
WiredHome 19:3f82c1161fd2 762 /// in while shifting out.
WiredHome 19:3f82c1161fd2 763 ///
WiredHome 19:3f82c1161fd2 764 unsigned char spiwrite(unsigned char data);
WiredHome 19:3f82c1161fd2 765
WiredHome 19:3f82c1161fd2 766 /// The most primitive - to read a data value to the SPI interface.
WiredHome 19:3f82c1161fd2 767 ///
WiredHome 19:3f82c1161fd2 768 /// This is really just a specialcase of the write command, where
WiredHome 19:3f82c1161fd2 769 /// the value zero is written in order to read.
WiredHome 19:3f82c1161fd2 770 ///
WiredHome 19:3f82c1161fd2 771 /// @returns a value read from the port, since SPI is often shift
WiredHome 19:3f82c1161fd2 772 /// in while shifting out.
WiredHome 19:3f82c1161fd2 773 ///
WiredHome 19:3f82c1161fd2 774 unsigned char spiread();
WiredHome 19:3f82c1161fd2 775
WiredHome 19:3f82c1161fd2 776 SPI spi; ///< spi port
WiredHome 19:3f82c1161fd2 777 DigitalOut cs; ///< chip select pin, assumed active low
WiredHome 19:3f82c1161fd2 778 DigitalOut res; ///< reset pin, assumed active low
WiredHome 19:3f82c1161fd2 779 const unsigned char * font; ///< reference to an external font somewhere in memory
WiredHome 19:3f82c1161fd2 780
WiredHome 19:3f82c1161fd2 781 #ifdef PERF_METRICS
WiredHome 19:3f82c1161fd2 782 typedef enum
WiredHome 19:3f82c1161fd2 783 {
WiredHome 19:3f82c1161fd2 784 PRF_CLS,
WiredHome 19:3f82c1161fd2 785 PRF_DRAWPOINT,
WiredHome 19:3f82c1161fd2 786 PRF_DRAWLINE,
WiredHome 19:3f82c1161fd2 787 PRF_DRAWRECTANGLE,
WiredHome 19:3f82c1161fd2 788 PRF_DRAWROUNDEDRECTANGLE,
WiredHome 19:3f82c1161fd2 789 PRF_DRAWTRIANGLE,
WiredHome 19:3f82c1161fd2 790 PRF_DRAWCIRCLE,
WiredHome 19:3f82c1161fd2 791 PRF_DRAWELLIPSE,
WiredHome 19:3f82c1161fd2 792 METRICCOUNT
WiredHome 19:3f82c1161fd2 793 } method_e;
WiredHome 19:3f82c1161fd2 794 unsigned long metrics[METRICCOUNT];
WiredHome 19:3f82c1161fd2 795 void RegisterPerformance(method_e method);
WiredHome 19:3f82c1161fd2 796 Timer performance;
WiredHome 19:3f82c1161fd2 797 #endif
WiredHome 19:3f82c1161fd2 798 };
WiredHome 19:3f82c1161fd2 799
WiredHome 19:3f82c1161fd2 800 //} // namespace
WiredHome 19:3f82c1161fd2 801
WiredHome 19:3f82c1161fd2 802 //using namespace SW_graphics;
WiredHome 19:3f82c1161fd2 803
WiredHome 19:3f82c1161fd2 804 #endif