16e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 26e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// Copyright 2006-2012 Adobe Systems Incorporated 36e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// All Rights Reserved. 46e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// 56e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// NOTICE: Adobe permits you to use, modify, and distribute this file in 66e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// accordance with the terms of the Adobe license agreement accompanying it. 76e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 86e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 96e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_host.cpp#2 $ */ 106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $DateTime: 2012/06/14 20:24:41 $ */ 116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Change: 835078 $ */ 126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Author: tknoll $ */ 136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_host.h" 176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_abort_sniffer.h" 196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_area_task.h" 206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_bad_pixels.h" 216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_exceptions.h" 226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_exif.h" 236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_gain_map.h" 246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_ifd.h" 256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_lens_correction.h" 266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_memory.h" 276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_misc_opcodes.h" 286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_negative.h" 296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_resample.h" 306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_shared.h" 316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_simple_image.h" 32327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim 33327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#if qDNGUseXMP 346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_xmp.h" 35327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#endif 366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_host::dng_host (dng_memory_allocator *allocator, 406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_abort_sniffer *sniffer) 416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim : fAllocator (allocator) 436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fSniffer (sniffer) 446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fNeedsMeta (true) 466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fNeedsImage (true) 476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fForPreview (false) 486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fMinimumSize (0) 496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fPreferredSize (0) 506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fMaximumSize (0) 516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fCropFactor (1.0) 526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fSaveDNGVersion (dngVersion_None) 536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fSaveLinearDNG (false) 546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim , fKeepOriginalFile (false) 556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_host::~dng_host () 636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_allocator & dng_host::Allocator () 706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (fAllocator) 736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return *fAllocator; 766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else 806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return gDefaultDNGMemoryAllocator; 836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_memory_block * dng_host::Allocate (uint32 logicalSize) 916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return Allocator ().Allocate (logicalSize); 946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_host::SniffForAbort () 1006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_abort_sniffer::SniffForAbort (Sniffer ()); 1036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 1076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_host::ValidateSizes () 1096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // The maximum size limits the other two sizes. 1126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (MaximumSize ()) 1146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (Min_uint32 (MinimumSize (), MaximumSize ())); 1166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetPreferredSize (Min_uint32 (PreferredSize (), MaximumSize ())); 1176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // If we have a preferred size, it limits the minimum size. 1206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (PreferredSize ()) 1226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (Min_uint32 (MinimumSize (), PreferredSize ())); 1246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Else find default value for preferred size. 1276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else 1296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // If preferred size is zero, then we want the maximim 1326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // size image. 1336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (MaximumSize ()) 1356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetPreferredSize (MaximumSize ()); 1376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // If we don't have a minimum size, find default. 1426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!MinimumSize ()) 1446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // A common size for embedded thumbnails is 120 by 160 pixels, 1476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // So allow 120 by 160 pixels to be used for thumbnails when the 1486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // preferred size is 256 pixel. 1496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (PreferredSize () >= 160 && PreferredSize () <= 256) 1516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (160); 1536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Many sensors are near a multiple of 1024 pixels in size, but after 1566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // the default crop, they are a just under. We can get an extra factor 1576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // of size reduction if we allow a slight undershoot in the final size 1586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // when computing large previews. 1596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else if (PreferredSize () >= 490 && PreferredSize () <= 512) 1616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (490); 1636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else if (PreferredSize () >= 980 && PreferredSize () <= 1024) 1666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (980); 1686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else if (PreferredSize () >= 1470 && PreferredSize () <= 1536) 1716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (1470); 1736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else if (PreferredSize () >= 1960 && PreferredSize () <= 2048) 1766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (1960); 1786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim // Else minimum size is same as preferred size. 1816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim else 1836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim SetMinimumSize (PreferredSize ()); 1856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 1926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimuint32 dng_host::SaveDNGVersion () const 1946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 1956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return fSaveDNGVersion; 1976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 1986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 1996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimbool dng_host::SaveLinearDNG (const dng_negative & /* negative */) const 2036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return fSaveLinearDNG; 2066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimbool dng_host::IsTransientError (dng_error_code code) 2126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim switch (code) 2156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dng_error_memory: 2186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dng_error_user_canceled: 2196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return true; 2216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim default: 2246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 2256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return false; 2296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_host::PerformAreaTask (dng_area_task &task, 2356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim const dng_rect &area) 2366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_area_task::Perform (task, 2396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim area, 2406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim &Allocator (), 2416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Sniffer ()); 2426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimuint32 dng_host::PerformAreaTaskThreads () 2486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return 1; 2516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_exif * dng_host::Make_dng_exif () 2576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_exif *result = new dng_exif (); 2606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 2626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 2656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 2696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 274327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#if qDNGUseXMP 275327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim 2766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_xmp * dng_host::Make_dng_xmp () 2776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 278c89552e7ed1e0ea69c69addf2bb5de011188d297Florian Kriener 2796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_xmp *result = new dng_xmp (Allocator ()); 2806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 2826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 2856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 2896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 2916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 292327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#endif 293327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim 2946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 2956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_shared * dng_host::Make_dng_shared () 2976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 2986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 2996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_shared *result = new dng_shared (); 3006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 3026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 3056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 3096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 3136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_ifd * dng_host::Make_dng_ifd () 3156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_ifd *result = new dng_ifd (); 3186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 3206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 3236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 3276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 3316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_negative * dng_host::Make_dng_negative () 3336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return dng_negative::Make (*this); 3366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 3406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_image * dng_host::Make_dng_image (const dng_rect &bounds, 3426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim uint32 planes, 3436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim uint32 pixelType) 3446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_image *result = new dng_simple_image (bounds, 3476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim planes, 3486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim pixelType, 3496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim Allocator ()); 3506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 3526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 3556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 3596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 3636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimdng_opcode * dng_host::Make_dng_opcode (uint32 opcodeID, 3656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_stream &stream) 3666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_opcode *result = NULL; 3696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim switch (opcodeID) 3716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_WarpRectilinear: 3746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_WarpRectilinear (stream); 3776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 3796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_WarpFisheye: 3836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_WarpFisheye (stream); 3866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 3886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_FixVignetteRadial: 3926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 3936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_FixVignetteRadial (stream); 3956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 3976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 3986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 3996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_FixBadPixelsConstant: 4016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_FixBadPixelsConstant (stream); 4046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_FixBadPixelsList: 4106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_FixBadPixelsList (stream); 4136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_TrimBounds: 4196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_TrimBounds (stream); 4226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_MapTable: 4286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_MapTable (*this, 4316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_MapPolynomial: 4386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_MapPolynomial (stream); 4416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_GainMap: 4476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_GainMap (*this, 4506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_DeltaPerRow: 4576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_DeltaPerRow (*this, 4606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_DeltaPerColumn: 4676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_DeltaPerColumn (*this, 4706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_ScalePerRow: 4776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_ScalePerRow (*this, 4806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim case dngOpcode_ScalePerColumn: 4876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_ScalePerColumn (*this, 4906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 4916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim break; 4936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 4956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim default: 4976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 4986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 4996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim result = new dng_opcode_Unknown (*this, 5006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim opcodeID, 5016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim stream); 5026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim if (!result) 5086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 5096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ThrowMemoryFull (); 5116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim return result; 5156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 5196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_host::ApplyOpcodeList (dng_opcode_list &list, 5216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_negative &negative, 5226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim AutoPtr<dng_image> &image) 5236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 5246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim list.Apply (*this, 5266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim negative, 5276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim image); 5286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 5326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimvoid dng_host::ResampleImage (const dng_image &srcImage, 5346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_image &dstImage) 5356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim { 5366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim ::ResampleImage (*this, 5386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim srcImage, 5396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dstImage, 5406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim srcImage.Bounds (), 5416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dstImage.Bounds (), 5426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim dng_resample_bicubic::Get ()); 5436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim } 5456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim 5466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/ 547