You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
using System.IO;
|
|
using NPOI.Util;
|
|
|
|
namespace NPOI.HPSF
|
|
{
|
|
public class ClipboardData
|
|
{
|
|
//private static final POILogger logger = POILogFactory
|
|
// .getLogger( ClipboardData.class );
|
|
|
|
private readonly int _format;
|
|
private readonly byte[] _value;
|
|
|
|
public ClipboardData(byte[] data, int offset)
|
|
{
|
|
int size = LittleEndian.GetInt(data, offset);
|
|
|
|
if (size < 4)
|
|
{
|
|
//logger.log( POILogger.WARN, "ClipboardData at offset ",
|
|
// Integer.valueOf( offset ), " size less than 4 bytes "
|
|
// + "(doesn't even have format field!). "
|
|
// + "Setting to format == 0 and hope for the best" );
|
|
_format = 0;
|
|
_value = [];
|
|
return;
|
|
}
|
|
|
|
_format = LittleEndian.GetInt(data, offset + LittleEndian.INT_SIZE);
|
|
_value = LittleEndian.GetByteArray(data, offset
|
|
+ LittleEndian.INT_SIZE * 2, size - LittleEndian.INT_SIZE);
|
|
}
|
|
|
|
public int Size
|
|
{
|
|
get { return LittleEndian.INT_SIZE*2 + _value.Length; }
|
|
}
|
|
|
|
public byte[] Value
|
|
{
|
|
get { return _value; }
|
|
}
|
|
|
|
public byte[] ToByteArray()
|
|
{
|
|
byte[] result = new byte[Size];
|
|
LittleEndian.PutInt(result, 0 * LittleEndian.INT_SIZE,
|
|
LittleEndian.INT_SIZE + _value.Length);
|
|
LittleEndian.PutInt(result, 1 * LittleEndian.INT_SIZE, _format);
|
|
System.Array.Copy(_value, 0, result, LittleEndian.INT_SIZE
|
|
+ LittleEndian.INT_SIZE, _value.Length);
|
|
return result;
|
|
}
|
|
|
|
public int Write(Stream out1)
|
|
{
|
|
LittleEndian.PutInt(LittleEndian.INT_SIZE + _value.Length, out1);
|
|
LittleEndian.PutInt(_format, out1);
|
|
out1.Write(_value, 0, _value.Length);
|
|
return 2 * LittleEndian.INT_SIZE + _value.Length;
|
|
}
|
|
}
|
|
}
|