]> granicus.if.org Git - imagemagick/blobdiff - coders/djvu.c
(no commit message)
[imagemagick] / coders / djvu.c
index 866e65e95f08c5562325b518e96b996779719798..5d6ae7825cadcb3cba67f8cee3a94c8d4949831a 100644 (file)
@@ -17,7 +17,7 @@
 %                                 July 1992                                   %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
 /*
   Include declarations.
 */
-#include "magick/studio.h"
-#include "magick/blob.h"
-#include "magick/blob-private.h"
-#include "magick/cache.h"
-#include "magick/colormap.h"
-#include "magick/constitute.h"
-#include "magick/exception.h"
-#include "magick/exception-private.h"
-#include "magick/list.h"
-#include "magick/magick.h"
-#include "magick/memory_.h"
-#include "magick/monitor.h"
-#include "magick/monitor-private.h"
-#include "magick/quantum-private.h"
-#include "magick/static.h"
-#include "magick/string_.h"
-#include "magick/module.h"
+#include "MagickCore/studio.h"
+#include "MagickCore/blob.h"
+#include "MagickCore/blob-private.h"
+#include "MagickCore/cache.h"
+#include "MagickCore/colormap.h"
+#include "MagickCore/constitute.h"
+#include "MagickCore/exception.h"
+#include "MagickCore/exception-private.h"
+#include "MagickCore/list.h"
+#include "MagickCore/magick.h"
+#include "MagickCore/memory_.h"
+#include "MagickCore/monitor.h"
+#include "MagickCore/monitor-private.h"
+#include "MagickCore/pixel-accessor.h"
+#include "MagickCore/quantum-private.h"
+#include "MagickCore/static.h"
+#include "MagickCore/string_.h"
+#include "MagickCore/module.h"
 #if defined(MAGICKCORE_DJVU_DELEGATE)
 #include <libdjvu/ddjvuapi.h>
 #endif
@@ -320,8 +321,7 @@ process_message(ddjvu_message_t *message)
  * we use the RGB format!
  */
 static void
