1/*****************************************************************************/
2// Copyright 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_jpeg_image.h#1 $ */
10/* $DateTime: 2012/05/30 13:28:51 $ */
11/* $Change: 832332 $ */
12/* $Author: tknoll $ */
13
14/*****************************************************************************/
15
16#ifndef __dng_jpeg_image__
17#define __dng_jpeg_image__
18
19/*****************************************************************************/
20
21#include "dng_auto_ptr.h"
22#include "dng_memory.h"
23#include "dng_point.h"
24
25/*****************************************************************************/
26
27typedef AutoPtr<dng_memory_block> dng_jpeg_image_tile_ptr;
28
29/*****************************************************************************/
30
31class dng_jpeg_image
32 {
33
34 public:
35
36 dng_point fImageSize;
37
38 dng_point fTileSize;
39
40 bool fUsesStrips;
41
42 AutoPtr<dng_memory_block> fJPEGTables;
43
44 AutoArray<dng_jpeg_image_tile_ptr> fJPEGData;
45
46 public:
47
48 dng_jpeg_image ();
49
50 uint32 TilesAcross () const
51 {
52 if (fTileSize.h)
53 {
54 return (fImageSize.h + fTileSize.h - 1) / fTileSize.h;
55 }
56 else
57 {
58 return 0;
59 }
60 }
61
62 uint32 TilesDown () const
63 {
64 if (fTileSize.v)
65 {
66 return (fImageSize.v + fTileSize.v - 1) / fTileSize.v;
67 }
68 else
69 {
70 return 0;
71 }
72 }
73
74 uint32 TileCount () const
75 {
76 return TilesAcross () * TilesDown ();
77 }
78
79 void Encode (dng_host &host,
80 const dng_negative &negative,
81 dng_image_writer &writer,
82 const dng_image &image);
83
84 dng_fingerprint FindDigest (dng_host &host) const;
85
86 };
87
88/*****************************************************************************/
89
90#endif
91
92/*****************************************************************************/
93