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