public RouteLineSettings(ColorRange colorRange, double width, Color maskColor, double maskWidth, bool maskVisible, double alphaAdjustment)
 {
     this.colorRange = colorRange;
       this.width = width;
       this.maskColor = maskColor;
       this.maskWidth = maskWidth;
       this.maskVisible = maskVisible;
       AlphaAdjustment = alphaAdjustment;
 }
 public ParticleReleaseParameters()
 {
     Quantity = 1;
     Speed = RangeF.Parse("[-1.0,1.0]");
     Color = new ColorRange(new HslColor(0f, 0.5f, 0.5f), new HslColor(360f, 0.5f, 0.5f));
     Opacity = RangeF.Parse("[0.0,1.0]");
     Scale = RangeF.Parse("[1.0,10.0]");
     Rotation = RangeF.Parse("[-3.14159,3.14159]");
     Mass = 1f;
 }
Exemple #3
0
 public IEnumerable <Color> ApplyTo(IEnumerable <Color> colors, ColorRange colorRange, double[] parameters)
 {
     if (IsMultiFilter())
     {
         return(ApplyMultiFilter(colors, colorRange, parameters));
     }
     else if (IsSingleFilter())
     {
         return(ApplySingleFilter(colors, colorRange, parameters));
     }
     throw new Exception("No filter defined");
 }
