Esempio n. 1
0
        public ColorRange1D ComputeColorRange(EngineController engine)
        {
            List <Color>  colors;
            List <double> parameters;

            // If there are colors supplied
            if (InPorts[0].Connectors.Any())
            {
                var colorsNode   = InPorts[0].Connectors[0].Start.Owner;
                var colorsIndex  = InPorts[0].Connectors[0].Start.Index;
                var startId      = colorsNode.GetAstIdentifierForOutputIndex(colorsIndex).Name;
                var colorsMirror = engine.GetMirror(startId);
                colors = GetColorsFromMirrorData(colorsMirror);
            }
            else
            {
                colors = DefaultColorRanges.Analysis;
            }

            // If there are indices supplied
            if (InPorts[1].Connectors.Any())
            {
                var valuesNode   = InPorts[1].Connectors[0].Start.Owner;
                var valuesIndex  = InPorts[1].Connectors[0].Start.Index;
                var endId        = valuesNode.GetAstIdentifierForOutputIndex(valuesIndex).Name;
                var valuesMirror = engine.GetMirror(endId);
                parameters = GetValuesFromMirrorData(valuesMirror);
            }
            else
            {
                parameters = CreateParametersForColors(colors);
            }

            return(ColorRange1D.ByColorsAndParameters(colors, parameters));
        }
Esempio n. 2
0
        public void ColorRange1D_ByColorsAndParameters_HasSomeColorsIfNothingProvided()
        {
            var colors     = new List <Color>();
            var parameters = new List <double>();

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(range.GetColorAtParameter(0), red);
            Assert.AreEqual(range.GetColorAtParameter(1), blue);
        }
Esempio n. 3
0
        public void ColorRange1D_ByColorsAndParameters_HasSomeColorsIfNothingProvided()
        {
            var colors     = new List <Color>();
            var parameters = new List <double>();

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 0), DefaultColorRanges.Analysis.First());
            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 1), DefaultColorRanges.Analysis.Last());
        }
Esempio n. 4
0
        public void ColorRange1D_ByColorsAndParameters_HandlesNullColors()
        {
            var parameters = new List <double> {
                0.0, 0.5, 1.0
            };

            var range = ColorRange1D.ByColorsAndParameters(null, parameters);

            Assert.AreEqual(range.GetColorAtParameter(0), red);
            Assert.AreEqual(range.GetColorAtParameter(1), blue);
        }
Esempio n. 5
0
        public void ColorRange1D_ByColorsAndParameters_HandlesNullColors()
        {
            var parameters = new List <double> {
                0.0, 0.5, 1.0
            };

            var range = ColorRange1D.ByColorsAndParameters(null, parameters);

            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 0), DefaultColorRanges.Analysis.First());
            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 1), DefaultColorRanges.Analysis.Last());
        }
Esempio n. 6
0
        public void ColorRange1D_ByColorsAndParameters_HandlesNullParameters()
        {
            var colors = new List <Color> {
                red, orange, blue
            };

            var range = ColorRange1D.ByColorsAndParameters(colors, null);

            Assert.AreEqual(range.GetColorAtParameter(0), red);
            Assert.AreEqual(range.GetColorAtParameter(0.5), orange);
            Assert.AreEqual(range.GetColorAtParameter(1), blue);
        }
Esempio n. 7
0
        public void ColorRange1D_ByColorsAndParameters_HasSomeParametersIfNoneProvided()
        {
            var colors = new List <Color>()
            {
                red, blue
            };
            var parameters = new List <double>();

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 0), red);
            Assert.AreEqual(ColorRange1D.GetColorAtParameter(range, 1), blue);
        }
Esempio n. 8
0
        public void ColorRange1D_ByColorsAndParameters_RemapsParametersThatAreOutOfRange()
        {
            var colors = new List <Color> {
                red, blue
            };
            var parameters = new List <double> {
                26.5, -13.2
            };

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(range.GetColorAtParameter(0), blue);
            Assert.AreEqual(range.GetColorAtParameter(1), red);
        }
Esempio n. 9
0
        public void ColorRange1D_ByColorsAndParameters_MakesSolidColorRangeWithOneColor()
        {
            var colors = new List <Color> {
                red
            };
            var parameters = new List <double> {
                0.0
            };

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(range.GetColorAtParameter(0), red);
            Assert.AreEqual(range.GetColorAtParameter(1), red);
        }
Esempio n. 10
0
        //http://gaggerostechnicalnotes.blogspot.com/2012/01/wpf-colors-scale.html
        private WriteableBitmap CreateColorRangeBitmap(ColorRange1D colorRange)
        {
            const int width  = 64;
            const int height = 1;

            var bitmap = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null);
            var pixels = new uint[width * height];

            for (var i = 1; i <= width; i++)
            {
                var t        = (double)i / width;
                var newColor = ColorRange1D.GetColorAtParameter(colorRange, t);
                pixels[i - 1] = (uint)((255 << 24) + (newColor.Red << 16) + (newColor.Green << 8) + newColor.Blue);
            }
            bitmap.WritePixels(new Int32Rect(0, 0, width, height), pixels, width * 4, 0);

            return(bitmap);
        }
Esempio n. 11
0
        public void ColorRange1D_ByColorsAndParameters_ValidArgs()
        {
            var red  = Color.ByARGB(255, 255, 0, 0);
            var blue = Color.ByARGB(255, 0, 0, 255);

            var colors = new List <Color> {
                red, blue
            };
            var parameters = new List <double>()
            {
                0.0, 1.0
            };

            var range = ColorRange1D.ByColorsAndParameters(colors, parameters);

            Assert.AreEqual(range.GetColorAtParameter(0), red);
            Assert.AreEqual(range.GetColorAtParameter(1), blue);
        }
Esempio n. 12
0
        internal static ColorRange1D CreateAnalyticalColorRange()
        {
            // Build some colors for a range
            var c1     = Color.ByARGB(255, 255, 0, 0);
            var c2     = Color.ByARGB(255, 255, 255, 0);
            var c3     = Color.ByARGB(255, 0, 0, 255);
            var colors = new List <Color>()
            {
                c1, c2, c3
            };
            var parameters = new List <double>()
            {
                0.0, 0.5, 1.0
            };
            var colorRange = ColorRange1D.ByColorsAndParameters(colors, parameters);

            return(colorRange);
        }
Esempio n. 13
0
        private void UpdateColorRange()
        {
            var s = dynamoViewModel.Model.Scheduler;

            // prevent data race by running on scheduler
            var t = new DelegateBasedAsyncTask(s, () =>
            {
                colorRange = colorRangeNode.ComputeColorRange(dynamoModel.EngineController);
            });

            // then update on the ui thread
            t.ThenSend((_) =>
            {
                var bmp = CreateColorRangeBitmap(colorRange);
                gradientImage.Source = bmp;
            }, syncContext);

            s.ScheduleForExecution(t);
        }