예제 #1
0
        public bool CheckFigure(RotationInfo rotationInfo, Vector2Int newPos, bool checkCells)
        {
            RectInt rect = rotationInfo.Bounds;

            rect = rect.Offset(newPos);
            if (!this.Bounds.Contains(rect))
            {
                return(false);
            }

            if (checkCells)
            {
                foreach (Vector2Int point in rotationInfo.Points0)
                {
                    Vector2Int p    = point + newPos;
                    Cell       cell = this.GetCell(p);
                    if (cell == null)
                    {
                        continue;
                    }

                    if (cell.Type == CellType.Fixed)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
예제 #2
0
        public override void CopyFrom(IImageReaderWriter sourceImage,
                                      RectInt sourceImageRect,
                                      int destXOffset,
                                      int destYOffset)
        {
            RectInt destRect = sourceImageRect;

            destRect.Offset(destXOffset, destYOffset);
            RectInt clippedSourceRect = new RectInt();

            if (clippedSourceRect.IntersectRectangles(destRect, m_ClippingRect))
            {
                // move it back relative to the source
                clippedSourceRect.Offset(-destXOffset, -destYOffset);
                base.CopyFrom(sourceImage, clippedSourceRect, destXOffset, destYOffset);
            }
        }
예제 #3
0
        public void CopyFrom(IBitmapSrc sourceImage, RectInt sourceImageRect, int destXOffset, int destYOffset)
        {
            RectInt sourceImageBounds      = sourceImage.GetBounds();
            RectInt clippedSourceImageRect = new RectInt();

            if (clippedSourceImageRect.IntersectRectangles(sourceImageRect, sourceImageBounds))
            {
                RectInt destImageRect = clippedSourceImageRect;
                destImageRect.Offset(destXOffset, destYOffset);
                RectInt destImageBounds      = GetBounds();
                RectInt clippedDestImageRect = new RectInt();
                if (clippedDestImageRect.IntersectRectangles(destImageRect, destImageBounds))
                {
                    // we need to make sure the source is also clipped to the dest. So, we'll copy this back to source and offset it.
                    clippedSourceImageRect = clippedDestImageRect;
                    clippedSourceImageRect.Offset(-destXOffset, -destYOffset);
                    CopyFromNoClipping(sourceImage, clippedSourceImageRect, destXOffset, destYOffset);
                }
            }
        }
예제 #4
0
 public override void CopyFrom(IImageReaderWriter sourceImage,
                RectInt sourceImageRect,
                int destXOffset,
                int destYOffset)
 {
     RectInt destRect = sourceImageRect;
     destRect.Offset(destXOffset, destYOffset);
     RectInt clippedSourceRect = new RectInt();
     if (clippedSourceRect.IntersectRectangles(destRect, m_ClippingRect))
     {
         // move it back relative to the source
         clippedSourceRect.Offset(-destXOffset, -destYOffset);
         base.CopyFrom(sourceImage, clippedSourceRect, destXOffset, destYOffset);
     }
 }