void Adafruit_TFTLCD::fillRect(int16_t x1, int16_t y1, int16_t w, int16_t h, uint16_t fillcolor) { int16_t x2, y2; // Initial off-screen clipping if( (w <= 0 ) || (h <= 0 ) || (x1 >= _width) || (y1 >= _height) || ((x2 = x1+w-1) < 0 ) || ((y2 = y1+h-1) < 0 )) return; if(x1 < 0) { // Clip left w += x1; x1 = 0; } if(y1 < 0) { // Clip top h += y1; y1 = 0; } if(x2 >= _width) { // Clip right x2 = _width - 1; w = x2 - x1 + 1; } if(y2 >= _height) { // Clip bottom y2 = _height - 1; h = y2 - y1 + 1; } setAddrWindow(x1, y1, x2, y2); flood(fillcolor, (uint32_t)w * (uint32_t)h); if(driver == ID_932X) setAddrWindow(0, 0, _width - 1, _height - 1); else setLR(); }
void Adafruit_TFTLCD::begin(uint16_t id) { uint8_t i = 0; reset(); if((id == 0x9325) || (id == 0x9328)) { uint16_t a, d; driver = ID_932X; CS_ACTIVE; while(i < sizeof(ILI932x_regValues) / sizeof(uint16_t)) { a = pgm_read_word(&ILI932x_regValues[i++]); d = pgm_read_word(&ILI932x_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister16(a, d); } setRotation(rotation); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if(id == 0x7575) { uint8_t a, d; driver = ID_7575; CS_ACTIVE; while(i < sizeof(HX8347G_regValues)) { a = pgm_read_byte(&HX8347G_regValues[i++]); d = pgm_read_byte(&HX8347G_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister8(a, d); } setRotation(rotation); setLR(); // Lower-right corner of address window } else { driver = ID_UNKNOWN; return; } }
void Adafruit_TFTLCD::drawFastVLine(int16_t x, int16_t y, int16_t length, uint16_t color) { int16_t y2; // Initial off-screen clipping if((length <= 0 ) || (x < 0 ) || ( x >= _width) || (y >= _height) || ((y2 = (y+length-1)) < 0 )) return; if(y < 0) { // Clip top length += y; y = 0; } if(y2 >= _height) { // Clip bottom y2 = _height - 1; length = y2 - y + 1; } setAddrWindow(x, y, x, y2); flood(color, length); if(driver == ID_932X) setAddrWindow(0, 0, _width - 1, _height - 1); else setLR(); }
void Adafruit_TFTLCD::drawFastHLine(int16_t x, int16_t y, int16_t length, uint16_t color) { int16_t x2; // Initial off-screen clipping if((length <= 0 ) || (y < 0 ) || ( y >= _height) || (x >= _width) || ((x2 = (x+length-1)) < 0 )) return; if(x < 0) { // Clip left length += x; x = 0; } if(x2 >= _width) { // Clip right x2 = _width - 1; length = x2 - x + 1; } setAddrWindow(x, y, x2, y); flood(color, length); if(driver == ID_932X) setAddrWindow(0, 0, _width - 1, _height - 1); else setLR(); }
void Adafruit_TFTLCD::begin(uint16_t id) { uint8_t i = 0; reset(); if((id == 0x9325) || (id == 0x9328)) { uint16_t a, d; driver = ID_932X; CS_ACTIVE; while(i < sizeof(ILI932x_regValues) / sizeof(uint16_t)) { a = pgm_read_word(&ILI932x_regValues[i++]); d = pgm_read_word(&ILI932x_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister16(a, d); } setRotation(rotation); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if (id == 0x9341) { uint16_t a, d; driver = ID_9341; CS_ACTIVE; writeRegister8(ILI9341_SOFTRESET, 0); delay(50); writeRegister8(ILI9341_DISPLAYOFF, 0); writeRegister8(ILI9341_POWERCONTROL1, 0x23); writeRegister8(ILI9341_POWERCONTROL2, 0x10); writeRegister16(ILI9341_VCOMCONTROL1, 0x2B2B); writeRegister8(ILI9341_VCOMCONTROL2, 0xC0); writeRegister8(ILI9341_MEMCONTROL, ILI9341_MADCTL_MY | ILI9341_MADCTL_BGR); writeRegister8(ILI9341_PIXELFORMAT, 0x55); writeRegister16(ILI9341_FRAMECONTROL, 0x001B); writeRegister8(ILI9341_ENTRYMODE, 0x07); /* writeRegister32(ILI9341_DISPLAYFUNC, 0x0A822700);*/ writeRegister8(ILI9341_SLEEPOUT, 0); delay(150); writeRegister8(ILI9341_DISPLAYON, 0); delay(500); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if(id == 0x7575) { uint8_t a, d; driver = ID_7575; CS_ACTIVE; while(i < sizeof(HX8347G_regValues)) { a = pgm_read_byte(&HX8347G_regValues[i++]); d = pgm_read_byte(&HX8347G_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister8(a, d); } setRotation(rotation); setLR(); // Lower-right corner of address window } else { driver = ID_UNKNOWN; return; } }
void Adafruit_TFTLCD::begin(uint16_t id) { uint8_t i = 0; reset(); delay(200); if((id == 0x9325) || (id == 0x9328)) { uint16_t a, d; driver = ID_932X; CS_ACTIVE; while(i < sizeof(ILI932x_regValues) / sizeof(uint16_t)) { a = pgm_read_word(&ILI932x_regValues[i++]); d = pgm_read_word(&ILI932x_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister16(a, d); } setRotation(rotation); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if (id == 0x9341) { // ILI9341 mcufriend driver = ID_9341; CS_ACTIVE; while(i < sizeof(ILI9341_regValues)) { uint8_t r = pgm_read_byte(&ILI9341_regValues[i++]); uint8_t len = pgm_read_byte(&ILI9341_regValues[i++]); if(r == TFTLCD_DELAY) { delay(len); } else { //Serial.print("Register $"); Serial.print(r, HEX); //Serial.print(" datalen "); Serial.println(len); CS_ACTIVE; CD_COMMAND; write8(r); CD_DATA; for (uint8_t d=0; d<len; d++) { uint8_t x = pgm_read_byte(&ILI9341_regValues[i++]); write8(x); } CS_IDLE; } } return; } else if (id == 0x8357) { // HX8357D driver = ID_HX8357D; CS_ACTIVE; while(i < sizeof(HX8357D_regValues)) { uint8_t r = pgm_read_byte(&HX8357D_regValues[i++]); uint8_t len = pgm_read_byte(&HX8357D_regValues[i++]); if(r == TFTLCD_DELAY) { delay(len); } else { //Serial.print("Register $"); Serial.print(r, HEX); //Serial.print(" datalen "); Serial.println(len); CS_ACTIVE; CD_COMMAND; write8(r); CD_DATA; for (uint8_t d=0; d<len; d++) { uint8_t x = pgm_read_byte(&HX8357D_regValues[i++]); write8(x); } CS_IDLE; } } return; } else if(id == 0x7575) { uint8_t a, d; driver = ID_7575; CS_ACTIVE; while(i < sizeof(HX8347G_regValues)) { a = pgm_read_byte(&HX8347G_regValues[i++]); d = pgm_read_byte(&HX8347G_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister8(a, d); } setRotation(rotation); setLR(); // Lower-right corner of address window } else if(id == 0x0154){ //S6D0154 uint16_t a, d; driver = ID_S6D0154; CS_ACTIVE; //writeRegister16(0x80,0x008D); //Testkey //writeRegister16(0x92,0x0010); writeRegister16(0x11,0x001A); writeRegister16(0x12,0x3121); writeRegister16(0x13,0x006C); writeRegister16(0x14,0x4249); writeRegister16(0x10,0x0800); delay(10); writeRegister16(0x11,0x011A); delay(10); writeRegister16(0x11,0x031A); delay(10); writeRegister16(0x11,0x071A); delay(10); writeRegister16(0x11,0x0F1A); delay(20); writeRegister16(0x11,0x0F3A); delay(30); writeRegister16(0x01,0x0128); writeRegister16(0x02,0x0100); writeRegister16(0x03,0x1030); writeRegister16(0x07,0x1012); writeRegister16(0x08,0x0303); writeRegister16(0x0B,0x1100); writeRegister16(0x0C,0x0000); writeRegister16(0x0F,0x1801); writeRegister16(0x15,0x0020); /* writeRegister16(0x50,0x0101); writeRegister16(0x51,0x0603); writeRegister16(0x52,0x0408); writeRegister16(0x53,0x0000); writeRegister16(0x54,0x0605); writeRegister16(0x55,0x0406); writeRegister16(0x56,0x0303); writeRegister16(0x57,0x0303); writeRegister16(0x58,0x0010); writeRegister16(0x59,0x1000); */ writeRegister16(0x07,0x0012); delay(40); writeRegister16(0x07,0x0013);/* GRAM Address Set */ writeRegister16(0x07,0x0017);/* Display Control DISPLAY ON */ setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if (id == 0x9327){ // ILI9327 8 bit parallel interface driver = ID_ILI9327; CS_ACTIVE; while(i < sizeof(ILI9327_regValues)) { uint8_t r = pgm_read_byte(&ILI9327_regValues[i++]); uint8_t len = pgm_read_byte(&ILI9327_regValues[i++]); if(r == TFTLCD_DELAY) { delay(len); } else { //Serial.print("Register $"); Serial.print(r, HEX); //Serial.print(" datalen "); Serial.println(len); CS_ACTIVE; CD_COMMAND; write8(r); CD_DATA; for (uint8_t d=0; d<len; d++) { uint8_t x = pgm_read_byte(&ILI9327_regValues[i++]); write8(x); } CS_IDLE; } } return; } else if (id == 0x9488){ // ILI9488 8 bit parallel interface driver = ID_ILI9488; CS_ACTIVE; while(i < sizeof(ILI9488_regValues)) { uint8_t r = pgm_read_byte(&ILI9488_regValues[i++]); uint8_t len = pgm_read_byte(&ILI9488_regValues[i++]); if(r == TFTLCD_DELAY) { delay(len); } else { //Serial.print("Register $"); Serial.print(r, HEX); //Serial.print(" datalen "); Serial.println(len); CS_ACTIVE; CD_COMMAND; write8(r); CD_DATA; for (uint8_t d=0; d<len; d++) { uint8_t x = pgm_read_byte(&ILI9488_regValues[i++]); write8(x); } CS_IDLE; } } return; } else { driver = ID_UNKNOWN; return; } }
void Adafruit_TFTLCD::begin(uint16_t id) { uint8_t i = 0; reset(); delay(200); if((id == 0x9325) || (id == 0x9328)) { uint16_t a, d; driver = ID_932X; CS_ACTIVE; while(i < sizeof(ILI932x_regValues) / sizeof(uint16_t)) { a = pgm_read_word(&ILI932x_regValues[i++]); d = pgm_read_word(&ILI932x_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister16(a, d); } setRotation(rotation); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); } else if (id == 0x9341) { uint16_t a, d; driver = ID_9341; CS_ACTIVE; writeRegister8(ILI9341_SOFTRESET, 0); delay(50); writeRegister8(ILI9341_DISPLAYOFF, 0); writeRegister8(ILI9341_POWERCONTROL1, 0x23); writeRegister8(ILI9341_POWERCONTROL2, 0x10); writeRegister16(ILI9341_VCOMCONTROL1, 0x2B2B); writeRegister8(ILI9341_VCOMCONTROL2, 0xC0); writeRegister8(ILI9341_MEMCONTROL, ILI9341_MADCTL_MY | ILI9341_MADCTL_BGR); writeRegister8(ILI9341_PIXELFORMAT, 0x55); writeRegister16(ILI9341_FRAMECONTROL, 0x001B); writeRegister8(ILI9341_ENTRYMODE, 0x07); /* writeRegister32(ILI9341_DISPLAYFUNC, 0x0A822700);*/ writeRegister8(ILI9341_SLEEPOUT, 0); delay(150); writeRegister8(ILI9341_DISPLAYON, 0); delay(500); setAddrWindow(0, 0, TFTWIDTH-1, TFTHEIGHT-1); return; } else if (id == 0x8357) { // HX8357D driver = ID_HX8357D; CS_ACTIVE; while(i < sizeof(HX8357D_regValues)) { uint8_t r = pgm_read_byte(&HX8357D_regValues[i++]); uint8_t len = pgm_read_byte(&HX8357D_regValues[i++]); if(r == TFTLCD_DELAY) { delay(len); } else { //Serial.print("Register $"); Serial.print(r, HEX); //Serial.print(" datalen "); Serial.println(len); CS_ACTIVE; CD_COMMAND; write8(r); CD_DATA; for (uint8_t d=0; d<len; d++) { uint8_t x = pgm_read_byte(&HX8357D_regValues[i++]); write8(x); } CS_IDLE; } } return; } else if(id == 0x7575) { uint8_t a, d; driver = ID_7575; CS_ACTIVE; while(i < sizeof(HX8347G_regValues)) { a = pgm_read_byte(&HX8347G_regValues[i++]); d = pgm_read_byte(&HX8347G_regValues[i++]); if(a == TFTLCD_DELAY) delay(d); else writeRegister8(a, d); } setRotation(rotation); setLR(); // Lower-right corner of address window } else { driver = ID_UNKNOWN; return; } }
bool bandedGlobalAlign(const int & k, const string & U, const string & V, vector<int> & L, vector<int> & R, vector<vector<int> > & s, vector<vector<char> > & l, int & NumOfError) { int n = U.size(); int m = V.size(); int d = m >= n ? m - n : n - m; setLR(k, m, n, L, R); for (int i = 0; i <= n; i++) { for (int j = 0; j < R[i] - L[i] + 1; j++) { s[i][j] = 0; l[i][j] = DIAG; } } s[0][0] = 0; for (int j = L[0]; j <= R[0]; j++) { s[0][slCOL(0, j)] = j * w[INDEL]; l[0][slCOL(0, j)] = LEFT; } char maxl; int s1, s2, s3, s1Col, s2Col, s3Col, maxs; for (int i = 1; i <= n; i++) { s[i][0] = i * w[INDEL]; l[i][0] = UP; for (int j = L[i]; j <= R[i]; j++) { s1 = -inf; s2 = -inf; s3 = -inf; s1Col = slCOL(i - 1, j) - 1; s2Col = slCOL(i - 1, j); s3Col = slCOL(i, j) - 1; if (j - 1 >= L[i - 1] && j - 1 <= R[i - 1]) { s1 = s[i - 1][s1Col] + w[charMatch(U[I], V[J])]; } if (j >= L[i - 1] && j <= R[i - 1]) { s2 = s[i - 1][s2Col] + w[INDEL]; } if (j - 1 >= L[i] && j - 1 <= R[i]) { s3 = s[i][s3Col] + w[INDEL]; } max(s1, s2, s3, maxs, maxl); s[i][slCOL(i, j)] = maxs; l[i][slCOL(i, j)] = maxl; } } int nDiff = 0; int p = n, q = m; //rU.clear(); //rV.clear(); while (p >= 0 && q >= 0 && (p + q != 0)) { // trace back from s[n][m] to s[0][0] if (l[p][slCOL(p, q)] == DIAG) { //rU.push_back(U[P]); //rV.push_back(V[Q]); if (U[P] != V[Q]) nDiff++; p = p - 1; q = q - 1; } else if (l[p][slCOL(p, q)] == UP) { //rU.push_back(U[P]); //rV.push_back('-'); p = p - 1; nDiff++; } else if (l[p][slCOL(p, q)] == LEFT) { //rU.push_back('-'); //rV.push_back(V[Q]); q = q - 1; nDiff++; } if (nDiff > d + k) { return false; } } NumOfError = nDiff; return true; }