public void TestSetNewImage()
        {
            var imageSetter   = new ImageSetterManipulator();
            var originalImage = imageSetter.ManipulatedImage;

            var newImage = new CodedImage {
                Size = new Size(5, 5)
            };

            int[] newPixels, manipulatedPixels;
            using (newImage.LockPixels(out newPixels))
            {
                for (int i = 0; i < newPixels.Length; i++)
                {
                    newPixels[i] = i;
                }
            }

            imageSetter.SetNewImage(newImage);

            Assert.AreSame(originalImage, imageSetter.SourceImage, "Source image still should be same original object.");
            Assert.AreSame(originalImage, imageSetter.ManipulatedImage, "Manipulated image still should be same original object.");
            Assert.AreEqual(newImage.Size, imageSetter.ManipulatedImage.Size);

            using (newImage.LockPixels(out newPixels))
                using (imageSetter.ManipulatedImage.LockPixels(out manipulatedPixels))
                {
                    Assert.AreEqual(newPixels.Length, manipulatedPixels.Length);
                    for (int i = 0; i < newPixels.Length; i++)
                    {
                        Assert.AreEqual(newPixels[i], manipulatedPixels[i], string.Format("Pixels in position {0} should be same", i));
                    }
                }
        }
Esempio n. 2
0
        public void TestSetNewImage()
        {
            var controller = new ImageSetterController(new ImageSetterManipulator());

            var newImage = new CodedImage {
                Size = new Size(5, 5)
            };

            int[] newPixels, manipulatedPixels;
            using (newImage.LockPixels(out newPixels))
            {
                for (int i = 0; i < newPixels.Length; i++)
                {
                    newPixels[i] = i;
                }
            }

            controller.SetNewImage(newImage);

            Assert.AreEqual(newImage.Size, controller.Manipulator.ManipulatedImage.Size);

            using (newImage.LockPixels(out newPixels))
                using (controller.Manipulator.ManipulatedImage.LockPixels(out manipulatedPixels))
                {
                    Assert.AreEqual(newPixels.Length, manipulatedPixels.Length);
                    for (int i = 0; i < newPixels.Length; i++)
                    {
                        Assert.AreEqual(newPixels[i], manipulatedPixels[i], string.Format("Pixels in position {0} should be same", i));
                    }
                }
        }
        public void TestCropRect()
        {
            var srcImage = new CodedImage {
                Size = new Size(5, 5)
            };

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = i;
                }
            }

            var cropper = new ImageCropManipulator(srcImage);

            cropper.CropRect(new Rectangle(2, 1, 2, 3));
            var dstImage = cropper.ManipulatedImage;

            Assert.AreEqual(new Size(2, 3), dstImage.Size);
            using (dstImage.LockPixels(out pixels))
            {
                Assert.AreEqual(6, pixels.Length);
                Assert.AreEqual(7, pixels[0]);
                Assert.AreEqual(8, pixels[1]);
                Assert.AreEqual(12, pixels[2]);
                Assert.AreEqual(13, pixels[3]);
                Assert.AreEqual(17, pixels[4]);
                Assert.AreEqual(18, pixels[5]);
            }
        }
Esempio n. 4
0
        public void TestFlipHorizontally()
        {
            var srcImage = new CodedImage {
                Size = new Size(3, 2)
            };

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = i;
                }
            }

            var rotator = new ImageRotateManipulator(srcImage);

            rotator.FlipHorizontally();
            var dstImage = rotator.ManipulatedImage;

            Assert.AreEqual(new Size(3, 2), dstImage.Size);
            using (dstImage.LockPixels(out pixels))
            {
                Assert.AreEqual(2, pixels[0]);
                Assert.AreEqual(1, pixels[1]);
                Assert.AreEqual(0, pixels[2]);
                Assert.AreEqual(5, pixels[3]);
                Assert.AreEqual(4, pixels[4]);
                Assert.AreEqual(3, pixels[5]);
            }
        }
        public void TestCropArt()
        {
            var srcImage = new CodedImage {
                Size = new Size(10, 10)
            };

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = 100;
                }
            }

            var cropper = new ImageCropManipulator(srcImage);

            cropper.CropArc(new Rectangle(1, 1, 8, 8));
            var dstImage = cropper.ManipulatedImage;

            dstImage.CompletePalette();

            Assert.AreEqual(new Size(8, 8), dstImage.Size);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[0, 0]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[0, 7]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[7, 0]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[7, 7]);
            Assert.AreEqual(new CodedColor(100), dstImage[4, 4], "Some point in the centre");
        }
