public override void Draw(DrawingContext context, Matrix matrix) { if (!this.ShouldDraw) { return; } bool flag = this.AdornerSet.Behavior.Tool is BrushTransformTool; Matrix matrix1 = this.GetCompleteBrushTransformMatrix(true) * matrix; if (flag) { Rect brushBounds = this.BrushBounds; if (brushBounds.Width <= 0.0 || brushBounds.Height <= 0.0) { return; } Pen thinPen = this.ThinPen; System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(brushBounds, matrix1, thinPen.Thickness); context.DrawGeometry((Brush)Brushes.Transparent, thinPen, rectangleGeometry); } else { Pen pen = new Pen((Brush)Brushes.Transparent, 15.0); pen.Freeze(); if (!PlatformTypes.IsInstance(this.PlatformBrush, PlatformTypes.GradientBrush, (ITypeResolver)this.Element.ProjectContext)) { return; } Point startPoint; Point endPoint; this.GetBrushOffsetEndpoints(out startPoint, out endPoint, 13.0, 11.0, matrix); context.DrawLine(pen, startPoint, endPoint); context.DrawLine(this.ThinPen, startPoint, endPoint); } }
protected void UpdateProvisionalContainerHighlight() { if (this.ProvisionalContainer == null) { this.FeedbackAdorner.CloseAdorner(); } else { SceneView activeView = this.ActiveView; BaseFrameworkElement frameworkElement = this.provisionalContainer; this.FeedbackAdorner.Text = string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.ProvisionalDragDropText, new object[1] { (object)frameworkElement.DisplayNameNoTextContent }); DrawingContext context = this.OpenFeedback(); Rect computedTightBounds = frameworkElement.GetComputedTightBounds(); System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(activeView, (SceneElement)frameworkElement, computedTightBounds, 0.0, false); this.DashPen.Thickness = 1.5 / activeView.Zoom; this.WhitePen.Thickness = 1.5 / activeView.Zoom; context.DrawGeometry((Brush)null, this.WhitePen, rectangleGeometry); context.DrawGeometry((Brush)null, this.DashPen, rectangleGeometry); this.FeedbackAdorner.DrawAdorner(context); this.CloseFeedback(); } }
public override void Draw(DrawingContext drawingContext, Matrix matrix) { if (!this.ShouldDraw) { return; } Rect targetBounds = this.TargetBounds; Matrix?additionalTransform = new Matrix?(); ISubElementAdornerSet elementAdornerSet = this.AdornerSet as ISubElementAdornerSet; if (elementAdornerSet != null) { additionalTransform = new Matrix?(elementAdornerSet.TargetMatrix); } System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(this.DesignerContext.ActiveView, this.Element, additionalTransform, targetBounds, MoveAdorner.transparentPen.Thickness, true); drawingContext.DrawGeometry((Brush)null, MoveAdorner.transparentPen, rectangleGeometry); base.Draw(drawingContext, matrix); }
private void DrawFeedback(Point pointBegin, Point pointEnd) { Rect rect = new Rect(pointBegin, pointEnd); this.ToolBehaviorContext.SnappingEngine.UpdateTargetBounds(rect); DrawingContext drawingContext = this.OpenFeedback(); Pen thinPen = FeedbackHelper.GetThinPen(this.ActiveView.Zoom); System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(this.ActiveView, this.ActiveSceneInsertionPoint.SceneElement, rect, thinPen.Thickness, false); drawingContext.DrawGeometry((Brush)null, thinPen, rectangleGeometry); if (!Adorner.NonAffineTransformInParentStack(this.ActiveSceneInsertionPoint.SceneElement)) { Matrix computedTransformToRoot = this.ActiveView.GetComputedTransformToRoot(this.ActiveSceneInsertionPoint.SceneElement); double scale = 1.0 / this.ActiveView.Zoom; SizeAdorner.DrawDimension(drawingContext, ElementLayoutAdornerType.Right, computedTransformToRoot, computedTransformToRoot, thinPen, rect, scale); SizeAdorner.DrawDimension(drawingContext, ElementLayoutAdornerType.Bottom, computedTransformToRoot, computedTransformToRoot, thinPen, rect, scale); } this.CloseFeedback(); }
protected void DrawAdorner(DrawingContext context, Matrix matrix, SceneElement adornedElement, Brush borderBrush, DrawingImage icon, string message) { Rect actualBounds = adornedElement.ViewModel.DefaultView.GetActualBounds(adornedElement.ViewTargetElement); if (actualBounds.IsEmpty) { return; } MatrixTransform matrixTransform = new MatrixTransform(matrix); matrixTransform.Freeze(); System.Windows.Media.Geometry clipGeometry = (System.Windows.Media.Geometry) new RectangleGeometry(actualBounds); clipGeometry.Freeze(); context.PushOpacity(0.5); System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(actualBounds, matrix, 4.0); context.DrawGeometry((Brush)Brushes.White, (Pen)null, rectangleGeometry); context.Pop(); context.PushTransform((Transform)matrixTransform); context.PushClip(clipGeometry); double num1 = 1.0 / this.DesignerContext.ActiveView.Zoom; double num2 = num1 * 12.0; double num3 = num1 * 24.0; Rect rectangle = new Rect(actualBounds.Left + num2, actualBounds.Top + num2, num3, num3); context.DrawImage((ImageSource)icon, rectangle); FontFamily fontFamily = (FontFamily)Application.Current.FindResource((object)SystemFonts.IconFontFamilyKey); double num4 = (double)Application.Current.FindResource((object)SystemFonts.IconFontSizeKey); Typeface typeface = new Typeface(fontFamily, FontStyles.Normal, FontWeights.Normal, FontStretches.Normal); FormattedText formattedText = new FormattedText(message, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, num4 * num1, (Brush)Brushes.Black); formattedText.MaxTextWidth = Math.Min(3579139.0, Math.Max(0.0, actualBounds.Width - num3 - 3.0 * num2)); Point origin = new Point(actualBounds.Left + num3 + 2.0 * num2, actualBounds.Top + num2 + Math.Max(0.0, (num3 - formattedText.Height) / 2.0)); context.DrawText(formattedText, origin); context.Pop(); context.Pop(); context.PushOpacity(0.5); Pen pen = new Pen(borderBrush, 4.0); pen.Freeze(); context.DrawGeometry((Brush)null, pen, rectangleGeometry); context.Pop(); }
public override void Draw(DrawingContext drawingContext, Matrix matrix) { Rect actualBounds = this.Element.ViewModel.DefaultView.GetActualBounds(this.Element.ViewTargetElement); if (actualBounds.IsEmpty) { return; } drawingContext.PushOpacity(0.5); System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(actualBounds, matrix, 4.0); drawingContext.DrawGeometry((Brush)Brushes.Transparent, StaleTypeAdorner.BorderPen, rectangleGeometry); drawingContext.PushTransform((Transform) new MatrixTransform(matrix)); double num1 = 1.0 / this.DesignerContext.ActiveView.Zoom; double num2 = num1 * 12.0; double num3 = num1 * 24.0; Rect rectangle = new Rect(actualBounds.Left + num2, actualBounds.Top + num2, num3, num3); drawingContext.DrawImage((ImageSource)StaleTypeAdorner.ContentDrawing, rectangle); drawingContext.Pop(); drawingContext.Pop(); }
public override void Draw(DrawingContext drawingContext, Matrix matrix) { if (!this.shouldDraw) { return; } Rect rect = this.initialBounds; System.Windows.Media.Geometry rectangleGeometry; if (this.ElementSet.HasHomogeneousRotation) { rectangleGeometry = Adorner.GetTransformedRectangleGeometry(rect, matrix, 1.0); } else { matrix.OffsetX = 0.0; matrix.OffsetY = 0.0; Matrix matrix1 = new Matrix(); Point point = new Point((this.initialBounds.Left + this.initialBounds.Right) * this.initialRenderTransformOrigin.X, (this.initialBounds.Top + this.initialBounds.Bottom) * this.initialRenderTransformOrigin.Y); double angle = this.rotationAmount; if (this.initialSharedTransform.ScaleY < 0.0) { angle = -angle; } if (this.initialSharedTransform.ScaleX < 0.0) { angle = -angle; } matrix1.RotateAt(angle, point.X, point.Y); double zoom = this.DesignerContext.ActiveView.Artboard.Zoom; double num = zoom / this.initialZoom; Matrix matrix2 = new Matrix(); matrix2.Translate(num * this.initialOffset.X, num * this.initialOffset.Y); Point topLeft = this.DesignerContext.ActiveView.Artboard.ArtboardBounds.TopLeft; Matrix matrix3 = new Matrix(1.0, 0.0, 0.0, 1.0, (this.startArtboardOrigin.X - topLeft.X) * zoom, (this.startArtboardOrigin.Y - topLeft.Y) * zoom); rectangleGeometry = Adorner.GetTransformedRectangleGeometry(rect, matrix1 * matrix * matrix2 * matrix3, RotateBoundingBoxAdorner.Thickness); } drawingContext.DrawGeometry((Brush)null, new Pen(this.ActiveBrush, RotateBoundingBoxAdorner.Thickness), rectangleGeometry); }
private void DrawBounds(DrawingContext ctx, Rect bounds, Brush fillBrush, Pen pen) { System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(this.DesignerContext.ActiveView, this.Element, bounds, pen.Thickness, true); ctx.DrawGeometry(fillBrush, pen, rectangleGeometry); }
public override void Draw(DrawingContext drawingContext, Matrix matrix) { if (!this.ShouldDraw) { return; } SceneElementSelectionSet elementSelectionSet = this.DesignerContext.ActiveSceneViewModel.ElementSelectionSet; AdornerLayer adornerLayer = this.DesignerContext.ActiveView.AdornerLayer; Tool adornerOwnerTool = this.DesignerContext.ToolManager.ActiveTool.AdornerOwnerTool; SceneView activeView = this.DesignerContext.ActiveView; Transform transform = activeView.Artboard.CalculateTransformFromContentToArtboard(); bool flag1 = this.ElementSet.AdornsMultipleElements && (adornerOwnerTool.GetSelectionAdornerUsages((SceneElement)null) & SelectionAdornerUsages.ShowBoundingBox) != SelectionAdornerUsages.None; bool flag2 = false; bool flag3 = true; Rect rectangle = new Rect(); foreach (SceneElement element in this.ElementSet.Elements) { IViewObject viewTargetElement = element.ViewTargetElement; if (!(element is Base3DElement) && !element.IsHiddenOrCollapsedOrAncestorHiddenOrCollapsed && (viewTargetElement != null && element.Visual != null)) { Rect actualBounds = this.DesignerContext.ActiveView.GetActualBounds(viewTargetElement); bool flag4 = element == this.ElementSet.PrimaryElement; if ((adornerOwnerTool.GetSelectionAdornerUsages(element) & SelectionAdornerUsages.ShowBoundingBox) != SelectionAdornerUsages.None && this.ElementSet.Elements.Count < 100 || flag4) { Pen pen = flag4 ? this.MediumPen : this.BorderPen; System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(this.DesignerContext.ActiveView, element, actualBounds, pen.Thickness, true); drawingContext.DrawGeometry((Brush)null, pen, rectangleGeometry); } if (flag1) { Rect rect1 = activeView.TransformBounds(element.Visual, (IViewObject)activeView.HitTestRoot, actualBounds); Rect rect2 = transform.TransformBounds(rect1); if (!flag2) { flag2 = Adorner.NonAffineTransformInParentStack(element); } if (flag3) { rectangle = rect2; flag3 = false; } else { rectangle.Union(rect2); } } } } if (!flag1) { return; } if (flag2) { rectangle.Inflate(this.MediumPen.Thickness / 2.0, this.MediumPen.Thickness / 2.0); drawingContext.DrawRectangle((Brush)null, this.MediumPen, rectangle); } else { System.Windows.Media.Geometry rectangleGeometry = Adorner.GetTransformedRectangleGeometry(this.ElementSet.ElementBounds, this.ElementSet.GetTransformMatrixToAdornerLayer(), this.MediumPen.Thickness); drawingContext.DrawGeometry((Brush)null, this.MediumPen, rectangleGeometry); } }