public static bool AreEqual(RotatedRectangleF rect1, RotatedRectangleF rect2, double tolerance = 0) { return(Utils.EqualsOfFloatNumbers(rect1.CenterX, rect2.CenterX, tolerance) && Utils.EqualsOfFloatNumbers(rect1.CenterY, rect2.CenterY, tolerance) && Utils.EqualsOfFloatNumbers(rect1.Width, rect2.Width, tolerance) && Utils.EqualsOfFloatNumbers(rect1.Height, rect2.Height, tolerance) && Utils.EqualsOfFloatNumbers(rect1.Angle, rect2.Angle, tolerance)); }
public bool IntersectsWith(RotatedRectangleF rect) { var thisRect = Clone(); var otherRect = rect.Clone(); if (Angle != 0) { var angle = thisRect.Angle; thisRect.Angle = 0; var center = otherRect.Center; center.RotateAt(-angle, thisRect.Center); otherRect.Center = center; otherRect.Angle -= angle; } var thisEdges = new PointF[] { thisRect.GetLeftTopEdge(), thisRect.GetRigthTopEdge(), thisRect.GetRightBottomEdge(), thisRect.GetLeftBottomEdge() }; var otherEdges = new PointF[] { otherRect.GetLeftTopEdge(), otherRect.GetRigthTopEdge(), otherRect.GetRightBottomEdge(), otherRect.GetLeftBottomEdge() }; var firstProjectionIntersection = CheckProjectionIntersection(thisEdges, otherEdges); var secondProjectionIntersection = true; if (firstProjectionIntersection && Angle != rect.Angle) { thisRect = Clone(); otherRect = rect.Clone(); var angle = otherRect.Angle; otherRect.Angle = 0; var center = thisRect.Center; center.RotateAt(-angle, otherRect.Center); thisRect.Center = center; thisRect.Angle -= angle; thisEdges = new PointF[] { thisRect.GetLeftTopEdge(), thisRect.GetRigthTopEdge(), thisRect.GetRightBottomEdge(), thisRect.GetLeftBottomEdge() }; otherEdges = new PointF[] { otherRect.GetLeftTopEdge(), otherRect.GetRigthTopEdge(), otherRect.GetRightBottomEdge(), otherRect.GetLeftBottomEdge() }; secondProjectionIntersection = CheckProjectionIntersection(thisEdges, otherEdges); } return(firstProjectionIntersection && secondProjectionIntersection); }
public static string CreateImageVObject(string imageId) { string fileName = Array.Find(Directory.GetFiles(_imageFolder, "*.jpg"), delegate(string s) { return(s.GetHashCode().ToString() == imageId); }); if (fileName == null) { fileName = Array.Find(Directory.GetFiles(_imageFolder, "*.png"), delegate(string s) { return(s.GetHashCode().ToString() == imageId); }); } ImageVObject vo = new ImageVObject(new FileInfo(fileName)); //proportional resize to "defaultImageSize"x"defaultImageSize" Aurigma.GraphicsMill.AjaxControls.VectorObjects.Math.RotatedRectangleF r = vo.Rectangle; float dx = defaultImageSize / r.Width; float dy = defaultImageSize / r.Height; float d = dx < dy ? dx : dy; r.Width = d * r.Width; r.Height = d * r.Height; r.Location = new Aurigma.GraphicsMill.AjaxControls.VectorObjects.Math.PointF(2, 2); vo.Rectangle = r; vo.FillColor = System.Drawing.Color.Transparent; //proportional resize only vo.Permissions.AllowArbitraryResize = false; vo.Permissions.AllowRotate = false; // Create thumbnail to show in the layers list vo.Tag = GenerateThumbnail(fileName); return(vo.Data); }
private void LoadPhoto() { _photoLayer.VObjects.Clear(); if (!string.IsNullOrEmpty(this.BackgroundImage)) { if (File.Exists(this.BackgroundImage)) { Size imageSize; float hRes, vRes; Common.GetImageSize(this.BackgroundImage, out imageSize, out hRes, out vRes); _canvasViewer.Canvas.WorkspaceHeight = Common.ConvertPixelsToPoints(vRes, imageSize.Height); _canvasViewer.Canvas.WorkspaceWidth = Common.ConvertPixelsToPoints(hRes, imageSize.Width); //we change canvas size, so we need update zoom to save ZoomMode _canvasViewer.ZoomMode = _canvasViewer.ZoomMode; ImageVObject vo = new ImageVObject(new FileInfo(this.BackgroundImage)); vo.BorderWidth = 0; vo.Locked = true; Aurigma.GraphicsMill.AjaxControls.VectorObjects.Math.RotatedRectangleF r = vo.Rectangle; r.Width = _canvasViewer.Canvas.WorkspaceWidth; r.Height = _canvasViewer.Canvas.WorkspaceHeight; r.Location = new Aurigma.GraphicsMill.AjaxControls.VectorObjects.Math.PointF(0, 0); vo.Rectangle = r; _photoLayer.VObjects.Insert(0, vo); } else { throw new FileNotFoundException("Image file not found.", this.BackgroundImage); } } }