]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 12 Apr 2010 14:43:14 +0000 (14:43 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 12 Apr 2010 14:43:14 +0000 (14:43 +0000)
magick/cache-private.h
magick/cache.c
magick/image.c
magick/image.h

index be587ec60d5c2ff18433e387a6c9a05f4a2bd207..dfa8cc9e5dbecbd760f23acc914fb6fe466199eb 100644 (file)
@@ -32,7 +32,8 @@ typedef enum
   UndefinedCache,
   MemoryCache,
   MapCache,
-  DiskCache
+  DiskCache,
+  PingCache
 } CacheType;
 
 typedef void
index f4b7602732caf6f9841578c7ea9a1a92747a4ce7..4f39ee1558a2e36938bd24a0471d2eacc565b948 100644 (file)
@@ -1808,6 +1808,8 @@ static inline MagickBooleanType IsNexusInCore(const CacheInfo *cache_info,
   MagickOffsetType
     offset;
 
+  if (cache_info->type == PingCache)
+    return(MagickTrue);
   offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+
     nexus_info->region.x;
   if (nexus_info->pixels != (cache_info->pixels+offset))
@@ -4081,6 +4083,16 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode,
   cache_info->columns=image->columns;
   cache_info->active_index_channel=((image->storage_class == PseudoClass) ||
     (image->colorspace == CMYKColorspace)) ? MagickTrue : MagickFalse;
+  if (image->ping != MagickFalse)
+    {
+      cache_info->storage_class=image->storage_class;
+      cache_info->colorspace=image->colorspace;
+      cache_info->type=PingCache;
+      cache_info->pixels=(PixelPacket *) NULL;
+      cache_info->indexes=(IndexPacket *) NULL;
+      cache_info->length=0;
+      return(MagickTrue);
+    }
   number_pixels=(MagickSizeType) cache_info->columns*cache_info->rows;
   packet_size=sizeof(PixelPacket);
   if (cache_info->active_index_channel != MagickFalse)
@@ -5036,8 +5048,8 @@ static PixelPacket *SetPixelCacheNexusPixels(const Image *image,
   if (cache_info->type == UndefinedCache)
     return((PixelPacket *) NULL);
   nexus_info->region=(*region);
-  if ((cache_info->type != DiskCache) && (image->clip_mask == (Image *) NULL) &&
-      (image->mask == (Image *) NULL))
+  if ((cache_info->type != DiskCache) && (cache_info->type != PingCache) &&
+      (image->clip_mask == (Image *) NULL) && (image->mask == (Image *) NULL))
     {
       long
         x,
index 616cc12d538191c486c8bb74dda943b77332af3f..33d3777448309ff06467e3f62cfe388340893405 100644 (file)
@@ -180,6 +180,7 @@ MagickExport Image *AcquireImage(const ImageInfo *image_info)
   image->y_resolution=DefaultResolution;
   image->units=PixelsPerInchResolution;
   GetTimerInfo(&image->timer);
+  image->ping=MagickFalse;
   image->cache=AcquirePixelCache(0);
   image->blob=CloneBlobInfo((BlobInfo *) NULL);
   image->debug=IsEventLogging();
@@ -252,6 +253,7 @@ MagickExport Image *AcquireImage(const ImageInfo *image_info)
   image->border_color=image_info->border_color;
   image->matte_color=image_info->matte_color;
   image->transparent_color=image_info->transparent_color;
+  image->ping=image_info->ping;
   image->progress_monitor=image_info->progress_monitor;
   image->client_data=image_info->client_data;
   if (image_info->cache != (void *) NULL)
@@ -344,8 +346,7 @@ MagickExport MagickBooleanType AcquireImageColormap(Image *image,
     image->colormap[i].blue=(Quantum) pixel;
     image->colormap[i].opacity=OpaqueOpacity;
   }
-  image->storage_class=PseudoClass;
-  return(MagickTrue);
+  return(SetImageStorageClass(image,PseudoClass));
 }
 \f
 /*
@@ -874,6 +875,7 @@ MagickExport Image *CloneImage(const Image *image,const unsigned long columns,
     clone_image->blob=ReferenceBlob(image->blob);
   else
     clone_image->blob=CloneBlobInfo((BlobInfo *) NULL);
+  clone_image->ping=image->ping;
   clone_image->debug=IsEventLogging();
   clone_image->semaphore=AllocateSemaphoreInfo();
   if ((columns == 0) && (rows == 0))
index ef370ce683a62908118257c19cd2f50c06210119..d557b28be15499e3cdb747d36eb9fc2f2f32473c 100644 (file)
@@ -333,6 +333,9 @@ struct _Image
 
   MagickSizeType
     extent;
+
+  MagickBooleanType
+    ping;
 };
 
 struct _ImageInfo