DataEntryUrnBox.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. namespace MatrixIO.IO.Bmff.Boxes
  7. {
  8. /// <summary>
  9. /// Data Entry Urn Box ("urn ")
  10. /// </summary>
  11. [Box("urn ", "Data Entry Urn Box")]
  12. public class DataEntryUrnBox : FullBox
  13. {
  14. public DataEntryUrnBox() : base() { }
  15. public DataEntryUrnBox(Stream stream) : base(stream) { }
  16. internal override ulong CalculateSize()
  17. {
  18. return base.CalculateSize() +
  19. (String.IsNullOrEmpty(Name) ? 0 : (ulong)Encoding.UTF8.GetByteCount(Name)) + 1 +
  20. (String.IsNullOrEmpty(Location) ? 0 : (ulong)Encoding.UTF8.GetByteCount(Location));
  21. }
  22. protected override void LoadFromStream(Stream stream)
  23. {
  24. base.LoadFromStream(stream);
  25. Name = stream.ReadNullTerminatedUTF8String();
  26. Location = stream.ReadNullTerminatedUTF8String();
  27. }
  28. protected override void SaveToStream(Stream stream)
  29. {
  30. base.SaveToStream(stream);
  31. stream.WriteNullTerminatedUTF8String(Name);
  32. if(Location.Length > 0)
  33. stream.WriteUTF8String(Location);
  34. }
  35. public string Name { get; set; }
  36. public string Location { get; set; }
  37. }
  38. }