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:
Tue Jul 07 17:05:59 2015 +0000
Revision:
95:ef538bd687c0
Parent:
79:544eb4964795
Child:
98:ecebed9b80b2
Compiler cleanup - warning reductions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreschpe 0:de9d1462a835 1 /* mbed GraphicsDisplay Display Library Base Class
dreschpe 0:de9d1462a835 2 * Copyright (c) 2007-2009 sford
dreschpe 0:de9d1462a835 3 * Released under the MIT License: http://mbed.org/license/mit
dreschpe 0:de9d1462a835 4 *
dreschpe 0:de9d1462a835 5 * A library for providing a common base class for Graphics displays
dreschpe 0:de9d1462a835 6 * To port a new display, derive from this class and implement
dreschpe 0:de9d1462a835 7 * the constructor (setup the display), pixel (put a pixel
dreschpe 0:de9d1462a835 8 * at a location), width and height functions. Everything else
dreschpe 0:de9d1462a835 9 * (locate, printf, putc, cls, window, putp, fill, blit, blitbit)
dreschpe 0:de9d1462a835 10 * will come for free. You can also provide a specialised implementation
dreschpe 0:de9d1462a835 11 * of window and putp to speed up the results
dreschpe 0:de9d1462a835 12 */
dreschpe 0:de9d1462a835 13
dreschpe 0:de9d1462a835 14 #ifndef MBED_GRAPHICSDISPLAY_H
dreschpe 0:de9d1462a835 15 #define MBED_GRAPHICSDISPLAY_H
WiredHome 32:0e4f2ae512e2 16 #include "Bitmap.h"
dreschpe 0:de9d1462a835 17 #include "TextDisplay.h"
dreschpe 0:de9d1462a835 18
WiredHome 37:f19b7e7449dc 19 // GraphicsDisplay has one "soft font" which is in a different format
WiredHome 37:f19b7e7449dc 20 // then the primary font rendering api - see set_font(...). This is
WiredHome 37:f19b7e7449dc 21 // therefore deprecated, but preserved for a time for backward
WiredHome 37:f19b7e7449dc 22 // compatibility.
WiredHome 37:f19b7e7449dc 23 // #define LOCALFONT
WiredHome 37:f19b7e7449dc 24
WiredHome 37:f19b7e7449dc 25
WiredHome 32:0e4f2ae512e2 26 /// The GraphicsDisplay class
WiredHome 32:0e4f2ae512e2 27 ///
WiredHome 32:0e4f2ae512e2 28 /// This graphics display class supports both graphics and text operations.
WiredHome 32:0e4f2ae512e2 29 /// Typically, a subclass is derived from this which has localizations to
WiredHome 32:0e4f2ae512e2 30 /// adapt to a specific hardware platform (e.g. a display controller chip),
WiredHome 32:0e4f2ae512e2 31 /// that overrides methods in here to either add more capability or perhaps
WiredHome 32:0e4f2ae512e2 32 /// to improve performance, by leveraging specific hardware capabilities.
WiredHome 32:0e4f2ae512e2 33 ///
WiredHome 32:0e4f2ae512e2 34 class GraphicsDisplay : public TextDisplay
WiredHome 32:0e4f2ae512e2 35 {
WiredHome 32:0e4f2ae512e2 36 public:
WiredHome 32:0e4f2ae512e2 37 /// The constructor
dreschpe 0:de9d1462a835 38 GraphicsDisplay(const char* name);
WiredHome 32:0e4f2ae512e2 39
WiredHome 32:0e4f2ae512e2 40 /// Draw a pixel in the specified color.
WiredHome 32:0e4f2ae512e2 41 ///
WiredHome 32:0e4f2ae512e2 42 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 43 ///
WiredHome 76:c981284eb513 44 /// @param[in] x is the horizontal offset to this pixel.
WiredHome 76:c981284eb513 45 /// @param[in] y is the vertical offset to this pixel.
WiredHome 76:c981284eb513 46 /// @param[in] color defines the color for the pixel.
WiredHome 32:0e4f2ae512e2 47 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 48 ///
WiredHome 37:f19b7e7449dc 49 virtual RetCode_t pixel(loc_t x, loc_t y, color_t color) = 0;
WiredHome 32:0e4f2ae512e2 50
WiredHome 41:2956a0a221e5 51 /// Write a stream of pixels to the display.
WiredHome 41:2956a0a221e5 52 ///
WiredHome 41:2956a0a221e5 53 /// @note this method must be supported in the derived class.
WiredHome 41:2956a0a221e5 54 ///
WiredHome 76:c981284eb513 55 /// @param[in] p is a pointer to a color_t array to write.
WiredHome 76:c981284eb513 56 /// @param[in] count is the number of pixels to write.
WiredHome 76:c981284eb513 57 /// @param[in] x is the horizontal position on the display.
WiredHome 76:c981284eb513 58 /// @param[in] y is the vertical position on the display.
WiredHome 41:2956a0a221e5 59 /// @returns success/failure code. @see RetCode_t.
WiredHome 41:2956a0a221e5 60 ///
WiredHome 41:2956a0a221e5 61 virtual RetCode_t pixelStream(color_t * p, uint32_t count, loc_t x, loc_t y) = 0;
WiredHome 41:2956a0a221e5 62
WiredHome 41:2956a0a221e5 63 /// Get a pixel from the display.
WiredHome 41:2956a0a221e5 64 ///
WiredHome 41:2956a0a221e5 65 /// @note this method must be supported in the derived class.
WiredHome 41:2956a0a221e5 66 ///
WiredHome 76:c981284eb513 67 /// @param[in] x is the horizontal offset to this pixel.
WiredHome 76:c981284eb513 68 /// @param[in] y is the vertical offset to this pixel.
WiredHome 41:2956a0a221e5 69 /// @returns the pixel. see @color_t
WiredHome 41:2956a0a221e5 70 ///
WiredHome 41:2956a0a221e5 71 virtual color_t getPixel(loc_t x, loc_t y) = 0;
WiredHome 41:2956a0a221e5 72
WiredHome 41:2956a0a221e5 73 /// Get a stream of pixels from the display.
WiredHome 41:2956a0a221e5 74 ///
WiredHome 41:2956a0a221e5 75 /// @note this method must be supported in the derived class.
WiredHome 41:2956a0a221e5 76 ///
WiredHome 76:c981284eb513 77 /// @param[out] p is a pointer to a color_t array to accept the stream.
WiredHome 76:c981284eb513 78 /// @param[in] count is the number of pixels to read.
WiredHome 76:c981284eb513 79 /// @param[in] x is the horizontal offset to this pixel.
WiredHome 76:c981284eb513 80 /// @param[in] y is the vertical offset to this pixel.
WiredHome 41:2956a0a221e5 81 /// @returns success/failure code. @see RetCode_t.
WiredHome 41:2956a0a221e5 82 ///
WiredHome 41:2956a0a221e5 83 virtual RetCode_t getPixelStream(color_t * p, uint32_t count, loc_t x, loc_t y) = 0;
WiredHome 41:2956a0a221e5 84
WiredHome 32:0e4f2ae512e2 85 /// get the screen width in pixels
WiredHome 32:0e4f2ae512e2 86 ///
WiredHome 32:0e4f2ae512e2 87 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 88 ///
WiredHome 32:0e4f2ae512e2 89 /// @returns screen width in pixels.
WiredHome 32:0e4f2ae512e2 90 ///
WiredHome 32:0e4f2ae512e2 91 virtual uint16_t width() = 0;
WiredHome 32:0e4f2ae512e2 92
WiredHome 32:0e4f2ae512e2 93 /// get the screen height in pixels
WiredHome 32:0e4f2ae512e2 94 ///
WiredHome 32:0e4f2ae512e2 95 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 96 ///
WiredHome 32:0e4f2ae512e2 97 /// @returns screen height in pixels.
WiredHome 32:0e4f2ae512e2 98 ///
WiredHome 32:0e4f2ae512e2 99 virtual uint16_t height() = 0;
WiredHome 32:0e4f2ae512e2 100
WiredHome 32:0e4f2ae512e2 101 /// Prepare the controller to write binary data to the screen by positioning
WiredHome 32:0e4f2ae512e2 102 /// the memory cursor.
WiredHome 32:0e4f2ae512e2 103 ///
WiredHome 32:0e4f2ae512e2 104 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 105 ///
WiredHome 76:c981284eb513 106 /// @param[in] x is the horizontal position in pixels (from the left edge)
WiredHome 76:c981284eb513 107 /// @param[in] y is the vertical position in pixels (from the top edge)
WiredHome 32:0e4f2ae512e2 108 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 109 ///
WiredHome 37:f19b7e7449dc 110 virtual RetCode_t SetGraphicsCursor(loc_t x, loc_t y) = 0;
WiredHome 32:0e4f2ae512e2 111
WiredHome 41:2956a0a221e5 112 /// Prepare the controller to read binary data from the screen by positioning
WiredHome 41:2956a0a221e5 113 /// the memory read cursor.
WiredHome 41:2956a0a221e5 114 ///
WiredHome 76:c981284eb513 115 /// @param[in] x is the horizontal position in pixels (from the left edge)
WiredHome 76:c981284eb513 116 /// @param[in] y is the vertical position in pixels (from the top edge)
WiredHome 41:2956a0a221e5 117 /// @returns success/failure code. @see RetCode_t.
WiredHome 41:2956a0a221e5 118 ///
WiredHome 41:2956a0a221e5 119 virtual RetCode_t SetGraphicsCursorRead(loc_t x, loc_t y) = 0;
WiredHome 41:2956a0a221e5 120
WiredHome 32:0e4f2ae512e2 121 /// Draw a filled rectangle in the specified color
WiredHome 32:0e4f2ae512e2 122 ///
WiredHome 32:0e4f2ae512e2 123 /// @note As a side effect, this changes the current
WiredHome 32:0e4f2ae512e2 124 /// foreground color for subsequent operations.
WiredHome 32:0e4f2ae512e2 125 ///
WiredHome 32:0e4f2ae512e2 126 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 127 ///
WiredHome 76:c981284eb513 128 /// @param[in] x1 is the horizontal start of the line.
WiredHome 76:c981284eb513 129 /// @param[in] y1 is the vertical start of the line.
WiredHome 76:c981284eb513 130 /// @param[in] x2 is the horizontal end of the line.
WiredHome 76:c981284eb513 131 /// @param[in] y2 is the vertical end of the line.
WiredHome 76:c981284eb513 132 /// @param[in] color defines the foreground color.
WiredHome 76:c981284eb513 133 /// @param[in] fillit is optional to NOFILL the rectangle. default is FILL.
WiredHome 32:0e4f2ae512e2 134 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 135 ///
WiredHome 37:f19b7e7449dc 136 virtual RetCode_t fillrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 32:0e4f2ae512e2 137 color_t color, fill_t fillit = FILL) = 0;
WiredHome 32:0e4f2ae512e2 138
WiredHome 32:0e4f2ae512e2 139
WiredHome 32:0e4f2ae512e2 140 virtual RetCode_t WriteCommand(unsigned char command, unsigned int data = 0xFFFF) = 0;
WiredHome 32:0e4f2ae512e2 141 virtual RetCode_t WriteData(unsigned char data) = 0;
WiredHome 32:0e4f2ae512e2 142
WiredHome 32:0e4f2ae512e2 143 /// Set the window, which controls where items are written to the screen.
WiredHome 32:0e4f2ae512e2 144 ///
WiredHome 32:0e4f2ae512e2 145 /// When something hits the window width, it wraps back to the left side
WiredHome 32:0e4f2ae512e2 146 /// and down a row. If the initial write is outside the window, it will
WiredHome 32:0e4f2ae512e2 147 /// be captured into the window when it crosses a boundary.
WiredHome 32:0e4f2ae512e2 148 ///
WiredHome 76:c981284eb513 149 /// @param[in] x is the left edge in pixels.
WiredHome 76:c981284eb513 150 /// @param[in] y is the top edge in pixels.
WiredHome 76:c981284eb513 151 /// @param[in] w is the window width in pixels.
WiredHome 76:c981284eb513 152 /// @param[in] h is the window height in pixels.
WiredHome 32:0e4f2ae512e2 153 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 154 ///
WiredHome 37:f19b7e7449dc 155 virtual RetCode_t window(loc_t x, loc_t y, dim_t w, dim_t h);
WiredHome 32:0e4f2ae512e2 156
WiredHome 32:0e4f2ae512e2 157 /// Clear the screen.
WiredHome 32:0e4f2ae512e2 158 ///
WiredHome 32:0e4f2ae512e2 159 /// The behavior is to clear the whole screen.
WiredHome 32:0e4f2ae512e2 160 ///
WiredHome 76:c981284eb513 161 /// @param[in] layers is ignored, but supports maintaining the same
WiredHome 61:8f3153bf0baa 162 /// API for the graphics layer.
WiredHome 32:0e4f2ae512e2 163 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 164 ///
WiredHome 61:8f3153bf0baa 165 virtual RetCode_t cls(uint16_t layers = 0);
WiredHome 32:0e4f2ae512e2 166
WiredHome 76:c981284eb513 167 /// method to set the window region to the full screen.
WiredHome 76:c981284eb513 168 ///
WiredHome 76:c981284eb513 169 /// This restores the 'window' to the full screen, so that
WiredHome 76:c981284eb513 170 /// other operations (@see cls) would clear the whole screen.
WiredHome 76:c981284eb513 171 ///
WiredHome 79:544eb4964795 172 /// @returns success/failure code. @see RetCode_t.
WiredHome 79:544eb4964795 173 ///
WiredHome 79:544eb4964795 174 virtual RetCode_t WindowMax(void);
dreschpe 0:de9d1462a835 175
WiredHome 32:0e4f2ae512e2 176 /// method to put a single color pixel to the screen.
WiredHome 32:0e4f2ae512e2 177 ///
WiredHome 32:0e4f2ae512e2 178 /// This method may be called as many times as necessary after
WiredHome 32:0e4f2ae512e2 179 /// @see _StartGraphicsStream() is called, and it should be followed
WiredHome 32:0e4f2ae512e2 180 /// by _EndGraphicsStream.
WiredHome 32:0e4f2ae512e2 181 ///
WiredHome 76:c981284eb513 182 /// @param[in] pixel is a color value to be put on the screen.
WiredHome 79:544eb4964795 183 /// @returns success/failure code. @see RetCode_t.
WiredHome 32:0e4f2ae512e2 184 ///
WiredHome 55:dfbabef7003e 185 virtual RetCode_t _putp(color_t pixel);
WiredHome 32:0e4f2ae512e2 186
WiredHome 79:544eb4964795 187 /// method to fill a region.
WiredHome 79:544eb4964795 188 ///
WiredHome 79:544eb4964795 189 /// This method fills a region with the specified color.
WiredHome 79:544eb4964795 190 ///
WiredHome 79:544eb4964795 191 /// @param[in] x is the left-edge of the region.
WiredHome 79:544eb4964795 192 /// @param[in] y is the top-edge of the region.
WiredHome 79:544eb4964795 193 /// @param[in] w specifies the width of the region.
WiredHome 79:544eb4964795 194 /// @param[in] h specifies the height of the region.
WiredHome 79:544eb4964795 195 /// @returns success/failure code. @see RetCode_t.
WiredHome 79:544eb4964795 196 ///
WiredHome 79:544eb4964795 197 virtual RetCode_t fill(int x, int y, int w, int h, color_t color);
WiredHome 76:c981284eb513 198
WiredHome 79:544eb4964795 199
WiredHome 79:544eb4964795 200 virtual RetCode_t blit(int x, int y, int w, int h, const int * color);
WiredHome 29:422616aa04bd 201
WiredHome 29:422616aa04bd 202 /// This method transfers one character from the external font data
WiredHome 29:422616aa04bd 203 /// to the screen.
WiredHome 29:422616aa04bd 204 ///
WiredHome 29:422616aa04bd 205 /// @note the font data is in a special format as generate by
WiredHome 95:ef538bd687c0 206 /// the mikroe font creator.
WiredHome 29:422616aa04bd 207 /// See http://www.mikroe.com/glcd-font-creator/
WiredHome 29:422616aa04bd 208 ///
WiredHome 76:c981284eb513 209 /// @param[in] x is the horizontal pixel coordinate
WiredHome 76:c981284eb513 210 /// @param[in] y is the vertical pixel coordinate
WiredHome 76:c981284eb513 211 /// @param[in] fontTable is the base of the table which has the metrics
WiredHome 76:c981284eb513 212 /// @param[in] fontChar is the start of that record in the table for the char (e.g. 'A' - 'Z')
WiredHome 29:422616aa04bd 213 /// @returns how far the cursor should advance to the right in pixels
WiredHome 29:422616aa04bd 214 ///
WiredHome 29:422616aa04bd 215 virtual int fontblit(int x, int y, const unsigned char * fontTable, const unsigned char * fontChar);
WiredHome 29:422616aa04bd 216
WiredHome 32:0e4f2ae512e2 217 /// This method returns the color value from a palette.
WiredHome 32:0e4f2ae512e2 218 ///
WiredHome 32:0e4f2ae512e2 219 /// This method accepts a pointer to a Bitmap color palette, which
WiredHome 32:0e4f2ae512e2 220 /// is a table in memory composed of RGB Quad values (r, g, b, 0),
WiredHome 32:0e4f2ae512e2 221 /// and an index into that table. It then extracts the color information
WiredHome 32:0e4f2ae512e2 222 /// and downsamples it to a color_t value which it returns.
WiredHome 32:0e4f2ae512e2 223 ///
WiredHome 32:0e4f2ae512e2 224 /// @note This method probably has very little value outside of
WiredHome 32:0e4f2ae512e2 225 /// the internal methods for reading BMP files.
WiredHome 32:0e4f2ae512e2 226 ///
WiredHome 76:c981284eb513 227 /// @param[in] colorPaletteArray is the handle to the color palette array to use.
WiredHome 76:c981284eb513 228 /// @param[in] index is the index into the color palette.
WiredHome 32:0e4f2ae512e2 229 /// @returns the color in color_t format.
WiredHome 32:0e4f2ae512e2 230 ///
WiredHome 73:f22a18707b5e 231 color_t RGBQuadToRGB16(RGBQUAD * colorPaletteArray, uint16_t index);
WiredHome 32:0e4f2ae512e2 232
WiredHome 41:2956a0a221e5 233 /// This method converts a 16-bit color value into a 24-bit RGB Quad.
WiredHome 41:2956a0a221e5 234 ///
WiredHome 76:c981284eb513 235 /// @param[in] c is the 16-bit color. @see color_t.
WiredHome 41:2956a0a221e5 236 /// @returns an RGBQUAD value. @see RGBQUAD
WiredHome 41:2956a0a221e5 237 ///
WiredHome 41:2956a0a221e5 238 RGBQUAD RGB16ToRGBQuad(color_t c);
WiredHome 41:2956a0a221e5 239
WiredHome 42:7cbdfd2bbfc5 240 /// This method attempts to render a specified graphics image file at
WiredHome 42:7cbdfd2bbfc5 241 /// the specified screen location.
WiredHome 42:7cbdfd2bbfc5 242 ///
WiredHome 42:7cbdfd2bbfc5 243 /// This supports several variants of the following file types:
WiredHome 42:7cbdfd2bbfc5 244 /// \li Bitmap file format,
WiredHome 42:7cbdfd2bbfc5 245 /// \li Icon file format.
WiredHome 42:7cbdfd2bbfc5 246 ///
WiredHome 42:7cbdfd2bbfc5 247 /// @note The specified image width and height, when adjusted for the
WiredHome 42:7cbdfd2bbfc5 248 /// x and y origin, must fit on the screen, or the image will not
WiredHome 42:7cbdfd2bbfc5 249 /// be shown (it does not clip the image).
WiredHome 42:7cbdfd2bbfc5 250 ///
WiredHome 42:7cbdfd2bbfc5 251 /// @note The file extension is tested, and if it ends in a supported
WiredHome 42:7cbdfd2bbfc5 252 /// format, the appropriate handler is called to render that image.
WiredHome 42:7cbdfd2bbfc5 253 ///
WiredHome 76:c981284eb513 254 /// @param[in] x is the horizontal pixel coordinate
WiredHome 76:c981284eb513 255 /// @param[in] y is the vertical pixel coordinate
WiredHome 76:c981284eb513 256 /// @param[in] FileName refers to the fully qualified path and file on
WiredHome 42:7cbdfd2bbfc5 257 /// a mounted file system.
WiredHome 42:7cbdfd2bbfc5 258 /// @returns success or error code.
WiredHome 42:7cbdfd2bbfc5 259 ///
WiredHome 42:7cbdfd2bbfc5 260 RetCode_t RenderImageFile(loc_t x, loc_t y, const char *FileName);
WiredHome 42:7cbdfd2bbfc5 261
WiredHome 31:c72e12cd5c67 262 /// This method reads a disk file that is in bitmap format and
WiredHome 31:c72e12cd5c67 263 /// puts it on the screen.
WiredHome 31:c72e12cd5c67 264 ///
WiredHome 36:300f6ee0b2cf 265 /// Supported formats:
WiredHome 36:300f6ee0b2cf 266 /// \li 4-bit color format (16 colors)
WiredHome 36:300f6ee0b2cf 267 /// \li 8-bit color format (256 colors)
WiredHome 36:300f6ee0b2cf 268 /// \li 16-bit color format (65k colors)
WiredHome 36:300f6ee0b2cf 269 /// \li compression: no.
WiredHome 36:300f6ee0b2cf 270 ///
WiredHome 36:300f6ee0b2cf 271 /// @note This is a slow operation, typically due to the use of
WiredHome 36:300f6ee0b2cf 272 /// the file system, and partially because bmp files
WiredHome 31:c72e12cd5c67 273 /// are stored from the bottom up, and the memory is written
WiredHome 32:0e4f2ae512e2 274 /// from the top down; as a result, it constantly 'seeks'
WiredHome 32:0e4f2ae512e2 275 /// on the file system for the next row of information.
WiredHome 31:c72e12cd5c67 276 ///
WiredHome 34:c99ec28fac66 277 /// As a performance test, a sample picture was timed. A family picture
WiredHome 34:c99ec28fac66 278 /// was converted to Bitmap format; shrunk to 352 x 272 pixels and save
WiredHome 34:c99ec28fac66 279 /// in 8-bit color format. The resulting file size was 94.5 KByte.
WiredHome 34:c99ec28fac66 280 /// The SPI port interface was set to 20 MHz.
WiredHome 34:c99ec28fac66 281 /// The original bitmap rendering software was purely in software,
WiredHome 34:c99ec28fac66 282 /// pushing 1 pixel at a time to the write function, which did use SPI
WiredHome 34:c99ec28fac66 283 /// hardware (not pin wiggling) to transfer commands and data to the
WiredHome 34:c99ec28fac66 284 /// display. Then, the driver was improved to leverage the capability
WiredHome 34:c99ec28fac66 285 /// of the derived display driver. As a final check, instead of the
WiredHome 34:c99ec28fac66 286 /// [known slow] local file system, a randomly chosen USB stick was
WiredHome 34:c99ec28fac66 287 /// used. The performance results are impressive (but depend on the
WiredHome 34:c99ec28fac66 288 /// listed factors).
WiredHome 34:c99ec28fac66 289 ///
WiredHome 35:7dcab9e3ab25 290 /// \li 34 seconds, LocalFileSystem, Software Rendering
WiredHome 35:7dcab9e3ab25 291 /// \li 9 seconds, LocalFileSystem, Hardware Rending for RA8875
WiredHome 35:7dcab9e3ab25 292 /// \li 3 seconds, MSCFileSystem, Hardware Rendering for RA8875
WiredHome 34:c99ec28fac66 293 ///
WiredHome 76:c981284eb513 294 /// @param[in] x is the horizontal pixel coordinate
WiredHome 76:c981284eb513 295 /// @param[in] y is the vertical pixel coordinate
WiredHome 76:c981284eb513 296 /// @param[in] Name_BMP is the filename on the mounted file system.
WiredHome 31:c72e12cd5c67 297 /// @returns success or error code.
WiredHome 31:c72e12cd5c67 298 ///
WiredHome 37:f19b7e7449dc 299 RetCode_t RenderBitmapFile(loc_t x, loc_t y, const char *Name_BMP);
WiredHome 31:c72e12cd5c67 300
WiredHome 42:7cbdfd2bbfc5 301
WiredHome 42:7cbdfd2bbfc5 302 /// This method reads a disk file that is in ico format and
WiredHome 42:7cbdfd2bbfc5 303 /// puts it on the screen.
WiredHome 42:7cbdfd2bbfc5 304 ///
WiredHome 42:7cbdfd2bbfc5 305 /// Reading the disk is slow, but a typical icon file is small
WiredHome 42:7cbdfd2bbfc5 306 /// so it should be ok.
WiredHome 42:7cbdfd2bbfc5 307 ///
WiredHome 42:7cbdfd2bbfc5 308 /// @note An Icon file can have more than one icon in it. This
WiredHome 42:7cbdfd2bbfc5 309 /// implementation only processes the first image in the file.
WiredHome 42:7cbdfd2bbfc5 310 ///
WiredHome 76:c981284eb513 311 /// @param[in] x is the horizontal pixel coordinate
WiredHome 76:c981284eb513 312 /// @param[in] y is the vertical pixel coordinate
WiredHome 76:c981284eb513 313 /// @param[in] Name_ICO is the filename on the mounted file system.
WiredHome 42:7cbdfd2bbfc5 314 /// @returns success or error code.
WiredHome 42:7cbdfd2bbfc5 315 ///
WiredHome 42:7cbdfd2bbfc5 316 RetCode_t RenderIconFile(loc_t x, loc_t y, const char *Name_ICO);
WiredHome 42:7cbdfd2bbfc5 317
WiredHome 42:7cbdfd2bbfc5 318
WiredHome 29:422616aa04bd 319 /// prints one character at the specified coordinates.
WiredHome 29:422616aa04bd 320 ///
WiredHome 29:422616aa04bd 321 /// This will print the character at the specified pixel coordinates.
WiredHome 29:422616aa04bd 322 ///
WiredHome 76:c981284eb513 323 /// @param[in] x is the horizontal offset in pixels.
WiredHome 76:c981284eb513 324 /// @param[in] y is the vertical offset in pixels.
WiredHome 76:c981284eb513 325 /// @param[in] value is the character to print.
WiredHome 29:422616aa04bd 326 /// @returns number of pixels to index to the right if a character was printed, 0 otherwise.
WiredHome 29:422616aa04bd 327 ///
WiredHome 29:422616aa04bd 328 virtual int character(int x, int y, int value);
WiredHome 29:422616aa04bd 329
WiredHome 32:0e4f2ae512e2 330 /// get the number of colums based on the currently active font
WiredHome 32:0e4f2ae512e2 331 ///
WiredHome 32:0e4f2ae512e2 332 /// @returns number of columns.
WiredHome 32:0e4f2ae512e2 333 ///
WiredHome 32:0e4f2ae512e2 334 virtual int columns(void);
WiredHome 32:0e4f2ae512e2 335
WiredHome 32:0e4f2ae512e2 336 /// get the number of rows based on the currently active font
WiredHome 32:0e4f2ae512e2 337 ///
WiredHome 32:0e4f2ae512e2 338 /// @returns number of rows.
WiredHome 32:0e4f2ae512e2 339 ///
WiredHome 32:0e4f2ae512e2 340 virtual int rows(void);
WiredHome 32:0e4f2ae512e2 341
WiredHome 36:300f6ee0b2cf 342 /// Select a bitmap font (provided by the user) for all subsequent text
WiredHome 36:300f6ee0b2cf 343 /// rendering.
WiredHome 36:300f6ee0b2cf 344 ///
WiredHome 36:300f6ee0b2cf 345 /// This API permits selection of a special memory mapped font, which
WiredHome 36:300f6ee0b2cf 346 /// enables the presentation of many font sizes and styles, including
WiredHome 36:300f6ee0b2cf 347 /// proportional fonts.
WiredHome 32:0e4f2ae512e2 348 ///
WiredHome 32:0e4f2ae512e2 349 /// @note Tool to create the fonts is accessible from its creator
WiredHome 36:300f6ee0b2cf 350 /// available at http://www.mikroe.com.
WiredHome 36:300f6ee0b2cf 351 /// Hint: Change the data to an array of type char[].
WiredHome 32:0e4f2ae512e2 352 ///
WiredHome 32:0e4f2ae512e2 353 /// This special font array has a 4-byte header, followed by
WiredHome 32:0e4f2ae512e2 354 /// the data:
WiredHome 36:300f6ee0b2cf 355 /// \li the number of bytes per char
WiredHome 36:300f6ee0b2cf 356 /// \li the vertical size in pixels for each character
WiredHome 36:300f6ee0b2cf 357 /// \li the horizontal size in pixels for each character
WiredHome 36:300f6ee0b2cf 358 /// \li the number of bytes per vertical line (width of the array)
WiredHome 36:300f6ee0b2cf 359 /// \li the subsequent records are the font information.
WiredHome 36:300f6ee0b2cf 360 ///
WiredHome 76:c981284eb513 361 /// @param[in] font is a pointer to a specially formed font array.
WiredHome 36:300f6ee0b2cf 362 /// NULL, or the omission of this parameter will restore the default
WiredHome 36:300f6ee0b2cf 363 /// font capability, which may use the display controllers hardware
WiredHome 36:300f6ee0b2cf 364 /// font (if available), or no font.
WiredHome 32:0e4f2ae512e2 365 /// @returns error code.
WiredHome 32:0e4f2ae512e2 366 ///
WiredHome 29:422616aa04bd 367 virtual RetCode_t set_font(const unsigned char * font = NULL);
WiredHome 32:0e4f2ae512e2 368
WiredHome 32:0e4f2ae512e2 369 protected:
WiredHome 32:0e4f2ae512e2 370
WiredHome 32:0e4f2ae512e2 371 /// Pure virtual method indicating the start of a graphics stream.
WiredHome 32:0e4f2ae512e2 372 ///
WiredHome 32:0e4f2ae512e2 373 /// This is called prior to a stream of pixel data being sent.
WiredHome 32:0e4f2ae512e2 374 /// This may cause register configuration changes in the derived
WiredHome 32:0e4f2ae512e2 375 /// class in order to prepare the hardware to accept the streaming
WiredHome 32:0e4f2ae512e2 376 /// data.
WiredHome 32:0e4f2ae512e2 377 ///
WiredHome 32:0e4f2ae512e2 378 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 379 ///
WiredHome 32:0e4f2ae512e2 380 /// @returns error code.
WiredHome 32:0e4f2ae512e2 381 ///
WiredHome 32:0e4f2ae512e2 382 virtual RetCode_t _StartGraphicsStream(void) = 0;
dreschpe 0:de9d1462a835 383
WiredHome 32:0e4f2ae512e2 384 /// Pure virtual method indicating the end of a graphics stream.
WiredHome 32:0e4f2ae512e2 385 ///
WiredHome 32:0e4f2ae512e2 386 /// This is called to conclude a stream of pixel data that was sent.
WiredHome 32:0e4f2ae512e2 387 /// This may cause register configuration changes in the derived
WiredHome 32:0e4f2ae512e2 388 /// class in order to stop the hardware from accept the streaming
WiredHome 32:0e4f2ae512e2 389 /// data.
WiredHome 32:0e4f2ae512e2 390 ///
WiredHome 32:0e4f2ae512e2 391 /// @note this method must be supported in the derived class.
WiredHome 32:0e4f2ae512e2 392 ///
WiredHome 32:0e4f2ae512e2 393 /// @returns error code.
WiredHome 32:0e4f2ae512e2 394 ///
WiredHome 32:0e4f2ae512e2 395 virtual RetCode_t _EndGraphicsStream(void) = 0;
WiredHome 32:0e4f2ae512e2 396
WiredHome 42:7cbdfd2bbfc5 397 /// Protected method to render an image given a file handle and
WiredHome 42:7cbdfd2bbfc5 398 /// coordinates.
WiredHome 42:7cbdfd2bbfc5 399 ///
WiredHome 76:c981284eb513 400 /// @param[in] x is the horizontal pixel coordinate
WiredHome 76:c981284eb513 401 /// @param[in] y is the vertical pixel coordinate
WiredHome 76:c981284eb513 402 /// @param[in] w is the image width restriction, or zero to permit full image width.
WiredHome 76:c981284eb513 403 /// @param[in] h is the image height restriction, or zero to permit full image height.
WiredHome 76:c981284eb513 404 /// @param[in] fileOffset is the offset into the file where the image data starts
WiredHome 76:c981284eb513 405 /// @param[in] Image is the filename stream already opened for the data.
WiredHome 42:7cbdfd2bbfc5 406 /// @returns success or error code.
WiredHome 42:7cbdfd2bbfc5 407 ///
WiredHome 42:7cbdfd2bbfc5 408 RetCode_t _RenderBitmap(loc_t x, loc_t y, uint32_t fileOffset, FILE * Image);
WiredHome 42:7cbdfd2bbfc5 409
WiredHome 37:f19b7e7449dc 410 #ifdef LOCALFONT
WiredHome 37:f19b7e7449dc 411 virtual int blitbit(int x, int y, int w, int h, const char * color);
WiredHome 37:f19b7e7449dc 412 #endif
WiredHome 37:f19b7e7449dc 413
WiredHome 29:422616aa04bd 414 const unsigned char * font; ///< reference to an external font somewhere in memory
WiredHome 29:422616aa04bd 415
dreschpe 0:de9d1462a835 416 // pixel location
dreschpe 0:de9d1462a835 417 short _x;
dreschpe 0:de9d1462a835 418 short _y;
dreschpe 0:de9d1462a835 419
dreschpe 0:de9d1462a835 420 // window location
dreschpe 0:de9d1462a835 421 short _x1;
dreschpe 0:de9d1462a835 422 short _x2;
dreschpe 0:de9d1462a835 423 short _y1;
dreschpe 0:de9d1462a835 424 short _y2;
dreschpe 0:de9d1462a835 425 };
dreschpe 0:de9d1462a835 426
dreschpe 0:de9d1462a835 427 #endif
WiredHome 33:b6b710758ab3 428