]> git.sur5r.net Git - u-boot/blobdiff - tools/easylogo/easylogo.c
FSL DDR: Convert STXSSA to new DDR code.
[u-boot] / tools / easylogo / easylogo.c
index 080bea9bb8cfe5259746874a90d187cd4159b23e..00a1e4ed1675ccedbee5a203e1ad68c6610c672a 100644 (file)
@@ -7,6 +7,8 @@
 ** This is still under construction!
 */
 
+#include <getopt.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -216,15 +218,10 @@ int image_load_tga (image_t * image, char *filename)
        return 0;
 }
 
-int image_free (image_t * image)
+void image_free (image_t * image)
 {
-       if (image->data != NULL)
-               free (image->data);
-
-       if (image->palette != NULL)
-               free (image->palette);
-
-       return 0;
+       free (image->data);
+       free (image->palette);
 }
 
 int image_rgb_to_yuyv (image_t * rgb_image, image_t * yuyv_image)
@@ -335,7 +332,7 @@ int image_save_header (image_t * image, char *filename, char *varname)
        if (col)
                fprintf (file, "%s\n", str);
 
-       /*      End of declaration */
+       /*      End of declaration */
        fprintf (file, "};\n\n");
        /*      Variable */
        fprintf (file, "fastimage_t %s = {\n", varname);
@@ -353,59 +350,76 @@ int image_save_header (image_t * image, char *filename, char *varname)
 
 #define DEF_FILELEN    256
 
+static void usage (int exit_status)
+{
+       puts (
+               "EasyLogo 1.0 (C) 2000 by Paolo Scaffardi\n"
+               "\n"
+               "Syntax:        easylogo [options] inputfile [outputvar [outputfile]]\n"
+               "\n"
+               "Options:\n"
+               "  -r     Output RGB instead of YUYV\n"
+               "  -h     Help output\n"
+               "\n"
+               "Where: 'inputfile'   is the TGA image to load\n"
+               "       'outputvar'   is the variable name to create\n"
+               "       'outputfile'  is the output header file (default is 'inputfile.h')"
+       );
+       exit (exit_status);
+}
+
 int main (int argc, char *argv[])
 {
+       int c;
+       bool use_rgb = false;
        char inputfile[DEF_FILELEN],
                outputfile[DEF_FILELEN], varname[DEF_FILELEN];
 
        image_t rgb_logo, yuyv_logo;
 
-       switch (argc) {
-       case 2:
-       case 3:
-       case 4:
-               strcpy (inputfile, argv[1]);
-
-               if (argc > 2)
-                       strcpy (varname, argv[2]);
-               else {
-                       char *dot = strchr (inputfile, '.');
-                       int pos = dot - inputfile;
-
-                       if (dot) {
-                               strncpy (varname, inputfile, pos);
-                               varname[pos] = 0;
-                       }
-               }
-
-               if (argc > 3)
-                       strcpy (outputfile, argv[3]);
-               else {
-                       char *dot = strchr (varname, '.');
-                       int pos = dot - varname;
-
-                       if (dot) {
-                               char app[DEF_FILELEN];
-
-                               strncpy (app, varname, pos);
-                               app[pos] = 0;
-                               sprintf (outputfile, "%s.h", app);
-                       }
+       while ((c = getopt(argc, argv, "hr")) > 0) {
+               switch (c) {
+               case 'h':
+                       usage (0);
+                       break;
+               case 'r':
+                       use_rgb = true;
+                       puts ("Using 24-bit RGB Output Fromat");
+                       break;
+               default:
+                       usage (1);
+                       break;
                }
-               break;
-
-       default:
-               printf ("EasyLogo 1.0 (C) 2000 by Paolo Scaffardi\n\n");
+       }
 
-               printf("Syntax: easylogo inputfile [outputvar {outputfile}] \n");
-               printf("\n");
-               printf("Where:  'inputfile'     is the TGA image to load\n");
-               printf("        'outputvar'     is the variable name to create\n");
-               printf("        'outputfile'    is the output header file (default is 'inputfile.h')\n");
+       c = argc - optind;
+       if (c > 4 || c < 1)
+               usage (1);
+
+       strcpy (inputfile, argv[optind]);
+
+       if (c > 1)
+               strcpy (varname, argv[optind + 1]);
+       else {
+               /* transform "input.tga" to just "input" */
+               char *dot;
+               strcpy (varname, inputfile);
+               dot = strchr (varname, '.');
+               if (dot)
+                       *dot = '\0';
+       }
 
-               return -1;
+       if (c > 2)
+               strcpy (outputfile, argv[optind + 2]);
+       else {
+               /* just append ".h" to input file name */
+               strcpy (outputfile, inputfile);
+               strcat (outputfile, ".h");
        }
 
+       /* Make sure the output is sent as soon as we printf() */
+       setbuf(stdout, NULL);
+
        printf ("Doing '%s' (%s) from '%s'...",
                outputfile, varname, inputfile);
 
@@ -417,20 +431,23 @@ int main (int argc, char *argv[])
                exit (1);
        }
 
-       /* Convert it to YUYV format */
+       /* Convert it to YUYV format if wanted */
 
-       printf ("C");
-       image_rgb_to_yuyv (&rgb_logo, &yuyv_logo);
+       if (!use_rgb) {
+               printf ("C");
+               image_rgb_to_yuyv (&rgb_logo, &yuyv_logo);
+       }
 
        /* Save it into a header format */
 
        printf ("S");
-       image_save_header (&yuyv_logo, outputfile, varname);
+       image_save_header (use_rgb ? &rgb_logo : &yuyv_logo, outputfile, varname);
 
        /* Free original image and copy */
 
        image_free (&rgb_logo);
-       image_free (&yuyv_logo);
+       if (!use_rgb)
+               image_free (&yuyv_logo);
 
        printf ("\n");