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)); }
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); }
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()); }
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); }
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()); }
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); }
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); }
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); }
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); }
//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); }
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); }
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); }
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); }