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
30class 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
56class 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
92class 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
134class 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
174class 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
212class 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