public void TestAllColorsAreRetrievedWithoutExceptions() { var cmap = new ColorMap(DefaultPalette, -30, 30, 78); for (var i = 0; i < 78; i++) { Assert.DoesNotThrow(() => { var colors = cmap.Colors().ToList(); }); } }
private static float[] serializeColorMap(ColorMap cmap) //converts a colorMap to a 1d float array in row major order { List <float> serializedList = new List <float>(); foreach (var color in cmap.Colors()) { serializedList.Add(color.R / 255.0f); serializedList.Add(color.G / 255.0f); serializedList.Add(color.B / 255.0f); } return(serializedList.ToArray()); }
private LinearGradientBrush CreatePaletteBrush(ColorMap cmap) { return(new LinearGradientBrush { StartPoint = new Point(0, 0), EndPoint = new Point(1, 0), GradientStops = new GradientStopCollection( cmap.Colors() .Select((color, i) => new GradientStop() { Color = color.ToMediaColor(), Offset = (float)i / ColorCountDefault }) .ToList()) }); }
private void ShowColormap() { var brush = new LinearGradientBrush( _colorMapPanel.ClientRectangle, Color.White, Color.White, 0, false); var blend = new ColorBlend { Colors = _cmap.Colors().ToArray(), Positions = Enumerable.Range(0, _colorCount) .Select(pos => (float)pos / (_colorCount - 1)) .ToArray() }; brush.InterpolationColors = blend; _colorMapPanel.CreateGraphics() .FillRectangle(brush, _colorMapPanel.ClientRectangle); }
private static LinearGradientBrush CreatePaletteBrush(ColorMap cmap) { var stops = new GradientStopCollection(); var pos = 0.0f; foreach (var rgb in cmap.Colors()) { stops.Add(new GradientStop { Color = rgb.ToUwpColor(), Offset = pos++ / ColorCountDefault }); } return(new LinearGradientBrush { GradientStops = stops, StartPoint = new Point(0, 0), EndPoint = new Point(1, 1) }); }
private void UpdateSpectrogramBitmaps() { var spectraCount = _spectrogram.Count; var spectrumSize = _spectrogram.First().Length; // ============ create 2D spectrogram bitmap ============ var colors2D = new Color[spectraCount * spectrumSize]; for (var i = 0; i < spectraCount; i++) { // ...flip rows bottom-to-top... var pos = (spectrumSize - 1) * spectraCount + i; for (var j = 0; j < spectrumSize; j++) { colors2D[pos] = _cmap[_spectrogram[i][j]].ToUwpColor(); // ...flip rows bottom-to-top... pos -= spectraCount; } } _spectrogram2D = CanvasBitmap.CreateFromColors(SpectrumView, colors2D, spectraCount, spectrumSize); // ============ create 3D spectrogram bitmap ============ const int width3D = 700; const int height3D = 700; const int size3D = width3D * height3D; var colors3D = Enumerable.Range(0, size3D) .Select(i => _cmap.Colors().First().ToUwpColor()) .ToArray(); for (var x = 0; x < spectraCount; x++) { for (var y = 0; y < spectrumSize; y++) { var z = _spectrogram[x][y]; while (z > 0) { var coords = RotateY(x, y, z, AngleY); coords = RotateX(coords[0], coords[1], coords[2], AngleX); coords = RotateZ(coords[0], coords[1], coords[2], AngleZ); if (coords[0] + CenterY < height3D && coords[1] + CenterX < width3D) { var pos = ((int)coords[0] + CenterY) * width3D + (int)coords[1] + CenterX; colors3D[pos] = _cmap[z].ToUwpColor(); } z -= Stride; } } } _spectrogram3D = CanvasBitmap.CreateFromColors(SpectrumView3D, colors3D, height3D, width3D); // redraw panels: SpectrumView.Invalidate(); SpectrumView3D.Invalidate(); }