Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of UniGraphic by
Graphics/GraphicsDisplay.h@5:b222a9461d6b, 2015-02-16 (annotated)
- Committer:
- Geremia
- Date:
- Mon Feb 16 00:52:24 2015 +0000
- Revision:
- 5:b222a9461d6b
- Parent:
- 3:48f3282c2be8
- Child:
- 10:668cf78ff93a
Added pixelread for TFTs
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Geremia | 0:75ec1b3cde17 | 1 | /* mbed GraphicsDisplay Display Library Base Class |
| Geremia | 0:75ec1b3cde17 | 2 | * Copyright (c) 2007-2009 sford |
| Geremia | 0:75ec1b3cde17 | 3 | * Released under the MIT License: http://mbed.org/license/mit |
| Geremia | 0:75ec1b3cde17 | 4 | * |
| Geremia | 0:75ec1b3cde17 | 5 | * A library for providing a common base class for Graphics displays |
| Geremia | 0:75ec1b3cde17 | 6 | * To port a new display, derive from this class and implement |
| Geremia | 0:75ec1b3cde17 | 7 | * the constructor (setup the display), pixel (put a pixel |
| Geremia | 0:75ec1b3cde17 | 8 | * at a location), width and height functions. Everything else |
| Geremia | 0:75ec1b3cde17 | 9 | * (locate, printf, putc, cls, window, putp, fill, blit, blitbit) |
| Geremia | 0:75ec1b3cde17 | 10 | * will come for free. You can also provide a specialised implementation |
| Geremia | 0:75ec1b3cde17 | 11 | * of window and putp to speed up the results |
| Geremia | 0:75ec1b3cde17 | 12 | */ |
| Geremia | 0:75ec1b3cde17 | 13 | |
| Geremia | 0:75ec1b3cde17 | 14 | #ifndef MBED_GRAPHICSDISPLAY_H |
| Geremia | 0:75ec1b3cde17 | 15 | #define MBED_GRAPHICSDISPLAY_H |
| Geremia | 0:75ec1b3cde17 | 16 | |
| Geremia | 0:75ec1b3cde17 | 17 | #include "TextDisplay.h" |
| Geremia | 0:75ec1b3cde17 | 18 | #include "Terminal6x8.h" |
| Geremia | 0:75ec1b3cde17 | 19 | |
| Geremia | 5:b222a9461d6b | 20 | |
| Geremia | 2:713844a55c4e | 21 | |
| Geremia | 2:713844a55c4e | 22 | /* some RGB color definitions */ |
| Geremia | 2:713844a55c4e | 23 | #define Black 0x0000 /* 0, 0, 0 */ |
| Geremia | 2:713844a55c4e | 24 | #define Navy 0x000F /* 0, 0, 128 */ |
| Geremia | 2:713844a55c4e | 25 | #define DarkGreen 0x03E0 /* 0, 128, 0 */ |
| Geremia | 2:713844a55c4e | 26 | #define DarkCyan 0x03EF /* 0, 128, 128 */ |
| Geremia | 2:713844a55c4e | 27 | #define Maroon 0x7800 /* 128, 0, 0 */ |
| Geremia | 2:713844a55c4e | 28 | #define Purple 0x780F /* 128, 0, 128 */ |
| Geremia | 2:713844a55c4e | 29 | #define Olive 0x7BE0 /* 128, 128, 0 */ |
| Geremia | 2:713844a55c4e | 30 | #define LightGrey 0xC618 /* 192, 192, 192 */ |
| Geremia | 2:713844a55c4e | 31 | #define DarkGrey 0x7BEF /* 128, 128, 128 */ |
| Geremia | 2:713844a55c4e | 32 | #define Blue 0x001F /* 0, 0, 255 */ |
| Geremia | 2:713844a55c4e | 33 | #define Green 0x07E0 /* 0, 255, 0 */ |
| Geremia | 2:713844a55c4e | 34 | #define Cyan 0x07FF /* 0, 255, 255 */ |
| Geremia | 2:713844a55c4e | 35 | #define Red 0xF800 /* 255, 0, 0 */ |
| Geremia | 2:713844a55c4e | 36 | #define Magenta 0xF81F /* 255, 0, 255 */ |
| Geremia | 2:713844a55c4e | 37 | #define Yellow 0xFFE0 /* 255, 255, 0 */ |
| Geremia | 2:713844a55c4e | 38 | #define White 0xFFFF /* 255, 255, 255 */ |
| Geremia | 2:713844a55c4e | 39 | #define Orange 0xFD20 /* 255, 165, 0 */ |
| Geremia | 2:713844a55c4e | 40 | #define GreenYellow 0xAFE5 /* 173, 255, 47 */ |
| Geremia | 2:713844a55c4e | 41 | |
| Geremia | 0:75ec1b3cde17 | 42 | /** Bitmap |
| Geremia | 0:75ec1b3cde17 | 43 | */ |
| Geremia | 0:75ec1b3cde17 | 44 | struct Bitmap_s{ |
| Geremia | 0:75ec1b3cde17 | 45 | int xSize; |
| Geremia | 0:75ec1b3cde17 | 46 | int ySize; |
| Geremia | 0:75ec1b3cde17 | 47 | int Byte_in_Line; |
| Geremia | 0:75ec1b3cde17 | 48 | char* data; |
| Geremia | 0:75ec1b3cde17 | 49 | }; |
| Geremia | 0:75ec1b3cde17 | 50 | |
| Geremia | 0:75ec1b3cde17 | 51 | /** A common base class for Graphics displays |
| Geremia | 0:75ec1b3cde17 | 52 | */ |
| Geremia | 0:75ec1b3cde17 | 53 | class GraphicsDisplay : public TextDisplay { |
| Geremia | 0:75ec1b3cde17 | 54 | |
| Geremia | 0:75ec1b3cde17 | 55 | public: |
| Geremia | 0:75ec1b3cde17 | 56 | |
| Geremia | 0:75ec1b3cde17 | 57 | /** Create a GraphicsDisplay interface |
| Geremia | 0:75ec1b3cde17 | 58 | * @param name The name used by the parent class to access the interface |
| Geremia | 0:75ec1b3cde17 | 59 | */ |
| Geremia | 0:75ec1b3cde17 | 60 | GraphicsDisplay(const char* name); |
| Geremia | 0:75ec1b3cde17 | 61 | |
| Geremia | 0:75ec1b3cde17 | 62 | ////// functions needing implementation in derived implementation class /////////////////////////////////////// |
| Geremia | 0:75ec1b3cde17 | 63 | ////// ---------------------------------------------------------------- /////////////////////////////////////// |
| Geremia | 0:75ec1b3cde17 | 64 | |
| Geremia | 0:75ec1b3cde17 | 65 | /** Draw a pixel in the specified color. |
| Geremia | 0:75ec1b3cde17 | 66 | * @note this method must be supported in the derived class. |
| Geremia | 0:75ec1b3cde17 | 67 | * @param x is the horizontal offset to this pixel. |
| Geremia | 0:75ec1b3cde17 | 68 | * @param y is the vertical offset to this pixel. |
| Geremia | 0:75ec1b3cde17 | 69 | * @param color defines the color for the pixel. |
| Geremia | 0:75ec1b3cde17 | 70 | */ |
| Geremia | 0:75ec1b3cde17 | 71 | virtual void pixel(int x, int y, unsigned short color) = 0; |
| Geremia | 0:75ec1b3cde17 | 72 | |
| Geremia | 0:75ec1b3cde17 | 73 | |
| Geremia | 0:75ec1b3cde17 | 74 | |
| Geremia | 0:75ec1b3cde17 | 75 | |
| Geremia | 0:75ec1b3cde17 | 76 | /** Set the window, which controls where items are written to the screen. |
| Geremia | 0:75ec1b3cde17 | 77 | * When something hits the window width, it wraps back to the left side |
| Geremia | 0:75ec1b3cde17 | 78 | * and down a row. If the initial write is outside the window, it will |
| Geremia | 0:75ec1b3cde17 | 79 | * be captured into the window when it crosses a boundary. |
| Geremia | 0:75ec1b3cde17 | 80 | * @param x is the left edge in pixels. |
| Geremia | 0:75ec1b3cde17 | 81 | * @param y is the top edge in pixels. |
| Geremia | 0:75ec1b3cde17 | 82 | * @param w is the window width in pixels. |
| Geremia | 0:75ec1b3cde17 | 83 | * @param h is the window height in pixels. |
| Geremia | 0:75ec1b3cde17 | 84 | * @note this method must be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 85 | */ |
| Geremia | 0:75ec1b3cde17 | 86 | virtual void window(int x, int y, int w, int h) = 0; |
| Geremia | 0:75ec1b3cde17 | 87 | |
| Geremia | 0:75ec1b3cde17 | 88 | /** Push a single pixel into the window and increment position. |
| Geremia | 0:75ec1b3cde17 | 89 | * You may first call window() then push pixels in loop. |
| Geremia | 0:75ec1b3cde17 | 90 | * @param color is the pixel color. |
| Geremia | 0:75ec1b3cde17 | 91 | * @note this method must be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 92 | */ |
| Geremia | 0:75ec1b3cde17 | 93 | virtual void window_pushpixel(unsigned short color) = 0; |
| Geremia | 2:713844a55c4e | 94 | |
| Geremia | 2:713844a55c4e | 95 | /** Push some pixels of the same color into the window and increment position. |
| Geremia | 2:713844a55c4e | 96 | * You must first call window() then push pixels. |
| Geremia | 2:713844a55c4e | 97 | * @param color is the pixel color. |
| Geremia | 2:713844a55c4e | 98 | * @param count: how many |
| Geremia | 2:713844a55c4e | 99 | */ |
| Geremia | 2:713844a55c4e | 100 | virtual void window_pushpixel(unsigned short color, unsigned int count) = 0; |
| Geremia | 2:713844a55c4e | 101 | |
| Geremia | 2:713844a55c4e | 102 | /** Push array of pixel colors into the window and increment position. |
| Geremia | 2:713844a55c4e | 103 | * You must first call window() then push pixels. |
| Geremia | 2:713844a55c4e | 104 | * @param color is the pixel color. |
| Geremia | 2:713844a55c4e | 105 | */ |
| Geremia | 2:713844a55c4e | 106 | virtual void window_pushpixelbuf(unsigned short* color, unsigned int lenght) = 0; |
| Geremia | 0:75ec1b3cde17 | 107 | |
| Geremia | 0:75ec1b3cde17 | 108 | /** If framebuffer is used, it needs to be sent to LCD from time to time |
| Geremia | 0:75ec1b3cde17 | 109 | @note this method must be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 110 | @note real function for LCD, dummy for TFT |
| Geremia | 0:75ec1b3cde17 | 111 | */ |
| Geremia | 0:75ec1b3cde17 | 112 | virtual void copy_to_lcd() = 0; |
| Geremia | 0:75ec1b3cde17 | 113 | |
| Geremia | 0:75ec1b3cde17 | 114 | /////// functions that come for free, but can be overwritten/////////////////////////////////////////////////// |
| Geremia | 0:75ec1b3cde17 | 115 | /////// ----------------------------------------------------/////////////////////////////////////////////////// |
| Geremia | 0:75ec1b3cde17 | 116 | |
| Geremia | 0:75ec1b3cde17 | 117 | /** Set window to max possible size |
| Geremia | 0:75ec1b3cde17 | 118 | * May be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 119 | */ |
| Geremia | 0:75ec1b3cde17 | 120 | virtual void WindowMax(void); |
| Geremia | 0:75ec1b3cde17 | 121 | |
| Geremia | 0:75ec1b3cde17 | 122 | /** clear the entire screen |
| Geremia | 0:75ec1b3cde17 | 123 | * Basically it sets windomax then fill with background color |
| Geremia | 0:75ec1b3cde17 | 124 | * May be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 125 | */ |
| Geremia | 0:75ec1b3cde17 | 126 | virtual void cls(); |
| Geremia | 0:75ec1b3cde17 | 127 | |
| Geremia | 0:75ec1b3cde17 | 128 | /** draw a circle |
| Geremia | 0:75ec1b3cde17 | 129 | * |
| Geremia | 0:75ec1b3cde17 | 130 | * @param x0,y0 center |
| Geremia | 0:75ec1b3cde17 | 131 | * @param r radius |
| Geremia | 0:75ec1b3cde17 | 132 | * @param color 16 bit color * |
| Geremia | 0:75ec1b3cde17 | 133 | * |
| Geremia | 0:75ec1b3cde17 | 134 | */ |
| Geremia | 0:75ec1b3cde17 | 135 | virtual void circle(int x, int y, int r, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 136 | |
| Geremia | 0:75ec1b3cde17 | 137 | /** draw a filled circle |
| Geremia | 0:75ec1b3cde17 | 138 | * |
| Geremia | 0:75ec1b3cde17 | 139 | * @param x0,y0 center |
| Geremia | 0:75ec1b3cde17 | 140 | * @param r radius |
| Geremia | 0:75ec1b3cde17 | 141 | * @param color 16 bit color * |
| Geremia | 0:75ec1b3cde17 | 142 | */ |
| Geremia | 0:75ec1b3cde17 | 143 | virtual void fillcircle(int x, int y, int r, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 144 | |
| Geremia | 0:75ec1b3cde17 | 145 | |
| Geremia | 0:75ec1b3cde17 | 146 | /** draw a 1 pixel line |
| Geremia | 0:75ec1b3cde17 | 147 | * |
| Geremia | 0:75ec1b3cde17 | 148 | * @param x0,y0 start point |
| Geremia | 0:75ec1b3cde17 | 149 | * @param x1,y1 stop point |
| Geremia | 0:75ec1b3cde17 | 150 | * @param color 16 bit color |
| Geremia | 0:75ec1b3cde17 | 151 | * |
| Geremia | 0:75ec1b3cde17 | 152 | */ |
| Geremia | 0:75ec1b3cde17 | 153 | virtual void line(int x0, int y0, int x1, int y1, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 154 | |
| Geremia | 0:75ec1b3cde17 | 155 | /** draw a horizontal line |
| Geremia | 0:75ec1b3cde17 | 156 | * |
| Geremia | 0:75ec1b3cde17 | 157 | * @param x0 horizontal start |
| Geremia | 0:75ec1b3cde17 | 158 | * @param x1 horizontal stop |
| Geremia | 0:75ec1b3cde17 | 159 | * @param y vertical position |
| Geremia | 0:75ec1b3cde17 | 160 | * @param color 16 bit color |
| Geremia | 0:75ec1b3cde17 | 161 | * |
| Geremia | 0:75ec1b3cde17 | 162 | */ |
| Geremia | 0:75ec1b3cde17 | 163 | void hline(int x0, int x1, int y, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 164 | |
| Geremia | 0:75ec1b3cde17 | 165 | /** draw a vertical line |
| Geremia | 0:75ec1b3cde17 | 166 | * |
| Geremia | 0:75ec1b3cde17 | 167 | * @param x horizontal position |
| Geremia | 0:75ec1b3cde17 | 168 | * @param y0 vertical start |
| Geremia | 0:75ec1b3cde17 | 169 | * @param y1 vertical stop |
| Geremia | 0:75ec1b3cde17 | 170 | * @param color 16 bit color |
| Geremia | 0:75ec1b3cde17 | 171 | */ |
| Geremia | 0:75ec1b3cde17 | 172 | void vline(int y0, int y1, int x, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 173 | |
| Geremia | 0:75ec1b3cde17 | 174 | /** draw a rect |
| Geremia | 0:75ec1b3cde17 | 175 | * |
| Geremia | 0:75ec1b3cde17 | 176 | * @param x0,y0 top left corner |
| Geremia | 0:75ec1b3cde17 | 177 | * @param x1,y1 down right corner |
| Geremia | 0:75ec1b3cde17 | 178 | * @param color 16 bit color |
| Geremia | 0:75ec1b3cde17 | 179 | * * |
| Geremia | 0:75ec1b3cde17 | 180 | */ |
| Geremia | 0:75ec1b3cde17 | 181 | virtual void rect(int x0, int y0, int x1, int y1, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 182 | |
| Geremia | 0:75ec1b3cde17 | 183 | /** draw a filled rect |
| Geremia | 0:75ec1b3cde17 | 184 | * |
| Geremia | 0:75ec1b3cde17 | 185 | * @param x0,y0 top left corner |
| Geremia | 0:75ec1b3cde17 | 186 | * @param x1,y1 down right corner |
| Geremia | 0:75ec1b3cde17 | 187 | * @param color 16 bit color |
| Geremia | 0:75ec1b3cde17 | 188 | * |
| Geremia | 0:75ec1b3cde17 | 189 | */ |
| Geremia | 0:75ec1b3cde17 | 190 | virtual void fillrect(int x0, int y0, int x1, int y1, unsigned short color); |
| Geremia | 0:75ec1b3cde17 | 191 | |
| Geremia | 0:75ec1b3cde17 | 192 | /** setup cursor position for text |
| Geremia | 0:75ec1b3cde17 | 193 | * |
| Geremia | 0:75ec1b3cde17 | 194 | * @param x x-position (top left) |
| Geremia | 0:75ec1b3cde17 | 195 | * @param y y-position |
| Geremia | 0:75ec1b3cde17 | 196 | */ |
| Geremia | 0:75ec1b3cde17 | 197 | virtual void locate(int x, int y); |
| Geremia | 0:75ec1b3cde17 | 198 | |
| Geremia | 0:75ec1b3cde17 | 199 | /** put a char on the screen |
| Geremia | 0:75ec1b3cde17 | 200 | * |
| Geremia | 0:75ec1b3cde17 | 201 | * @param value char to print |
| Geremia | 0:75ec1b3cde17 | 202 | * @returns printed char |
| Geremia | 0:75ec1b3cde17 | 203 | * |
| Geremia | 0:75ec1b3cde17 | 204 | */ |
| Geremia | 0:75ec1b3cde17 | 205 | virtual int _putc(int value); |
| Geremia | 0:75ec1b3cde17 | 206 | |
| Geremia | 0:75ec1b3cde17 | 207 | /** draw a character on given position out of the active font to the TFT |
| Geremia | 0:75ec1b3cde17 | 208 | * |
| Geremia | 0:75ec1b3cde17 | 209 | * @param x x-position of char (top left) |
| Geremia | 0:75ec1b3cde17 | 210 | * @param y y-position |
| Geremia | 0:75ec1b3cde17 | 211 | * @param c char to print |
| Geremia | 0:75ec1b3cde17 | 212 | * |
| Geremia | 0:75ec1b3cde17 | 213 | */ |
| Geremia | 0:75ec1b3cde17 | 214 | virtual void character(int x, int y, int c); |
| Geremia | 0:75ec1b3cde17 | 215 | |
| Geremia | 0:75ec1b3cde17 | 216 | /** paint a bitmap on the TFT |
| Geremia | 0:75ec1b3cde17 | 217 | * |
| Geremia | 0:75ec1b3cde17 | 218 | * @param x,y : upper left corner |
| Geremia | 0:75ec1b3cde17 | 219 | * @param w width of bitmap |
| Geremia | 0:75ec1b3cde17 | 220 | * @param h high of bitmap |
| Geremia | 0:75ec1b3cde17 | 221 | * @param *bitmap pointer to the bitmap data |
| Geremia | 0:75ec1b3cde17 | 222 | * |
| Geremia | 0:75ec1b3cde17 | 223 | * bitmap format: 16 bit R5 G6 B5 |
| Geremia | 0:75ec1b3cde17 | 224 | * |
| Geremia | 0:75ec1b3cde17 | 225 | * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5 |
| Geremia | 0:75ec1b3cde17 | 226 | * use winhex to load this file and mark data stating at offset 0x46 to end |
| Geremia | 0:75ec1b3cde17 | 227 | * use edit -> copy block -> C Source to export C array |
| Geremia | 0:75ec1b3cde17 | 228 | * paste this array into your program |
| Geremia | 0:75ec1b3cde17 | 229 | * |
| Geremia | 0:75ec1b3cde17 | 230 | * define the array as static const unsigned char to put it into flash memory |
| Geremia | 0:75ec1b3cde17 | 231 | * cast the pointer to (unsigned char *) : |
| Geremia | 0:75ec1b3cde17 | 232 | * tft.Bitmap(10,40,309,50,(unsigned char *)scala); |
| Geremia | 0:75ec1b3cde17 | 233 | */ |
| Geremia | 0:75ec1b3cde17 | 234 | void Bitmap(int x, int y, int w, int h,unsigned char *bitmap); |
| Geremia | 0:75ec1b3cde17 | 235 | |
| Geremia | 0:75ec1b3cde17 | 236 | /** paint monochrome bitmap to screen |
| Geremia | 0:75ec1b3cde17 | 237 | * |
| Geremia | 0:75ec1b3cde17 | 238 | * @param bm Bitmap in flash |
| Geremia | 0:75ec1b3cde17 | 239 | * @param x x start |
| Geremia | 0:75ec1b3cde17 | 240 | * @param y y start |
| Geremia | 0:75ec1b3cde17 | 241 | * |
| Geremia | 0:75ec1b3cde17 | 242 | */ |
| Geremia | 0:75ec1b3cde17 | 243 | void Bitmap_BW(Bitmap_s bm, int x, int y); |
| Geremia | 0:75ec1b3cde17 | 244 | |
| Geremia | 0:75ec1b3cde17 | 245 | /** paint a 16 bit BMP from filesytem on the TFT (slow) |
| Geremia | 0:75ec1b3cde17 | 246 | * |
| Geremia | 0:75ec1b3cde17 | 247 | * @param x,y : position of upper left corner |
| Geremia | 0:75ec1b3cde17 | 248 | * @param *Name_BMP name of the BMP file with drive: "/local/test.bmp" |
| Geremia | 0:75ec1b3cde17 | 249 | * |
| Geremia | 0:75ec1b3cde17 | 250 | * @returns 1 if bmp file was found and painted |
| Geremia | 0:75ec1b3cde17 | 251 | * @returns 0 if bmp file was found not found |
| Geremia | 0:75ec1b3cde17 | 252 | * @returns -1 if file is no bmp |
| Geremia | 0:75ec1b3cde17 | 253 | * @returns -2 if bmp file is no 16 bit bmp |
| Geremia | 0:75ec1b3cde17 | 254 | * @returns -3 if bmp file is to big for screen |
| Geremia | 0:75ec1b3cde17 | 255 | * @returns -4 if buffer malloc go wrong |
| Geremia | 0:75ec1b3cde17 | 256 | * |
| Geremia | 0:75ec1b3cde17 | 257 | * bitmap format: 16 bit R5 G6 B5 |
| Geremia | 0:75ec1b3cde17 | 258 | * |
| Geremia | 0:75ec1b3cde17 | 259 | * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5 |
| Geremia | 0:75ec1b3cde17 | 260 | * copy to internal file system or SD card |
| Geremia | 0:75ec1b3cde17 | 261 | */ |
| Geremia | 0:75ec1b3cde17 | 262 | int BMP_16(int x, int y, const char *Name_BMP); |
| Geremia | 0:75ec1b3cde17 | 263 | |
| Geremia | 0:75ec1b3cde17 | 264 | |
| Geremia | 0:75ec1b3cde17 | 265 | |
| Geremia | 0:75ec1b3cde17 | 266 | /** select the font to use |
| Geremia | 0:75ec1b3cde17 | 267 | * |
| Geremia | 0:75ec1b3cde17 | 268 | * @param f pointer to font array |
| Geremia | 0:75ec1b3cde17 | 269 | * @param firstascii first ascii code present in font array, default 32 (space) |
| Geremia | 0:75ec1b3cde17 | 270 | * @param lastascii last ascii code present in font array, default 127 (DEL) |
| Geremia | 3:48f3282c2be8 | 271 | * @param proportional enable/disable variable font width (default enabled) |
| Geremia | 0:75ec1b3cde17 | 272 | * |
| Geremia | 0:75ec1b3cde17 | 273 | * font array can created with GLCD Font Creator from http://www.mikroe.com |
| Geremia | 0:75ec1b3cde17 | 274 | * you have to add 4 parameter at the beginning of the font array to use: |
| Geremia | 0:75ec1b3cde17 | 275 | * - the number of byte / char (not used in this revision, set to whatever) |
| Geremia | 0:75ec1b3cde17 | 276 | * - the vertial size in pixel |
| Geremia | 0:75ec1b3cde17 | 277 | * - the horizontal size in pixel |
| Geremia | 0:75ec1b3cde17 | 278 | * - the number of byte per vertical line (not used in this revision, set to whatever) |
| Geremia | 0:75ec1b3cde17 | 279 | * you also have to change the array to cont unsigned char[] and __align(2) |
| Geremia | 0:75ec1b3cde17 | 280 | * |
| Geremia | 0:75ec1b3cde17 | 281 | */ |
| Geremia | 3:48f3282c2be8 | 282 | void set_font(unsigned char* f, unsigned char firstascii=32, unsigned char lastascii=127, bool proportional = true); |
| Geremia | 0:75ec1b3cde17 | 283 | |
| Geremia | 0:75ec1b3cde17 | 284 | /** Get the number of columns based on the currently active font. |
| Geremia | 0:75ec1b3cde17 | 285 | * @returns number of columns. |
| Geremia | 0:75ec1b3cde17 | 286 | * @note this method may be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 287 | */ |
| Geremia | 0:75ec1b3cde17 | 288 | virtual int columns(); |
| Geremia | 0:75ec1b3cde17 | 289 | |
| Geremia | 0:75ec1b3cde17 | 290 | /** Get the number of rows based on the currently active font. |
| Geremia | 0:75ec1b3cde17 | 291 | * @returns number of rows. |
| Geremia | 0:75ec1b3cde17 | 292 | * @note this method may be overridden in a derived class. |
| Geremia | 0:75ec1b3cde17 | 293 | */ |
| Geremia | 0:75ec1b3cde17 | 294 | virtual int rows(); |
| Geremia | 0:75ec1b3cde17 | 295 | |
| Geremia | 0:75ec1b3cde17 | 296 | /** get the current oriented screen width in pixels |
| Geremia | 0:75ec1b3cde17 | 297 | * @returns screen width in pixels. |
| Geremia | 0:75ec1b3cde17 | 298 | */ |
| Geremia | 0:75ec1b3cde17 | 299 | int width(); |
| Geremia | 0:75ec1b3cde17 | 300 | |
| Geremia | 0:75ec1b3cde17 | 301 | /** get the current oriented screen height in pixels |
| Geremia | 0:75ec1b3cde17 | 302 | * @returns screen height in pixels. |
| Geremia | 0:75ec1b3cde17 | 303 | */ |
| Geremia | 0:75ec1b3cde17 | 304 | int height(); |
| Geremia | 0:75ec1b3cde17 | 305 | |
| Geremia | 0:75ec1b3cde17 | 306 | /** set the current oriented screen width in pixels |
| Geremia | 0:75ec1b3cde17 | 307 | * @param width screen width in pixels. |
| Geremia | 0:75ec1b3cde17 | 308 | */ |
| Geremia | 0:75ec1b3cde17 | 309 | void set_width(int width); |
| Geremia | 0:75ec1b3cde17 | 310 | |
| Geremia | 0:75ec1b3cde17 | 311 | /** set the current oriented screen height in pixels |
| Geremia | 0:75ec1b3cde17 | 312 | * @param height screen height in pixels. |
| Geremia | 0:75ec1b3cde17 | 313 | */ |
| Geremia | 0:75ec1b3cde17 | 314 | void set_height(int height); |
| Geremia | 0:75ec1b3cde17 | 315 | |
| Geremia | 2:713844a55c4e | 316 | /** setup auto update of screen |
| Geremia | 2:713844a55c4e | 317 | * |
| Geremia | 2:713844a55c4e | 318 | * @param up 1 = on , 0 = off |
| Geremia | 2:713844a55c4e | 319 | * if switched off the program has to call copy_to_lcd() |
| Geremia | 2:713844a55c4e | 320 | * to update screen from framebuffer |
| Geremia | 2:713844a55c4e | 321 | */ |
| Geremia | 2:713844a55c4e | 322 | void set_auto_up(bool up); |
| Geremia | 2:713844a55c4e | 323 | |
| Geremia | 2:713844a55c4e | 324 | /** get status of the auto update function |
| Geremia | 2:713844a55c4e | 325 | * |
| Geremia | 2:713844a55c4e | 326 | * @returns if auto update is on |
| Geremia | 2:713844a55c4e | 327 | */ |
| Geremia | 2:713844a55c4e | 328 | bool get_auto_up(void); |
| Geremia | 0:75ec1b3cde17 | 329 | |
| Geremia | 0:75ec1b3cde17 | 330 | |
| Geremia | 0:75ec1b3cde17 | 331 | |
| Geremia | 0:75ec1b3cde17 | 332 | private: |
| Geremia | 0:75ec1b3cde17 | 333 | |
| Geremia | 0:75ec1b3cde17 | 334 | unsigned char* font; |
| Geremia | 0:75ec1b3cde17 | 335 | // display width and height related to current orientation |
| Geremia | 0:75ec1b3cde17 | 336 | int oriented_width; |
| Geremia | 0:75ec1b3cde17 | 337 | int oriented_height; |
| Geremia | 0:75ec1b3cde17 | 338 | |
| Geremia | 0:75ec1b3cde17 | 339 | // text char location |
| Geremia | 0:75ec1b3cde17 | 340 | int char_x; |
| Geremia | 0:75ec1b3cde17 | 341 | int char_y; |
| Geremia | 0:75ec1b3cde17 | 342 | |
| Geremia | 0:75ec1b3cde17 | 343 | int fontoffset;// bytes / char (short) |
| Geremia | 0:75ec1b3cde17 | 344 | int fonthor; // hor size of font (char) |
| Geremia | 0:75ec1b3cde17 | 345 | int fontvert; // ver size of font (char) |
| Geremia | 0:75ec1b3cde17 | 346 | int fontbpl; // bytes per line (char) |
| Geremia | 0:75ec1b3cde17 | 347 | unsigned char firstch; // first ascii code present in font array (usually 32) |
| Geremia | 0:75ec1b3cde17 | 348 | unsigned char lastch; // last ascii code present in font array (usually 127) |
| Geremia | 3:48f3282c2be8 | 349 | bool auto_up; // autoupdate flag for LCD |
| Geremia | 3:48f3282c2be8 | 350 | bool fontprop; |
| Geremia | 0:75ec1b3cde17 | 351 | |
| Geremia | 0:75ec1b3cde17 | 352 | |
| Geremia | 0:75ec1b3cde17 | 353 | }; |
| Geremia | 0:75ec1b3cde17 | 354 | |
| Geremia | 0:75ec1b3cde17 | 355 | #endif |
