 
 /// A delegate for the Editor.
 public protocol EditorDelegate: class {
+    
+    /**
+     A method that is called any time the editor makes a modification to the screenshot.
+     
+     - parameter editor: The editor resonsible for editing the image.
+     - parameter screenshot: The edited image of a screenshot.
+     */
+    func editorDidMakeChange(_ editor: Editor, to screenshot: UIImage)
+    
+    /**
+     A method that is called with an image to ask if the editor should be dismissed.
+     
+     - parameter editor: The editor resonsible for editing the image.
+     - parameter screenshot: The edited image of a screenshot, after editing is complete.
+     
+     - returns: A bool value that defines if the editor dismisses or not.
+     */
+    func editorShouldDismiss(_ editor: Editor, with screenshot: UIImage) -> Bool
     
     /**
      A method that is called with an image just before the editor is dismissed.

        return true
    }
    
    public func editorDidMakeChange(_ editor: Editor, to screenshot: UIImage) {
        // Do nothing
    }
}

     - parameter screenshot: The edited image of a screenshot, after editing is complete.
     */
    func editorDidDismiss(_ editor: Editor, with screenshot: UIImage)
}

/// Extends editor delegate with base implementation for functions.
extension EditorDelegate {
    
    public func editorDidMakeChange(_ editor: Editor, to screenshot: UIImage) {
        // Do nothing
    }
    
