]> granicus.if.org Git - imagemagick/blobdiff - coders/dpx.c
(no commit message)
[imagemagick] / coders / dpx.c
index 2b72a197b8eee0f98b73a045a857c260f7d82e61..3b3b2ef2a3bc2e2047cfea2f17cab9be5d975bd5 100644 (file)
@@ -57,6 +57,7 @@
 #include "MagickCore/monitor.h"
 #include "MagickCore/monitor-private.h"
 #include "MagickCore/option.h"
+#include "MagickCore/pixel-accessor.h"
 #include "MagickCore/profile.h"
 #include "MagickCore/property.h"
 #include "MagickCore/quantum-private.h"
@@ -728,6 +729,7 @@ static Image *ReadDPXImage(const ImageInfo *image_info,ExceptionInfo *exception)
     offset+=ReadBlob(image,sizeof(dpx.image.image_element[i].description),
       (unsigned char *) dpx.image.image_element[i].description);
   }
+  SetImageColorspace(image,RGBColorspace,exception);
   SetPrimaryChromaticity((DPXColorimetric)
     dpx.image.image_element[0].colorimetric,&image->chromaticity);
   offset+=ReadBlob(image,sizeof(dpx.image.reserve),(unsigned char *)
@@ -1045,21 +1047,21 @@ static Image *ReadDPXImage(const ImageInfo *image_info,ExceptionInfo *exception)
     case CbYACrYA4224ComponentType:
     case CbYCr444ComponentType:
     {
-      image->colorspace=Rec709YCbCrColorspace;
+      SetImageColorspace(image,Rec709YCbCrColorspace,exception);
       break;
     }
     case LumaComponentType:
     {
-      image->colorspace=RGBColorspace;
+      SetImageColorspace(image,sRGBColorspace,exception);
       break;
     }
     default:
     {
-      image->colorspace=RGBColorspace;
+      SetImageColorspace(image,sRGBColorspace,exception);
       if (dpx.image.image_element[0].transfer == LogarithmicColorimetric)
-        image->colorspace=LogColorspace;
+        SetImageColorspace(image,LogColorspace,exception);
       if (dpx.image.image_element[0].transfer == PrintingDensityColorimetric)
-        image->colorspace=LogColorspace;
+        SetImageColorspace(image,LogColorspace,exception);
       break;
     }
   }
@@ -1290,6 +1292,9 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
   DPXInfo
     dpx;
 
+  GeometryInfo
+    geometry_info;
+
   MagickBooleanType
     status;
 
@@ -1299,9 +1304,6 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
   MagickStatusType
     flags;
 
-  GeometryInfo
-    geometry_info;
-
   QuantumInfo
     *quantum_info;
 
@@ -1541,12 +1543,12 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
   dpx.orientation.x_center=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:orientation.x_center",exception);
   if (value != (const char *) NULL)
-    dpx.orientation.x_center=InterpretLocaleValue(value,(char **) NULL);
+    dpx.orientation.x_center=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.orientation.x_center);
   dpx.orientation.y_center=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:orientation.y_center",exception);
   if (value != (const char *) NULL)
-    dpx.orientation.y_center=InterpretLocaleValue(value,(char **) NULL);
+    dpx.orientation.y_center=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.orientation.y_center);
   dpx.orientation.x_size=0U;
   value=GetDPXProperty(image_info,image,"dpx:orientation.x_size",exception);
@@ -1663,12 +1665,12 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
   dpx.film.frame_rate=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:film.frame_rate",exception);
   if (value != (const char *) NULL)
-    dpx.film.frame_rate=InterpretLocaleValue(value,(char **) NULL);
+    dpx.film.frame_rate=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.film.frame_rate);
   dpx.film.shutter_angle=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:film.shutter_angle",exception);
   if (value != (const char *) NULL)
-    dpx.film.shutter_angle=InterpretLocaleValue(value,(char **) NULL);
+    dpx.film.shutter_angle=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.film.shutter_angle);
   *dpx.film.frame_id='\0';
   value=GetDPXProperty(image_info,image,"dpx:film.frame_id",exception);