Esempio n. 6
0
        public void TestShift()
        {
            var sourceImage = new CodedImage {
                Size = new Size(200, 150)
            };

            int[] sourcePixels;
            using (sourceImage.LockPixels(out sourcePixels))
            {
                for (int i = 0; i < sourcePixels.Length; i++)
                {
                    sourcePixels[i] = i;
                }
            }

            var visualZoomController = new VisualZoomController(sourceImage, new Size(60, 50));

            visualZoomController.ZoomPercent = 100;

            visualZoomController.OnTouched(new Point(20, 20));
            visualZoomController.OnShift(new Point(40, 30));

            Assert.AreEqual(new Rectangle(0, 0, 60, 50), visualZoomController.VisualImageFrame, "Frame should not be moved beyond left-top edges.");

            visualZoomController.OnShift(new Point(30, 25));

            Assert.AreEqual(new Rectangle(10, 5, 60, 50), visualZoomController.VisualImageFrame, "Frame should be shifted on distance (10, 5).");
            AssertVisualImageFrameForZoom100(visualZoomController.VisualImage, visualZoomController.VisualImageFrame, sourceImage.Size);

            visualZoomController.OnShift(new Point(-200, -150));

            Assert.AreEqual(new Rectangle(140, 100, 60, 50), visualZoomController.VisualImageFrame, "Frame should not be moved beyond right-bottom edges.");
            AssertVisualImageFrameForZoom100(visualZoomController.VisualImage, visualZoomController.VisualImageFrame, sourceImage.Size);
        }
 public void SetNewImage(CodedImage newImage)
 {
     ManipulatedImage.Size = newImage.Size;
     int[] sourcePixels, manipulatedPixels;
     using (newImage.LockPixels(out sourcePixels))
         using (ManipulatedImage.LockPixels(out manipulatedPixels))
         {
             sourcePixels.CopyTo(manipulatedPixels, 0);
         }
     ManipulatedImage.SourceImageFileName = newImage.SourceImageFileName;
     OnImageChanged();
 }
Esempio n. 8
0
 static string PixelsToString(CodedImage image)
 {
     int[] pixels;
     using (image.LockPixels(out pixels))
     {
         StringBuilder sb = new StringBuilder(pixels.Length * 8);
         for (int i = 0; i < pixels.Length; i++)
         {
             sb.Append(pixels[i].ToString("X8"));
         }
         return(sb.ToString());
     }
 }
