Exemplo n.º 1
0
        private void UpdatePropertyView(double x, double y, uint width, uint height, EventTypePluginData data)
        {
            Debug.Assert(data != null);

            bool doEvent = false;

            lock (this.lockObj)
            {
                if (this.selectedData != data)
                {
                    doEvent           = true;
                    this.selectedData = data;
                }

                data.selected2DPixelX     = 0;
                data.selected2DPixelY     = 0;
                data.selected2DPixelDepth = 0;

                if (width == data.imageWidth)
                {
                    data.selected2DPixelX = (uint)x;
                }
                else
                {
                    data.selected2DPixelX = (uint)((x / width) * data.imageWidth);
                }

                if (height == data.imageHeight)
                {
                    data.selected2DPixelY = (uint)y;
                }
                else
                {
                    data.selected2DPixelY = (uint)((y / height) * data.imageHeight);
                }

                DepthPlugin.UpdateSelectedPixelValue(data);
            }

            this.RaisePropertyChanged("Selected2DPixelX");
            this.RaisePropertyChanged("Selected2DPixelY");
            this.RaisePropertyChanged("Selected2DPixelDepth");

            if (doEvent)
            {
                this.RaisePropertyChanged("HasSelected2DPixelData");
            }
        }
Exemplo n.º 2
0
        private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data)
        {
            Debug.Assert(data != null);

            if (eventObj != null)
            {
                bool doDataEvent    = false;
                bool doVisibleEvent = false;

                if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Depth) ||
                    (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.DepthMonitor))
                {
                    lock (this.lockObj)
                    {
                        bool isSelectedData = (this.selectedData == data);

                        HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer();
                        doVisibleEvent        = isSelectedData && (newSharedFrame == null) != (data.sharedDepthFrame == null);
                        data.sharedDepthFrame = newSharedFrame;

                        uint newWidth  = nui.Constants.STREAM_DEPTH_WIDTH;
                        uint newHeight = nui.Constants.STREAM_DEPTH_HEIGHT;

                        if ((data.depthMap == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight))
                        {
                            viz.Context context = null;
                            if (this.pluginService != null)
                            {
                                context = this.pluginService.GetContext(eventType);
                            }

                            data.imageWidth  = newWidth;
                            data.imageHeight = newHeight;

                            DepthPlugin.CreateTextures(data, context);
                        }

                        if (data.sharedDepthFrame != null)
                        {
                            unsafe
                            {
                                data.depthMap.UpdateData((ushort *)data.sharedDepthFrame.Buffer, data.sharedDepthFrame.Size);
                            }
                        }

                        if (DepthPlugin.UpdateSelectedPixelValue(data))
                        {
                            doDataEvent = isSelectedData;
                        }
                    }

                    if (doVisibleEvent)
                    {
                        this.RaisePropertyChanged("HasSelected2DPixelData");
                    }

                    if (doDataEvent)
                    {
                        this.RaisePropertyChanged("Selected2DPixelDepth");
                    }
                }
            }
        }