-get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, QuantumInfo* quantum_info)
-{
+get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, const ImageInfo *image_info ) {
   ddjvu_format_t
     *format;
 
@@ -349,11 +349,11 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h,
 
         /* stride of this temporary buffer: */
         stride = (type == DDJVU_PAGETYPE_BITONAL)?
-                (lc->image->columns + 7)/8:
-                lc->image->columns *3;
-
-        q = (unsigned char *) AcquireQuantumMemory(lc->image->rows,stride);
+                (image->columns + 7)/8 : image->columns *3;
 
+        q = (unsigned char *) AcquireQuantumMemory(image->rows,stride);
+        if (q == (unsigned char *) NULL)
+          return;
 
         format = ddjvu_format_create(
                 (type == DDJVU_PAGETYPE_BITONAL)?DDJVU_FORMAT_LSBTOMSB : DDJVU_FORMAT_RGB24,
@@ -381,6 +381,7 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h,
                                     format,
                                     stride, /* ?? */
                                     (char*)q);
+        (void) ret;
         ddjvu_format_release(format);
 
 
@@ -389,15 +390,13 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h,
 #if DEBUG
                 printf("%s: expanding BITONAL page/image\n", __FUNCTION__);
 #endif
-                register IndexPacket *indexes;
                 size_t bit, byte;
 
                 for (y=0; y < (ssize_t) image->rows; y++)
                         {
-                                PixelPacket * o = QueueAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-                                if (o == (PixelPacket *) NULL)
+                                Quantum * o = QueueAuthenticPixels(image,0,y,image->columns,1,&image->exception);
+                                if (o == (Quantum *) NULL)
                                         break;
-                                indexes=GetAuthenticIndexQueue(image);
                                 bit=0;
                                 byte=0;
 
@@ -406,11 +405,12 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h,
                                         {
                                                 if (bit == 0) byte= (size_t) q[(y * stride) + (x / 8)];
 
-                                                indexes[x]=(IndexPacket) (((byte & 0x01) != 0) ? 0x00 : 0x01);
+                                                SetPixelIndex(image,(Quantum) (((byte & 0x01) != 0) ? 0x00 : 0x01),o);
                                                 bit++;
                                                 if (bit == 8)
                                                         bit=0;
                                                 byte>>=1;
+                                          o+=GetPixelChannels(image);
                                         }
                                 if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
                                         break;
@@ -427,22 +427,27 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h,
                 /* old: */
                 char* r;
 #else
-                register PixelPacket *r;
+                register Quantum *r;
+                unsigned char *s;
 #endif
-
-                for (i = 0;i< (ssize_t) lc->image->rows; i++)
+                s=q;
+                for (i = 0;i< (ssize_t) image->rows; i++)
                         {
 #if DEBUG
                                if (i % 1000 == 0) printf("%d\n",i);
 #endif
-                               r = QueueAuthenticPixels(lc->image,0,i,lc->image->columns,1,&image->exception);
-
-                                ImportQuantumPixels(lc->image,
-                                                    (CacheView *) NULL,
-                                                    quantum_info,
-                                                    RGBQuantum, /*GrayQuantum*/
-                                                    q+i*stride,&image->exception);
-                                SyncAuthenticPixels(lc->image,&image->exception);
+                               r = QueueAuthenticPixels(image,0,i,image->columns,1,&image->exception);
+                               if (r == (Quantum *) NULL)
+                                 break;
+                  for (x=0; x < (ssize_t) image->columns; x++)
+                  {
+                    SetPixelRed(image,ScaleCharToQuantum(*s++),r);
+                    SetPixelGreen(image,ScaleCharToQuantum(*s++),r);
+                    SetPixelBlue(image,ScaleCharToQuantum(*s++),r);
+                    r+=GetPixelChannels(image);
+                  }
+
+                              SyncAuthenticPixels(image,&image->exception);
                         }
         }
         q=(unsigned char *) RelinquishMagickMemory(q);
@@ -565,7 +570,6 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum,
      type;
 
   ddjvu_pageinfo_t info;
-  QuantumInfo *quantum_info;
   ddjvu_message_t *message;
   Image *image;
   int logging;
@@ -576,9 +580,10 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum,
         /* Read one DJVU image */
         image = lc->image;
 
-        /* register PixelPacket *q; */
+        /* register Quantum *q; */
 
         logging=LogMagickEvent(CoderEvent,GetMagickModule(), "  enter ReadOneDJVUImage()");
+        (void) logging;
 
 #if DEBUG
         printf("====  Loading the page %d\n", pagenum);
@@ -666,12 +671,9 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum,
 
 
 #if 1                           /* per_line */
-        quantum_info=AcquireQuantumInfo(image_info,image);
-        if (quantum_info == (QuantumInfo *) NULL)
-          ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
 
         /* q = QueueAuthenticPixels(image,0,0,image->columns,image->rows); */
-        get_page_image(lc, lc->page, 0, 0, info.width, info.height, quantum_info);
+        get_page_image(lc, lc->page, 0, 0, info.width, info.height, image_info);
 #else
         int i;
         for (i = 0;i< image->rows; i++)
@@ -692,8 +694,6 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum,
 
         if (!image->ping)
           SyncImage(image);
-        quantum_info=DestroyQuantumInfo(quantum_info);
-        /* indexes=GetAuthenticIndexQueue(image); */
         /* mmc: ??? Convert PNM pixels to runlength-encoded MIFF packets. */
         /* image->colors =  */
 
@@ -778,6 +778,7 @@ static Image *ReadDJVUImage(const ImageInfo *image_info,
 
 
   logging = LogMagickEvent(CoderEvent,GetMagickModule(),"enter ReadDJVUImage()");
+  (void) logging;
 
   image = AcquireImage(image_info); /* mmc: ?? */