public void Get_NewDrawingPixelColor_ReturnsDefaultColor()
        {
            using var drawing = new ImageSharpDrawing(1, 1);
            var color    = drawing.GetPixel(0, 0);
            var expected = default(Color);

            Assert.Equal(expected, color);
        }
        public void SetGet_PixelColor_ReturnsOriginalColor(int drawingHeight, int drawingWidth, int x, int y, Color expected)
        {
            using var drawing = new ImageSharpDrawing(drawingHeight, drawingWidth);

            drawing.SetPixel(x, y, expected);
            var color = drawing.GetPixel(x, y);

            Assert.Equal(expected, color);
        }
        public void Save_Drawing_DrawingSaved(string path)
        {
            var fileSystem = new MockFileSystem();

            using var drawing = new ImageSharpDrawing(10, 10, fileSystem);

            drawing.Save(path);

            Assert.True(fileSystem.FileExists(path));
        }
        public void Save_DisposedDrawing_ThrowsExcpetion()
        {
            var fileSystem = new MockFileSystem();

            using var drawing = new ImageSharpDrawing(10, 10, fileSystem);

            drawing.Dispose();

            var path = "image.png";

            Assert.Throws <ObjectDisposedException>(() => drawing.Save(path));
        }
示例#5
0
        /// <summary> Renders the given scene. </summary>
        public IDrawing Render(Scene scene)
        {
            var drawing   = new ImageSharpDrawing(_screenParameters.Width, _screenParameters.Height);
            var rayTracer = new RayTracer(scene, _renderParameters);

            Parallel.For(0, _screenParameters.Height, (y) =>
            {
                for (var x = 0; x < _screenParameters.Width; ++x)
                {
                    var direction  = _viewportParameters.CameraRotation * _cameraConverter.ScreenToViewport(x, y);
                    var ray        = new Ray(_viewportParameters.CameraPosition, direction);
                    var pixelColor = rayTracer.Trace(ray);

                    drawing.SetPixel(x, y, pixelColor);
                }
            });

            return(drawing);
        }