private Color BrushToColor(Brush brush)
 {
     if (brush.Equals(Brushes.Red))
         return Color.Red;
     if (brush.Equals(Brushes.Orange))
         return Color.Orange;
     if (brush.Equals(Brushes.Yellow))
         return Color.Yellow;
     if (brush.Equals(Brushes.Green))
         return Color.Green;
     if (brush.Equals(Brushes.Blue))
         return Color.Blue;
     return Color.Purple;
 }
 private void UpdateCircleColour(Brush brush, Ellipse circle)
 {
     if (!brush.Equals(Gray) && !circle.Fill.Equals(Gray))
         circle.Fill = Violet;
     else
         circle.Fill = brush;
 }
Exemple #3
0
		public static bool Equals(Brush a, Brush b) {
			if (a == b)
				return true;
			if (a == null || b == null)
				return false;

			if (a.Opacity == 0 && b.Opacity == 0)
				return true;

			var sa = a as SolidColorBrush;
			var sb = b as SolidColorBrush;
			if (sa != null && sb != null) {
				if (sa.Color.A == 0 && sb.Color.A == 0)
					return true;
				return sa.Color.A == sb.Color.A && sa.Color.R == sb.Color.R && sa.Color.G == sb.Color.G && sa.Color.B == sb.Color.B;
			}

			return a.Equals(b);
		}
Exemple #4
0
        /// <summary>
        /// Creates the text material.
        /// </summary>
        /// <param name="items">The items.</param>
        /// <param name="createElement">The create element.</param>
        /// <param name="background">The background.</param>
        /// <param name="elementMap">The element map.</param>
        /// <param name="elementPositions">The element positions.</param>
        /// <returns>A text material.</returns>
        public static Material CreateTextMaterial(
            IEnumerable<TextItem> items,
            Func<string, FrameworkElement> createElement,
            Brush background,
            out Dictionary<string, FrameworkElement> elementMap,
            out Dictionary<FrameworkElement, Rect> elementPositions)
        {
            var panel = new WrapPanel();
            elementMap = new Dictionary<string, FrameworkElement>();
            double maxWidth = 16;
            foreach (var item in items)
            {
                if (elementMap.ContainsKey(item.Text))
                {
                    continue;
                }

                var e = createElement(item.Text);
                e.Measure(new Size(2048, 2048));
                maxWidth = Math.Max(maxWidth, e.DesiredSize.Width);
                elementMap[item.Text] = e;
                panel.Children.Add(e);
            }

            var pw = (int)OptimizeSize(panel, maxWidth, 1024);
            var ph = (int)Math.Min(pw, panel.ActualHeight);

            elementPositions = new Dictionary<FrameworkElement, Rect>();
            foreach (FrameworkElement element in panel.Children)
            {
                var loc = element.TranslatePoint(new Point(0, 0), panel);
                double x = (int)Math.Floor(loc.X);
                double y = (int)Math.Floor(loc.Y);
                double x2 = (int)Math.Ceiling(loc.X + element.RenderSize.Width);
                double y2 = (int)Math.Ceiling(loc.Y + element.RenderSize.Height);
                elementPositions[element] = new Rect(x / pw, y / ph, (x2 - x) / pw, (y2 - y) / ph);
            }

            // Create the bitmap
            var rtb = new RenderTargetBitmap(pw, ph, 96, 96, PixelFormats.Pbgra32);
            rtb.Render(panel);
            rtb.Freeze();
            var ib = new ImageBrush(rtb)
                         {
                             Stretch = Stretch.Fill,
                             ViewboxUnits = BrushMappingMode.RelativeToBoundingBox,
                             Viewbox = new Rect(0, 0, 1, 1),
                             ViewportUnits = BrushMappingMode.Absolute,
                             Viewport = new Rect(0, 0, 1, 1),
                             TileMode = TileMode.None,
                             AlignmentX = AlignmentX.Left,
                             AlignmentY = AlignmentY.Top
                         };

            if (background != null && !background.Equals(Brushes.Transparent))
            {
                var mg = new MaterialGroup();
                mg.Children.Add(new DiffuseMaterial(Brushes.Black));
                mg.Children.Add(new EmissiveMaterial(ib));
                return mg;
            }

            return new DiffuseMaterial(ib) { Color = Colors.White };
        }
        /// <summary>
        /// Prompts with specified colors.
        /// </summary>
        /// <param name="background">The background.</param>
        /// <param name="foreground">The foreground.</param>
        /// <param name="prompt">The prompt text.</param>
        public void Prompt(Brush foreground, Brush background, string prompt)
        {
            TrimCurrentParagraph();

            //currentParagraph.ContentStart.GetOffsetToPosition(currentParagraph.ContentEnd) + PromptPadding.Length;
            Run prmt = new Run(prompt);
            if( !background.Equals( this.Background ) ) prmt.Background = background;
            prmt.Foreground = foreground;
            currentParagraph.Inlines.Add(prmt);

            SetPrompt();
            // toggle undo to prevent "undo"ing past this point.
            IsUndoEnabled = false;
            IsUndoEnabled = true;
            promptInlines = currentParagraph.Inlines.Count;
        }
		static bool Equals(Brush a, Brush b) {
			if (a == b)
				return true;
			if (a == null || b == null)
				return false;
			if (a.Opacity == 0 && b.Opacity == 0)
				return true;

			var sa = a as SolidColorBrush;
			var sb = b as SolidColorBrush;
			if (sa != null && sb != null) {
				var ca = sa.Color;
				var cb = sb.Color;
				return ca == cb || (ca.A == 0 && cb.A == 0);
			}

			return a.Equals(b);
		}
Exemple #7
0
 private bool CompareBrushes(Brush brush1, Brush brush2)
 {
     return !brush1.Equals(brush2);
 }
Exemple #8
0
		private static bool Equals(Brush a, Brush b)
		{
			if (a == null)
				return b == null;
			return a.Equals(b);
		}