13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                            DDDD   N   N   GGGG                              %
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                            D   D  NN  N  GS                                 %
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                            D   D  N N N  G  GG                              %
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                            D   D  N  NN  G   G                              %
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                            DDDD   N   N   GGGG                              %
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                  Read the Digital Negative Image Format                     %
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                              Software Design                                %
16de984cdc3631106b1cbbb8d3972b76a0fc27e8e8cristy%                                   Cristy                                    %
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                 July 1999                                   %
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
207ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy%  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization      %
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  dedicated to making software imaging solutions freely available.           %
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  You may not use this file except in compliance with the License.  You may  %
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  obtain a copy of the License at                                            %
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    http://www.imagemagick.org/script/license.php                            %
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  Unless required by applicable law or agreed to in writing, software        %
293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  distributed under the License is distributed on an "AS IS" BASIS,          %
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  See the License for the specific language governing permissions and        %
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  limitations under the License.                                             %
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Include declarations.
403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
414c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/studio.h"
424c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/blob.h"
434c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/blob-private.h"
444c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/constitute.h"
454c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/delegate.h"
464c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/exception.h"
474c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/exception-private.h"
484c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/geometry.h"
494c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/image.h"
504c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/image-private.h"
514c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/layer.h"
524c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/list.h"
534c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/log.h"
544c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/magick.h"
554c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/memory_.h"
564c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/resource_.h"
574c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/quantum-private.h"
584c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/static.h"
594c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/string_.h"
604c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/module.h"
614c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/transform.h"
624c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/utility.h"
634c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/xml-tree.h"
64433d11887841b922ec5e6805f9fdd240c320b92ecristy#include "MagickCore/xml-tree-private.h"
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%   R e a d D N G I m a g e                                                   %
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  ReadDNGImage() reads an binary file in the Digital Negative format and
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  returns it.  It allocates the memory necessary for the new Image structure
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  and returns a pointer to the new image.
803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the ReadDNGImage method is:
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      Image *ReadDNGImage(const ImageInfo *image_info,
843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%        ExceptionInfo *exception)
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  A description of each parameter follows:
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o image_info: the image info.
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o exception: return any errors or warnings in this structure.
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
933ed852eea50f9d4cd633efb8c2b054b8e33c253cristystatic Image *ReadDNGImage(const ImageInfo *image_info,ExceptionInfo *exception)
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ExceptionInfo
963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *sans_exception;
973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Image
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *image;
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImageInfo
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *read_info;
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    status;
1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Open image file.
1093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  assert(image_info != (const ImageInfo *) NULL);
111e1c94d9d25db6b0dd7a5028ffee31d1057855d73cristy  assert(image_info->signature == MagickCoreSignature);
1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image_info->debug != MagickFalse)
1133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      image_info->filename);
1153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  assert(exception != (ExceptionInfo *) NULL);
116e1c94d9d25db6b0dd7a5028ffee31d1057855d73cristy  assert(exception->signature == MagickCoreSignature);
1179950d57e1124b73f684fb5946e206994cefda628cristy  image=AcquireImage(image_info,exception);
1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (status == MagickFalse)
1203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      image=DestroyImageList(image);
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      return((Image *) NULL);
1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) CloseBlob(image);
1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) DestroyImageList(image);
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Convert DNG to PPM with delegate.
1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
1299950d57e1124b73f684fb5946e206994cefda628cristy  image=AcquireImage(image_info,exception);
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  read_info=CloneImageInfo(image_info);
13198f91ec7f3fedcd2975966146eb8e396d4c59addcristy  SetImageInfoBlob(read_info,(void *) NULL,0);
1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) InvokeDelegate(read_info,image,"dng:decode",(char *) NULL,exception);
1333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image=DestroyImage(image);
134151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy  (void) FormatLocaleString(read_info->filename,MagickPathExtent,"%s.png",
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    read_info->unique);
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  sans_exception=AcquireExceptionInfo();
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image=ReadImage(read_info,sans_exception);
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  sans_exception=DestroyExceptionInfo(sans_exception);
1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image == (Image *) NULL)
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
141151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy      (void) FormatLocaleString(read_info->filename,MagickPathExtent,"%s.ppm",
1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        read_info->unique);
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      image=ReadImage(read_info,exception);
1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RelinquishUniqueFileResource(read_info->filename);
1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image != (Image *) NULL)
1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      char
149151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy        filename[MagickPathExtent],
1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        *xml;
1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      ExceptionInfo
1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        *sans;
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
155151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy      (void) CopyMagickString(image->magick,read_info->magick,MagickPathExtent);
156151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy      (void) FormatLocaleString(filename,MagickPathExtent,"%s.ufraw",
1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        read_info->unique);
1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      sans=AcquireExceptionInfo();
159151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy      xml=FileToString(filename,MagickPathExtent,sans);
1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (void) RelinquishUniqueFileResource(filename);
1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      if (xml != (char *) NULL)
1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        {
1633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          XMLTreeInfo
164ddbc41b8cf3749a1d8fbad1dd5dede5cb62aabefcristy            *ufraw;
1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          /*
1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            Inject
1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          */
1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          ufraw=NewXMLTree(xml,sans);
1703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          if (ufraw != (XMLTreeInfo *) NULL)
1713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            {
1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              char
1733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                *content,
174151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy                property[MagickPathExtent];
1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              const char
1773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                *tag;
1783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              XMLTreeInfo
1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                *next;
1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              if (image->properties == (void *) NULL)
1833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                ((Image *) image)->properties=NewSplayTree(
1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  CompareSplayTreeString,RelinquishMagickMemory,
1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  RelinquishMagickMemory);
1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              next=GetXMLTreeChild(ufraw,(const char *) NULL);
1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              while (next != (XMLTreeInfo *) NULL)
1883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              {
1893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                tag=GetXMLTreeTag(next);
1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                if (tag == (char *) NULL)
1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  tag="unknown";
192151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy                (void) FormatLocaleString(property,MagickPathExtent,"dng:%s",tag);
1933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                content=ConstantString(GetXMLTreeContent(next));
1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                StripString(content);
1953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                if ((LocaleCompare(tag,"log") != 0) &&
1963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    (LocaleCompare(tag,"InputFilename") != 0) &&
1973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    (LocaleCompare(tag,"OutputFilename") != 0) &&
1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    (LocaleCompare(tag,"OutputType") != 0) &&
1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    (strlen(content) != 0))
2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  (void) AddValueToSplayTree((SplayTreeInfo *)
2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    ((Image *) image)->properties,ConstantString(property),
2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    content);
2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                next=GetXMLTreeSibling(next);
2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              }
2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ufraw=DestroyXMLTree(ufraw);
2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            }
2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          xml=DestroyString(xml);
2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        }
2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      sans=DestroyExceptionInfo(sans);
2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  read_info=DestroyImageInfo(read_info);
2123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(image);
2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
2163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%   R e g i s t e r D N G I m a g e                                           %
2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
2243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  RegisterDNGImage() adds attributes for the DNG image format to
2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  the list of supported formats.  The attributes include the image format
2283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  tag, a method to read and/or write the format, whether the format
2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  supports the saving of more than one frame to the same file or blob,
2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  whether the format supports native in-memory I/O, and a brief
2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  description of the format.
2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the RegisterDNGImage method is:
2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
235bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy%      size_t RegisterDNGImage(void)
2363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
2373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
238bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristyModuleExport size_t RegisterDNGImage(void)
2393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickInfo
2413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *entry;
2423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24306b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","3FR","Hasselblad CFV/H3D39II");
24494c8fe4acb048572fde54fe7667b3919d8a3c768cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
24508e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
24608e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
24794c8fe4acb048572fde54fe7667b3919d8a3c768cristy  entry->format_type=ExplicitFormatType;
24894c8fe4acb048572fde54fe7667b3919d8a3c768cristy  (void) RegisterMagickInfo(entry);
24906b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","ARW","Sony Alpha Raw Image Format");
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
25108e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
25208e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
25506b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","DNG","Digital Negative");
2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
25708e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
25808e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
26106b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","CR2","Canon Digital Camera Raw Image Format");
2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
26308e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
26408e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
26706b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","CRW","Canon Digital Camera Raw Image Format");
2683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
26908e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
27008e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
27306b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","DCR","Kodak Digital Camera Raw Image File");
2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
27508e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
27608e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
27906b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","ERF","Epson RAW Format");
2803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
28108e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
28208e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
28506b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","IIQ","Phase One Raw Image Format");
286a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
28708e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
28808e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
289a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  entry->format_type=ExplicitFormatType;
290a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  entry->module=ConstantString("DNG");
291a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  (void) RegisterMagickInfo(entry);
29206b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","KDC","Kodak Digital Camera Raw Image Format");
2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
29408e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
29508e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
29806b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","K25","Kodak Digital Camera Raw Image Format");
2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
30008e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
30108e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
30406b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","MEF","Mamiya Raw Image File");
3051be98eca61cadfb2e7892e0b0de1aaf980aa200fcristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
30608e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
30708e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3081be98eca61cadfb2e7892e0b0de1aaf980aa200fcristy  entry->format_type=ExplicitFormatType;
3091be98eca61cadfb2e7892e0b0de1aaf980aa200fcristy  (void) RegisterMagickInfo(entry);
31006b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","MRW","Sony (Minolta) Raw Image File");
3113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
31208e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
31308e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
31606b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","NEF","Nikon Digital SLR Camera Raw Image File");
3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
31808e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
31908e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
32206b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","NRW","Nikon Digital SLR Camera Raw Image File");
323cb8f0ae9979b680b5a9852082743f64c9036e00fcristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
32408e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
32508e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
326cb8f0ae9979b680b5a9852082743f64c9036e00fcristy  entry->format_type=ExplicitFormatType;
327cb8f0ae9979b680b5a9852082743f64c9036e00fcristy  (void) RegisterMagickInfo(entry);
32806b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","ORF","Olympus Digital Camera Raw Image File");
3293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
33008e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
33108e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
33406b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","PEF","Pentax Electronic File");
3353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
33608e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
33708e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
34006b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","RAF","Fuji CCD-RAW Graphic File");
3413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
34208e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
34308e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
34606b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","RAW","Raw");
3471b1f0727a3fc063c63e031082cac454e0a31554acristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
34808e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
34908e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3501b1f0727a3fc063c63e031082cac454e0a31554acristy  entry->format_type=ExplicitFormatType;
3511b1f0727a3fc063c63e031082cac454e0a31554acristy  (void) RegisterMagickInfo(entry);
35206b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","RMF","Raw Media Format");
35315e229685317a6be8b51ed1032c88cbec13ad0f1cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
35408e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
35508e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
35615e229685317a6be8b51ed1032c88cbec13ad0f1cristy  entry->format_type=ExplicitFormatType;
35715e229685317a6be8b51ed1032c88cbec13ad0f1cristy  (void) RegisterMagickInfo(entry);
35806b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","RW2","Panasonic Lumix Raw Image");
35998aceb8d6362c00233fa9b1ec56db20883ec20c1cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
36008e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
36108e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
36298aceb8d6362c00233fa9b1ec56db20883ec20c1cristy  entry->format_type=ExplicitFormatType;
36398aceb8d6362c00233fa9b1ec56db20883ec20c1cristy  (void) RegisterMagickInfo(entry);
36406b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","SRF","Sony Raw Format");
3653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
36608e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
36708e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
37006b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","SR2","Sony Raw Format 2");
3713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
37208e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
37308e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
37606b627a07ff44e1ff93ef1288c9f428066ded10ddirk  entry=AcquireMagickInfo("DNG","X3F","Sigma Camera RAW Picture File");
3773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->decoder=(DecodeImageHandler *) ReadDNGImage;
37808e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags^=CoderBlobSupportFlag;
37908e9a113db499034abb5ad8d59b42f8eca3c641cdirk  entry->flags|=CoderSeekableStreamFlag;
3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  entry->format_type=ExplicitFormatType;
3813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) RegisterMagickInfo(entry);
3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(MagickImageCoderSignature);
3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
3863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%   U n r e g i s t e r D N G I m a g e                                       %
3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
3943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
3963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  UnregisterDNGImage() removes format registrations made by the
3973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  BIM module from the list of supported formats.
3983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
3993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the UnregisterBIMImage method is:
4003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
4013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      UnregisterDNGImage(void)
4023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
4033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
4043ed852eea50f9d4cd633efb8c2b054b8e33c253cristyModuleExport void UnregisterDNGImage(void)
4053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("X3F");
4073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("SR2");
4083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("SRF");
40998aceb8d6362c00233fa9b1ec56db20883ec20c1cristy  (void) UnregisterMagickInfo("RW2");
41015e229685317a6be8b51ed1032c88cbec13ad0f1cristy  (void) UnregisterMagickInfo("RMF");
4113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("RAF");
4123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("PEF");
4133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("ORF");
414cb8f0ae9979b680b5a9852082743f64c9036e00fcristy  (void) UnregisterMagickInfo("NRW");
4153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("NEF");
4163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("MRW");
417800c7c4f7505fdb79ba87c8d89153737fb101f91cristy  (void) UnregisterMagickInfo("MEF");
4183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("K25");
4193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("KDC");
420a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  (void) UnregisterMagickInfo("IIQ");
421a5338bbdf5364aa7271c96e4f006e384f048efbbcristy  (void) UnregisterMagickInfo("ERF");
4223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("DCR");
4233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("CRW");
4243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("CR2");
4253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("DNG");
4263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) UnregisterMagickInfo("ARW");
42794c8fe4acb048572fde54fe7667b3919d8a3c768cristy  (void) UnregisterMagickInfo("3FR");
4283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
429