Ejemplo n.º 1
0
 CodedColor GetPixelColor(int x, int y, int imageIndex)
 {
     if (InsertedBlock != null && SelectedRect.ContainsPoint(new Point(x, y)) &&
         x < InsertedBlock.Size.Width + SelectedRect.Left && y < InsertedBlock.Size.Height + SelectedRect.Top)
     {
         return(InsertedBlock[x - SelectedRect.Left, y - SelectedRect.Top]);
     }
     else
     {
         return(Image.Palette[Image.Pixels[imageIndex]]);
     }
 }
 protected override void OnTouchedCore(Point imagePoint)
 {
     if (MouseMode == MouseActionMode.Shift)
     {
         base.OnTouchedCore(imagePoint);
     }
     else if (MouseMode == MouseActionMode.Pen)
     {
         suspendImageChangedEventOnTouch = true;
         Pen(CellFromImagePoint(imagePoint));
     }
     else if (MouseMode == MouseActionMode.Fill)
     {
         Fill(CellFromImagePoint(imagePoint));
     }
     else if (MouseMode == MouseActionMode.Select)
     {
         touchedPointerStyle = GetTouchPointerStyleCore(imagePoint);                 // Should be saved calculated first
         touchedPoint        = GetTouchPoint(imagePoint);
         var point = touchedCell = CellFromImagePoint(imagePoint);
         if (point.X >= 0 && point.X < SourceImage.Size.Width && point.Y >= 0 && point.Y < SourceImage.Size.Height)
         {
             if (touchedPoint == VisualZoomCropController.TouchPoint.None || SelectedRect.Width == 0 || SelectedRect.Height == 0)
             {
                 SelectedRect = new Rectangle(point.X, point.Y, 1, 1);
             }
         }
     }
     else if (MouseMode == MouseActionMode.MoveSelection)
     {
         var cellPoint = CellFromImagePoint(imagePoint);
         if (!SelectedRect.ContainsPoint(cellPoint))
         {
             FinishMoveSelection();
         }
         else
         {
             initialTouchImagePoint = cellPoint;
         }
     }
 }
Ejemplo n.º 3
0
 // Use this for initialization
 void Start()
 {
     selectedRect = ArCam.GetComponent <SelectedRect>();
     rectXform    = rawImage.GetComponent <RectTransform>();
 }
        protected override TouchPointerStyle GetTouchPointerStyleCore(Point imagePoint)
        {
            var point = CellFromImagePoint(imagePoint);

            if (point.X >= 0 && point.X < SourceImage.Size.Width && point.Y >= 0 && point.Y < SourceImage.Size.Height)
            {
                if (MouseMode == MouseActionMode.MoveSelection)
                {
                    if (SelectedRect.ContainsPoint(point))
                    {
                        return(TouchPointerStyle.Shift);
                    }
                }
                else if (MouseMode == MouseActionMode.Select)
                {
                    if (IsTouching)
                    {
                        return(touchedPointerStyle);
                    }

                    if (SelectedRect.Width > 0 && SelectedRect.Height > 0)
                    {
                        var imageRectLeftTop     = ImageFromCellPoint(new Point(SelectedRect.Left, SelectedRect.Top));
                        var imageRectRightBottom = ImageFromCellPoint(new Point(SelectedRect.RightExclusive, SelectedRect.BottomExclusive));

                        if (IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectLeftTop.X, imageRectLeftTop.Y) ||
                            IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectRightBottom.X, imageRectRightBottom.Y))
                        {
                            return(TouchPointerStyle.ResizeLeftTop_RightBottom);
                        }
                        if (IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectLeftTop.X, imageRectRightBottom.Y) ||
                            IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectRightBottom.X, imageRectLeftTop.Y))
                        {
                            return(TouchPointerStyle.ResizeRightTop_LeftBottom);
                        }

                        var midX = (imageRectLeftTop.X + imageRectRightBottom.X) / 2;
                        var midY = (imageRectLeftTop.Y + imageRectRightBottom.Y) / 2;

                        if (IsInsideRadius(imagePoint.X, imagePoint.Y, midX, imageRectLeftTop.Y) ||
                            IsInsideRadius(imagePoint.X, imagePoint.Y, midX, imageRectRightBottom.Y))
                        {
                            return(TouchPointerStyle.ResizeVertical);
                        }
                        if (IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectLeftTop.X, midY) ||
                            IsInsideRadius(imagePoint.X, imagePoint.Y, imageRectRightBottom.X, midY))
                        {
                            return(TouchPointerStyle.ResizeHorizontal);
                        }

                        if (SelectedRect.ContainsPoint(point))
                        {
                            return(TouchPointerStyle.ResizeAll);
                        }
                    }

                    return(TouchPointerStyle.Cross);
                }
            }

            return(base.GetTouchPointerStyleCore(imagePoint));
        }