void lcd_drawline(int x0, int y0, int x1, int y1, unsigned char color) { int dy = y1 - y0; int dx = x1 - x0; int stepx, stepy; if (dy < 0) { dy = -dy; stepy = -1; } else { stepy = 1; } if (dx < 0) { dx = -dx; stepx = -1; } else { stepx = 1; } dy <<= 1; // dy is now 2*dy dx <<= 1; // dx is now 2*dx lcd_drawpoint(x0, y0, color); if (dx > dy) { int fraction = dy - (dx >> 1); // same as 2*dy - dx while (x0 != x1) { if (fraction >= 0) { y0 += stepy; fraction -= dx; // same as fraction -= 2*dx } x0 += stepx; fraction += dy; // same as fraction -= 2*dy lcd_drawpoint(x0, y0, color); } }
void PutPixel(SHORT x, SHORT y) { BYTE mask, display; mask = 1; // Left shift 1 by bit position /* Read data from display buffer*/ display = lcd_read_point(x ,y); if(_color > 0) // If non-zero for pixel on display |= mask; // or in mask else // If 0 for pixel off display &= ~mask; // and with inverted mask lcd_drawpoint(x , y,display); }