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