/// <summary>
        /// Sets the the memory allocator configured in <see cref="Configuration.MemoryAllocator"/> of <see cref="ImageSharpMiddlewareOptions.Configuration"/>.
        /// </summary>
        /// <param name="builder">The core builder.</param>
        /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
        public static IImageSharpCoreBuilder SetMemoryAllocatorFromMiddlewareOptions(this IImageSharpCoreBuilder builder)
        {
            MemoryAllocator AllocatorResolver(IServiceProvider s) => s.GetRequiredService <IOptions <ImageSharpMiddlewareOptions> >().Value.Configuration.MemoryAllocator;

            builder.SetMemoryAllocator(AllocatorResolver);
            return(builder);
        }
Esempio n. 2
0
        /// <summary>
        /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the default options.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param>
        /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns>
        public static IImageSharpBuilder AddImageSharp(this IServiceCollection services)
        {
            Guard.NotNull(services, nameof(services));

            IImageSharpCoreBuilder builder = AddImageSharpCore(services);

            AddDefaultServices(builder);

            return(new ImageSharpBuilder(builder.Services));
        }
        /// <summary>
        /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the default options.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param>
        /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns>
        public static IImageSharpBuilder AddImageSharp(this IServiceCollection services)
        {
            Guard.NotNull(services, nameof(services));

            services.AddSingleton <IConfigureOptions <ImageSharpMiddlewareOptions>, ImageSharpConfiguration>();

            IImageSharpCoreBuilder builder = AddImageSharpCore(services);

            AddDefaultServices(builder);

            return(new ImageSharpBuilder(builder.Services));
        }
Esempio n. 4
0
        /// <summary>
        /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the given options.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param>
        /// <param name="setupAction">An <see cref="Action{ImageSharpMiddlewareOptions}"/> to configure the provided <see cref="ImageSharpMiddlewareOptions"/>.</param>
        /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns>
        public static IImageSharpBuilder AddImageSharp(this IServiceCollection services, Action <ImageSharpMiddlewareOptions> setupAction)
        {
            Guard.NotNull(services, nameof(services));

            IImageSharpCoreBuilder builder = AddImageSharpCore(services);

            builder.Services.Configure(setupAction);

            AddDefaultServices(builder);

            return(new ImageSharpBuilder(builder.Services));
        }
        /// <summary>
        /// Adds the default service to the service collection
        /// </summary>
        /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services</param>
        private static void AddDefaultServices(IImageSharpCoreBuilder builder)
        {
            builder.SetUriParser <QueryCollectionUriParser>();

            builder.SetCache <PhysicalFileSystemCache>();

            builder.AddResolver <PhysicalFileSystemResolver>();

            builder.AddProcessor <ResizeWebProcessor>()
            .AddProcessor <FormatWebProcessor>()
            .AddProcessor <BackgroundColorWebProcessor>();
        }
Esempio n. 6
0
        /// <summary>
        /// Adds the default service to the service collection.
        /// </summary>
        /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services.</param>
        private static void AddDefaultServices(IImageSharpCoreBuilder builder)
        {
            builder.SetRequestParser <QueryCollectionRequestParser>();

            builder.SetMemoryAllocatorFromMiddlewareOptions();

            builder.SetCache <PhysicalFileSystemCache>();

            builder.SetCacheHash <CacheHash>();

            builder.AddProvider <PhysicalFileSystemProvider>();

            builder.AddProcessor <ResizeWebProcessor>()
            .AddProcessor <FormatWebProcessor>()
            .AddProcessor <BackgroundColorWebProcessor>();
        }
Esempio n. 7
0
        /// <summary>
        /// Adds the default service to the service collection
        /// </summary>
        /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services</param>
        private static void AddDefaultServices(IImageSharpCoreBuilder builder)
        {
            builder.SetRequestParser <QueryCollectionRequestParser>();

            builder.SetBufferManager <PooledBufferManager>();

            builder.SetCache <PhysicalFileSystemCache>();

            builder.SetCacheHash <CacheHash>();

            builder.SetAsyncKeyLock <AsyncKeyLock>();

            builder.AddResolver <PhysicalFileSystemResolver>();

            builder.AddProcessor <ResizeWebProcessor>()
            .AddProcessor <FormatWebProcessor>()
            .AddProcessor <BackgroundColorWebProcessor>();
        }
 /// <summary>
 /// Sets the given <see cref="MemoryAllocator"/> adding it to the service collection.
 /// </summary>
 /// <typeparam name="TMemoryAllocator">The type of class implementing <see cref="MemoryAllocator"/>to add.</typeparam>
 /// <param name="builder">The core builder.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetMemoryAllocator <TMemoryAllocator>(this IImageSharpCoreBuilder builder)
     where TMemoryAllocator : MemoryAllocator
 {
     builder.Services.AddSingleton <MemoryAllocator, TMemoryAllocator>();
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="MemoryAllocator"/> adding it to the service collection.
 /// </summary>
 /// <param name="builder">The core builder.</param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="MemoryAllocator"/>.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetMemoryAllocator(this IImageSharpCoreBuilder builder, Func <IServiceProvider, MemoryAllocator> implementationFactory)
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="IRequestParser"/> adding it to the service collection.
 /// </summary>
 /// <param name="builder">The core builder.</param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IRequestParser"/>.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetRequestParser(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IRequestParser> implementationFactory)
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
Esempio n. 11
0
 /// <summary>
 /// Adds the given <see cref="IImageResolver"/> to the resolver collection within the service collection
 /// </summary>
 /// <typeparam name="TResolver">The type of class implementing <see cref="IImageResolver"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder AddResolver <TResolver>(this IImageSharpCoreBuilder builder)
     where TResolver : class, IImageResolver
 {
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IImageResolver, TResolver>());
     return(builder);
 }