Exemple #4
0
        public static Color LevelsBlue(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            (double inBlack, double inWhite, double gamma, double outBlack, double outWhite) =
                FilterUtils.GetLevelsParameters(filterParams);
            filtered.Blue = ColorMath.Levels(color.Blue, inBlack, inWhite, gamma, outBlack, outWhite);

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #5
0
        public void ColorRange_AddToHomespaceAndRun_NoException()
        {
            var homespace = Model.CurrentWorkspace as HomeWorkspaceModel;

            Assert.NotNull(homespace, "The current workspace is not a HomeWorkspaceModel");
            var colorRange = new ColorRange();

            Model.AddNodeToCurrentWorkspace(colorRange, true);
            homespace.Run();
            Assert.DoesNotThrow(DispatcherUtil.DoEvents);
            Assert.Pass();
        }
Exemple #6
0
        ColorRange CreateCustomRange(out byte index)
        {
            index = 32;

            var range = new ColorRange(ref index);

            range.colors     = ColorRange.RangeColors._32;
            range.type       = ColorRange.RangeTypes.Edit4;
            range.isFixed    = true;
            range.blackColor = 31;

            return(range);
        }
Exemple #7
0
        public static Color InvertRgb(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var inverted    = Color.FromRgb(
                ColorMath.Invert(color.Red),
                ColorMath.Invert(color.Green),
                ColorMath.Invert(color.Blue),
                color.Alpha);

            color.InterpolateWith(inverted, rangeFactor);

            return(color);
        }
Exemple #8
0
 public static Color ByBass(Color color, ColorRange colorRange, params double[] filterParams)
 {
     if (filterParams.Any())
     {
         (double h, double s, double l) = color.GetHslComponents();
         var newColor = Color.FromHsl(h, s, l, color.Alpha);
         return(newColor);
     }
     else
     {
         return(color);
     }
 }
Exemple #9
0
        public static Color BrightnessToLightness(Color color, ColorRange colorRange,
                                                  params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            var br = color.GetBrightness();

            filtered.Lightness = br;

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
        public void AreNotEqual()
        {
            var  a          = new ColorRangeTable();
            var  b          = new ColorRangeTable();
            byte startIndex = 64;

            for (int i = 0; i < ColorRangeTable.LENGTH; i++)
            {
                b[i] = new ColorRange(ref startIndex);
            }

            Assert.AreNotEqual(a, b);
        }
Exemple #11
0
        public static Color ValueToGrayScale(Color color,
                                             ColorRange colorRange,
                                             params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            filtered.Red   = color.Value;
            filtered.Green = color.Value;
            filtered.Blue  = color.Value;
            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
        byte CheckDefaultRange(ColorRange range, byte startIndex)
        {
            Assert.AreEqual(ColorRange.DEFAULT_RANGE_COLORS, range.colors);
            Assert.AreEqual(ColorRange.DEFAULT_TYPE, range.type);
            Assert.AreEqual(ColorRange.DEFAULT_FIXED_STATE, range.isFixed);
            Assert.AreEqual(ColorRange.DEFAULT_BLACK_COLOR, range.blackColor);
            for (byte i = 0; i < ColorRange.LENGTH; i++, startIndex++)
            {
                Assert.AreEqual(startIndex, range[i]);
            }

            return(startIndex);
        }
Exemple #13
0
 /// <summary>
 /// Reads range from IFF stream.
 /// </summary>
 public static ColorRange Serdes(int _, ColorRange c, ISerializer s)
 {
     if (s == null)
     {
         throw new ArgumentNullException(nameof(s));
     }
     c ??= new ColorRange();
     c._pad1 = s.UInt16BE(nameof(_pad1), c._pad1);
     c.Rate  = s.UInt16BE(nameof(Rate), c.Rate);
     c.Flags = s.EnumU16BE(nameof(Flags), c.Flags);
     c.Low   = s.UInt8(nameof(Low), c.Low);
     c.High  = s.UInt8(nameof(High), c.High);
     return(c);
 }
Exemple #14
0
        public static Color GainHsvSaturation(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double gain = (filterParams[0]);
                filtered.SaturationHsv = (filtered.SaturationHsv * gain);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
    //GUI Window Stuff - NO COMMENTS
    private void OnGUI()
    {
        GUIStyle help = new GUIStyle(GUI.skin.label);

        help.fontSize  = 12;
        help.fontStyle = FontStyle.Bold;
        EditorGUILayout.LabelField("How To Use", help);

        EditorGUILayout.HelpBox("1. Set the number of elements that exist on each data line. \n" +
                                "2. Set the delimiter between each element. (Leave blank for white space) \n" +
                                "3. Set the index of the XYZ elements on the data line. (First element = 1) \n" +
                                "4. Select the range of the color data: \n" +
                                "       None: No Color Data \n" +
                                "       Normalized: 0.0 - 1.0 \n" +
                                "       RGB : 0 - 255 \n" +
                                "5. Set the index of the RGB elements on the data line. (First element = 1) \n" +
                                "6. Click \"Load Point Cloud File\"", MessageType.None);

        EditorGUILayout.BeginHorizontal();

        EditorGUILayout.BeginVertical();
        elementsPerLine = EditorGUILayout.IntField(new GUIContent("Elements Per Data Line", "The Number of Elements in the data line"), elementsPerLine);
        dataDelimiter   = EditorGUILayout.TextField(new GUIContent("Data Line Delimiter", "Leave blank for white space between elements"), dataDelimiter);
        xPOS            = EditorGUILayout.IntField(new GUIContent("X Index", "Index of X in data line"), xPOS);
        yPOS            = EditorGUILayout.IntField(new GUIContent("Y Index", "Index of Y in data line"), yPOS);
        zPOS            = EditorGUILayout.IntField(new GUIContent("Z Index", "Index of Z in data line"), zPOS);

        colorRange = (ColorRange)EditorGUILayout.EnumPopup(new GUIContent("Color Range", "None(No Color), Normalized (0.0-1.0f), RGB(0-255)"), colorRange);

        if (colorRange == ColorRange.NORMALIZED || colorRange == ColorRange.RGB)
        {
            rPOS = EditorGUILayout.IntField(new GUIContent("Red Index", "Index of Red color in data line"), rPOS);
            gPOS = EditorGUILayout.IntField(new GUIContent("Green Index", "Index of Green color in data line"), gPOS);
            bPOS = EditorGUILayout.IntField(new GUIContent("Blue Index", "Index of Blue color in data line"), bPOS);
        }
        EditorGUILayout.EndVertical();

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        GUIStyle buttonStyle = new GUIStyle(GUI.skin.button);

        buttonStyle.fontSize  = 12;
        buttonStyle.fontStyle = FontStyle.Bold;
        if (GUILayout.Button("Load Point Cloud File", buttonStyle, GUILayout.Height(50)))
        {
            LoadCloud();
        }
    }
Exemple #16
0
        public static Color GainLightness(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double gain = filterParams[0];
                filtered.Lightness = (filtered.Lightness * gain);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #17
0
        public static Color BrightnessToGrayScale(Color color,
                                                  ColorRange colorRange,
                                                  params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);
            var br          = ColorMath.RgbPerceivedBrightness(color.Red, color.Green, color.Blue);

            filtered.Red   = br;
            filtered.Green = br;
            filtered.Blue  = br;
            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #18
0
        public static Color GammaBlue(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double gain = filterParams[0];
                filtered.Blue = ColorMath.Gamma(color.Blue, gain);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #19
0
        public void WriteByIndex()
        {
            ColorRange range = this.CreateDefaultRange(out _);

            for (byte i = 0, j = 64; i < ColorRange.LENGTH; i++, j++)
            {
                range[i] = j;
            }

            for (byte i = 0, j = 64; i < ColorRange.LENGTH; i++, j++)
            {
                Assert.AreEqual(j, range[i]);
            }
        }
Exemple #20
0
        public static Color ShiftHslHue(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double hueShift = filterParams[0];
                filtered.Hue = color.Hue + hueShift;
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #21
0
        public static Color GammaHsvSaturation(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double gamma = filterParams[0];
                filtered.SaturationHsv = ColorMath.Gamma(color.SaturationHsv, gamma);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
        public void PreviewBubble_ShownForColorRange()
        {
            var colorRange = new ColorRange();

            Model.AddNodeToCurrentWorkspace(colorRange, true);
            DispatcherUtil.DoEvents();
            var nodeView = NodeViewWithGuid(colorRange.GUID.ToString());

            nodeView.PreviewControl.RaiseEvent(new RoutedEventArgs(FrameworkElement.LoadedEvent));

            // open preview bubble
            RaiseMouseEnterOnNode(nodeView);
            Assert.IsFalse(nodeView.PreviewControl.IsHidden, "Preview bubble for color range should be shown");
        }
Exemple #23
0
        private static void SelectedSliderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ColorRange rangeToSelect = null;
            ColorPanel panel         = null;

            if (d != null)
            {
                panel = (ColorPanel)d;
                SliderItem si = panel.SelectedSlider;

                if (si != null)
                {
                    if (si.SliderType == SliderTypeEnum.RGB)
                    {   // Установка указателя на цветовой диапазоно
                        foreach (ColorRange cr in panel.ColorRangeList)
                        {
                            cr.IsSelected = false;
                            if (cr.HueMinimum <= si.PatternPoint.H)
                            {
                                if (rangeToSelect == null)
                                {
                                    rangeToSelect            = cr;
                                    rangeToSelect.IsSelected = true;
                                }
                            }
                        }
                        panel.SelectedRange = rangeToSelect;
                        panel.hueSlider.UpdateScaleGradient(panel.SelectedRange);
                    }

                    panel.blockChangePoint = true;

                    panel.SetSlidersValues(si);
                    panel.PrepareSliderBehaviors(si);

                    panel.blockChangePoint = false;
                }
                else
                {
                    panel.hueSlider.IsEnabled   = false;
                    panel.satSlider.IsEnabled   = false;
                    panel.lightSlider.IsEnabled = false;
                    panel.whiteSlider.IsEnabled = false;
                    panel.tempSlider.IsEnabled  = false;
                    panel.warmSlider.IsEnabled  = false;
                    panel.coldSlider.IsEnabled  = false;
                }
            }
        }
Exemple #24
0
 public void SetSource(List <ColorRange> cs)
 {
     settingData = true;
     colors      = cs;
     curColor    = colors[0];
     GetDataFrom(curColor);
     ColorsList.Items.Clear();
     for (int i = 0; i < colors.Count; i++)
     {
         ColorsList.Items.Add("颜色范围" + i.ToString());
     }
     ColorsList.Items.Add("新建颜色项");
     //ColorsList.SelectedIndex = 0;
     settingData = false;
 }
Exemple #25
0
        public static Color ContrastValue(Color color, ColorRange colorRange, params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                double strength = filterParams[0];
                double midpoint = filterParams.Length >= 2 ? filterParams[1] : 0.5;
                filtered.Value = ColorMath.SSpline(color.Value, strength, midpoint);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #26
0
        public static Color GammaRgb(Color color, ColorRange colorRange, params double[] filterParams)
        {
            if (filterParams.Any())
            {
                var    rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
                var    filtered    = new Color(color);
                double gamma       = filterParams[0];
                filtered.Red   = ColorMath.Gamma(color.Red, gamma);
                filtered.Green = ColorMath.Gamma(color.Green, gamma);
                filtered.Blue  = ColorMath.Gamma(color.Blue, gamma);
                color.InterpolateWith(filtered, rangeFactor);
            }

            return(color);
        }
Exemple #27
0
        public static Color MaxHsvSaturation(Color color,
                                             ColorRange colorRange,
                                             params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                filtered.SaturationHsv = color.SaturationHsv.LimitHigh(filterParams[0]);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #28
0
        public static Color MinValue(Color color,
                                     ColorRange colorRange,
                                     params double[] filterParams)
        {
            var rangeFactor = FilterUtils.GetRangeFactor(colorRange, color);
            var filtered    = new Color(color);

            if (filterParams.Any())
            {
                filtered.Value = color.Value.LimitLow(filterParams[0]);
            }

            color.InterpolateWith(filtered, rangeFactor);
            return(color);
        }
Exemple #29
0
    private ColorHandler RangedColorHandler()
    {
        KeyboardZoneMainKeyboard zone = UnityEngine.ScriptableObject.CreateInstance <KeyboardZoneMainKeyboard>();

        ColorStatic cyan  = ColorStatic.Create(0, 194, 255);
        ColorStatic green = ColorStatic.Create(0, 255, 0);
        ColorStatic red   = ColorStatic.Create(255, 0, 0);

        ColorRange cyanRange  = new ColorRange(0, 10, cyan);
        ColorRange redRange   = new ColorRange(10, 20, red);
        ColorRange greenRange = new ColorRange(20, 100, green);

        ColorRange[] ranges = { cyanRange, redRange, greenRange };

        return(ColorHandler.Create(zone, IlluminationMode.Color, ColorRanges.Create(ranges)));
    }
Exemple #30
0
        public static Color InvertPerceivedValue(Color color,
                                                 ColorRange colorRange = null,
                                                 params double[] filterParams)
        {
            var rangeFactor      = FilterUtils.GetRangeFactor(colorRange, color);
            var brightness       = ColorMath.RgbPerceivedBrightness(color.Red, color.Green, color.Blue);
            var targetBrightness = (1 - brightness);

            // using brightness as lightness is not accurate but we can correct this later
            // how ever it seems that completely correct value produces worse outcome
            // so we may use something in between
            var inverted = Color.FromHsv(color.HueHsv, color.SaturationHsv, targetBrightness, color.Alpha);

            color.InterpolateWith(inverted, rangeFactor);
            return(color);
        }
Exemple #31
0
        public static IEnumerable <Color> AutoLevelsRgbByBrightness(IEnumerable <Color> colors,
                                                                    ColorRange range,
                                                                    params double[] filterParams)
        {
            List <Color> cache = colors.ToList();

            (double inBlack, double inWhite) = FilterUtils.GetLowestAndHighestLightness(cache);

            IEnumerable <Color> result;

            if (DegreeOfParallelism > 0)
            {
                result = cache
                         .AsParallel()
                         .AsOrdered()
                         .WithDegreeOfParallelism(DegreeOfParallelism);
            }
            else
            {
                result = cache;
            }

            result = result
                     .Select(
                color =>
            {
                var rangeFactor = FilterUtils.GetRangeFactor(range, color);
                var filtered    = new Color(color);

                (double outBlack, double outWhite, double gamma) =
                    FilterUtils.GetAutoLevelParameters(filterParams);

                filtered.Red   = ColorMath.Levels(color.Red, inBlack, inWhite, gamma, outBlack, outWhite);
                filtered.Green = ColorMath.Levels(color.Green, inBlack, inWhite, gamma, outBlack, outWhite);
                filtered.Blue  = ColorMath.Levels(color.Blue, inBlack, inWhite, gamma, outBlack, outWhite);

                color.InterpolateWith(filtered, rangeFactor);
                return(color);
            }
                );

            foreach (var color in result)
            {
                yield return(color);
            }
        }
        public void WriteByIndex()
        {
            var  a          = new ColorRangeTable();
            byte startIndex = 0;

            for (int i = 0; i < ColorRangeTable.LENGTH; i++)
            {
                a[i] = new ColorRange(ref startIndex);
            }

            var b = new ColorRangeTable();

            for (int i = 0; i < ColorRangeTable.LENGTH; i++)
            {
                Assert.AreEqual(a[i], b[i]);
            }
        }
 protected RouteLineSettings(SerializationInfo info, StreamingContext context)
 {
     colorRange = (ColorRange)(info.GetValue("colorRange", typeof(ColorRange)));
       width = info.GetDouble("width");
       maskColor = Color.FromArgb(info.GetInt32("maskColor"));
       maskWidth = info.GetDouble("maskWidth");
       maskVisible = info.GetBoolean("maskVisible");
       alphaAdjustment = info.GetDouble("alphaAdjustment");
       if(info.MemberCount > 6)
       {
     monochromeColor = Color.FromArgb(info.GetInt32("monochromeColor"));
     monochromeWidth = info.GetDouble("monochromeWidth");
       }
       else
       {
     monochromeColor = Color.FromArgb(160, Color.Red);
     monochromeWidth = 3;
       }
 }
Exemple #34
0
 /// <summary>
 /// Override the source format for video frames
 /// </summary>
 /// <remarks>
 /// <para>In FFMS2, the equivalent is <c>FFMS_SetInputFormatV</c>.</para>
 /// <para>Override the source colorspace passed to SWScale for conversions and resizing for all further calls to <see cref="GetFrame(int)">GetFrame</see>, until the next time you call <see cref="SetInputFormat(ColorSpace, ColorRange)">SetInputFormat</see> or <see cref="ResetInputFormat">ResetInputFormat</see>.</para>
 /// <para>This is intended primarily for compatibility with programs which use the wrong YUV colorspace when converting to or from RGB, but can also be useful for files which have incorrect colorspace flags.</para>
 /// <para>Values passed are not checked for sanity; if you wish you may tell FFMS2 to pretend that a RGB files is actually YUV using this function, but doing so is unlikely to have useful results.</para>
 /// <para>This function only has an effect if the output format is also set with <see cref="SetOutputFormat">SetOutputFormat</see>.</para>
 /// </remarks>
 /// <param name="colorSpace">The desired input colorspace</param>
 /// <param name="colorRange">The desired input colorrange</param>
 /// <seealso cref="ResetInputFormat"/>
 /// <exception cref="ArgumentException">Trying to set an invalid output format.</exception>
 public void SetInputFormat(ColorSpace colorSpace = ColorSpace.Unspecified, ColorRange colorRange = ColorRange.Unspecified)
 {
     SetInputFormat(FFMS2.GetPixelFormat(""), colorSpace, colorRange);
 }
Exemple #35
0
        /// <summary>
        /// Override the source format for video frames
        /// </summary>
        /// <remarks>
        /// <para>In FFMS2, the equivalent is <c>FFMS_SetInputFormatV</c>.</para>
        /// <para>Override the source colorspace passed to SWScale for conversions and resizing for all further calls to <see cref="GetFrame(int)">GetFrame</see>, until the next time you call <see cref="SetInputFormat(int, ColorSpace, ColorRange)">SetInputFormat</see> or <see cref="ResetInputFormat">ResetInputFormat</see>.</para>
        /// <para>This is intended primarily for compatibility with programs which use the wrong YUV colorspace when converting to or from RGB, but can also be useful for files which have incorrect colorspace flags.</para>
        /// <para>Values passed are not checked for sanity; if you wish you may tell FFMS2 to pretend that a RGB files is actually YUV using this function, but doing so is unlikely to have useful results.</para>
        /// <para>This function only has an effect if the output format is also set with <see cref="SetOutputFormat">SetOutputFormat</see>.</para>
        /// </remarks>
        /// <param name="pixelFormat">The desired input pixel format</param>
        /// <param name="colorSpace">The desired input colorspace</param>
        /// <param name="colorRange">The desired input colorrange</param>
        /// <seealso cref="ResetInputFormat"/>
        /// <exception cref="ArgumentException">Trying to set an insane input format.</exception>
        public void SetInputFormat(int pixelFormat, ColorSpace colorSpace = ColorSpace.Unspecified, ColorRange colorRange = ColorRange.Unspecified)
        {
            var err = new FFMS_ErrorInfo
            {
                BufferSize = 1024,
                Buffer = new String((char) 0, 1024)
            };

            MarkLastFrameAsInvalid();

            if (NativeMethods.FFMS_SetInputFormatV(_nativePtr, (int) colorSpace, (int) colorRange, pixelFormat, ref err) == 0)
                return;

            if (err.ErrorType == FFMS_Errors.FFMS_ERROR_SCALING && err.SubType == FFMS_Errors.FFMS_ERROR_INVALID_ARGUMENT)
                throw new ArgumentException(err.Buffer);
            if (err.ErrorType == FFMS_Errors.FFMS_ERROR_DECODING && err.SubType == FFMS_Errors.FFMS_ERROR_CODEC)
                throw new ArgumentException(err.Buffer);

            throw new NotImplementedException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Unknown FFMS2 error encountered: ({0}, {1}, '{2}'). Please report this issue on FFMSSharp's GitHub.", err.ErrorType, err.SubType, err.Buffer));
        }
Exemple #36
0
        public void PreviewBubble_ShownForColorRange()
        {
            var colorRange = new ColorRange();
            Model.AddNodeToCurrentWorkspace(colorRange, true);
            DispatcherUtil.DoEvents();
            var nodeView = NodeViewWithGuid(colorRange.GUID.ToString());
            nodeView.PreviewControl.RaiseEvent(new RoutedEventArgs(FrameworkElement.LoadedEvent));

            // open preview bubble
            RaiseMouseEnterOnNode(nodeView);
            Assert.IsFalse(nodeView.PreviewControl.IsHidden, "Preview bubble for color range should be shown");
        }