// This is the command sequence that rotates the ST7735 driver coordinate frame rotation = m % 4; // Limit the range of values to 0-3 writecommand(TFT_MADCTL); switch (rotation) { case 0: if (tabcolor == INITR_BLACKTAB) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB); } else if(tabcolor == INITR_GREENTAB2) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB); colstart = 2; rowstart = 1; } else if(tabcolor == INITR_GREENTAB3) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR); colstart = 2; rowstart = 3; } else if(tabcolor == INITR_GREENTAB128) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_MH | TFT_MAD_BGR); colstart = 0; rowstart = 32; } else if(tabcolor == INITR_GREENTAB160x80) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_MH | TFT_MAD_BGR); colstart = 26; rowstart = 1; } else if(tabcolor == INITR_REDTAB160x80) { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_MH | TFT_MAD_BGR); colstart = 24; rowstart = 0; } else if(tabcolor == INITB) { writedata(TFT_MAD_MX | TFT_MAD_RGB); } else { writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR); } _width = _init_width; _height = _init_height; break; case 1: if (tabcolor == INITR_BLACKTAB) { writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_RGB); } else if(tabcolor == INITR_GREENTAB2) { writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_RGB); colstart = 1; rowstart = 2; } else if(tabcolor == INITR_GREENTAB3) { writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR); colstart = 3; rowstart = 2; } else if(tabcolor == INITR_GREENTAB128) { writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR); colstart = 32; rowstart = 0; } else if(tabcolor == INITR_GREENTAB160x80) { writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR); colstart = 1; rowstart = 26; } else if(tabcolor == INITR_REDTAB160x80) { writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR); colstart = 0; rowstart = 24; } else if(tabcolor == INITB) { writedata(TFT_MAD_MV | TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_RGB); } else { writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR); } _width = _init_height; _height = _init_width; break; case 2: if (tabcolor == INITR_BLACKTAB) { writedata(TFT_MAD_RGB); } else if(tabcolor == INITR_GREENTAB2) { writedata(TFT_MAD_RGB); colstart = 2; rowstart = 1; } else if(tabcolor == INITR_GREENTAB3) { writedata(TFT_MAD_BGR); colstart = 2; rowstart = 1; } else if(tabcolor == INITR_GREENTAB128) { writedata(TFT_MAD_BGR); colstart = 0; rowstart = 0; } else if(tabcolor == INITR_GREENTAB160x80) { writedata(TFT_MAD_BGR); colstart = 0; rowstart = 0; } else if(tabcolor == INITR_REDTAB160x80) { writedata(TFT_MAD_BGR); colstart = 24; rowstart = 0; } else if(tabcolor == INITB) { writedata(TFT_MAD_MY | TFT_MAD_RGB); } else { writedata(TFT_MAD_BGR); } _width = _init_width; _height = _init_height; break; case 3: if (tabcolor == INITR_BLACKTAB) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_RGB); } else if(tabcolor == INITR_GREENTAB2) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_RGB); colstart = 1; rowstart = 2; } else if(tabcolor == INITR_GREENTAB3) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); colstart = 1; rowstart = 2; } else if(tabcolor == INITR_GREENTAB128) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); colstart = 0; rowstart = 0; } else if(tabcolor == INITR_GREENTAB160x80) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); colstart = 1; rowstart = 26; } else if(tabcolor == INITR_REDTAB160x80) { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); colstart = 0; rowstart = 24; } else if(tabcolor == INITB) { writedata(TFT_MAD_MV | TFT_MAD_RGB); } else { writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR); } _width = _init_height; _height = _init_width; break; // These next rotations are for bottum up BMP drawing /* case 4: writedata(ST7735_TFT_MAD_MX | ST7735_TFT_MAD_MY | ST7735_TFT_MAD_BGR); _width = _init_width; _height = _init_height; break; case 5: writedata(ST7735_TFT_MAD_MV | ST7735_TFT_MAD_MX | ST7735_TFT_MAD_BGR); _width = _init_height; _height = _init_width; break; case 6: writedata(ST7735_TFT_MAD_BGR); _width = _init_width; _height = _init_height; break; case 7: writedata(ST7735_TFT_MAD_MY | ST7735_TFT_MAD_MV | ST7735_TFT_MAD_BGR); _width = _init_height; _height = _init_width; break; */ }