Esempio n. 12
0
 /// <summary>
 /// Sets the given <see cref="IImageCache"/> adding it to the service collection
 /// </summary>
 /// <typeparam name="TCache">The type of class implementing <see cref="IImageCache"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetCache <TCache>(this IImageSharpCoreBuilder builder)
     where TCache : class, IImageCache
 {
     builder.Services.AddSingleton <IImageCache, TCache>();
     return(builder);
 }
Esempio n. 13
0
 /// <summary>
 /// Sets the given <see cref="IUriParser"/> adding it to the service collection
 /// </summary>
 /// <typeparam name="TParser">The type of class implementing <see cref="IUriParser"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetUriParser <TParser>(this IImageSharpCoreBuilder builder)
     where TParser : class, IUriParser
 {
     builder.Services.AddSingleton <IUriParser, TParser>();
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="ICacheHash"/> adding it to the service collection.
 /// </summary>
 /// <typeparam name="TCacheHash">The type of class implementing <see cref="ICacheHash"/>to add.</typeparam>
 /// <param name="builder">The core builder.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetCacheHash <TCacheHash>(this IImageSharpCoreBuilder builder)
     where TCacheHash : class, ICacheHash
 {
     builder.Services.AddSingleton <ICacheHash, TCacheHash>();
     return(builder);
 }
Esempio n. 15
0
 /// <summary>
 /// Sets the given <see cref="IBufferManager"/> adding it to the service collection
 /// </summary>
 /// <typeparam name="TBufferManager">The type of class implementing <see cref="IBufferManager"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetBufferManager <TBufferManager>(this IImageSharpCoreBuilder builder)
     where TBufferManager : class, IBufferManager
 {
     builder.Services.AddSingleton <IBufferManager, TBufferManager>();
     return(builder);
 }
Esempio n. 16
0
 /// <summary>
 /// Adds the given <see cref="IImageWebProcessor"/> to the processor collection within the service collection
 /// </summary>
 /// <typeparam name="TProcessor">The type of class implementing <see cref="IImageWebProcessor"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder AddProcessor <TProcessor>(this IImageSharpCoreBuilder builder)
     where TProcessor : class, IImageWebProcessor
 {
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IImageWebProcessor, TProcessor>());
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="ICacheHash"/> adding it to the service collection.
 /// </summary>
 /// <param name="builder">The core builder.</param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="ICacheHash"/>.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetCacheHash(this IImageSharpCoreBuilder builder, Func <IServiceProvider, ICacheHash> implementationFactory)
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
Esempio n. 18
0
 /// <summary>
 /// Sets the given <see cref="IUriParser"/> adding it to the service collection
 /// </summary>
 /// <typeparam name="TParser">The type of class implementing <see cref="IUriParser"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IUriParser"/>"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetUriParser <TParser>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TParser> implementationFactory)
     where TParser : class, IUriParser
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="IAsyncKeyLock"/> adding it to the service collection.
 /// </summary>
 /// <typeparam name="TLock">The type of class implementing <see cref="IAsyncKeyLock"/>to add.</typeparam>
 /// <param name="builder">The core builder.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetAsyncKeyLock <TLock>(this IImageSharpCoreBuilder builder)
     where TLock : class, IAsyncKeyLock
 {
     builder.Services.AddSingleton <IAsyncKeyLock, TLock>();
     return(builder);
 }
Esempio n. 20
0
 /// <summary>
 /// Sets the given <see cref="IImageCache"/> adding it to the service collection
 /// </summary>
 /// <typeparam name="TCache">The type of class implementing <see cref="IImageCache"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IImageCache"/>"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetCache <TCache>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TCache> implementationFactory)
     where TCache : class, IImageCache
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
 /// <summary>
 /// Sets the given <see cref="IAsyncKeyLock"/> adding it to the service collection.
 /// </summary>
 /// <param name="builder">The core builder.</param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IImageCache"/>.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder SetAsyncKeyLock(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IAsyncKeyLock> implementationFactory)
 {
     builder.Services.AddSingleton(implementationFactory);
     return(builder);
 }
Esempio n. 22
0
 /// <summary>
 /// Adds the given <see cref="IImageResolver"/> to the resolver collection within the service collection
 /// </summary>
 /// <typeparam name="TResolver">The type of class implementing <see cref="IImageResolver"/>to add.</typeparam>
 /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IImageResolver"/>"/></param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder AddResolver <TResolver>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TResolver> implementationFactory)
     where TResolver : class, IImageResolver
 {
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton(implementationFactory));
     return(builder);
 }
 /// <summary>
 /// Adds the given <see cref="IImageWebProcessor"/> to the processor collection within the service collection.
 /// </summary>
 /// <param name="builder">The core builder.</param>
 /// <param name="implementationFactory">The factory method for returning a <see cref="IImageProvider"/>.</param>
 /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns>
 public static IImageSharpCoreBuilder AddProcessor(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IImageWebProcessor> implementationFactory)
 {
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton(implementationFactory));
     return(builder);
 }