Advertisement
Guest User

processor

a guest
Jan 5th, 2014
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.38 KB | None | 0 0
  1. using ImageProcessor;
  2. using ImageProcessor.Interfaces;
  3. using System;
  4. using System.Threading.Tasks;
  5. using Windows.Storage;
  6. using Windows.UI.Xaml.Media;
  7.  
  8. namespace ImageProcessorTDD
  9. {
  10.     public class FilteredImageProvider : IDisposable
  11.     {
  12.         public event Action ImageSourceChangedEvent;
  13.         GPUImage currentImage;
  14.         SharpDXRenderer renderer;
  15.         FilterContainer filterContainer;
  16.         ImageGPULoaderFactory loaderFactory;
  17.  
  18.         public FilteredImageProvider()
  19.         {
  20.             this.renderer = new SharpDXRenderer();
  21.             this.filterContainer = new FilterContainer();
  22.             this.loaderFactory = new ImageGPULoaderFactory();
  23.         }
  24.  
  25.         public ImageSource Image
  26.         {
  27.             get { return renderer.GetRendererSource(); }
  28.         }
  29.  
  30.         public async Task LoadFromFile(IStorageFile sourceFile)
  31.         {
  32.             var imageLoader = loaderFactory.GetImageLoader(sourceFile);
  33.  
  34.             if (currentImage != null)
  35.                 currentImage.Dispose();
  36.  
  37.             currentImage = await imageLoader.LoadImage();
  38.             renderer.Load(currentImage);
  39.             ImageSourceChangedEvent();
  40.         }
  41.  
  42.         public async Task SaveToFile(IStorageFile destinyFile)
  43.         {
  44.             var imageSaver = loaderFactory.GetImageLoader(destinyFile);
  45.             var deviceManager = renderer.GetDeviceManager();
  46.             await imageSaver.SaveImage(currentImage, deviceManager);
  47.         }
  48.  
  49.         public void Render()
  50.         {
  51.             var filterCompilator = new FilterCompilator();
  52.             var renderedImage = currentImage.GetImageAsEffect();
  53.             var compiledEffect = filterCompilator.CompileFiltersToEffect(renderedImage, filterContainer);
  54.  
  55.             renderer.Render(compiledEffect);
  56.         }
  57.  
  58.         public void AddFilter(IFilter filter)
  59.         {
  60.             filterContainer.AddFilter(filter);
  61.         }
  62.  
  63.         public void RemoveFilter(IFilter filter)
  64.         {
  65.             filterContainer.RemoveFilter(filter);
  66.         }
  67.  
  68.         public void Undo()
  69.         {
  70.             filterContainer.Undo();
  71.         }
  72.  
  73.         public void Redo()
  74.         {
  75.             filterContainer.Redo();
  76.         }
  77.  
  78.  
  79.         public void Dispose()
  80.         {
  81.             if (currentImage != null)
  82.                 currentImage.Dispose();
  83.             renderer.Dispose();
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement