58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
|
/////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Photoshop PSD FileType Plugin for Paint.NET
|
||
|
// http://psdplugin.codeplex.com/
|
||
|
//
|
||
|
// This software is provided under the MIT License:
|
||
|
// Copyright (c) 2006-2007 Frank Blumenberg
|
||
|
// Copyright (c) 2010-2016 Tao Yue
|
||
|
//
|
||
|
// See LICENSE.txt for complete licensing and attribution information.
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
using System;
|
||
|
using PDNWrapper;
|
||
|
using System.IO.Compression;
|
||
|
|
||
|
namespace PhotoshopFile.Compression
|
||
|
{
|
||
|
internal abstract class ImageData
|
||
|
{
|
||
|
public int BitDepth { get; private set; }
|
||
|
|
||
|
public int BytesPerRow { get; private set; }
|
||
|
|
||
|
public Size Size { get; private set; }
|
||
|
|
||
|
protected abstract bool AltersWrittenData { get; }
|
||
|
|
||
|
protected ImageData(Size size, int bitDepth)
|
||
|
{
|
||
|
Size = size;
|
||
|
BitDepth = bitDepth;
|
||
|
BytesPerRow = Util.BytesPerRow(size, bitDepth);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Reads decompressed image data.
|
||
|
/// </summary>
|
||
|
public virtual byte[] Read()
|
||
|
{
|
||
|
var imageLongLength = (long)BytesPerRow * Size.Height;
|
||
|
Util.CheckByteArrayLength(imageLongLength);
|
||
|
|
||
|
var buffer = new byte[imageLongLength];
|
||
|
Read(buffer);
|
||
|
return buffer;
|
||
|
}
|
||
|
|
||
|
internal abstract void Read(byte[] buffer);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Reads compressed image data.
|
||
|
/// </summary>
|
||
|
public abstract byte[] ReadCompressed();
|
||
|
}
|
||
|
}
|