X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=coders%2Fdjvu.c;h=5d6ae7825cadcb3cba67f8cee3a94c8d4949831a;hb=4c08aed51c5899665ade97263692328eea4af106;hp=b5d6960e3b04667e3c5c73c7d9c86e4a0086a359;hpb=7e41fe84a841d7b9d7b36b245b65e9dcb3314943;p=imagemagick diff --git a/coders/djvu.c b/coders/djvu.c index b5d6960e3..5d6ae7825 100644 --- a/coders/djvu.c +++ b/coders/djvu.c @@ -39,23 +39,24 @@ /* 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 #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: ?? */