Esempio n. 9
0
        CodedImage CreateSourceImage()
        {
            var sourceImage = new CodedImage {
                Size = new Size(200, 150)
            };

            int[] sourcePixels;
            using (sourceImage.LockPixels(out sourcePixels))
            {
                for (int i = 0; i < sourcePixels.Length; i++)
                {
                    sourcePixels[i] = i;
                }
            }
            return(sourceImage);
        }
        public void TestCallManipulations()
        {
            var srcImage = new CodedImage {
                Size = new Size(10, 10)
            };

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = i;
                }
            }

            var cropper = new ImageCropController(new ImageCropManipulator(srcImage));

            cropper.CropKind = ImageCropper.CropKind.Rectangle;
            cropper.CropRect = new Rectangle(1, 2, 8, 6);
            var dstImage = cropper.Manipulator.ManipulatedImage;

            Assert.AreEqual(new Size(8, 6), dstImage.Size);
            using (dstImage.LockPixels(out pixels))
            {
                Assert.AreEqual(cropper.CropRect.Width * cropper.CropRect.Height, pixels.Length);

                var i = 0;
                for (int y = cropper.CropRect.Top; y < cropper.CropRect.Top + cropper.CropRect.Height; y++)
                {
                    for (int x = cropper.CropRect.Left; x < cropper.CropRect.Left + cropper.CropRect.Width; x++)
                    {
                        Assert.AreEqual(y * srcImage.Size.Width + x, pixels[i], string.Format("Pixels in position {0} should be same.", i));
                        i++;
                    }
                }
            }

            cropper.CropKind = ImageCropper.CropKind.Arc;
            dstImage.CompletePalette();
            Assert.AreEqual(new Size(8, 6), dstImage.Size);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[0, 0]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[0, 5]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[7, 0]);
            Assert.AreEqual(new CodedColor(255, 255, 255), dstImage[7, 5]);
            Assert.AreNotEqual(new CodedColor(255, 255, 255), dstImage[4, 3], "Some point in the centre");
        }
Esempio n. 11
0
        void AssertVisualImageFrameForZoom100(CodedImage visualImage, Rectangle visualImageFrame, Size sourceImageSize)
        {
            int[] visualPixels;
            using (visualImage.LockPixels(out visualPixels))
            {
                for (int y = visualImageFrame.Top; y < visualImageFrame.BottomExclusive; y++)
                {
                    for (int x = visualImageFrame.Left; x < visualImageFrame.RightExclusive; x++)
                    {
                        var sourceIndex = y * sourceImageSize.Width + x;
                        var visualIndex = (y - visualImageFrame.Top) * visualImageFrame.Width + (x - visualImageFrame.Left);

                        Assert.AreEqual(sourceIndex, visualPixels[visualIndex]);
                    }
                }
            }
        }
Esempio n. 12
0
            protected override CodedImage LoadImageCore(string fileName)
            {
                var size  = TestSize.Width > 0 && TestSize.Height > 0 ? TestSize : new Size(1, 1);
                var image = new CodedImage {
                    Size = size
                };

                int[] pixels;
                using (image.LockPixels(out pixels))
                {
                    for (var i = 0; i < pixels.Length; i++)
                    {
                        pixels[i] = TestColor;
                    }
                }

                return(image);
            }
Esempio n. 13
0
        public void TestUpdateVisualImageCore()
        {
            var sourceImage = new CodedImage {
                Size = new Size(80, 60)
            };

            int[] sourcePixels;
            using (sourceImage.LockPixels(out sourcePixels))
            {
                for (int i = 0; i < sourcePixels.Length; i++)
                {
                    sourcePixels[i] = 0x00FF7700;
                }
            }

            var cropController             = new ImageCropController(new ImageCropManipulator(sourceImage));
            var visualZoomedCropController = new VisualZoomCropController(cropController, sourceImage.Size);             // To keep simple without points translation

            Assert.AreEqual(100, visualZoomedCropController.ZoomPercent, "Precondition.");

            using (visualZoomedCropController.SuspendUpdateVisualImage())
            {
                visualZoomedCropController.CropKind = ImageCropper.CropKind.Rectangle;
                visualZoomedCropController.SetCropRectForTest(new Rectangle(10, 10, 55, 35));
                visualZoomedCropController.UpdateVisualImage();
            }

            AssertVisualColor(visualZoomedCropController, 0x00FF7700, "Should be source color.", new Point(30, 20), new Point(40, 30));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700.HalfToneLow(), "Should be darkened color on sizers.", new Point(10, 10), new Point(35, 10), new Point(65, 10), new Point(10, 25), new Point(65, 10), new Point(10, 45), new Point(35, 45), new Point(65, 45));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700.ThreeQuarterToneHigh(), "Should be faded color outside crop region.", new Point(0, 0), new Point(70, 50));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700, "Should be source color in corner of rectangle.", new Point(16, 10), new Point(10, 16));

            using (visualZoomedCropController.SuspendUpdateVisualImage())
            {
                visualZoomedCropController.CropKind = ImageCropper.CropKind.Arc;
                visualZoomedCropController.UpdateVisualImage();
            }

            AssertVisualColor(visualZoomedCropController, 0x00FF7700, "Should be source color.", new Point(30, 20), new Point(40, 30));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700.HalfToneLow(), "Should be darkened color on sizers.", new Point(10, 10), new Point(35, 10), new Point(65, 10), new Point(10, 25), new Point(65, 25), new Point(10, 45), new Point(35, 45), new Point(65, 45));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700.ThreeQuarterToneHigh(), "Should be faded color outside crop region.", new Point(0, 0), new Point(70, 50));
            AssertVisualColor(visualZoomedCropController, 0x00FF7700.ThreeQuarterToneHigh(), "Should be faded color in corner of arc.", new Point(16, 10), new Point(10, 16));
        }
