a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop.
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.

62 lines
2.0 KiB

  1. using System.IO;
  2. using NPOI.Util;
  3. namespace NPOI.HPSF
  4. {
  5. public class ClipboardData
  6. {
  7. //private static final POILogger logger = POILogFactory
  8. // .getLogger( ClipboardData.class );
  9. private readonly int _format;
  10. private readonly byte[] _value;
  11. public ClipboardData(byte[] data, int offset)
  12. {
  13. int size = LittleEndian.GetInt(data, offset);
  14. if (size < 4)
  15. {
  16. //logger.log( POILogger.WARN, "ClipboardData at offset ",
  17. // Integer.valueOf( offset ), " size less than 4 bytes "
  18. // + "(doesn't even have format field!). "
  19. // + "Setting to format == 0 and hope for the best" );
  20. _format = 0;
  21. _value = [];
  22. return;
  23. }
  24. _format = LittleEndian.GetInt(data, offset + LittleEndian.INT_SIZE);
  25. _value = LittleEndian.GetByteArray(data, offset
  26. + LittleEndian.INT_SIZE * 2, size - LittleEndian.INT_SIZE);
  27. }
  28. public int Size
  29. {
  30. get { return LittleEndian.INT_SIZE*2 + _value.Length; }
  31. }
  32. public byte[] Value
  33. {
  34. get { return _value; }
  35. }
  36. public byte[] ToByteArray()
  37. {
  38. byte[] result = new byte[Size];
  39. LittleEndian.PutInt(result, 0 * LittleEndian.INT_SIZE,
  40. LittleEndian.INT_SIZE + _value.Length);
  41. LittleEndian.PutInt(result, 1 * LittleEndian.INT_SIZE, _format);
  42. System.Array.Copy(_value, 0, result, LittleEndian.INT_SIZE
  43. + LittleEndian.INT_SIZE, _value.Length);
  44. return result;
  45. }
  46. public int Write(Stream out1)
  47. {
  48. LittleEndian.PutInt(LittleEndian.INT_SIZE + _value.Length, out1);
  49. LittleEndian.PutInt(_format, out1);
  50. out1.Write(_value, 0, _value.Length);
  51. return 2 * LittleEndian.INT_SIZE + _value.Length;
  52. }
  53. }
  54. }