Exemplo n.º 1
0
        private static PipelineBuilder Start(IPipelineEffect effect)
        {
            switch (effect)
            {
            case BackdropEffect backdrop when backdrop.Source == AcrylicBackgroundSource.Backdrop:
                return(PipelineBuilder.FromBackdrop());

            case BackdropEffect backdrop when backdrop.Source == AcrylicBackgroundSource.HostBackdrop:
                return(PipelineBuilder.FromHostBackdrop());

            case SolidColorEffect color:
                return(PipelineBuilder.FromColor(color.Color));

            case ImageEffect image:
                return(PipelineBuilder.FromImage(image.Uri, image.DpiMode, image.CacheMode));

            case TileEffect tile:
                return(PipelineBuilder.FromTiles(tile.Uri, tile.DpiMode, tile.CacheMode));

            case AcrylicEffect acrylic when acrylic.Source == AcrylicBackgroundSource.Backdrop:
                return(PipelineBuilder.FromBackdropAcrylic(acrylic.Tint, (float)acrylic.TintMix, (float)acrylic.BlurAmount, acrylic.TextureUri));

            case AcrylicEffect acrylic when acrylic.Source == AcrylicBackgroundSource.HostBackdrop:
                return(PipelineBuilder.FromHostBackdropAcrylic(acrylic.Tint, (float)acrylic.TintMix, acrylic.TextureUri));

            default:
                throw new ArgumentException($"Invalid initial pipeline effect: {effect.GetType()}");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Appends an effect to an existing composition pipeline
        /// </summary>
        /// <param name="effect">The <see cref="IPipelineEffect"/> instance to append to the current pipeline</param>
        /// <param name="builder">The target <see cref="PipelineBuilder"/> instance to modify</param>
        /// <returns>The target <see cref="PipelineBuilder"/> instance in use</returns>
        private static PipelineBuilder Append(IPipelineEffect effect, PipelineBuilder builder)
        {
            switch (effect)
            {
            case OpacityEffect opacity:
                return(builder.Opacity((float)opacity.Value));

            case LuminanceToAlphaEffect _:
                return(builder.LuminanceToAlpha());

            case InvertEffect _:
                return(builder.Invert());

            case GrayscaleEffect _:
                return(builder.Grayscale());

            case ExposureEffect exposure:
                return(builder.Exposure((float)exposure.Value));

            case SepiaEffect sepia:
                return(builder.Sepia((float)sepia.Value));

            case ShadeEffect shade:
                return(builder.Shade(shade.Color, (float)shade.Intensity));

            case HueRotationEffect hueRotation:
                return(builder.HueRotation((float)hueRotation.Angle));

            case TintEffect tint:
                return(builder.Tint(tint.Color));

            case TemperatureAndTintEffect temperatureAndTint:
                return(builder.TemperatureAndTint((float)temperatureAndTint.Temperature, (float)temperatureAndTint.Tint));

            case BlurEffect blur:
                return(builder.Blur((float)blur.Value));

            case SaturationEffect saturation:
                return(builder.Saturation((float)saturation.Value));

            case BlendEffect blend:
                return(builder.Blend(Build(blend.Input), (BlendEffectMode)blend.Mode, blend.Placement));

            default:
                throw new ArgumentException($"Invalid pipeline effect: {effect.GetType()}");
            }
        }