kstanoev
10/30/2014 - 1:24 PM

CustomColorEffects

CustomColorEffects

public class CustomColorEffects : ColorEffectsTool
{
  public List<IFilter> filters = new List<IFilter>();
  public GrayscaleFilter grayFilter = new GrayscaleFilter();
  public AutoLevelsFilter autoLevelsFilter = newAutoLevelsFilter();
  public NegativeFilter negativeFilter = new NegativeFilter();
 
  protected override async void OnIsColorInvertedChanged(boolnewValue, bool oldValue)
  {
    if (newValue)
    {
      this.IsGreyscale = false;
      this.IsColorFixed = false;
      this.ResetWorkingBitmap();
      this.filters.Add(negativeFilter);
      this.ModifiedImage = await NokiaRenderer.Render(this.workingBitmap, filters);
    }
    else
    {
      this.ResetWorkingBitmap();
      this.filters.Clear();
      this.ModifiedImage = this.workingBitmap;
    }
  }
 
  protected override async void OnIsGreyscaleChanged(boolnewValue, bool oldValue)
  {
    if (newValue)
    {
      this.IsColorInverted = false;
      this.IsColorFixed = false;
      this.ResetWorkingBitmap();
      this.filters.Add(grayFilter);
      this.ModifiedImage = await NokiaRenderer.Render(this.workingBitmap, filters);
    }
    else
    {
      this.ResetWorkingBitmap();
      this.filters.Clear();
      this.ModifiedImage = this.workingBitmap;
    }
  }
 
  protected override async void OnIsColorFixedChanged(boolnewValue, bool oldValue)
  {
    if (newValue)
    {
      this.IsColorInverted = false;
      this.IsGreyscale = false;
      this.ResetWorkingBitmap();
      this.filters.Add(autoLevelsFilter);
      this.ModifiedImage = await NokiaRenderer.Render(this.workingBitmap, filters);
    }
    else
    {
      this.ResetWorkingBitmap();
      this.filters.Clear();
      this.ModifiedImage = this.workingBitmap;
    }
  }
 
  protected override async Task<WriteableBitmap> ApplyCore(WriteableBitmap actualImage)
  {
    return await NokiaRenderer.Render(actualImage,this.filters);
  }
}