anchor.diff:      * animate over time, slowly decreasing that threshold
          */
         if(imageData == null) {
  -          imageData=imageCanvas.context2D.getImageData(0, 0, imageCanvas.width, imageCanvas.height);
             //don't want a clear canvas
             canvas.width = imageCanvas.width;
             canvas.height = imageCanvas.height;
  -         // canvas.context2D.drawImage(imageCanvas,0,0);
  +          debugCanvas.width = imageCanvas.width;
  +          debugCanvas.height = imageCanvas.height;
  +          //canvas.context2D.drawImage(imageCanvas,0,0);
             CanvasElement sacrifice = new CanvasElement(width: imageCanvas.width, height: imageCanvas.height);
  -          coverWithGradient(sacrifice);
  -          canvas.context2D.drawImage(sacrifice,0,0);
  +          coverWithLinearGradient(sacrifice);
  +          debugCanvas.context2D.drawImage(sacrifice,0,0);
  +          debugCanvas.context2D.globalAlpha = 0.4;
  +          debugCanvas.context2D.drawImage(imageCanvas,0,0);
  +          debugCanvas.context2D.globalAlpha = 1.0;
  +          imageData= debugCanvas.context2D.getImageData(0, 0, debugCanvas.width, debugCanvas.height);
  +          outputImageData =canvas.context2D.getImageData(0, 0, canvas.width, canvas.height);
  +
         }
  -
  -
  -
  -  }
  -
  -}
  -
  +      thresholdFunction();
  +      await window.animationFrame;
  +      new Timer(new Duration(milliseconds: 90), () => noise);
  +
  +    }
  +
  +}
  +
  
positive.code: }
  
  class DreamTaint extends DreamDrawer {
      int threshold = 255;
    DreamTaint(CanvasElement image, CanvasElement canvas, int imageWidth, int seed) : super(image, canvas, imageWidth, seed);
  
    @override
    Future<Null> drawSquiggles() async {
        window.alert("HOLY SHIT");
    }
  
    @override
    Future<Null> drawNoise() async {
  
        new Timer(new Duration(milliseconds: 100), () => drawNoise());
    }
  
    //if you give me a canvas i will paint it black and make it gradient
    void coverWithGradient(CanvasElement sacrificeCanvas) {
          //TODO go through each pixel and make it solid black wiht an alpha value that slowly decreases based on y.
        //TODO play around with this later and make it procedural. can be circular or diagnoal or whatever
        sacrificeCanvas.context2D.fillRect(0,0, sacrificeCanvas.width, sacrificeCanvas.height); //make it a black box
  
negative.code: 
  Future<Null> initTaint() async {
      CanvasElement imageCanvas = new CanvasElement(width: image.width, height: image.height);
      CanvasElement debugCanvas = new CanvasElement(width: image.width, height: image.height);
      contents.append(debugCanvas);
      imageCanvas.context2D.drawImage(image,0,0);
      DreamTaint dreamDrawer = new DreamTaint(
          imageCanvas, canvas,debugCanvas,imageWidth, seed);
      dreamDrawer.noise();
      dreamDrawer.drawNoise();
  }
  