@@ -1704,7 +1706,8 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
     dpx.television.field_number=(unsigned char) StringToLong(value);
   offset+=WriteBlobByte(image,dpx.television.field_number);
   dpx.television.video_signal=0;
-  value=GetDPXProperty(image_info,image,"dpx:television.video_signal",exception);
+  value=GetDPXProperty(image_info,image,"dpx:television.video_signal",
+    exception);
   if (value != (const char *) NULL)
     dpx.television.video_signal=(unsigned char) StringToLong(value);
   offset+=WriteBlobByte(image,dpx.television.video_signal);
@@ -1714,59 +1717,56 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
     dpx.television.padding=(unsigned char) StringToLong(value);
   offset+=WriteBlobByte(image,dpx.television.padding);
   dpx.television.horizontal_sample_rate=0.0f;
-  value=GetDPXProperty(image_info,image,
-    "dpx:television.horizontal_sample_rate",exception);
+  value=GetDPXProperty(image_info,image,"dpx:television.horizontal_sample_rate",    exception);
   if (value != (const char *) NULL)
-    dpx.television.horizontal_sample_rate=InterpretLocaleValue(value,
-      (char **) NULL);
+    dpx.television.horizontal_sample_rate=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.horizontal_sample_rate);
   dpx.television.vertical_sample_rate=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.vertical_sample_rate",
     exception);
   if (value != (const char *) NULL)
-    dpx.television.vertical_sample_rate=InterpretLocaleValue(value,
-      (char **) NULL);
+    dpx.television.vertical_sample_rate=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.vertical_sample_rate);
   dpx.television.frame_rate=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.frame_rate",exception);
   if (value != (const char *) NULL)
-    dpx.television.frame_rate=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.frame_rate=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.frame_rate);
   dpx.television.time_offset=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.time_offset",exception);
   if (value != (const char *) NULL)
-    dpx.television.time_offset=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.time_offset=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.time_offset);
   dpx.television.gamma=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.gamma",exception);
   if (value != (const char *) NULL)
-    dpx.television.gamma=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.gamma=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.gamma);
   dpx.television.black_level=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.black_level",exception);
   if (value != (const char *) NULL)
-    dpx.television.black_level=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.black_level=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.black_level);
   dpx.television.black_gain=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.black_gain",exception);
   if (value != (const char *) NULL)
-    dpx.television.black_gain=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.black_gain=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.black_gain);
   dpx.television.break_point=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.break_point",exception);
   if (value != (const char *) NULL)
-    dpx.television.break_point=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.break_point=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.break_point);
   dpx.television.white_level=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.white_level",exception);
   if (value != (const char *) NULL)
-    dpx.television.white_level=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.white_level=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.white_level);
   dpx.television.integration_times=0.0f;
   value=GetDPXProperty(image_info,image,"dpx:television.integration_times",
     exception);
   if (value != (const char *) NULL)
-    dpx.television.integration_times=InterpretLocaleValue(value,(char **) NULL);
+    dpx.television.integration_times=StringToDouble(value,(char **) NULL);
   offset+=WriteBlobFloat(image,dpx.television.integration_times);
   offset+=WriteBlob(image,sizeof(dpx.television.reserve),(unsigned char *)
     dpx.television.reserve);
@@ -1811,8 +1811,7 @@ static MagickBooleanType WriteDPXImage(const ImageInfo *image_info,Image *image,
     }
   extent=GetBytesPerRow(image->columns,image->matte != MagickFalse ? 4UL : 3UL,
     image->depth,MagickTrue);
-  if ((image_info->type != UndefinedType) &&
-      (image_info->type != TrueColorType) && (image->matte == MagickFalse) &&
+  if ((image_info->type != TrueColorType) && (image->matte == MagickFalse) &&
       (IsImageGray(image,exception) != MagickFalse))
     {
       quantum_type=GrayQuantum;