VectorOfKeyLine.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #if false
  2. namespace OpenCvSharp.Internal.Vectors
  3. {
  4. /// <summary>
  5. /// </summary>
  6. public class VectorOfKeyLine : DisposableCvObject, IStdVector<KeyLine>
  7. {
  8. /// <summary>
  9. /// Constructor
  10. /// </summary>
  11. public VectorOfKeyLine()
  12. {
  13. ptr = NativeMethods.vector_KeyLine_new1();
  14. }
  15. /// <summary>
  16. /// Releases unmanaged resources
  17. /// </summary>
  18. protected override void DisposeUnmanaged()
  19. {
  20. NativeMethods.vector_KeyLine_delete(ptr);
  21. base.DisposeUnmanaged();
  22. }
  23. /// <summary>
  24. /// vector.size()
  25. /// </summary>
  26. public int Size
  27. {
  28. get
  29. {
  30. var res = NativeMethods.vector_KeyLine_getSize(ptr);
  31. GC.KeepAlive(this);
  32. return (int)res;
  33. }
  34. }
  35. /// <summary>
  36. /// &amp;vector[0]
  37. /// </summary>
  38. public IntPtr ElemPtr
  39. {
  40. get
  41. {
  42. var res = NativeMethods.vector_KeyLine_getPointer(ptr);
  43. GC.KeepAlive(this);
  44. return res;
  45. }
  46. }
  47. /// <summary>
  48. /// Converts std::vector to managed array
  49. /// </summary>
  50. /// <returns></returns>
  51. public KeyLine[] ToArray()
  52. {
  53. var size = Size;
  54. if (size == 0)
  55. {
  56. return Array.Empty<KeyLine>();
  57. }
  58. var dst = new KeyLine[size];
  59. using (var dstPtr = new ArrayAddress1<KeyLine>(dst))
  60. {
  61. long bytesToCopy = Marshal.SizeOf<KeyLine>() * dst.Length;
  62. unsafe
  63. {
  64. Buffer.MemoryCopy(ElemPtr.ToPointer(), dstPtr.Pointer.ToPointer(), bytesToCopy, bytesToCopy);
  65. }
  66. }
  67. GC.KeepAlive(this); // ElemPtr is IntPtr to memory held by this object, so
  68. // make sure we are not disposed until finished with copy.
  69. return dst;
  70. }
  71. }
  72. }
  73. #endif