public async Task CanCreateFullFractal()
        {
            var options = new FractalOptions
            {
                Expression    = "z^3+1",
                PixelSize     = new PixelSize(400, 400),
                DomainSize    = new DomainSize(-5, 5, -5, 5),
                MaxIterations = 50,
                Precision     = 1e-5,
                FillColor     = new Hsv(0, 0, 0),
                Depth         = 15,
                Gradient      = 0.25f,
            };

            var generator = new LocalFractalGenerator(options);
            var result    = await generator.GenerateAsync();

            var image = ImageUtils.GenerateImage(result.Contents);
            var path  = Path.Combine(Directory.GetCurrentDirectory(), "Fractal.png");

            image.Save(path);
            TestContext.AddTestAttachment(path, "Fractal image generated");
        }
Beispiel #2
0
        public static async Task <IActionResult> RunLocally(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            log.LogInformation($"Processor count: {Environment.ProcessorCount}");

            var content = await new StreamReader(req.Body).ReadToEndAsync();

            try
            {
                var options = JsonConvert.DeserializeObject <FractalOptions>(content);

                var generator = new LocalFractalGenerator(options);
                var fractal   = await generator.GenerateAsync();

                var image    = ImageUtils.GenerateImage(fractal.Contents);
                var webImage = image.ToWebImage();
                var response = new FunctionResult
                {
                    ImageSource = webImage.Source,
                    ColorSpecs  = fractal.ColorSpecs.AsHexSpecs().ToList(),
                };

                return(new OkObjectResult(response));
            }
            catch (Exception ex)
            {
                var response = new FunctionResult
                {
                    ErrorMessage = $"{ex.GetType().Name}: {ex.Message}",
                };

                return(new OkObjectResult(response));
            }
        }