kstanoev
10/30/2014 - 1:20 PM

OnIsColorInvertedChanged

OnIsColorInvertedChanged

public List<IFilter> filters = new List<IFilter>();
public GrayscaleFilter grayFilter = new GrayscaleFilter();
public AutoLevelsFilter autoLevelsFilter = new AutoLevelsFilter();
public NegativeFilter negativeFilter = new NegativeFilter();

...

protected override async void OnIsColorInvertedChanged(bool newValue,bool oldValue)
{
  if (newValue)
  {
    this.IsGreyscale = false;
    this.IsColorFixed = false;
    this.ResetWorkingBitmap();
    filters.Add(negativeFilter);
    this.ModifiedImage = await NokiaRenderer.Render(this.workingBitmap, filters);
  }
  else
  {
    this.ResetWorkingBitmap();
    filters.Clear();
    this.ModifiedImage = this.workingBitmap;
  }
}

...

public static class NokiaRenderer
{
  public async static Task<WriteableBitmap> Render(WriteableBitmap actualImage, List<IFilter> filters)
  {
    var bitmap = actualImage.AsBitmap();
    BitmapImageSource bitmapSource = newBitmapImageSource(bitmap);

    FilterEffect effects = new FilterEffect(bitmapSource);
 
    effects.Filters = filters;
    WriteableBitmapRenderer renderer = newWriteableBitmapRenderer(effects, actualImage);
 
    return await renderer.RenderAsync();
  }
}