Beispiel #1
0
        public IImageConfiguration Clone()
        {
            var config = new ImageConfiguration();

            config.PadSize.With(options => options.To(size => _padSizeConfiguration.Options.Build(size)));

            if (_taskCount != Environment.ProcessorCount)
            {
                config.WithDegreeOfParallelism(_taskCount);
            }
            if (_remapPixelsConfiguration.Delegate != null)
            {
                config.RemapPixels.With(_remapPixelsConfiguration.Delegate);
            }
            if (_shadeColorsConfiguration.Delegate != null)
            {
                config.ShadeColors.With(_shadeColorsConfiguration.Delegate);
            }
            if (_quantizationConfiguration != null)
            {
                config.SetQuantizationConfiguration(_quantizationConfiguration);
            }

            if (_transcodeConfiguration.ColorEncoding != null)
            {
                return(config.Transcode.With(_transcodeConfiguration.ColorEncoding));
            }

            if (_transcodeConfiguration.IndexEncoding == null)
            {
                return(config);
            }

            var indexConfig = config.Transcode.With(_transcodeConfiguration.IndexEncoding);

            return(_transcodePaletteConfiguration.PaletteEncoding != null?
                   indexConfig.TranscodePalette.With(_transcodePaletteConfiguration.PaletteEncoding) :
                       config);
        }