1 /*****************************************************************************/ 2 // Copyright 2007-2011 Adobe Systems Incorporated 3 // All Rights Reserved. 4 // 5 // NOTICE: Adobe permits you to use, modify, and distribute this file in 6 // accordance with the terms of the Adobe license agreement accompanying it. 7 /*****************************************************************************/ 8 9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_preview.h#1 $ */ 10 /* $DateTime: 2012/05/30 13:28:51 $ */ 11 /* $Change: 832332 $ */ 12 /* $Author: tknoll $ */ 13 14 /*****************************************************************************/ 15 16 #ifndef __dng_preview__ 17 #define __dng_preview__ 18 19 /*****************************************************************************/ 20 21 #include "dng_auto_ptr.h" 22 #include "dng_classes.h" 23 #include "dng_ifd.h" 24 #include "dng_opcode_list.h" 25 #include "dng_point.h" 26 #include "dng_sdk_limits.h" 27 28 /*****************************************************************************/ 29 30 class dng_preview 31 { 32 33 public: 34 35 dng_preview_info fInfo; 36 37 protected: 38 39 dng_preview (); 40 41 public: 42 43 virtual ~dng_preview (); 44 45 virtual dng_basic_tag_set * AddTagSet (dng_tiff_directory &directory) const = 0; 46 47 virtual void WriteData (dng_host &host, 48 dng_image_writer &writer, 49 dng_basic_tag_set &basic, 50 dng_stream &stream) const = 0; 51 52 }; 53 54 /*****************************************************************************/ 55 56 class dng_image_preview: public dng_preview 57 { 58 59 public: 60 61 AutoPtr<dng_image> fImage; 62 63 private: 64 65 mutable dng_ifd fIFD; 66 67 public: 68 69 dng_image_preview (); 70 71 virtual ~dng_image_preview (); 72 73 virtual dng_basic_tag_set * AddTagSet (dng_tiff_directory &directory) const; 74 75 virtual void WriteData (dng_host &host, 76 dng_image_writer &writer, 77 dng_basic_tag_set &basic, 78 dng_stream &stream) const; 79 80 private: 81 82 // Hidden copy constructor and assignment operator. 83 84 dng_image_preview (const dng_image_preview &preview); 85 86 dng_image_preview & operator= (const dng_image_preview &preview); 87 88 }; 89 90 /*****************************************************************************/ 91 92 class dng_jpeg_preview: public dng_preview 93 { 94 95 public: 96 97 dng_point fPreviewSize; 98 99 uint16 fPhotometricInterpretation; 100 101 dng_point fYCbCrSubSampling; 102 103 uint16 fYCbCrPositioning; 104 105 AutoPtr<dng_memory_block> fCompressedData; 106 107 public: 108 109 dng_jpeg_preview (); 110 111 virtual ~dng_jpeg_preview (); 112 113 virtual dng_basic_tag_set * AddTagSet (dng_tiff_directory &directory) const; 114 115 virtual void WriteData (dng_host &host, 116 dng_image_writer &writer, 117 dng_basic_tag_set &basic, 118 dng_stream &stream) const; 119 120 void SpoolAdobeThumbnail (dng_stream &stream) const; 121 122 private: 123 124 // Hidden copy constructor and assignment operator. 125 126 dng_jpeg_preview (const dng_jpeg_preview &preview); 127 128 dng_jpeg_preview & operator= (const dng_jpeg_preview &preview); 129 130 }; 131 132 /*****************************************************************************/ 133 134 class dng_raw_preview: public dng_preview 135 { 136 137 public: 138 139 AutoPtr<dng_image> fImage; 140 141 AutoPtr<dng_memory_block> fOpcodeList2Data; 142 143 int32 fCompressionQuality; 144 145 private: 146 147 mutable dng_ifd fIFD; 148 149 public: 150 151 dng_raw_preview (); 152 153 virtual ~dng_raw_preview (); 154 155 virtual dng_basic_tag_set * AddTagSet (dng_tiff_directory &directory) const; 156 157 virtual void WriteData (dng_host &host, 158 dng_image_writer &writer, 159 dng_basic_tag_set &basic, 160 dng_stream &stream) const; 161 162 private: 163 164 // Hidden copy constructor and assignment operator. 165 166 dng_raw_preview (const dng_raw_preview &preview); 167 168 dng_raw_preview & operator= (const dng_raw_preview &preview); 169 170 }; 171 172 /*****************************************************************************/ 173 174 class dng_mask_preview: public dng_preview 175 { 176 177 public: 178 179 AutoPtr<dng_image> fImage; 180 181 int32 fCompressionQuality; 182 183 private: 184 185 mutable dng_ifd fIFD; 186 187 public: 188 189 dng_mask_preview (); 190 191 virtual ~dng_mask_preview (); 192 193 virtual dng_basic_tag_set * AddTagSet (dng_tiff_directory &directory) const; 194 195 virtual void WriteData (dng_host &host, 196 dng_image_writer &writer, 197 dng_basic_tag_set &basic, 198 dng_stream &stream) const; 199 200 private: 201 202 // Hidden copy constructor and assignment operator. 203 204 dng_mask_preview (const dng_mask_preview &preview); 205 206 dng_mask_preview & operator= (const dng_mask_preview &preview); 207 208 }; 209 210 /*****************************************************************************/ 211 212 class dng_preview_list 213 { 214 215 private: 216 217 uint32 fCount; 218 219 AutoPtr<dng_preview> fPreview [kMaxDNGPreviews]; 220 221 public: 222 223 dng_preview_list (); 224 225 ~dng_preview_list (); 226 227 uint32 Count () const 228 { 229 return fCount; 230 } 231 232 const dng_preview & Preview (uint32 index) const 233 { 234 return *(fPreview [index]); 235 } 236 237 void Append (AutoPtr<dng_preview> &preview); 238 239 }; 240 241 /*****************************************************************************/ 242 243 #endif 244 245 /*****************************************************************************/ 246