Several examples run on only mbed-os5.13.0 (not 5.14.0)

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Revision:
3:35ac9ee7d2d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zz_common/drawImage_copy0.cpp	Wed Aug 07 05:39:01 2019 +0000
@@ -0,0 +1,146 @@
+/*
+ * Mbed function
+ *
+ *      Created:    July      30th, 2019
+ *      Revised:    July      30th, 2019
+ */
+
+/*
+    https://os.mbed.com/users/Lightsource/code/DISCO-F746NG_BMP_FROM_SDCARD/
+    https://www.gimp.org/downloads/
+    https://os.mbed.com/questions/69098/how-can-I-load-an-image-to-screen/#answer14107
+ */
+
+//#include "select_program.h"
+#if defined(NIOI_SENSOR) || defined(EXAMPLE_10_BITMAP)
+
+//  Include --------------------------------------------------------------------
+#include "mbed.h"
+#include "FATFileSystem.h"
+#include "LCD_DISCO_F769NI.h"
+#include "stm32f769i_discovery_lcd.h"
+
+//  Definition -----------------------------------------------------------------
+
+//  Constructor ----------------------------------------------------------------
+extern Serial pc;
+extern FATFileSystem fs;
+extern LCD_DISCO_F769NI lcd;
+
+//  RAM ------------------------------------------------------------------------
+
+//  ROM / Constant data --------------------------------------------------------
+
+//  Function prototypes --------------------------------------------------------
+//extern void drawImage(const char * name, uint16_t x, uint16_t y);
+//extern void draw_bitmap(uint8_t *Name_BMP, uint32_t Xpos, uint32_t Ypos);
+
+
+//------------------------------------------------------------------------------
+//  Control Program
+//------------------------------------------------------------------------------
+#if 0
+void draw_bitmap(uint8_t *Name_BMP, uint32_t Xpos, uint32_t Ypos)
+{
+    uint32_t index = 0, width = 0, height = 0, bit_pixel = 0;
+    uint32_t address;
+    uint32_t input_color_mode = 0;
+    char filename[50];
+    int i, fileSize;
+    char * buffer;
+
+    i=0;
+    while (*Name_BMP!='\0') {
+        filename[i++]=*Name_BMP++;
+    }
+
+    filename[i] = 0;
+    FILE *Image = fopen((const char *)&filename[0], "rb");  // open the bmp file
+
+    // obtain file size:
+    fseek (Image, 0, SEEK_END);
+    fileSize = ftell (Image);
+    rewind (Image);
+
+    // allocate memory to contain the whole file:
+    buffer = (char*) malloc (sizeof(char)*fileSize/2);
+
+    // copy the file into the buffer:
+    fseek (Image, 0, SEEK_SET );   // set SD file data start position
+    fread (buffer,1,fileSize,Image);
+    fclose (Image);
+
+    /* Get bitmap data address offset */
+    index = *(__IO uint16_t *) (buffer + 10);
+    index |= (*(__IO uint16_t *) (buffer + 12)) << 16;
+
+    /* Read bitmap width */
+    width = *(uint16_t *) (buffer + 18);
+    width |= (*(uint16_t *) (buffer + 20)) << 16;
+
+    /* Read bitmap height */
+    height = *(uint16_t *) (buffer + 22);
+    height |= (*(uint16_t *) (buffer + 24)) << 16;
+
+    /* Read bit/pixel */
+    bit_pixel = *(uint16_t *) (buffer + 28);
+
+    /* Set the address */
+    //address = hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (((BSP_LCD_GetXSize()*Ypos) + Xpos)*(4));
+    address = hltdc_discovery.LayerCfg[ActiveLayer].FBStartAdress + (((BSP_LCD_GetXSize()*Ypos) + Xpos)*(4));
+
+    /* Get the layer pixel format */
+    if ((bit_pixel/8) == 4) {
+        input_color_mode = CM_ARGB8888;
+    } else if ((bit_pixel/8) == 2) {
+        input_color_mode = CM_RGB565;
+    } else {
+        input_color_mode = CM_RGB888;
+    }
+
+    /* Bypass the bitmap header */
+    buffer += (index + (width * (height - 1) * (bit_pixel/8)));
+
+    /* Convert picture to ARGB8888 pixel format */
+    for(index=0; index < height; index++) {
+        /* Pixel format conversion */
+        LL_ConvertLineToARGB8888((uint32_t *)buffer, (uint32_t *)address, width, input_color_mode);
+
+        /* Increment the source and destination buffers */
+        address+=  (BSP_LCD_GetXSize()*4);
+        buffer -= width*(bit_pixel/8);
+    }
+    free (buffer);
+}
+#endif
+#if 0
+void drawImage(const char * name, uint16_t x, uint16_t y)
+{
+    int fileSize;
+    char * buffer;
+
+    FILE *image = fopen(name, "rb");  // open the bmp file
+    if (image == 0) {
+        pc.printf("%s is not found in the disk\r\n", name);
+        return;
+    }
+    //obtain file size:
+    fseek (image, 0, SEEK_END);
+    fileSize = ftell (image);
+    rewind (image);
+
+    // allocate memory to contain the whole file:
+    buffer = (char*) malloc (sizeof(char)*fileSize);
+    // copy the file into the buffer:
+    fseek (image, 0, SEEK_SET );
+    // set SD file data start position
+    fread (buffer,1,fileSize,image);
+    fclose (image);
+
+    //Draw image
+    lcd.DrawBitmap(x,y,(uint8_t *)buffer);
+    //Free allocated memory
+    free (buffer);
+}
+#endif
+#endif