a

Dependents:   SeeedStudioTFTv2

Fork of SPI_TFT_ILI9341 by Components

Revision:
10:ec7261a25933
Parent:
8:32bf76e1ec9f
--- a/SPI_TFT_ILI9341.cpp	Tue May 06 18:09:00 2014 +0000
+++ b/SPI_TFT_ILI9341.cpp	Sat Aug 15 05:10:09 2015 +0000
@@ -570,6 +570,7 @@
         char_y = char_y + font[2];
         if (char_y >= height() - font[2]) {
             char_y = 0;
+            cls();
         }
     } else {
         character(char_x, char_y, value);
@@ -689,11 +690,8 @@
     WindowMax();
 }
 
-
 // local filesystem is not implemented in kinetis board
-#if DEVICE_LOCALFILESYSTEM
-
-int SPI_TFT_ILI9341::BMP_16(unsigned int x, unsigned int y, const char *Name_BMP)
+int SPI_TFT_ILI9341::BMP_16(unsigned int x, unsigned int y, FILE *fd)
 {
 
 #define OffsetPixelWidth    18
@@ -702,51 +700,36 @@
 #define OffsetPixData       10
 #define OffsetBPP           28
 
-    char filename[50];
     unsigned char BMP_Header[54];
     unsigned short BPP_t;
     unsigned int PixelWidth,PixelHeigh,start_data;
     unsigned int    i,off;
     int padd,j;
     unsigned short *line;
-
-    // get the filename
-    LocalFileSystem local("local");
-    sprintf(&filename[0],"/local/");
-    i=7;
-    while (*Name_BMP!='\0') {
-        filename[i++]=*Name_BMP++;
-    }
+    //unsigned short line[134];
 
-    fprintf(stderr, "filename : %s \n\r",filename);
-
-    FILE *Image = fopen((const char *)&filename[0], "rb");  // open the bmp file
-    if (!Image) {
-        return(0);      // error file not found !
-    }
-
-    fread(&BMP_Header[0],1,54,Image);      // get the BMP Header
+    fread(&BMP_Header[0],1,54,fd);      // get the BMP Header
 
     if (BMP_Header[0] != 0x42 || BMP_Header[1] != 0x4D) {  // check magic byte
-        fclose(Image);
+        fclose(fd);
         return(-1);     // error no BMP file
     }
 
     BPP_t = BMP_Header[OffsetBPP] + (BMP_Header[OffsetBPP + 1] << 8);
     if (BPP_t != 0x0010) {
-        fclose(Image);
+        fclose(fd);
         return(-2);     // error no 16 bit BMP
     }
 
     PixelHeigh = BMP_Header[OffsetPixelHeigh] + (BMP_Header[OffsetPixelHeigh + 1] << 8) + (BMP_Header[OffsetPixelHeigh + 2] << 16) + (BMP_Header[OffsetPixelHeigh + 3] << 24);
     PixelWidth = BMP_Header[OffsetPixelWidth] + (BMP_Header[OffsetPixelWidth + 1] << 8) + (BMP_Header[OffsetPixelWidth + 2] << 16) + (BMP_Header[OffsetPixelWidth + 3] << 24);
     if (PixelHeigh > height() + y || PixelWidth > width() + x) {
-        fclose(Image);
+        fclose(fd);
         return(-3);      // to big
     }
-
+    
     start_data = BMP_Header[OffsetPixData] + (BMP_Header[OffsetPixData + 1] << 8) + (BMP_Header[OffsetPixData + 2] << 16) + (BMP_Header[OffsetPixData + 3] << 24);
-
+    printf(" %d,%d,%d",PixelWidth,PixelHeigh,start_data);  
     line = (unsigned short *) malloc (2 * PixelWidth); // we need a buffer for a line
     if (line == NULL) {
         return(-4);         // error no memory
@@ -757,25 +740,25 @@
     do {
         padd ++;
     } while ((PixelWidth * 2 + padd)%4 != 0);
-
-
-//fseek(Image, 70 ,SEEK_SET);
-    window(x, y,PixelWidth ,PixelHeigh);
-    wr_cmd(0x2C);  // send pixel 
-    _spi.format(16,3);                            // switch to 16 bit Mode 3
+    //fseek(fd, 70 ,SEEK_SET);
+    window(x, y, PixelWidth, PixelHeigh);
+    wr_cmd(0x2C);  // send pixel
+    _spi.format(16,3);  // switch to 16 bit Mode 3                          
     for (j = PixelHeigh - 1; j >= 0; j--) {               //Lines bottom up
         off = j * (PixelWidth  * 2 + padd) + start_data;   // start of line
-        fseek(Image, off ,SEEK_SET);
-        fread(line,1,PixelWidth * 2,Image);       // read a line - slow !
+        fseek(fd, off ,SEEK_SET);
+        fread(line,1,PixelWidth * 2,fd);       // read a line - slow !
+        printf("1234567890\r\n");
         for (i = 0; i < PixelWidth; i++) {        // copy pixel data to TFT
+            //printf("%02x ", line[i]);
             _spi.write(line[i]);                  // one 16 bit pixel
         } 
      }
+     printf("windows");
     _cs = 1;
     _spi.format(8,3);
     free (line);
-    fclose(Image);
-    WindowMax();
+    fclose(fd);
+    //WindowMax();
     return(1);
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file