Exemple #1
0
 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));
 }
Exemple #2
0
        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);
        }
Exemple #3
0
    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);
            }
        }
    }