]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Thu, 4 Mar 2010 01:47:16 +0000 (01:47 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Thu, 4 Mar 2010 01:47:16 +0000 (01:47 +0000)
coders/dpx.c
coders/tiff.c
magick/blob.c
magick/quantum-export.c

index b79b722440f8a34138fe2997abacf40ed7f5554e..5473066c406443c30cd90baf5eefa7b62dec9f15 100644 (file)
@@ -1794,9 +1794,9 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image)
     Convert pixel packets to DPX raster image.
   */
   quantum_info=AcquireQuantumInfo(image_info,image);
-  quantum_info->quantum=32;
-  quantum_info->pack=dpx.image.image_element[0].packing == 0 ? MagickTrue :
-    MagickFalse;
+  SetQuantumQuantum(quantum_info,32);
+  SetQuantumPack(quantum_info,dpx.image.image_element[0].packing == 0 ?
+    MagickTrue : MagickFalse);
   quantum_type=RGBQuantum;
   if (image->matte != MagickFalse)
     quantum_type=RGBAQuantum;
index 2bc6b60e620e0b99f006bb554d7ebaa143c1be7d..807c127f58a0a18b9a98e1f713053ab06fd0f482 100644 (file)
@@ -748,6 +748,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info,
     y;
 
   MagickBooleanType
+    associated_alpha,
     debug,
     status;
 
@@ -1054,6 +1055,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info,
       default:
         break;
     }
+    associated_alpha=MagickFalse;
     extra_samples=0;
     (void) TIFFGetFieldDefaulted(tiff,TIFFTAG_EXTRASAMPLES,&extra_samples,
       &sample_info);
