private void SetVisualType(VisualDescription visualDescription) { lock (_visualLock) { // Certain Visuals require more information on the display fftScanHUD.Visibility = visualDescription.VisualType == VisualDescription.VisualTypeEnumeration.FftScan ? Visibility.Visible : Visibility.Collapsed; peakMeterHUD.Visibility = visualDescription.VisualType == VisualDescription.VisualTypeEnumeration.PeakMeter ? Visibility.Visible : Visibility.Collapsed; switch (visualDescription.VisualType) { case VisualDescription.VisualTypeEnumeration.None: _currentRenderVisuals = null; ClearOutputBitmap(); FlushOutputBitmap(); break; case VisualDescription.VisualTypeEnumeration.PeakMeter: FourierTransform.SetMeterFrequencies(_peakMeterFrequencies); _lastPeaks = InitializeArray(FourierTransform.FREQUENCYSLOTCOUNT, byte.MaxValue); _maximumPeaks = InitializeArray(FourierTransform.FREQUENCYSLOTCOUNT, byte.MaxValue); _currentRenderVisuals = RenderPeakMeter; break; case VisualDescription.VisualTypeEnumeration.Oscilloscope: _currentRenderVisuals = RenderOscilloscope; break; case VisualDescription.VisualTypeEnumeration.Scope: _currentRenderVisuals = RenderScope; break; case VisualDescription.VisualTypeEnumeration.Scan: _scanIsCleared = true; _currentRenderVisuals = RenderScan; break; case VisualDescription.VisualTypeEnumeration.FftScan: FourierTransform.SetMeterFrequencies(_fftScanFrequencies); _maximumPeaks = InitializeArray(_maximumPeaks.Length, 0); _fftScanIsCleared = true; _currentRenderVisuals = RenderFFTScan; break; } } }
private void InitializeRendering() { // Set default visualizer ActiveVisualizer = Visualizers.First(vd => vd.VisualType == VisualDescription.VisualTypeEnumeration.PeakMeter); _outputWriteableBitmap = new WriteableBitmap((int)outputImage.Width, (int)outputImage.Height); outputImage.Source = _outputWriteableBitmap; _clearShape = new Rectangle { Width = _outputWriteableBitmap.PixelWidth, Height = _outputWriteableBitmap.PixelHeight, Fill = new SolidColorBrush(Color.FromArgb(32, 0, 0, 0)) // the less opaque it is, the longer the blur effects lasts }; _clearBuffer = ArrayHelper.Instantiate(_outputWriteableBitmap.Pixels.Length, _clearColour); _lastPeaks = InitializeArray(FourierTransform.FREQUENCYSLOTCOUNT, byte.MaxValue); _maximumPeaks = InitializeArray(FourierTransform.FREQUENCYSLOTCOUNT, byte.MaxValue); _widthWithoutMarginRight = Convert.ToInt32(outputImage.Width - marginLeft); }
public override IEnumerator ReceivePayload(VisualPayload payload) { var headerMutable = Header.GetFirstValue(payload.Data); IEnumerator iterator; foreach (var entry in TraceList.GetEntries(payload.Data)) { ExecutionHeaderTarget.SetValue(headerMutable, entry); foreach (var traceMutable in TraceList.GetValue(entry)) { var traceVisualDescription = new VisualDescription(payload.VisualData.Bound.CreateDependingBound(Name)); VisualPayload tracePayload = new VisualPayload(traceMutable, traceVisualDescription); iterator = TraceState.Transmit(tracePayload); while (iterator.MoveNext()) { yield return(null); } } } }
public VisualPayload(MutableObject data, VisualDescription visualData) { Data = data; VisualData = visualData; }
public void Dispose() { VisualDescription.Clear(); DataBuffer.Clear(); }