internal static string AsExtension(this ZZMapsImageFormat format) => format switch {
private IPropagatorBlock <RenderedSceneTile <TPixel>, EncodedSceneTile> CreateImageEncoding <TPixel>(ZZMapsImageFormat format, ExecutionDataflowBlockOptions dataflowOptions, ProgressStep?progressStep) where TPixel : unmanaged, IPixel <TPixel> { IImageEncoder encoder = format switch { ZZMapsImageFormat.Png => new PngEncoder() { CompressionLevel = (PngCompressionLevel)Math.Clamp(options.PNGCompression, (int)PngCompressionLevel.BestSpeed, (int)PngCompressionLevel.BestCompression) }, ZZMapsImageFormat.Jpeg => new JpegEncoder() { Quality = Math.Clamp(options.JPEGQuality, 0, 100) }, _ => throw new NotSupportedException($"Unsupported image format {format}") }; return(new TransformBlock <RenderedSceneTile <TPixel>, EncodedSceneTile>(renderedTile => { var stream = new MemoryStream(); encoder.Encode(renderedTile.Image, stream); stream.Position = 0; progressStep?.Increment(); return new EncodedSceneTile(renderedTile.SceneName, renderedTile.Layer, renderedTile.TileID, stream); }, dataflowOptions)); }