Fork of KS0108 by Ryan Tseng

Committer:
nhahn
Date:
Mon Apr 14 18:36:58 2014 +0000
Revision:
2:d2d7778bbbf2
Parent:
0:14a7c22dfbe8
added some fonts

Who changed what in which revision?

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