Home | History | Annotate | Download | only in source
      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