Esempio n. 14
0
        public override void TestRestoreManipulationsCore()
        {
            var srcImage = new CodedImage {
                Size = new Size(3, 2)
            };

            srcImage.CompletePalette();
            Assert.AreEqual(1, srcImage.Palette.Count, "Precondition - there should be one color for #00000000.");

            var symboler = new ImageSymbolsManipulator(srcImage);

            Assert.AreSame(symboler.SourceImage, symboler.ManipulatedImage);

            var font = SAEResources.GetAllFonts().First();

            symboler.ApplySymbols(new[] { 'x' }, font);

            Assert.AreEqual('x', srcImage.Palette.First <CodedColor>().SymbolChar);

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = 0x00ffffff;
                }
            }
            srcImage.CompletePalette();
            srcImage.Palette.SymbolsFont = "abc";

            Assert.AreEqual(1, srcImage.Palette.Count, "There should be one color for #00ffffff.");
            Assert.AreEqual(' ', srcImage.Palette.First <CodedColor>().SymbolChar, "Space should be default symbol for new colors.");
            Assert.AreNotEqual(font.Name, srcImage.Palette.SymbolsFont);

            symboler.RestoreManipulations();

            Assert.AreEqual('x', srcImage.Palette.First <CodedColor>().SymbolChar);
            Assert.AreEqual(font.Name, srcImage.Palette.SymbolsFont);
        }
Esempio n. 15
0
        public void TestApplySymbols()
        {
            var srcImage = new CodedImage {
                Size = new Size(3, 2)
            };

            int[] pixels;
            using (srcImage.LockPixels(out pixels))
            {
                for (int i = 0; i < pixels.Length; i++)
                {
                    pixels[i] = i % 3;
                }
            }
            srcImage.CompletePalette();

            Assert.AreEqual(3, srcImage.Palette.Count, "Precondition - there should be 3 colors.");

            var symboler = new ImageSymbolsManipulator(srcImage);

            Assert.AreSame(symboler.SourceImage, symboler.ManipulatedImage);

            var font = SAEResources.GetAllFonts().First();

            symboler.ApplySymbols(new[] { ' ', '.', 'X' }, font);

            Assert.AreEqual(font.Name, srcImage.Palette.SymbolsFont);

            var colors = srcImage.Palette.OrderByDarknes(true).Cast <CodedColor>().ToArray();

            Assert.AreEqual(3, colors.Length);
            Assert.AreEqual(2, colors[0].Argb);
            Assert.AreEqual(' ', colors[0].SymbolChar);
            Assert.AreEqual(1, colors[1].Argb);
            Assert.AreEqual('.', colors[1].SymbolChar);
            Assert.AreEqual(0, colors[2].Argb);
            Assert.AreEqual('X', colors[2].SymbolChar);
        }