Exemplo n.º 1
0
        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(); });
            }
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
 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())
     });
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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)
            });
        }
Exemplo n.º 6
0
        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();
        }