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));
 }
Exemplo n.º 2
0
        public void TestPixelFormatsConvertible()
        {
            ITiffPixelConverterFactory factory = TiffDefaultPixelConverterFactory.Instance;

            foreach (object[] items in GetConvertiblePixelFormatPairs())
            {
                AssertConvertible(factory, (Type)items[0], (Type)items[1]);
            }
        }
Exemplo n.º 3
0
        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;
 }