VectorOfVectorKeyLine.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #if false
  2. namespace OpenCvSharp.Internal.Vectors
  3. {
  4. /// <summary>
  5. /// </summary>
  6. // ReSharper disable once InconsistentNaming
  7. public class VectorOfVectorKeyLine : DisposableCvObject, IStdVector<KeyLine[]>
  8. {
  9. /// <summary>
  10. /// Constructor
  11. /// </summary>
  12. public VectorOfVectorKeyLine()
  13. {
  14. ptr = NativeMethods.vector_vector_KeyLine_new1();
  15. }
  16. /// <summary>
  17. /// Releases unmanaged resources
  18. /// </summary>
  19. protected override void DisposeUnmanaged()
  20. {
  21. NativeMethods.vector_vector_KeyLine_delete(ptr);
  22. base.DisposeUnmanaged();
  23. }
  24. /// <summary>
  25. /// vector.size()
  26. /// </summary>
  27. public int GetSize1()
  28. {
  29. var res = NativeMethods.vector_vector_KeyLine_getSize1(ptr);
  30. GC.KeepAlive(this);
  31. return (int)res;
  32. }
  33. /// <summary>
  34. ///
  35. /// </summary>
  36. public int Size => GetSize1();
  37. /// <summary>
  38. /// vector[i].size()
  39. /// </summary>
  40. public IReadOnlyList<long> GetSize2()
  41. {
  42. var size1 = GetSize1();
  43. var size2 = new nuint[size1];
  44. NativeMethods.vector_vector_KeyLine_getSize2(ptr, size2);
  45. GC.KeepAlive(this);
  46. return size2.Select(s => (long)s).ToArray();
  47. }
  48. /// <summary>
  49. /// Converts std::vector to managed array
  50. /// </summary>
  51. /// <returns></returns>
  52. public KeyLine[][] ToArray()
  53. {
  54. var size1 = GetSize1();
  55. if (size1 == 0)
  56. return Array.Empty<KeyLine[]>();
  57. var size2 = GetSize2();
  58. var ret = new KeyLine[size1][];
  59. for (var i = 0; i < size1; i++)
  60. {
  61. ret[i] = new KeyLine[size2[i]];
  62. }
  63. using var retPtr = new ArrayAddress2<KeyLine>(ret);
  64. NativeMethods.vector_vector_KeyLine_copy(ptr, retPtr.GetPointer());
  65. GC.KeepAlive(this);
  66. return ret;
  67. }
  68. }
  69. }
  70. #endif