dng.c revision 4c08aed51c5899665ade97263692328eea4af106
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 % 163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% John Cristy % 173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% July 1999 % 183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 207e41fe84a841d7b9d7b36b245b65e9dcb3314943cristy% Copyright 1999-2011 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" 643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% R e a d D N G I m a g e % 713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% ReadDNGImage() reads an binary file in the Digital Negative format and 773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% returns it. It allocates the memory necessary for the new Image structure 783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% and returns a pointer to the new image. 793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The format of the ReadDNGImage method is: 813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% Image *ReadDNGImage(const ImageInfo *image_info, 833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% ExceptionInfo *exception) 843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% A description of each parameter follows: 863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o image_info: the image info. 883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% o exception: return any errors or warnings in this structure. 903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 923ed852eea50f9d4cd633efb8c2b054b8e33c253cristystatic Image *ReadDNGImage(const ImageInfo *image_info,ExceptionInfo *exception) 933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ 943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ExceptionInfo 953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *sans_exception; 963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Image 983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *image; 993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ImageInfo 1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *read_info; 1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy MagickBooleanType 1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status; 1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Open image file. 1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 1093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(image_info != (const ImageInfo *) NULL); 1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(image_info->signature == MagickSignature); 1113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image_info->debug != MagickFalse) 1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", 1133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image_info->filename); 1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(exception != (ExceptionInfo *) NULL); 1153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy assert(exception->signature == MagickSignature); 1163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=AcquireImage(image_info); 1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception); 1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (status == MagickFalse) 1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=DestroyImageList(image); 1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return((Image *) NULL); 1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) CloseBlob(image); 1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) DestroyImageList(image); 1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Convert DNG to PPM with delegate. 1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=AcquireImage(image_info); 1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy read_info=CloneImageInfo(image_info); 13098f91ec7f3fedcd2975966146eb8e396d4c59addcristy SetImageInfoBlob(read_info,(void *) NULL,0); 1313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) InvokeDelegate(read_info,image,"dng:decode",(char *) NULL,exception); 1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=DestroyImage(image); 133b51dff5c0d16a4c1b69ff683e786cb3b4c467694cristy (void) FormatLocaleString(read_info->filename,MaxTextExtent,"%s.png", 1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy read_info->unique); 1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy sans_exception=AcquireExceptionInfo(); 1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=ReadImage(read_info,sans_exception); 1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy sans_exception=DestroyExceptionInfo(sans_exception); 1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image == (Image *) NULL) 1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 140b51dff5c0d16a4c1b69ff683e786cb3b4c467694cristy (void) FormatLocaleString(read_info->filename,MaxTextExtent,"%s.ppm", 1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy read_info->unique); 1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy image=ReadImage(read_info,exception); 1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RelinquishUniqueFileResource(read_info->filename); 1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image != (Image *) NULL) 1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy char 1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy filename[MaxTextExtent], 1493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *xml; 1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ExceptionInfo 1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *sans; 1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) CopyMagickString(image->magick,read_info->magick,MaxTextExtent); 155b51dff5c0d16a4c1b69ff683e786cb3b4c467694cristy (void) FormatLocaleString(filename,MaxTextExtent,"%s.ufraw", 1563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy read_info->unique); 1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy sans=AcquireExceptionInfo(); 1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy xml=FileToString(filename,MaxTextExtent,sans); 1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RelinquishUniqueFileResource(filename); 1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (xml != (char *) NULL) 1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy XMLTreeInfo 163ddbc41b8cf3749a1d8fbad1dd5dede5cb62aabefcristy *ufraw; 1643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy /* 1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy Inject 1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy */ 1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ufraw=NewXMLTree(xml,sans); 1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (ufraw != (XMLTreeInfo *) NULL) 1703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy char 1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *content, 1733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy property[MaxTextExtent]; 1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy const char 1763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *tag; 1773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy XMLTreeInfo 1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *next; 1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (image->properties == (void *) NULL) 1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ((Image *) image)->properties=NewSplayTree( 1833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy CompareSplayTreeString,RelinquishMagickMemory, 1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy RelinquishMagickMemory); 1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy next=GetXMLTreeChild(ufraw,(const char *) NULL); 1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy while (next != (XMLTreeInfo *) NULL) 1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy { 1883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy tag=GetXMLTreeTag(next); 1893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if (tag == (char *) NULL) 1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy tag="unknown"; 191b51dff5c0d16a4c1b69ff683e786cb3b4c467694cristy (void) FormatLocaleString(property,MaxTextExtent,"dng:%s",tag); 1923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy content=ConstantString(GetXMLTreeContent(next)); 1933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy StripString(content); 1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy if ((LocaleCompare(tag,"log") != 0) && 1953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (LocaleCompare(tag,"InputFilename") != 0) && 1963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (LocaleCompare(tag,"OutputFilename") != 0) && 1973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (LocaleCompare(tag,"OutputType") != 0) && 1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (strlen(content) != 0)) 1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) AddValueToSplayTree((SplayTreeInfo *) 2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ((Image *) image)->properties,ConstantString(property), 2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy content); 2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy next=GetXMLTreeSibling(next); 2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ufraw=DestroyXMLTree(ufraw); 2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy xml=DestroyString(xml); 2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy sans=DestroyExceptionInfo(sans); 2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy } 2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy read_info=DestroyImageInfo(read_info); 2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(image); 2123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% R e g i s t e r D N G I m a g e % 2203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% RegisterDNGImage() adds attributes for the DNG image format to 2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% the list of supported formats. The attributes include the image format 2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% tag, a method to read and/or write the format, whether the format 2283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% supports the saving of more than one frame to the same file or blob, 2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% whether the format supports native in-memory I/O, and a brief 2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% description of the format. 2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The format of the RegisterDNGImage method is: 2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 234bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy% size_t RegisterDNGImage(void) 2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 2363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 237bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristyModuleExport size_t RegisterDNGImage(void) 2383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ 2393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy MagickInfo 2403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy *entry; 2413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 24294c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry=SetMagickInfo("3FR"); 24394c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 24494c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->blob_support=MagickFalse; 24594c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->seekable_stream=MagickTrue; 24694c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->format_type=ExplicitFormatType; 24794c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->description=ConstantString("Hasselblad CFV/H3D39II"); 24894c8fe4acb048572fde54fe7667b3919d8a3c768cristy entry->module=ConstantString("DNG"); 24994c8fe4acb048572fde54fe7667b3919d8a3c768cristy (void) RegisterMagickInfo(entry); 2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("ARW"); 2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Sony Alpha Raw Image Format"); 2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("DNG"); 2593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Digital Negative"); 2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("CR2"); 2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Canon Digital Camera Raw Image Format"); 2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("CRW"); 2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Canon Digital Camera Raw Image Format"); 2803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("DCR"); 2833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Kodak Digital Camera Raw Image File"); 2883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("ERF"); 2913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 2923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 2953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Epson RAW Format"); 2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("KDC"); 2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Kodak Digital Camera Raw Image Format"); 3043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("K25"); 3073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Kodak Digital Camera Raw Image Format"); 3123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("MRW"); 3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Sony (Minolta) Raw Image File"); 3203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("NEF"); 3233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Nikon Digital SLR Camera Raw Image File"); 3283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("ORF"); 3313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Olympus Digital Camera Raw Image File"); 3363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("PEF"); 3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Pentax Electronic File"); 3443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("RAF"); 3473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Fuji CCD-RAW Graphic File"); 3523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("SRF"); 3553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Sony Raw Format"); 3603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("SR2"); 3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Sony Raw Format 2"); 3683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry=SetMagickInfo("X3F"); 3713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->decoder=(DecodeImageHandler *) ReadDNGImage; 3723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->blob_support=MagickFalse; 3733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->seekable_stream=MagickTrue; 3743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->format_type=ExplicitFormatType; 3753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->description=ConstantString("Sigma Camera RAW Picture File"); 3763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy entry->module=ConstantString("DNG"); 3773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) RegisterMagickInfo(entry); 3783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy return(MagickImageCoderSignature); 3793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy 3813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* 3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% U n r e g i s t e r D N G I m a g e % 3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% % 3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 3923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% UnregisterDNGImage() removes format registrations made by the 3933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% BIM module from the list of supported formats. 3943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 3953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% The format of the UnregisterBIMImage method is: 3963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 3973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% UnregisterDNGImage(void) 3983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy% 3993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/ 4003ed852eea50f9d4cd633efb8c2b054b8e33c253cristyModuleExport void UnregisterDNGImage(void) 4013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ 4023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("X3F"); 4033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("SR2"); 4043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("SRF"); 4053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("RAF"); 4063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("PEF"); 4073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("ORF"); 4083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("NEF"); 4093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("MRW"); 4103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("K25"); 4113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("KDC"); 4123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("DCR"); 4133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("CRW"); 4143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("CR2"); 4153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("DNG"); 4163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy (void) UnregisterMagickInfo("ARW"); 41794c8fe4acb048572fde54fe7667b3919d8a3c768cristy (void) UnregisterMagickInfo("3FR"); 4183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} 419