private void Register <TSource, TDestination>(ITiffPixelConverterFactory factory) where TSource : unmanaged where TDestination : unmanaged { if (!factory.IsConvertible <TSource, TDestination>()) { throw new InvalidOperationException(); } _factories.Add(new ConverterFactoryDescriptor(typeof(TSource), typeof(TDestination), factory)); }
public void TestPixelFormatsConvertible() { ITiffPixelConverterFactory factory = TiffDefaultPixelConverterFactory.Instance; foreach (object[] items in GetConvertiblePixelFormatPairs()) { AssertConvertible(factory, (Type)items[0], (Type)items[1]); } }
private static void AssertConvertible(ITiffPixelConverterFactory factory, Type source, Type destination) { MethodInfo isConvertibleMethod = typeof(ITiffPixelConverterFactory).GetMethod("IsConvertible").MakeGenericMethod(source, destination); object isConvertibleResult = isConvertibleMethod.Invoke(factory, null); Assert.IsType <bool>(isConvertibleResult); Assert.True((bool)isConvertibleResult); ConstructorInfo emptyPixelBufferConstructor = typeof(EmptyPixelBuffer <>).MakeGenericType(destination).GetConstructor(Array.Empty <Type>()); object pixelBuffer = emptyPixelBufferConstructor.Invoke(null); MethodInfo createMethod = typeof(ITiffPixelConverterFactory).GetMethod("CreateConverter").MakeGenericMethod(source, destination); object createResult = createMethod.Invoke(factory, new object[] { pixelBuffer }); Assert.NotNull(createResult); }
public static ITiffPixelConverterFactory Create <TSource, TIntermediate, TDestination>(ITiffPixelConverterFactory factory1, ITiffPixelConverterFactory factory2) where TSource : unmanaged where TIntermediate : unmanaged where TDestination : unmanaged { return(new TiffChainedPixelConverterFactory <TSource, TIntermediate, TDestination>(factory1, factory2)); }
public static ITiffPixelConverterFactory Create <TSource, TIntermediate1, TIntermediate2, TDestination>(ITiffPixelConverterFactory factory1, ITiffPixelConverterFactory factory2, ITiffPixelConverterFactory factory3) where TSource : unmanaged where TIntermediate1 : unmanaged where TIntermediate2 : unmanaged where TDestination : unmanaged { var intermediateFactory = new TiffChainedPixelConverterFactory <TSource, TIntermediate1, TIntermediate2>(factory1, factory2); return(new TiffChainedPixelConverterFactory <TSource, TIntermediate2, TDestination>(intermediateFactory, factory3)); }
public ConverterFactoryDescriptor(Type sourceType, Type destinationType, ITiffPixelConverterFactory converterFactory) { SourceType = sourceType; DestinationType = destinationType; ConverterFactory = converterFactory; }