< Summary - ReFlex - Library

Information
Class: Implementation.Components.DepthImageManager
Assembly: ReFlex.Core.Implementation
File(s): D:\a\reflex\reflex\library\src\Core\Implementation\Components\DepthImageManager.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 49
Coverable lines: 49
Total lines: 100
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
get_PointCloud()100%210%
get_VectorField()100%210%
get_ImageWidth()100%210%
get_ImageHeight()100%210%
.ctor(...)100%210%
Initialize(...)100%210%
Update(...)0%2040%
Update(...)0%620%
OnPointcloudFiltered(...)0%620%
OnVectorfieldChanged(...)0%620%
PopulateVectorfield()0%620%

File(s)

D:\a\reflex\reflex\library\src\Core\Implementation\Components\DepthImageManager.cs

#LineLine coverage
 1using System;
 2using Implementation.Interfaces;
 3using NLog;
 4using ReFlex.Core.Common.Components;
 5using ReFlex.Core.Tracking.Util;
 6
 7namespace Implementation.Components
 8{
 9    public class DepthImageManager : IDepthImageManager
 10    {
 011        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 12
 13        private readonly IFilterManager _filterManager;
 14
 015        public PointCloud3 PointCloud { get; private set; }
 16
 017        public VectorField2 VectorField { get; private set; }
 18
 19        public event EventHandler<PointCloud3> PointcloudFiltered;
 20        public event EventHandler<VectorField2> VectorfieldChanged;
 21        public event EventHandler<ImageByteArray> DepthImageChanged;
 22        public event EventHandler<DepthCameraFrame> RawDepthFrameReceived;
 23
 024        public int ImageWidth { get; private set; }
 25
 026        public int ImageHeight { get; private set; }
 27
 28        private bool _isUpdating;
 29
 030        public DepthImageManager(IFilterManager filterManager)
 031        {
 032            _filterManager = filterManager;
 033        }
 34
 35        public void Initialize(int sizeX, int sizeY)
 036        {
 037            PointCloud = new PointCloud3(sizeX, sizeY);
 038            OnPointcloudFiltered(this, PointCloud);
 39
 040            VectorField = new VectorField2(sizeX, sizeY);
 041            OnVectorfieldChanged(this, VectorField);
 42
 043            ImageWidth = sizeX;
 044            ImageHeight = sizeY;
 045        }
 46
 47        public void Update(DepthCameraFrame frame)
 048        {
 49            // skip current frame if pointcloud is still being processed...
 050            if (_isUpdating)
 051                return;
 52
 053            _isUpdating = true;
 54
 055            var depthData = frame.Depth;
 56
 57            // send raw data
 058            RawDepthFrameReceived?.Invoke(this, frame);
 59
 060            _filterManager.FilterAndUpdate(depthData, PointCloud);
 61            try
 062            {
 063                OnPointcloudFiltered(this, PointCloud);
 064            }
 065            catch (Exception exc)
 066            {
 067                Logger.Error(exc);
 068            }
 69
 070            PopulateVectorfield();
 71
 072            _isUpdating = false;
 073        }
 74
 75        public void Update(ImageByteArray depthImage)
 076        {
 77            //@ todo: maybe convert into 8-bit image ?
 078            DepthImageChanged?.Invoke(this, depthImage);
 079        }
 80
 81        protected virtual void OnPointcloudFiltered(object sender, PointCloud3 pointcloud) =>
 082            PointcloudFiltered?.Invoke(sender, pointcloud);
 83
 84        protected virtual void OnVectorfieldChanged(object sender, VectorField2 vectorfield) =>
 085            VectorfieldChanged?.Invoke(sender, vectorfield);
 86
 87        private void PopulateVectorfield()
 088        {
 89            try
 090            {
 091                VectorField?.Populate(PointCloud);
 092                OnVectorfieldChanged(this, VectorField);
 093            }
 094            catch (Exception exc)
 095            {
 096                Logger.Error(exc);
 097            }
 098        }
 99    }
 100}