Added custom fonts. Added triangle drawing function

Dependents:   sc100016x4lcd REVO_Updated_Steering Driving_game Arkanoid_v1 ... more

Committer:
DimiterK
Date:
Mon May 02 19:05:30 2011 +0000
Revision:
5:e4b50f4c13a8
Parent:
4:bdc04bb2ffc1
Ver 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DimiterK 0:135b9a0a816e 1 #ifndef KS0108_H
DimiterK 0:135b9a0a816e 2 #define KS0108_H
DimiterK 0:135b9a0a816e 3
DimiterK 5:e4b50f4c13a8 4 #define VERSION 2.0
DimiterK 0:135b9a0a816e 5
DimiterK 5:e4b50f4c13a8 6 #include <mbed.h>
DimiterK 1:a368f2688222 7 #include "SystemFont5x7.h"
DimiterK 0:135b9a0a816e 8
DimiterK 0:135b9a0a816e 9 /************************************************************************************/
DimiterK 0:135b9a0a816e 10 // Commands
DimiterK 2:03d27b3fce6e 11 #define LCD_ON 0x3F
DimiterK 2:03d27b3fce6e 12 #define LCD_OFF 0x3E
DimiterK 2:03d27b3fce6e 13 #define LCD_SET_ADD 0x40
DimiterK 1:a368f2688222 14 #define LCD_SET_PAGE 0xB8
DimiterK 2:03d27b3fce6e 15 #define LCD_DISP_START 0xC0
DimiterK 0:135b9a0a816e 16
DimiterK 0:135b9a0a816e 17 //Controller directives
DimiterK 5:e4b50f4c13a8 18 #define LEFT 0
DimiterK 5:e4b50f4c13a8 19 #define RIGHT 1
DimiterK 1:a368f2688222 20 #define BOTH 3
DimiterK 1:a368f2688222 21 #define NONE 4
DimiterK 0:135b9a0a816e 22
DimiterK 0:135b9a0a816e 23 // Colors
DimiterK 2:03d27b3fce6e 24 #define BLACK 0xFF
DimiterK 2:03d27b3fce6e 25 #define WHITE 0x00
DimiterK 0:135b9a0a816e 26
DimiterK 0:135b9a0a816e 27 //Screen dimensions
DimiterK 1:a368f2688222 28 #define SCREEN_HEIGHT 64
DimiterK 1:a368f2688222 29 #define SCREEN_WIDTH 128
DimiterK 5:e4b50f4c13a8 30 #define CHIP_WIDTH 64
DimiterK 0:135b9a0a816e 31
DimiterK 0:135b9a0a816e 32 /***********************************************************************************/
DimiterK 5:e4b50f4c13a8 33 //helper functions
DimiterK 0:135b9a0a816e 34
DimiterK 0:135b9a0a816e 35 #define absDiff(x,y) ((x>y) ? (x-y) : (y-x))
DimiterK 0:135b9a0a816e 36 #define swap(a,b) \
DimiterK 0:135b9a0a816e 37 do\
DimiterK 0:135b9a0a816e 38 {\
DimiterK 0:135b9a0a816e 39 uint8_t t;\
DimiterK 1:a368f2688222 40 t=a;\
DimiterK 1:a368f2688222 41 a=b;\
DimiterK 1:a368f2688222 42 b=t;\
DimiterK 5:e4b50f4c13a8 43 } while(0)
DimiterK 0:135b9a0a816e 44
DimiterK 0:135b9a0a816e 45 /**************************************************************************************/
DimiterK 0:135b9a0a816e 46
DimiterK 0:135b9a0a816e 47 // Font Indices
DimiterK 2:03d27b3fce6e 48 #define FONT_LENGTH 0
DimiterK 1:a368f2688222 49 #define FONT_FIXED_WIDTH 2
DimiterK 2:03d27b3fce6e 50 #define FONT_HEIGHT 3
DimiterK 2:03d27b3fce6e 51 #define FONT_FIRST_CHAR 4
DimiterK 2:03d27b3fce6e 52 #define FONT_CHAR_COUNT 5
DimiterK 1:a368f2688222 53 #define FONT_WIDTH_TABLE 6
DimiterK 0:135b9a0a816e 54
DimiterK 5:e4b50f4c13a8 55
DimiterK 5:e4b50f4c13a8 56 /*************************Callback function definietion for fonts *********************/
DimiterK 5:e4b50f4c13a8 57 typedef unsigned int (*FontCallback)(unsigned int*);
DimiterK 5:e4b50f4c13a8 58
DimiterK 5:e4b50f4c13a8 59 /*************************Callback function for reading font array*********************/
DimiterK 5:e4b50f4c13a8 60 static unsigned int ReadData(unsigned int* ptr) {
DimiterK 5:e4b50f4c13a8 61 return *ptr;
DimiterK 5:e4b50f4c13a8 62 }
DimiterK 5:e4b50f4c13a8 63
DimiterK 2:03d27b3fce6e 64 /*************************************************************************************/
DimiterK 4:bdc04bb2ffc1 65 #define MAX_IMG_SIZE 128*64
DimiterK 2:03d27b3fce6e 66
DimiterK 2:03d27b3fce6e 67 typedef struct {
DimiterK 2:03d27b3fce6e 68 unsigned int imgWidth;
DimiterK 2:03d27b3fce6e 69 unsigned int imgHeight;
DimiterK 2:03d27b3fce6e 70 unsigned char imgarray[MAX_IMG_SIZE];
DimiterK 2:03d27b3fce6e 71 }Image;
DimiterK 2:03d27b3fce6e 72
DimiterK 5:e4b50f4c13a8 73
DimiterK 5:e4b50f4c13a8 74 typedef struct {
DimiterK 5:e4b50f4c13a8 75 unsigned int x;
DimiterK 5:e4b50f4c13a8 76 unsigned int y;
DimiterK 5:e4b50f4c13a8 77 unsigned int page;
DimiterK 5:e4b50f4c13a8 78 } LCDCoord;
DimiterK 5:e4b50f4c13a8 79
DimiterK 5:e4b50f4c13a8 80
DimiterK 5:e4b50f4c13a8 81 /****************************************************************************************/
DimiterK 5:e4b50f4c13a8 82
DimiterK 5:e4b50f4c13a8 83
DimiterK 0:135b9a0a816e 84
DimiterK 0:135b9a0a816e 85 class KS0108 {
DimiterK 1:a368f2688222 86 public:
DimiterK 2:03d27b3fce6e 87
DimiterK 2:03d27b3fce6e 88 /**
DimiterK 2:03d27b3fce6e 89 *@brief Constructor, initializes the lcd on the respective pins.
DimiterK 2:03d27b3fce6e 90 *@param control pins RST,DI,RW,E,CS2,CS1
DimiterK 2:03d27b3fce6e 91 *@param databus DB0-DB7 data pins
DimiterK 2:03d27b3fce6e 92 *@return none
DimiterK 2:03d27b3fce6e 93 */
DimiterK 1:a368f2688222 94
DimiterK 1:a368f2688222 95 KS0108 (PinName _RST,PinName _DI, PinName _RW, PinName _E, PinName _CS1, PinName _CS2, PinName DB0, PinName DB1, PinName DB2, PinName DB3, PinName DB4, PinName DB5, PinName DB6, PinName DB7);
DimiterK 1:a368f2688222 96
DimiterK 2:03d27b3fce6e 97 /**
DimiterK 2:03d27b3fce6e 98 *@brief Write instruction to the specific controller.
DimiterK 2:03d27b3fce6e 99 *@param Command command to send to the controller
DimiterK 2:03d27b3fce6e 100 *@param side controller side can be LEFT or RIGHT
DimiterK 1:a368f2688222 101 *@return none
DimiterK 1:a368f2688222 102 *
DimiterK 1:a368f2688222 103 */
DimiterK 1:a368f2688222 104 void WriteInstruction(unsigned int Command,unsigned int side);
DimiterK 1:a368f2688222 105
DimiterK 2:03d27b3fce6e 106 /**
DimiterK 2:03d27b3fce6e 107 *@brief Write data byte to the controller.
DimiterK 2:03d27b3fce6e 108 *@param data data send to the controller chip
DimiterK 2:03d27b3fce6e 109 *@param side selected controller can be LEFT or RIGHT
DimiterK 2:03d27b3fce6e 110 *@return none
DimiterK 1:a368f2688222 111 *
DimiterK 1:a368f2688222 112 */
DimiterK 1:a368f2688222 113 void WriteData(unsigned int data ,unsigned char side);
DimiterK 1:a368f2688222 114
DimiterK 5:e4b50f4c13a8 115
DimiterK 5:e4b50f4c13a8 116 /**
DimiterK 5:e4b50f4c13a8 117 *@brief Write data byte to the controller (overloaded function).
DimiterK 5:e4b50f4c13a8 118 *
DimiterK 5:e4b50f4c13a8 119 *@param data data send to the controller chip
DimiterK 5:e4b50f4c13a8 120 *@return none
DimiterK 5:e4b50f4c13a8 121 */
DimiterK 5:e4b50f4c13a8 122 void WriteData(unsigned int data);
DimiterK 5:e4b50f4c13a8 123
DimiterK 2:03d27b3fce6e 124 /**
DimiterK 2:03d27b3fce6e 125 *@brief Write data byte to the screen on specific page and column
DimiterK 2:03d27b3fce6e 126 *@param page page varies from 0-7 for each side
DimiterK 2:03d27b3fce6e 127 *@param col col varies from 0-64 for each side
DimiterK 2:03d27b3fce6e 128 *@param data info to be written on given coordinates
DimiterK 2:03d27b3fce6e 129 *@return none
DimiterK 2:03d27b3fce6e 130 *
DimiterK 2:03d27b3fce6e 131 */
DimiterK 1:a368f2688222 132 void WriteDataColPag(unsigned int page, unsigned int col, unsigned int data);
DimiterK 1:a368f2688222 133
DimiterK 2:03d27b3fce6e 134 /**
DimiterK 2:03d27b3fce6e 135 *@brief Read data from display
DimiterK 1:a368f2688222 136 *@param none
DimiterK 2:03d27b3fce6e 137 *@return none
DimiterK 1:a368f2688222 138 *
DimiterK 1:a368f2688222 139 */
DimiterK 1:a368f2688222 140 unsigned int ReadData();
DimiterK 1:a368f2688222 141
DimiterK 2:03d27b3fce6e 142 /**
DimiterK 2:03d27b3fce6e 143 *@brief Read status of display , and check if it's busy
DimiterK 1:a368f2688222 144 *@param none
DimiterK 2:03d27b3fce6e 145 *@return status status of display
DimiterK 1:a368f2688222 146 *
DimiterK 1:a368f2688222 147 */
DimiterK 1:a368f2688222 148 unsigned int ReadStatus();
DimiterK 1:a368f2688222 149
DimiterK 2:03d27b3fce6e 150 /**
DimiterK 2:03d27b3fce6e 151 *@brief Select controller chip
DimiterK 1:a368f2688222 152 *
DimiterK 2:03d27b3fce6e 153 *@param side controller side can be LEFT or RIGHT
DimiterK 1:a368f2688222 154 *@return none
DimiterK 1:a368f2688222 155 *
DimiterK 1:a368f2688222 156 */
DimiterK 1:a368f2688222 157 void SelectSide(unsigned char side);
DimiterK 0:135b9a0a816e 158
DimiterK 5:e4b50f4c13a8 159
DimiterK 5:e4b50f4c13a8 160 /**
DimiterK 5:e4b50f4c13a8 161 *@brief Set cursor to specified coordinates
DimiterK 5:e4b50f4c13a8 162 *
DimiterK 5:e4b50f4c13a8 163 *@param x row
DimiterK 5:e4b50f4c13a8 164 *@param y column
DimiterK 5:e4b50f4c13a8 165 *@return none
DimiterK 5:e4b50f4c13a8 166 */
DimiterK 5:e4b50f4c13a8 167 void GotoXY(unsigned int x, unsigned int y);
DimiterK 5:e4b50f4c13a8 168
DimiterK 5:e4b50f4c13a8 169
DimiterK 2:03d27b3fce6e 170 /**
DimiterK 2:03d27b3fce6e 171 *@brief Clears display
DimiterK 1:a368f2688222 172 *
DimiterK 1:a368f2688222 173 *@param none
DimiterK 1:a368f2688222 174 *@return none
DimiterK 1:a368f2688222 175 *
DimiterK 1:a368f2688222 176 */
DimiterK 1:a368f2688222 177 void ClearScreen();
DimiterK 4:bdc04bb2ffc1 178
DimiterK 5:e4b50f4c13a8 179
DimiterK 4:bdc04bb2ffc1 180 /**
DimiterK 4:bdc04bb2ffc1 181 *@brief Turn on display
DimiterK 4:bdc04bb2ffc1 182 *
DimiterK 4:bdc04bb2ffc1 183 *@param none
DimiterK 4:bdc04bb2ffc1 184 *@return none
DimiterK 4:bdc04bb2ffc1 185 *
DimiterK 4:bdc04bb2ffc1 186 */
DimiterK 4:bdc04bb2ffc1 187 void TurnOn();
DimiterK 4:bdc04bb2ffc1 188
DimiterK 4:bdc04bb2ffc1 189
DimiterK 4:bdc04bb2ffc1 190 /**
DimiterK 4:bdc04bb2ffc1 191 *@brief Turn Off display
DimiterK 4:bdc04bb2ffc1 192 *
DimiterK 4:bdc04bb2ffc1 193 *@param none
DimiterK 4:bdc04bb2ffc1 194 *@return none
DimiterK 4:bdc04bb2ffc1 195 *
DimiterK 4:bdc04bb2ffc1 196 */
DimiterK 4:bdc04bb2ffc1 197 void TurnOff();
DimiterK 1:a368f2688222 198
DimiterK 1:a368f2688222 199 /*******************************Graphic functions************************************************/
DimiterK 1:a368f2688222 200
DimiterK 2:03d27b3fce6e 201 /**
DimiterK 2:03d27b3fce6e 202 *@brief Set pixel to specific location on the screen.
DimiterK 2:03d27b3fce6e 203 *@param x coordinate varies from 0-128
DimiterK 2:03d27b3fce6e 204 *@param y col varies from 0-64
DimiterK 2:03d27b3fce6e 205 *@param color color of pixel, can be BLACK or WHITE
DimiterK 2:03d27b3fce6e 206 *@return none
DimiterK 2:03d27b3fce6e 207 *
DimiterK 2:03d27b3fce6e 208 */
DimiterK 1:a368f2688222 209 void SetPixel( unsigned int x, unsigned int y, unsigned int color);
DimiterK 1:a368f2688222 210
DimiterK 1:a368f2688222 211
DimiterK 2:03d27b3fce6e 212 /**
DimiterK 2:03d27b3fce6e 213 *@brief Draws a line from x1,y1 to x2,y1
DimiterK 2:03d27b3fce6e 214 *@param Xaxis1 x coordinate of one side
DimiterK 2:03d27b3fce6e 215 *@param Xaxis2 x coordinate of one side
DimiterK 2:03d27b3fce6e 216 *@param Yaxis y coordinate both points
DimiterK 1:a368f2688222 217 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 218 *@return none
DimiterK 1:a368f2688222 219 *
DimiterK 1:a368f2688222 220 */
DimiterK 2:03d27b3fce6e 221 void HLine(unsigned int Xaxis1, unsigned int Xaxis2 ,unsigned int Yaxis,unsigned int color);
DimiterK 0:135b9a0a816e 222
DimiterK 2:03d27b3fce6e 223 /**
DimiterK 2:03d27b3fce6e 224 *@brief Draw a horizontal line
DimiterK 1:a368f2688222 225 *@param Xaxis1
DimiterK 1:a368f2688222 226 *@param Xaxis2
DimiterK 2:03d27b3fce6e 227 *@param width
DimiterK 1:a368f2688222 228 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 229 *@return none
DimiterK 1:a368f2688222 230 *
DimiterK 1:a368f2688222 231 */
DimiterK 1:a368f2688222 232 void HLineShort(unsigned int Xaxis, unsigned int Yaxis,unsigned int width ,unsigned int color);
DimiterK 1:a368f2688222 233
DimiterK 2:03d27b3fce6e 234 /**
DimiterK 2:03d27b3fce6e 235 *@brief Draws a vertical line
DimiterK 2:03d27b3fce6e 236 *@param Xaxis
DimiterK 2:03d27b3fce6e 237 *@param Yaxis1
DimiterK 2:03d27b3fce6e 238 *@param Yaxis2
DimiterK 1:a368f2688222 239 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 240 *@return none
DimiterK 1:a368f2688222 241 *
DimiterK 1:a368f2688222 242 */
DimiterK 1:a368f2688222 243 void VLine(unsigned int Xaxis, unsigned int Yaxis1 ,unsigned int Yaxis2,unsigned int color);
DimiterK 1:a368f2688222 244
DimiterK 2:03d27b3fce6e 245 /**
DimiterK 2:03d27b3fce6e 246 *@brief Draw a vertical line of a given width starting from X, Y
DimiterK 2:03d27b3fce6e 247 *@param Xaxis
DimiterK 1:a368f2688222 248 *@param Yaxis
DimiterK 2:03d27b3fce6e 249 *@param height Height of line
DimiterK 1:a368f2688222 250 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 251 *@return none
DimiterK 1:a368f2688222 252 *
DimiterK 1:a368f2688222 253 */
DimiterK 1:a368f2688222 254 void VLineShort(unsigned int Xaxis,unsigned int Yaxis, unsigned int height ,unsigned int color);
DimiterK 1:a368f2688222 255
DimiterK 1:a368f2688222 256
DimiterK 2:03d27b3fce6e 257 /**
DimiterK 2:03d27b3fce6e 258 *@brief Draws a line from x1,y1 to x2,y2.
DimiterK 2:03d27b3fce6e 259 *@param x1 x coordinate of one side
DimiterK 2:03d27b3fce6e 260 *@param y1 y coordinate of one side
DimiterK 2:03d27b3fce6e 261 *@param x2 x coordinate of other side
DimiterK 2:03d27b3fce6e 262 *@param y2 y coordinate of other side
DimiterK 1:a368f2688222 263 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 264 *@return none
DimiterK 1:a368f2688222 265 *
DimiterK 1:a368f2688222 266 */
DimiterK 1:a368f2688222 267 void Line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2, unsigned int color);
DimiterK 0:135b9a0a816e 268
DimiterK 0:135b9a0a816e 269
DimiterK 2:03d27b3fce6e 270 /**
DimiterK 2:03d27b3fce6e 271 *@brief Draws a slanty line from x1,y1 to x2,y2
DimiterK 1:a368f2688222 272 *@param lX1 x coordinate of one side
DimiterK 1:a368f2688222 273 *@param lY1 y coordinate of one side
DimiterK 1:a368f2688222 274 *@param lX2 x coordinate of other side
DimiterK 1:a368f2688222 275 *@param lY2 y coordinate of other side
DimiterK 1:a368f2688222 276 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 277 *@return none
DimiterK 1:a368f2688222 278 *
DimiterK 1:a368f2688222 279 */
DimiterK 1:a368f2688222 280 void SlantyLine(unsigned int lX1, unsigned int lY1, unsigned int lX2,unsigned int lY2,unsigned int color);
DimiterK 1:a368f2688222 281
DimiterK 2:03d27b3fce6e 282 /**
DimiterK 2:03d27b3fce6e 283 *@brief Draws a line from x,y at given degree from inner_radius to outer_radius.
DimiterK 2:03d27b3fce6e 284 *@param x
DimiterK 2:03d27b3fce6e 285 *@param y
DimiterK 2:03d27b3fce6e 286 *@param inner_radius
DimiterK 2:03d27b3fce6e 287 *@param outer_radius
DimiterK 1:a368f2688222 288 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 289 *@return none
DimiterK 1:a368f2688222 290 *
DimiterK 1:a368f2688222 291 */
DimiterK 1:a368f2688222 292 void DegreeLine(unsigned int x, int y,unsigned int degree,unsigned int inner_radius,unsigned int outer_radius, unsigned int color);
DimiterK 1:a368f2688222 293
DimiterK 2:03d27b3fce6e 294 /**
DimiterK 2:03d27b3fce6e 295 *@brief Draw a filled reactangle
DimiterK 1:a368f2688222 296 *
DimiterK 1:a368f2688222 297 *@param Xaxis1
DimiterK 1:a368f2688222 298 *@param Yaxis1
DimiterK 1:a368f2688222 299 *@param Xaxis2
DimiterK 1:a368f2688222 300 *@param Yaxis2
DimiterK 1:a368f2688222 301 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 302 *@return none
DimiterK 1:a368f2688222 303 *
DimiterK 1:a368f2688222 304 */
DimiterK 1:a368f2688222 305 void FullRectangle(unsigned int Xaxis1, unsigned int Yaxis1, unsigned int Xaxis2 ,unsigned int Yaxis2,unsigned int color);
DimiterK 1:a368f2688222 306
DimiterK 2:03d27b3fce6e 307 /**
DimiterK 2:03d27b3fce6e 308 *@brief Draw an empty rectangle
DimiterK 1:a368f2688222 309 *@param Xaxis1
DimiterK 1:a368f2688222 310 *@param Yaxis1
DimiterK 1:a368f2688222 311 *@param Xaxis2
DimiterK 1:a368f2688222 312 *@param Yaxis2
DimiterK 1:a368f2688222 313 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 314 *@return none
DimiterK 1:a368f2688222 315 *
DimiterK 1:a368f2688222 316 */
DimiterK 1:a368f2688222 317 void EmptyRectangle(unsigned int Xaxis1,unsigned int Yaxis1, unsigned int Xaxis2,unsigned int Yaxis2,unsigned int color);
DimiterK 1:a368f2688222 318
DimiterK 1:a368f2688222 319
DimiterK 2:03d27b3fce6e 320 /**
DimiterK 2:03d27b3fce6e 321 *@brief Draw a rectangle with round corners
DimiterK 2:03d27b3fce6e 322 *@param Xaxis1 x-coordinate of the top left point
DimiterK 2:03d27b3fce6e 323 *@param Yaxis1 y-coordinate of the top left point
DimiterK 2:03d27b3fce6e 324 *@param width rectangle width
DimiterK 2:03d27b3fce6e 325 *@param height rectangle height
DimiterK 2:03d27b3fce6e 326 *@param radius radius of the edges
DimiterK 1:a368f2688222 327 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 328 *@return none
DimiterK 1:a368f2688222 329 *
DimiterK 1:a368f2688222 330 */
DimiterK 1:a368f2688222 331 void RoundRectangle(unsigned int x, unsigned int y, unsigned int width, unsigned int height, unsigned int radius, unsigned int color);
DimiterK 1:a368f2688222 332
DimiterK 5:e4b50f4c13a8 333
DimiterK 5:e4b50f4c13a8 334 /**
DimiterK 5:e4b50f4c13a8 335 *Draws a triangle .
DimiterK 5:e4b50f4c13a8 336 *@param
DimiterK 5:e4b50f4c13a8 337 *@param
DimiterK 5:e4b50f4c13a8 338 *@param
DimiterK 5:e4b50f4c13a8 339 *@param
DimiterK 5:e4b50f4c13a8 340 *@return none
DimiterK 5:e4b50f4c13a8 341 *
DimiterK 5:e4b50f4c13a8 342 */
DimiterK 5:e4b50f4c13a8 343
DimiterK 5:e4b50f4c13a8 344 void Triangle ( int topx, int topy, int rightx, int righty);
DimiterK 5:e4b50f4c13a8 345
DimiterK 1:a368f2688222 346
DimiterK 5:e4b50f4c13a8 347 /**
DimiterK 5:e4b50f4c13a8 348 *Draws a right angle triangle .
DimiterK 5:e4b50f4c13a8 349 *@param
DimiterK 5:e4b50f4c13a8 350 *@param
DimiterK 5:e4b50f4c13a8 351 *@param
DimiterK 5:e4b50f4c13a8 352 *@param
DimiterK 5:e4b50f4c13a8 353 *@return none
DimiterK 5:e4b50f4c13a8 354 *
DimiterK 5:e4b50f4c13a8 355 */
DimiterK 5:e4b50f4c13a8 356 void RightTriangle ( int topx, int topy, int rightx, int righty);
DimiterK 5:e4b50f4c13a8 357
DimiterK 5:e4b50f4c13a8 358
DimiterK 5:e4b50f4c13a8 359 /**
DimiterK 1:a368f2688222 360 *Draws an empty circle centered a x,y with radius R and specific color.
DimiterK 2:03d27b3fce6e 361 *@param CenterX center x coordinate
DimiterK 2:03d27b3fce6e 362 *@param CenterY center y coordinate
DimiterK 2:03d27b3fce6e 363 *@param Radius circle radius
DimiterK 2:03d27b3fce6e 364 *@param color Color can be BLACK or WHITE
DimiterK 1:a368f2688222 365 *@return none
DimiterK 1:a368f2688222 366 *
DimiterK 1:a368f2688222 367 */
DimiterK 1:a368f2688222 368 void EmptyCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color);
DimiterK 1:a368f2688222 369
DimiterK 5:e4b50f4c13a8 370 /**
DimiterK 1:a368f2688222 371 * Circle fill Code is merely a modification of the midpoint
DimiterK 1:a368f2688222 372 * circle algorithem which is an adaption of Bresenham's line algorithm
DimiterK 1:a368f2688222 373 * http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
DimiterK 1:a368f2688222 374 * http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
DimiterK 1:a368f2688222 375 * Adapted from arduino lib
DimiterK 1:a368f2688222 376 *
DimiterK 2:03d27b3fce6e 377 *@param CenterX center x coordinate
DimiterK 2:03d27b3fce6e 378 *@param CenterY center y coordinate
DimiterK 2:03d27b3fce6e 379 *@param Radius circle radius
DimiterK 2:03d27b3fce6e 380 *@param color Color can be BLACK or WHITE
DimiterK 1:a368f2688222 381 */
DimiterK 1:a368f2688222 382 void FullCircle(unsigned int CenterX, unsigned int CenterY, unsigned int Radius,unsigned int color);
DimiterK 1:a368f2688222 383
DimiterK 5:e4b50f4c13a8 384 /**
DimiterK 1:a368f2688222 385 *Draws an ellipse.
DimiterK 2:03d27b3fce6e 386 *@param CX x coordinate of one side
DimiterK 2:03d27b3fce6e 387 *@param CY y coordinate of one side
DimiterK 2:03d27b3fce6e 388 *@param XRadius x coordinate of other side
DimiterK 2:03d27b3fce6e 389 *@param YRadius y coordinate of other side
DimiterK 1:a368f2688222 390 *@param color can be BLACK or WHITE
DimiterK 1:a368f2688222 391 *@return none
DimiterK 1:a368f2688222 392 *
DimiterK 1:a368f2688222 393 * Ported the algorithm found at http://homepage.smc.edu/kennedy_john/belipse.pdf
DimiterK 1:a368f2688222 394 *
DimiterK 1:a368f2688222 395 */
DimiterK 1:a368f2688222 396 void PlotEllipse(long CX, long CY, long XRadius,long YRadius, int color);
DimiterK 1:a368f2688222 397 void Plot4EllipsePoints(long CX,long CY, long X, long Y, int color);
DimiterK 1:a368f2688222 398
DimiterK 5:e4b50f4c13a8 399
DimiterK 2:03d27b3fce6e 400 /**
DimiterK 2:03d27b3fce6e 401 *@brief Round a double
DimiterK 1:a368f2688222 402 *@param double
DimiterK 1:a368f2688222 403 *@return value
DimiterK 1:a368f2688222 404 *
DimiterK 1:a368f2688222 405 */
DimiterK 1:a368f2688222 406 double dfloor( double value );
DimiterK 1:a368f2688222 407
DimiterK 1:a368f2688222 408
DimiterK 5:e4b50f4c13a8 409 /*****************************Bitmaps *****************************************************************/
DimiterK 5:e4b50f4c13a8 410
DimiterK 5:e4b50f4c13a8 411 /**
DimiterK 5:e4b50f4c13a8 412 *@brief Draws an image on screen.
DimiterK 5:e4b50f4c13a8 413 *@param PictureData 128x64 image array
DimiterK 5:e4b50f4c13a8 414 *@return none
DimiterK 5:e4b50f4c13a8 415 *
DimiterK 5:e4b50f4c13a8 416 *
DimiterK 5:e4b50f4c13a8 417 */
DimiterK 5:e4b50f4c13a8 418 void FullScreenBMP (unsigned char *ImageData);
DimiterK 5:e4b50f4c13a8 419
DimiterK 5:e4b50f4c13a8 420 /**
DimiterK 5:e4b50f4c13a8 421 *@brief Draw a 1-bit bitmap
DimiterK 5:e4b50f4c13a8 422 *
DimiterK 5:e4b50f4c13a8 423 *@param image struct containing img size and array
DimiterK 5:e4b50f4c13a8 424 *@param x x-coordinate
DimiterK 5:e4b50f4c13a8 425 *@param y y-coordinate
DimiterK 5:e4b50f4c13a8 426 *@param color can be BLACK or WHITE
DimiterK 5:e4b50f4c13a8 427 *@return none
DimiterK 5:e4b50f4c13a8 428 */
DimiterK 5:e4b50f4c13a8 429 void DrawBitmap(const unsigned int * bitmap, unsigned int x, unsigned int y, unsigned int color);
DimiterK 5:e4b50f4c13a8 430
DimiterK 5:e4b50f4c13a8 431 /**
DimiterK 5:e4b50f4c13a8 432 *@brief Static function , mplemented to read an array
DimiterK 5:e4b50f4c13a8 433 *@param ptr data array
DimiterK 5:e4b50f4c13a8 434 *@return none
DimiterK 5:e4b50f4c13a8 435 */
DimiterK 5:e4b50f4c13a8 436 unsigned int ReadArrayData(const unsigned int* ptr);
DimiterK 5:e4b50f4c13a8 437
DimiterK 5:e4b50f4c13a8 438
DimiterK 5:e4b50f4c13a8 439 /*************************************Font functions **************************************/
DimiterK 5:e4b50f4c13a8 440
DimiterK 2:03d27b3fce6e 441 /**
DimiterK 2:03d27b3fce6e 442 *@brief Print a character on specified coordinates
DimiterK 2:03d27b3fce6e 443 *
DimiterK 2:03d27b3fce6e 444 *@param page row
DimiterK 2:03d27b3fce6e 445 *@param col column
DimiterK 2:03d27b3fce6e 446 *@param c integer value
DimiterK 2:03d27b3fce6e 447 *@return none
DimiterK 2:03d27b3fce6e 448 */
DimiterK 5:e4b50f4c13a8 449 void Putchar (int page, int col,unsigned char c);
DimiterK 0:135b9a0a816e 450
DimiterK 2:03d27b3fce6e 451 /**
DimiterK 2:03d27b3fce6e 452 *@brief Print a string on specified coordinates
DimiterK 2:03d27b3fce6e 453 *
DimiterK 2:03d27b3fce6e 454 *@param str char array
DimiterK 2:03d27b3fce6e 455 *@param x row
DimiterK 2:03d27b3fce6e 456 *@param y column
DimiterK 2:03d27b3fce6e 457 *@return none
DimiterK 2:03d27b3fce6e 458 */
DimiterK 1:a368f2688222 459 void PutString(unsigned int x, unsigned int y,char* str);
DimiterK 1:a368f2688222 460
DimiterK 2:03d27b3fce6e 461 /**
DimiterK 2:03d27b3fce6e 462 *@brief Print a float on specified coordinates
DimiterK 2:03d27b3fce6e 463 *
DimiterK 2:03d27b3fce6e 464 *@param val float value
DimiterK 2:03d27b3fce6e 465 *@param x row
DimiterK 2:03d27b3fce6e 466 *@param y column
DimiterK 2:03d27b3fce6e 467 *@return none
DimiterK 2:03d27b3fce6e 468 */
DimiterK 1:a368f2688222 469 void PrintFloat(float val, unsigned int x,unsigned int y);
DimiterK 1:a368f2688222 470
DimiterK 2:03d27b3fce6e 471 /**
DimiterK 2:03d27b3fce6e 472 *@brief Print an integer on specified coordinates
DimiterK 2:03d27b3fce6e 473 *
DimiterK 2:03d27b3fce6e 474 *@param val integer value
DimiterK 2:03d27b3fce6e 475 *@param x row
DimiterK 2:03d27b3fce6e 476 *@param y column
DimiterK 2:03d27b3fce6e 477 *@return none
DimiterK 2:03d27b3fce6e 478 */
DimiterK 1:a368f2688222 479 void PrintInteger(int val,unsigned int x,unsigned int y);
DimiterK 1:a368f2688222 480
DimiterK 5:e4b50f4c13a8 481
DimiterK 5:e4b50f4c13a8 482 /**
DimiterK 5:e4b50f4c13a8 483 *@brief Select a specific font
DimiterK 5:e4b50f4c13a8 484 *
DimiterK 5:e4b50f4c13a8 485 *@param font font array
DimiterK 5:e4b50f4c13a8 486 *@param color font color , can be BLACK or WHITE
DimiterK 5:e4b50f4c13a8 487 *@param callback function pointer to load font
DimiterK 5:e4b50f4c13a8 488 *@return none
DimiterK 5:e4b50f4c13a8 489 */
DimiterK 5:e4b50f4c13a8 490 void SelectFont(unsigned int* font,unsigned int color, FontCallback callback);
DimiterK 5:e4b50f4c13a8 491
DimiterK 5:e4b50f4c13a8 492
DimiterK 2:03d27b3fce6e 493 /**
DimiterK 5:e4b50f4c13a8 494 *@brief Print a character
DimiterK 2:03d27b3fce6e 495 *
DimiterK 5:e4b50f4c13a8 496 *@param c char
DimiterK 1:a368f2688222 497 *@return none
DimiterK 1:a368f2688222 498 */
DimiterK 5:e4b50f4c13a8 499 int PrintChar(char c);
DimiterK 1:a368f2688222 500
DimiterK 5:e4b50f4c13a8 501
DimiterK 5:e4b50f4c13a8 502 /**
DimiterK 5:e4b50f4c13a8 503 *@brief Print a character string
DimiterK 5:e4b50f4c13a8 504 *
DimiterK 5:e4b50f4c13a8 505 *@param str char string
DimiterK 5:e4b50f4c13a8 506 *@return none
DimiterK 5:e4b50f4c13a8 507 */
DimiterK 5:e4b50f4c13a8 508 void PrintString(char* str);
DimiterK 5:e4b50f4c13a8 509
DimiterK 5:e4b50f4c13a8 510
DimiterK 5:e4b50f4c13a8 511 /**
DimiterK 5:e4b50f4c13a8 512 *@brief Print a number
DimiterK 5:e4b50f4c13a8 513 *
DimiterK 5:e4b50f4c13a8 514 *@param n number
DimiterK 5:e4b50f4c13a8 515 *@return none
DimiterK 5:e4b50f4c13a8 516 */
DimiterK 5:e4b50f4c13a8 517 void PrintNumber(long n);
DimiterK 5:e4b50f4c13a8 518
DimiterK 5:e4b50f4c13a8 519
DimiterK 1:a368f2688222 520 private:
DimiterK 1:a368f2688222 521 BusInOut DB;
DimiterK 1:a368f2688222 522 DigitalOut RST;
DimiterK 1:a368f2688222 523 DigitalOut DI;
DimiterK 1:a368f2688222 524 DigitalOut RW;
DimiterK 1:a368f2688222 525 DigitalOut E;
DimiterK 1:a368f2688222 526 DigitalInOut CS2;
DimiterK 1:a368f2688222 527 DigitalInOut CS1;
DimiterK 5:e4b50f4c13a8 528 bool Inverted;
DimiterK 5:e4b50f4c13a8 529
DimiterK 5:e4b50f4c13a8 530 LCDCoord Coord;
DimiterK 5:e4b50f4c13a8 531 FontCallback FontRead ;
DimiterK 5:e4b50f4c13a8 532 unsigned int FontColor;
DimiterK 5:e4b50f4c13a8 533 unsigned int* Font;
DimiterK 1:a368f2688222 534 unsigned int color;
DimiterK 5:e4b50f4c13a8 535
DimiterK 5:e4b50f4c13a8 536
DimiterK 0:135b9a0a816e 537 };
DimiterK 1:a368f2688222 538
DimiterK 0:135b9a0a816e 539
DimiterK 0:135b9a0a816e 540 #endif