]> mj.ucw.cz Git - libucw.git/blobdiff - images/io-main.c
Small changes in XML parser:
[libucw.git] / images / io-main.c
index 230a7cfd8f025f73db7b498bcfdbea899f4514eb..f69b8b6c4a4bf926706f365c36cbbd5f2d6f3dc1 100644 (file)
@@ -14,6 +14,7 @@
 #include "images/images.h"
 #include "images/error.h"
 #include "images/io-main.h"
+#include "images/color.h"
 
 #include <string.h>
 
@@ -51,7 +52,7 @@ libungif_failed:
 #endif
 #ifdef CONFIG_IMAGES_LIBPNG
   libpng_cleanup(io);
-libpng_failed:  
+libpng_failed:
 #endif
 #ifdef CONFIG_IMAGES_LIBJPEG
   libjpeg_cleanup(io);
@@ -341,20 +342,18 @@ image_io_read_data_finish(struct image_io_read_data_internals *rdi, struct image
          rdi->image = img;
        }
 
-      /* Merge with background */
-      if ((io->flags ^ rdi->image->flags) & IMAGE_ALPHA)
+      /* Convert pixel format */
+      if (io->flags != rdi->image->flags)
         {
-         DBG("Aplying background");
-         uns flags = rdi->image->flags & ~IMAGE_ALPHA;
-         if (!(rdi->need_transformations = (flags ^ io->flags) & (IMAGE_NEW_FLAGS & ~IMAGE_PIXELS_ALIGNED)))
-           flags = io->flags;
-         struct image *img = image_new(io->context, io->cols, io->rows, flags, rdi->need_transformations ? NULL : io->pool);
+         struct image *img = image_new(io->context, io->cols, io->rows, io->flags, io->pool);
          if (unlikely(!img))
            {
              image_destroy(rdi->image);
              return 0;
            }
-          if (unlikely(!image_apply_background(io->context, img, rdi->image, &io->background_color)))
+         struct image_conv_options opt = image_conv_defaults;
+         opt.background = io->background_color;
+          if (unlikely(!image_conv(io->context, img, rdi->image, &opt)))
             {
               image_destroy(rdi->image);
              image_destroy(img);
@@ -363,10 +362,6 @@ image_io_read_data_finish(struct image_io_read_data_internals *rdi, struct image
          image_destroy(rdi->image);
          rdi->image = img;
        }
-
-      // FIXME: support for various color spaces
-
-      ASSERT(!rdi->need_transformations);
     }
 
   /* Success */