easylogo: add support for 16-bit RGB565
PATCH 1/1 easylogo: add support for 16-bit RGB565
From: Michael Hennerich <[email protected]>
Signed-off-by Michael Hennerich <[email protected]>
Signed-off-by Mike Frysinger <[email protected]>
--- tools/easylogo/easylogo.c | 78 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 60 insertions(+), 18 deletions(-)
tools/easylogo/easylogo.c +60 -18
@@ -276,6 +276,35 @@ int image_rgb_to_yuyv (image_t * rgb_image, image_t * yuyv_image)return 0 ; } +int image_rgb888_to_rgb565 (image_t *rgb888_image,image_t *rgb565_image) +{ +rgb_t *rgb_ptr = (rgb_t *) rgb888_image->data; +unsigned short *dest; +int count =0 ; + + rgb565_image->pixel_size =2 ; + rgb565_image->bpp =16 ; + rgb565_image->yuyv =0 ; + rgb565_image->width = rgb888_image->width; + rgb565_image->height = rgb888_image->height; + rgb565_image->pixels = rgb565_image->width * rgb565_image->height; + rgb565_image->size = rgb565_image->pixels * rgb565_image->pixel_size; + dest = (unsigned short *) (rgb565_image->data = +xmalloc (rgb565_image->size)); + rgb565_image->palette =0 ; + rgb565_image->palette_size =0 ; + +while ((count++) < rgb888_image->pixels) { + + *dest++ = ((rgb_ptr->b &0xF8 ) <<8 ) | + ((rgb_ptr->g &0xFC ) <<3 ) | + (rgb_ptr->r >>3 ); + rgb_ptr++; + } + +return 0 ; +} +int use_gzip =0 ;int image_save_header (image_t * image,char *filename,char *varname)
@@ -434,7 +463,8 @@ static void usage (int exit_status)"Syntax: easylogo [options] inputfile [outputvar [outputfile]]\n" "\n" "Options:\n" -" -r Output RGB instead of YUYV\n" +" -r Output RGB888 instead of YUYV\n" +" -s Output RGB565 instead of YUYV\n" " -g Compress with gzip\n" " -b Preallocate space in bss for decompressing image\n" " -h Help output\n"
@@ -449,20 +479,25 @@ static void usage (int exit_status)int main (int argc,char *argv[]) {int c; -bool use_rgb = false; +bool use_rgb888 = false; +bool use_rgb565 = false;char inputfile[DEF_FILELEN ], outputfile[DEF_FILELEN ], varname[DEF_FILELEN ]; -image_t rgb_logo, yuyv_logo; +image_t rgb888_logo, rgb565_logo, yuyv_logo; -while ((c =getopt (argc, argv,"hrgb" )) >0 ) { +while ((c =getopt (argc, argv,"hrsgb" )) >0 ) {switch (c) {case 'h' :usage (0 );break ;case 'r' : - use_rgb = true; -puts ("Using 24-bit RGB Output Fromat" ); + use_rgb888 = true; +puts ("Using 24-bit RGB888 Output Fromat" ); +break ; +case 's' : + use_rgb565 = true; +puts ("Using 16-bit RGB565 Output Fromat" );break ;case 'g' : use_gzip |=0x1 ;
@@ -512,28 +547,35 @@ int main (int argc, char *argv[])/* Import TGA logo */ printf ("L" ); -if (image_load_tga (&rgb_logo, inputfile) <0 ) { +if (image_load_tga (&rgb888_logo, inputfile) <0 ) {printf ("input file not found!\n" );exit (1 ); } -/* Convert it to YUYV format if wanted */ +/* Convert, save, and free the image */ -if (!use_rgb) { +if (!use_rgb888 && !use_rgb565) {printf ("C" ); -image_rgb_to_yuyv (&rgb_logo, &yuyv_logo); +image_rgb_to_yuyv (&rgb888_logo, &yuyv_logo); + +printf ("S" ); +image_save_header (&yuyv_logo, outputfile, varname); +image_free (&yuyv_logo); + }else if (use_rgb565) { +printf ("C" ); +image_rgb888_to_rgb565 (&rgb888_logo, &rgb565_logo); + +printf ("S" ); +image_save_header (&rgb565_logo, outputfile, varname); +image_free (&rgb565_logo); + }else { +printf ("S" ); +image_save_header (&rgb888_logo, outputfile, varname); } -/* Save it into a header format */ - -printf ("S" ); -image_save_header (use_rgb ? &rgb_logo : &yuyv_logo, outputfile, varname); -/* Free original image and copy */ -image_free (&rgb_logo); -if (!use_rgb) -image_free (&yuyv_logo); +image_free (&rgb888_logo);printf ("\n" );
Signature · 1 line
1.6.5.4
Wolfgang Denk
AppliedPATCH 1/1 easylogo: add support for 16-bit RGB565
Dear Mike Frysinger,
Quoted 7 lines · In message <[email protected]> you wrote:
From: Michael Hennerich <[email protected]>
Signed-off-by Michael Hennerich <[email protected]>Signed-off-by Mike Frysinger <[email protected]>--- tools/easylogo/easylogo.c | 78 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 60 insertions(+), 18 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Q: Why do PCs have a reset button on the front? A: Because they are expected to run Microsoft operating systems.