Display

Dependents:   Termocamera_ironblack

Committer:
gia95
Date:
Fri Sep 27 12:50:22 2019 +0000
Revision:
35:ebad2ec6f903
Parent:
34:dfb770591146
unigraphic;

Who changed what in which revision?

UserRevisionLine numberNew 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
gia95 34:dfb770591146 42 //Grey Scale color
gia95 34:dfb770591146 43
gia95 34:dfb770591146 44
gia95 35:ebad2ec6f903 45
gia95 35:ebad2ec6f903 46
gia95 35:ebad2ec6f903 47
gia95 35:ebad2ec6f903 48 #define color1 0x0000
gia95 35:ebad2ec6f903 49 #define color2 0x0004
gia95 35:ebad2ec6f903 50 #define color3 0x0006
gia95 35:ebad2ec6f903 51 #define color4 0x0008
gia95 35:ebad2ec6f903 52 #define color5 0x000A
gia95 35:ebad2ec6f903 53 #define color6 0x000B
gia95 35:ebad2ec6f903 54 #define color7 0x000C
gia95 35:ebad2ec6f903 55 #define color8 0x000D
gia95 35:ebad2ec6f903 56 #define color9 0x080E
gia95 35:ebad2ec6f903 57 #define color10 0x080E
gia95 35:ebad2ec6f903 58 #define color11 0x100F
gia95 35:ebad2ec6f903 59 #define color12 0x1810
gia95 35:ebad2ec6f903 60 #define color13 0x2010
gia95 35:ebad2ec6f903 61 #define color14 0x2811
gia95 35:ebad2ec6f903 62 #define color15 0x3011
gia95 35:ebad2ec6f903 63 #define color16 0x3011
gia95 35:ebad2ec6f903 64 #define color17 0x3812
gia95 35:ebad2ec6f903 65 #define color18 0x4012
gia95 35:ebad2ec6f903 66 #define color19 0x4812
gia95 35:ebad2ec6f903 67 #define color20 0x4812
gia95 35:ebad2ec6f903 68 #define color21 0x5013
gia95 35:ebad2ec6f903 69 #define color22 0x5813
gia95 35:ebad2ec6f903 70 #define color23 0x6013
gia95 35:ebad2ec6f903 71 #define color24 0x6813
gia95 35:ebad2ec6f903 72 #define color25 0x6813
gia95 35:ebad2ec6f903 73 #define color26 0x7013
gia95 35:ebad2ec6f903 74 #define color27 0x7813
gia95 35:ebad2ec6f903 75 #define color28 0x8013
gia95 35:ebad2ec6f903 76 #define color29 0x8013
gia95 35:ebad2ec6f903 77 #define color30 0x8813
gia95 35:ebad2ec6f903 78 #define color31 0x9013
gia95 35:ebad2ec6f903 79 #define color32 0x9813
gia95 35:ebad2ec6f903 80 #define color33 0x9813
gia95 35:ebad2ec6f903 81 #define color34 0xA013
gia95 35:ebad2ec6f903 82 #define color35 0xA013
gia95 35:ebad2ec6f903 83 #define color36 0xA813
gia95 35:ebad2ec6f903 84 #define color37 0xA813
gia95 35:ebad2ec6f903 85 #define color38 0xB012
gia95 35:ebad2ec6f903 86 #define color39 0xB012
gia95 35:ebad2ec6f903 87 #define color40 0xB832
gia95 35:ebad2ec6f903 88 #define color41 0xB832
gia95 35:ebad2ec6f903 89 #define color42 0xB832
gia95 35:ebad2ec6f903 90 #define color43 0xC052
gia95 35:ebad2ec6f903 91 #define color44 0xC051
gia95 35:ebad2ec6f903 92 #define color45 0xC071
gia95 35:ebad2ec6f903 93 #define color46 0xC890
gia95 35:ebad2ec6f903 94 #define color47 0xC8B0
gia95 35:ebad2ec6f903 95 #define color48 0xC8AF
gia95 35:ebad2ec6f903 96 #define color49 0xD0CF
gia95 35:ebad2ec6f903 97 #define color50 0xD0EE
gia95 35:ebad2ec6f903 98 #define color51 0xD10D
gia95 35:ebad2ec6f903 99 #define color52 0xD12C
gia95 35:ebad2ec6f903 100 #define color53 0xD94C
gia95 35:ebad2ec6f903 101 #define color54 0xD96B
gia95 35:ebad2ec6f903 102 #define color55 0xD989
gia95 35:ebad2ec6f903 103 #define color56 0xD9A8
gia95 35:ebad2ec6f903 104 #define color57 0xE1C6
gia95 35:ebad2ec6f903 105 #define color58 0xE1E5
gia95 35:ebad2ec6f903 106 #define color59 0xE203
gia95 35:ebad2ec6f903 107 #define color60 0xE223
gia95 35:ebad2ec6f903 108 #define color61 0xE242
gia95 35:ebad2ec6f903 109 #define color62 0xEA62
gia95 35:ebad2ec6f903 110 #define color63 0xEA61
gia95 35:ebad2ec6f903 111 #define color64 0xEA81
gia95 35:ebad2ec6f903 112 #define color65 0xEAA1
gia95 35:ebad2ec6f903 113 #define color66 0xEAC0
gia95 35:ebad2ec6f903 114 #define color67 0xEAE0
gia95 35:ebad2ec6f903 115 #define color68 0xEB00
gia95 35:ebad2ec6f903 116 #define color69 0xF320
gia95 35:ebad2ec6f903 117 #define color70 0xF320
gia95 35:ebad2ec6f903 118 #define color71 0xF340
gia95 35:ebad2ec6f903 119 #define color72 0xF360
gia95 35:ebad2ec6f903 120 #define color73 0xF380
gia95 35:ebad2ec6f903 121 #define color74 0xF3A0
gia95 35:ebad2ec6f903 122 #define color75 0xF3C0
gia95 35:ebad2ec6f903 123 #define color76 0xF3E0
gia95 35:ebad2ec6f903 124 #define color77 0xF400
gia95 35:ebad2ec6f903 125 #define color78 0xF420
gia95 35:ebad2ec6f903 126 #define color79 0xFC40
gia95 35:ebad2ec6f903 127 #define color80 0xFC40
gia95 35:ebad2ec6f903 128 #define color81 0xFC60
gia95 35:ebad2ec6f903 129 #define color82 0xFC80
gia95 35:ebad2ec6f903 130 #define color83 0xFCA0
gia95 35:ebad2ec6f903 131 #define color84 0xFCC0
gia95 35:ebad2ec6f903 132 #define color85 0xFCE0
gia95 35:ebad2ec6f903 133 #define color86 0xFD00
gia95 35:ebad2ec6f903 134 #define color87 0xFD40
gia95 35:ebad2ec6f903 135 #define color88 0xFD60
gia95 35:ebad2ec6f903 136 #define color89 0xFD80
gia95 35:ebad2ec6f903 137 #define color90 0xFD80
gia95 35:ebad2ec6f903 138 #define color91 0xFDC0
gia95 35:ebad2ec6f903 139 #define color92 0xFDC0
gia95 35:ebad2ec6f903 140 #define color93 0xFDE0
gia95 35:ebad2ec6f903 141 #define color94 0xFE00
gia95 35:ebad2ec6f903 142 #define color95 0xFE20
gia95 35:ebad2ec6f903 143 #define color96 0xFE40
gia95 35:ebad2ec6f903 144 #define color97 0xFE60
gia95 35:ebad2ec6f903 145 #define color98 0xFE80
gia95 35:ebad2ec6f903 146 #define color99 0xFEA1
gia95 35:ebad2ec6f903 147 #define color100 0xFEC1
gia95 35:ebad2ec6f903 148 #define color101 0xFEC1
gia95 35:ebad2ec6f903 149 #define color102 0xFEE2
gia95 35:ebad2ec6f903 150 #define color103 0xFF04
gia95 35:ebad2ec6f903 151 #define color104 0xFF04
gia95 35:ebad2ec6f903 152 #define color105 0xFF26
gia95 35:ebad2ec6f903 153 #define color106 0xFF47
gia95 35:ebad2ec6f903 154 #define color107 0xFF49
gia95 35:ebad2ec6f903 155 #define color108 0xFF6B
gia95 35:ebad2ec6f903 156 #define color109 0xFF6C
gia95 35:ebad2ec6f903 157 #define color110 0xFF8E
gia95 35:ebad2ec6f903 158 #define color111 0xFF90
gia95 35:ebad2ec6f903 159 #define color112 0xFFB2
gia95 35:ebad2ec6f903 160 #define color113 0xFFB4
gia95 35:ebad2ec6f903 161 #define color114 0xFFB6
gia95 35:ebad2ec6f903 162 #define color115 0xFFD8
gia95 35:ebad2ec6f903 163 #define color116 0xFFD9
gia95 35:ebad2ec6f903 164 #define color117 0xFFDB
gia95 35:ebad2ec6f903 165 #define color118 0xFFFC
gia95 35:ebad2ec6f903 166 #define color119 0xFFFD
gia95 35:ebad2ec6f903 167 #define color120 0xFFFF
gia95 34:dfb770591146 168
gia95 34:dfb770591146 169
gia95 34:dfb770591146 170
gia95 34:dfb770591146 171
gia95 34:dfb770591146 172
gia95 34:dfb770591146 173
Geremia 0:75ec1b3cde17 174 /** Bitmap
Geremia 0:75ec1b3cde17 175 */
Geremia 0:75ec1b3cde17 176 struct Bitmap_s{
Geremia 0:75ec1b3cde17 177 int xSize;
Geremia 0:75ec1b3cde17 178 int ySize;
Geremia 0:75ec1b3cde17 179 int Byte_in_Line;
Geremia 0:75ec1b3cde17 180 char* data;
Geremia 0:75ec1b3cde17 181 };
Geremia 0:75ec1b3cde17 182
Geremia 0:75ec1b3cde17 183 /** A common base class for Graphics displays
Geremia 0:75ec1b3cde17 184 */
Geremia 0:75ec1b3cde17 185 class GraphicsDisplay : public TextDisplay {
Geremia 0:75ec1b3cde17 186
Geremia 0:75ec1b3cde17 187 public:
Geremia 0:75ec1b3cde17 188
Geremia 0:75ec1b3cde17 189 /** Create a GraphicsDisplay interface
Geremia 0:75ec1b3cde17 190 * @param name The name used by the parent class to access the interface
Geremia 0:75ec1b3cde17 191 */
Geremia 0:75ec1b3cde17 192 GraphicsDisplay(const char* name);
Geremia 0:75ec1b3cde17 193
Geremia 0:75ec1b3cde17 194 ////// functions needing implementation in derived implementation class ///////////////////////////////////////
Geremia 0:75ec1b3cde17 195 ////// ---------------------------------------------------------------- ///////////////////////////////////////
Geremia 0:75ec1b3cde17 196
Geremia 0:75ec1b3cde17 197 /** Draw a pixel in the specified color.
Geremia 0:75ec1b3cde17 198 * @note this method must be supported in the derived class.
Geremia 0:75ec1b3cde17 199 * @param x is the horizontal offset to this pixel.
Geremia 0:75ec1b3cde17 200 * @param y is the vertical offset to this pixel.
Geremia 0:75ec1b3cde17 201 * @param color defines the color for the pixel.
Geremia 0:75ec1b3cde17 202 */
Geremia 0:75ec1b3cde17 203 virtual void pixel(int x, int y, unsigned short color) = 0;
Geremia 0:75ec1b3cde17 204
Geremia 0:75ec1b3cde17 205 /** Set the window, which controls where items are written to the screen.
Geremia 0:75ec1b3cde17 206 * When something hits the window width, it wraps back to the left side
Geremia 0:75ec1b3cde17 207 * and down a row. If the initial write is outside the window, it will
Geremia 0:75ec1b3cde17 208 * be captured into the window when it crosses a boundary.
Geremia 0:75ec1b3cde17 209 * @param x is the left edge in pixels.
Geremia 0:75ec1b3cde17 210 * @param y is the top edge in pixels.
Geremia 0:75ec1b3cde17 211 * @param w is the window width in pixels.
Geremia 0:75ec1b3cde17 212 * @param h is the window height in pixels.
Geremia 0:75ec1b3cde17 213 * @note this method must be overridden in a derived class.
Geremia 0:75ec1b3cde17 214 */
Geremia 0:75ec1b3cde17 215 virtual void window(int x, int y, int w, int h) = 0;
Geremia 0:75ec1b3cde17 216
Geremia 0:75ec1b3cde17 217 /** Push a single pixel into the window and increment position.
Geremia 0:75ec1b3cde17 218 * You may first call window() then push pixels in loop.
Geremia 0:75ec1b3cde17 219 * @param color is the pixel color.
Geremia 0:75ec1b3cde17 220 * @note this method must be overridden in a derived class.
Geremia 0:75ec1b3cde17 221 */
Geremia 0:75ec1b3cde17 222 virtual void window_pushpixel(unsigned short color) = 0;
Geremia 2:713844a55c4e 223
Geremia 2:713844a55c4e 224 /** Push some pixels of the same color into the window and increment position.
Geremia 2:713844a55c4e 225 * You must first call window() then push pixels.
Geremia 2:713844a55c4e 226 * @param color is the pixel color.
Geremia 2:713844a55c4e 227 * @param count: how many
Geremia 2:713844a55c4e 228 */
Geremia 2:713844a55c4e 229 virtual void window_pushpixel(unsigned short color, unsigned int count) = 0;
Geremia 2:713844a55c4e 230
Geremia 2:713844a55c4e 231 /** Push array of pixel colors into the window and increment position.
Geremia 2:713844a55c4e 232 * You must first call window() then push pixels.
Geremia 2:713844a55c4e 233 * @param color is the pixel color.
Geremia 2:713844a55c4e 234 */
Geremia 2:713844a55c4e 235 virtual void window_pushpixelbuf(unsigned short* color, unsigned int lenght) = 0;
Geremia 0:75ec1b3cde17 236
Geremia 0:75ec1b3cde17 237 /** If framebuffer is used, it needs to be sent to LCD from time to time
Geremia 0:75ec1b3cde17 238 @note this method must be overridden in a derived class.
Geremia 0:75ec1b3cde17 239 @note real function for LCD, dummy for TFT
Geremia 0:75ec1b3cde17 240 */
Geremia 0:75ec1b3cde17 241 virtual void copy_to_lcd() = 0;
Geremia 0:75ec1b3cde17 242
Geremia 0:75ec1b3cde17 243 /////// functions that come for free, but can be overwritten///////////////////////////////////////////////////
Geremia 0:75ec1b3cde17 244 /////// ----------------------------------------------------///////////////////////////////////////////////////
Geremia 0:75ec1b3cde17 245
Geremia 0:75ec1b3cde17 246 /** Set window to max possible size
Geremia 0:75ec1b3cde17 247 * May be overridden in a derived class.
Geremia 0:75ec1b3cde17 248 */
Geremia 0:75ec1b3cde17 249 virtual void WindowMax(void);
Geremia 0:75ec1b3cde17 250
Geremia 0:75ec1b3cde17 251 /** clear the entire screen
Geremia 0:75ec1b3cde17 252 * Basically it sets windomax then fill with background color
Geremia 0:75ec1b3cde17 253 * May be overridden in a derived class.
Geremia 0:75ec1b3cde17 254 */
Geremia 0:75ec1b3cde17 255 virtual void cls();
Geremia 0:75ec1b3cde17 256
Geremia 0:75ec1b3cde17 257 /** draw a circle
Geremia 0:75ec1b3cde17 258 *
Geremia 0:75ec1b3cde17 259 * @param x0,y0 center
Geremia 0:75ec1b3cde17 260 * @param r radius
Geremia 0:75ec1b3cde17 261 * @param color 16 bit color *
Geremia 0:75ec1b3cde17 262 *
Geremia 0:75ec1b3cde17 263 */
Geremia 0:75ec1b3cde17 264 virtual void circle(int x, int y, int r, unsigned short color);
Geremia 0:75ec1b3cde17 265
Geremia 0:75ec1b3cde17 266 /** draw a filled circle
Geremia 0:75ec1b3cde17 267 *
Geremia 0:75ec1b3cde17 268 * @param x0,y0 center
Geremia 0:75ec1b3cde17 269 * @param r radius
Geremia 0:75ec1b3cde17 270 * @param color 16 bit color *
Geremia 0:75ec1b3cde17 271 */
Geremia 0:75ec1b3cde17 272 virtual void fillcircle(int x, int y, int r, unsigned short color);
Geremia 0:75ec1b3cde17 273
Geremia 0:75ec1b3cde17 274
Geremia 0:75ec1b3cde17 275 /** draw a 1 pixel line
Geremia 0:75ec1b3cde17 276 *
Geremia 0:75ec1b3cde17 277 * @param x0,y0 start point
Geremia 0:75ec1b3cde17 278 * @param x1,y1 stop point
Geremia 0:75ec1b3cde17 279 * @param color 16 bit color
Geremia 0:75ec1b3cde17 280 *
Geremia 0:75ec1b3cde17 281 */
Geremia 0:75ec1b3cde17 282 virtual void line(int x0, int y0, int x1, int y1, unsigned short color);
Geremia 0:75ec1b3cde17 283
Geremia 0:75ec1b3cde17 284 /** draw a horizontal line
Geremia 0:75ec1b3cde17 285 *
Geremia 0:75ec1b3cde17 286 * @param x0 horizontal start
Geremia 0:75ec1b3cde17 287 * @param x1 horizontal stop
Geremia 0:75ec1b3cde17 288 * @param y vertical position
Geremia 0:75ec1b3cde17 289 * @param color 16 bit color
Geremia 0:75ec1b3cde17 290 *
Geremia 0:75ec1b3cde17 291 */
Geremia 0:75ec1b3cde17 292 void hline(int x0, int x1, int y, unsigned short color);
Geremia 0:75ec1b3cde17 293
Geremia 0:75ec1b3cde17 294 /** draw a vertical line
Geremia 0:75ec1b3cde17 295 *
Geremia 0:75ec1b3cde17 296 * @param x horizontal position
Geremia 0:75ec1b3cde17 297 * @param y0 vertical start
Geremia 0:75ec1b3cde17 298 * @param y1 vertical stop
Geremia 0:75ec1b3cde17 299 * @param color 16 bit color
Geremia 0:75ec1b3cde17 300 */
Geremia 0:75ec1b3cde17 301 void vline(int y0, int y1, int x, unsigned short color);
Geremia 0:75ec1b3cde17 302
Geremia 0:75ec1b3cde17 303 /** draw a rect
Geremia 0:75ec1b3cde17 304 *
Geremia 0:75ec1b3cde17 305 * @param x0,y0 top left corner
Geremia 0:75ec1b3cde17 306 * @param x1,y1 down right corner
Geremia 0:75ec1b3cde17 307 * @param color 16 bit color
Geremia 0:75ec1b3cde17 308 * *
Geremia 0:75ec1b3cde17 309 */
Geremia 0:75ec1b3cde17 310 virtual void rect(int x0, int y0, int x1, int y1, unsigned short color);
Geremia 0:75ec1b3cde17 311
Geremia 0:75ec1b3cde17 312 /** draw a filled rect
Geremia 0:75ec1b3cde17 313 *
Geremia 0:75ec1b3cde17 314 * @param x0,y0 top left corner
Geremia 0:75ec1b3cde17 315 * @param x1,y1 down right corner
Geremia 0:75ec1b3cde17 316 * @param color 16 bit color
Geremia 0:75ec1b3cde17 317 *
Geremia 0:75ec1b3cde17 318 */
Geremia 0:75ec1b3cde17 319 virtual void fillrect(int x0, int y0, int x1, int y1, unsigned short color);
Geremia 0:75ec1b3cde17 320
Geremia 0:75ec1b3cde17 321 /** setup cursor position for text
Geremia 0:75ec1b3cde17 322 *
Geremia 0:75ec1b3cde17 323 * @param x x-position (top left)
Geremia 0:75ec1b3cde17 324 * @param y y-position
Geremia 0:75ec1b3cde17 325 */
Geremia 0:75ec1b3cde17 326 virtual void locate(int x, int y);
Geremia 0:75ec1b3cde17 327
Geremia 0:75ec1b3cde17 328 /** put a char on the screen
Geremia 0:75ec1b3cde17 329 *
Geremia 0:75ec1b3cde17 330 * @param value char to print
Geremia 0:75ec1b3cde17 331 * @returns printed char
Geremia 0:75ec1b3cde17 332 *
Geremia 0:75ec1b3cde17 333 */
Geremia 0:75ec1b3cde17 334 virtual int _putc(int value);
Geremia 0:75ec1b3cde17 335
Geremia 0:75ec1b3cde17 336 /** draw a character on given position out of the active font to the TFT
Geremia 0:75ec1b3cde17 337 *
Geremia 0:75ec1b3cde17 338 * @param x x-position of char (top left)
Geremia 0:75ec1b3cde17 339 * @param y y-position
Geremia 0:75ec1b3cde17 340 * @param c char to print
Geremia 0:75ec1b3cde17 341 *
Geremia 0:75ec1b3cde17 342 */
Geremia 0:75ec1b3cde17 343 virtual void character(int x, int y, int c);
Geremia 0:75ec1b3cde17 344
Geremia 0:75ec1b3cde17 345 /** paint a bitmap on the TFT
Geremia 0:75ec1b3cde17 346 *
Geremia 0:75ec1b3cde17 347 * @param x,y : upper left corner
Geremia 0:75ec1b3cde17 348 * @param w width of bitmap
Geremia 0:75ec1b3cde17 349 * @param h high of bitmap
Geremia 0:75ec1b3cde17 350 * @param *bitmap pointer to the bitmap data
Geremia 0:75ec1b3cde17 351 *
Geremia 0:75ec1b3cde17 352 * bitmap format: 16 bit R5 G6 B5
Geremia 0:75ec1b3cde17 353 *
Geremia 0:75ec1b3cde17 354 * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5
Geremia 0:75ec1b3cde17 355 * use winhex to load this file and mark data stating at offset 0x46 to end
Geremia 0:75ec1b3cde17 356 * use edit -> copy block -> C Source to export C array
Geremia 0:75ec1b3cde17 357 * paste this array into your program
Geremia 0:75ec1b3cde17 358 *
Geremia 0:75ec1b3cde17 359 * define the array as static const unsigned char to put it into flash memory
Geremia 0:75ec1b3cde17 360 * cast the pointer to (unsigned char *) :
Geremia 0:75ec1b3cde17 361 * tft.Bitmap(10,40,309,50,(unsigned char *)scala);
Geremia 0:75ec1b3cde17 362 */
Geremia 0:75ec1b3cde17 363 void Bitmap(int x, int y, int w, int h,unsigned char *bitmap);
Geremia 0:75ec1b3cde17 364
Geremia 0:75ec1b3cde17 365 /** paint monochrome bitmap to screen
Geremia 0:75ec1b3cde17 366 *
Geremia 0:75ec1b3cde17 367 * @param bm Bitmap in flash
Geremia 0:75ec1b3cde17 368 * @param x x start
Geremia 0:75ec1b3cde17 369 * @param y y start
Geremia 0:75ec1b3cde17 370 *
Geremia 0:75ec1b3cde17 371 */
Geremia 0:75ec1b3cde17 372 void Bitmap_BW(Bitmap_s bm, int x, int y);
Geremia 0:75ec1b3cde17 373
Geremia 0:75ec1b3cde17 374 /** paint a 16 bit BMP from filesytem on the TFT (slow)
Geremia 0:75ec1b3cde17 375 *
Geremia 0:75ec1b3cde17 376 * @param x,y : position of upper left corner
Geremia 0:75ec1b3cde17 377 * @param *Name_BMP name of the BMP file with drive: "/local/test.bmp"
Geremia 0:75ec1b3cde17 378 *
Geremia 0:75ec1b3cde17 379 * @returns 1 if bmp file was found and painted
Geremia 0:75ec1b3cde17 380 * @returns 0 if bmp file was found not found
Geremia 0:75ec1b3cde17 381 * @returns -1 if file is no bmp
Geremia 0:75ec1b3cde17 382 * @returns -2 if bmp file is no 16 bit bmp
Geremia 0:75ec1b3cde17 383 * @returns -3 if bmp file is to big for screen
Geremia 0:75ec1b3cde17 384 * @returns -4 if buffer malloc go wrong
Geremia 0:75ec1b3cde17 385 *
Geremia 0:75ec1b3cde17 386 * bitmap format: 16 bit R5 G6 B5
Geremia 0:75ec1b3cde17 387 *
Geremia 0:75ec1b3cde17 388 * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5
Geremia 0:75ec1b3cde17 389 * copy to internal file system or SD card
Geremia 0:75ec1b3cde17 390 */
Geremia 0:75ec1b3cde17 391 int BMP_16(int x, int y, const char *Name_BMP);
Geremia 0:75ec1b3cde17 392
Geremia 0:75ec1b3cde17 393
Geremia 0:75ec1b3cde17 394
Geremia 0:75ec1b3cde17 395 /** select the font to use
Geremia 0:75ec1b3cde17 396 *
Geremia 0:75ec1b3cde17 397 * @param f pointer to font array
Geremia 0:75ec1b3cde17 398 * @param firstascii first ascii code present in font array, default 32 (space)
Geremia 0:75ec1b3cde17 399 * @param lastascii last ascii code present in font array, default 127 (DEL)
Geremia 3:48f3282c2be8 400 * @param proportional enable/disable variable font width (default enabled)
Geremia 0:75ec1b3cde17 401 *
Geremia 0:75ec1b3cde17 402 * font array can created with GLCD Font Creator from http://www.mikroe.com
Geremia 0:75ec1b3cde17 403 * you have to add 4 parameter at the beginning of the font array to use:
Geremia 0:75ec1b3cde17 404 * - the number of byte / char (not used in this revision, set to whatever)
Geremia 0:75ec1b3cde17 405 * - the vertial size in pixel
Geremia 0:75ec1b3cde17 406 * - the horizontal size in pixel
Geremia 0:75ec1b3cde17 407 * - the number of byte per vertical line (not used in this revision, set to whatever)
Geremia 0:75ec1b3cde17 408 * you also have to change the array to cont unsigned char[] and __align(2)
Geremia 0:75ec1b3cde17 409 *
Geremia 0:75ec1b3cde17 410 */
Geremia 3:48f3282c2be8 411 void set_font(unsigned char* f, unsigned char firstascii=32, unsigned char lastascii=127, bool proportional = true);
Geremia 22:f9a37f22b9cb 412
Geremia 22:f9a37f22b9cb 413 /** Zoom fount
Geremia 22:f9a37f22b9cb 414 *
Geremia 22:f9a37f22b9cb 415 * @param x_mul horizontal size multiplier
Geremia 22:f9a37f22b9cb 416 * @param y_mul vertical size multiplier
Geremia 22:f9a37f22b9cb 417 */
Geremia 22:f9a37f22b9cb 418 void set_font_zoom(unsigned char x_mul, unsigned char y_mul);
Geremia 0:75ec1b3cde17 419
Geremia 0:75ec1b3cde17 420 /** Get the number of columns based on the currently active font.
Geremia 0:75ec1b3cde17 421 * @returns number of columns.
Geremia 0:75ec1b3cde17 422 * @note this method may be overridden in a derived class.
Geremia 0:75ec1b3cde17 423 */
Geremia 0:75ec1b3cde17 424 virtual int columns();
Geremia 0:75ec1b3cde17 425
Geremia 0:75ec1b3cde17 426 /** Get the number of rows based on the currently active font.
Geremia 0:75ec1b3cde17 427 * @returns number of rows.
Geremia 0:75ec1b3cde17 428 * @note this method may be overridden in a derived class.
Geremia 0:75ec1b3cde17 429 */
Geremia 0:75ec1b3cde17 430 virtual int rows();
Geremia 0:75ec1b3cde17 431
Geremia 0:75ec1b3cde17 432 /** get the current oriented screen width in pixels
Geremia 0:75ec1b3cde17 433 * @returns screen width in pixels.
Geremia 0:75ec1b3cde17 434 */
Geremia 0:75ec1b3cde17 435 int width();
Geremia 0:75ec1b3cde17 436
Geremia 0:75ec1b3cde17 437 /** get the current oriented screen height in pixels
Geremia 0:75ec1b3cde17 438 * @returns screen height in pixels.
Geremia 0:75ec1b3cde17 439 */
Geremia 0:75ec1b3cde17 440 int height();
Geremia 0:75ec1b3cde17 441
Geremia 0:75ec1b3cde17 442 /** set the current oriented screen width in pixels
Geremia 0:75ec1b3cde17 443 * @param width screen width in pixels.
Geremia 0:75ec1b3cde17 444 */
Geremia 0:75ec1b3cde17 445 void set_width(int width);
Geremia 0:75ec1b3cde17 446
Geremia 0:75ec1b3cde17 447 /** set the current oriented screen height in pixels
Geremia 0:75ec1b3cde17 448 * @param height screen height in pixels.
Geremia 0:75ec1b3cde17 449 */
Geremia 0:75ec1b3cde17 450 void set_height(int height);
Geremia 0:75ec1b3cde17 451
Geremia 2:713844a55c4e 452 /** setup auto update of screen
Geremia 2:713844a55c4e 453 *
Geremia 2:713844a55c4e 454 * @param up 1 = on , 0 = off
Geremia 2:713844a55c4e 455 * if switched off the program has to call copy_to_lcd()
Geremia 2:713844a55c4e 456 * to update screen from framebuffer
Geremia 2:713844a55c4e 457 */
Geremia 2:713844a55c4e 458 void set_auto_up(bool up);
Geremia 2:713844a55c4e 459
Geremia 2:713844a55c4e 460 /** get status of the auto update function
Geremia 2:713844a55c4e 461 *
Geremia 2:713844a55c4e 462 * @returns if auto update is on
Geremia 2:713844a55c4e 463 */
Geremia 2:713844a55c4e 464 bool get_auto_up(void);
Geremia 0:75ec1b3cde17 465
Geremia 0:75ec1b3cde17 466
Geremia 0:75ec1b3cde17 467
Geremia 0:75ec1b3cde17 468 private:
Geremia 0:75ec1b3cde17 469
Geremia 0:75ec1b3cde17 470 unsigned char* font;
Geremia 0:75ec1b3cde17 471 // display width and height related to current orientation
Geremia 0:75ec1b3cde17 472 int oriented_width;
Geremia 0:75ec1b3cde17 473 int oriented_height;
Geremia 0:75ec1b3cde17 474
Geremia 0:75ec1b3cde17 475 // text char location
Geremia 0:75ec1b3cde17 476 int char_x;
Geremia 0:75ec1b3cde17 477 int char_y;
Geremia 0:75ec1b3cde17 478
Geremia 0:75ec1b3cde17 479 int fontoffset;// bytes / char (short)
Geremia 0:75ec1b3cde17 480 int fonthor; // hor size of font (char)
Geremia 0:75ec1b3cde17 481 int fontvert; // ver size of font (char)
Geremia 0:75ec1b3cde17 482 int fontbpl; // bytes per line (char)
Geremia 22:f9a37f22b9cb 483 int fontzoomver; // size multiplier
Geremia 22:f9a37f22b9cb 484 int fontzoomhor; // size multiplier
Geremia 0:75ec1b3cde17 485 unsigned char firstch; // first ascii code present in font array (usually 32)
Geremia 0:75ec1b3cde17 486 unsigned char lastch; // last ascii code present in font array (usually 127)
Geremia 3:48f3282c2be8 487 bool auto_up; // autoupdate flag for LCD
Geremia 3:48f3282c2be8 488 bool fontprop;
Geremia 0:75ec1b3cde17 489
Geremia 0:75ec1b3cde17 490
Geremia 0:75ec1b3cde17 491 };
Geremia 0:75ec1b3cde17 492
Geremia 0:75ec1b3cde17 493 #endif