@@ -1066,19 +1068,16 @@ static Image *ReadTIFFImage(const ImageInfo *image_info,
       for (i=0; i < extra_samples; i++)
       {
         image->matte=MagickTrue;
-        (void) SetImageProperty(image,"tiff:alpha","undefined");
-        SetQuantumAlphaType(quantum_info,UndefinedQuantumAlpha);
-        if (sample_info[i] == EXTRASAMPLE_UNASSALPHA)
-          {
-            SetQuantumAlphaType(quantum_info,DisassociatedQuantumAlpha);
-            (void) SetImageProperty(image,"tiff:alpha","unassociated");
-          }
         if (sample_info[i] == EXTRASAMPLE_ASSOCALPHA)
-          {
-            SetQuantumAlphaType(quantum_info,AssociatedQuantumAlpha);
-            (void) SetImageProperty(image,"tiff:alpha","associated");
-          }
+          SetQuantumAlphaType(quantum_info,DisassociatedQuantumAlpha);
       }
+    option=GetImageOption(image_info,"tiff:alpha");
+    if (option != (const char *) NULL)
+      associated_alpha=LocaleCompare(option,"associated") == 0 ? MagickTrue :
+        MagickFalse;
+    if (image->matte != MagickFalse)
+      (void) SetImageProperty(image,"tiff:alpha",
+        associated_alpha != MagickFalse ? "associated" : "unassociated");
     if ((photometric == PHOTOMETRIC_PALETTE) &&
         (pow(2.0,1.0*bits_per_sample) <= MaxColormapSize))
       {
@@ -1648,7 +1647,7 @@ ModuleExport unsigned long RegisterTIFFImage(void)
 
   MagickInfo
     *entry;
-
+  
   if (tiff_semaphore == (SemaphoreInfo *) NULL)
     tiff_semaphore=AllocateSemaphoreInfo();
   LockSemaphoreInfo(tiff_semaphore);
index 8c1f8d7cc7b8921e66d6925ce6888045d2771729..d78ef8a6d35aefecac70beb2ec09816593f5a72c 100644 (file)
@@ -1236,7 +1236,7 @@ MagickExport MagickSizeType GetBlobSize(const Image *image)
       break;
     case BlobStream:
     {
-      extent=(MagickSizeType) image->blob->extent;
+      extent=(MagickSizeType) image->blob->length;
       break;
     }
   }
index 880348c6296dab2f9e486db8a7a96ab1588e4ac8..b97a713ac754363bfef2b174f8df61b5ff267cab 100644 (file)
 %
 %  The format of the ExportQuantumPixels method is:
 %
-%      size_t ExportQuantumPixels(const Image *image,const CacheView *image_view,
-%        const QuantumInfo *quantum_info,const QuantumType quantum_type,
-%        unsigned char *pixels,ExceptionInfo *exception)
+%      size_t ExportQuantumPixels(const Image *image,
+%        const CacheView *image_view,const QuantumInfo *quantum_info,
+%        const QuantumType quantum_type,unsigned char *pixels,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2006,6 +2007,101 @@ MagickExport size_t ExportQuantumPixels(const Image *image,
           }
           break;
         }
+        case 10:
+        {
+          register unsigned long
+            pixel;
+
+          range=GetQuantumRange(image->depth);
+          if (quantum_info->pack == MagickFalse)
+            {
+              long
+                n;
+
+              register long
+                i;
+
+              unsigned long
+                quantum;
+
+              n=0;
+              quantum=0;
+              pixel=0;
+              for (x=0; x < (long) number_pixels; x++)
+              {
+                for (i=0; i < 4; i++)
+                {
+                  switch (i)
+                  {
+                    case 0: quantum=p->red; break;
+                    case 1: quantum=p->green; break;
+                    case 2: quantum=p->blue; break;
+                    case 3: quantum=QuantumRange-p->opacity; break;
+                  }
+                  switch (n % 3)
+                  {
+                    case 0:
+                    {
+                      pixel|=(unsigned long) (ScaleQuantumToAny(quantum,
+                        range) << 22);
+                      break;
+                    }
+                    case 1:
+                    {
+                      pixel|=(unsigned long) (ScaleQuantumToAny(quantum,
+                        range) << 12);
+                      break;
+                    }
+                    case 2:
+                    {
+                      pixel|=(unsigned long) (ScaleQuantumToAny(quantum,
+                        range) << 2);
+                      q=PopLongPixel(endian,pixel,q);
+                      pixel=0;
+                      break;
+                    }
+                  }
+                  n++;
+                }
+                p++;
+                q+=quantum_info->pad;
+              }
+              break;
+            }
+          if (quantum_info->quantum == 32UL)
+            {
+              for (x=0; x < (long) number_pixels; x++)
+              {
+                pixel=(unsigned long) ScaleQuantumToAny(p->red,range);
+                q=PopQuantumLongPixel(&quantum_state,image->depth,pixel,q);
+                pixel=(unsigned long) ScaleQuantumToAny(p->green,range);
+                q=PopQuantumLongPixel(&quantum_state,image->depth,pixel,q);
+                pixel=(unsigned long) ScaleQuantumToAny(p->blue,range);
+                q=PopQuantumLongPixel(&quantum_state,image->depth,pixel,q);
+                pixel=(unsigned long) ScaleQuantumToAny(QuantumRange-p->opacity,
+                  range);
+                q=PopQuantumLongPixel(&quantum_state,image->depth,pixel,q);
+                p++;
+                q+=quantum_info->pad;
+              }
+              break;
+            }
+          for (x=0; x < (long) number_pixels; x++)
+          {
+            pixel=(unsigned long) ScaleQuantumToAny(p->red,range);
+            q=PopQuantumPixel(&quantum_state,image->depth,pixel,q);
+            pixel=(unsigned long) ScaleQuantumToAny(p->green,range);
+            q=PopQuantumPixel(&quantum_state,image->depth,pixel,q);
+            pixel=(unsigned long) ScaleQuantumToAny(p->blue,range);
+            q=PopQuantumPixel(&quantum_state,image->depth,pixel,q);
+            pixel=(unsigned long) ScaleQuantumToAny(QuantumRange-
+              p->opacity,range);
+            q=PopQuantumPixel(&quantum_state,image->depth,pixel,q);
+            p++;
+            q+=quantum_info->pad;
+          }
+          break;
+        }
         case 16:
         {
           register unsigned short