7
public enum ThumbnailFormat {
15
public class Thumbnail {
18
private ImageNameRecord record;
20
private ArtworkFormat format = null;
27
get { return record.ImageSize; }
28
set { record.ImageSize = value; }
31
public short VerticalPadding {
32
get { return record.VerticalPadding; }
33
set { record.VerticalPadding = value; }
36
public short HorizontalPadding {
37
get { return record.HorizontalPadding; }
38
set { record.HorizontalPadding = value; }
42
get { return record.ImageHeight; }
43
set { record.ImageHeight = value; }
47
get { return record.ImageWidth; }
48
set { record.ImageWidth = value; }
51
public ArtworkFormat Format {
56
throw new ArgumentNullException ("Format cannot be null");
59
record.CorrelationId = format.CorrelationId;
60
record.SetThumbFileName (photo.PhotoDatabase.IsPhotoDatabase);
64
internal ImageNameRecord Record {
65
get { return record; }
68
internal Thumbnail (Photo photo, ImageNameRecord record) {
72
if (record.CorrelationId > 0) {
73
Format = photo.PhotoDatabase.Device.LookupArtworkFormat (record.CorrelationId);
77
public byte[] GetData () {
79
return record.GetData (photo.PhotoDatabase.GetTempFile ());
81
string file = photo.PhotoDatabase.GetThumbPath (Format);
83
using (FileStream stream = File.Open (file, FileMode.Open, FileAccess.Read, FileShare.Read)) {
84
return record.GetData (stream);
89
public void SetData (byte[] data) {
90
if (data.Length < format.Size)
91
throw new ArgumentException (String.Format ("Expected data length of {0}, but got {1}",
92
format.Size, data.Length));
94
Stream stream = photo.PhotoDatabase.GetTempFile ();
95
stream.Seek (0, SeekOrigin.End);
97
record.ThumbnailOffset = (int) stream.Position;
98
record.ImageSize = format.Size;
100
stream.Write (data, 0, format.Size);