# Class: SignatureCreateTool

## Core.Tools. SignatureCreateTool

Represents the tool for creating a Signature which is represented by an Core.Annotations.FreeHandAnnotation.

#### new SignatureCreateTool(docViewer)

  Creates a new instance of the SignatureCreateTool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `docViewer` | Core.DocumentViewer | an instance of DocumentViewer.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `ctx` | CanvasRenderingContext2D | The signature canvas context
  `annot` | Core.Annotations.FreeHandAnnotation | Core.Annotations.StampAnnotation | The underlying annotation used by the tool

### Extends

- Core.Tools.Tool

### Methods

#### <static> setTextHandler(textHandler)

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `textHandler` | function | A function that should return a string that will be used as the "sign here" text

#### addEventListener(type, fn [, options])

  Add a handler to the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number |  | The name of the event to listen to
  `fn` | function |  | The handler to be called when the event is triggered
  `options` | object | <optional> | Optional options object for addEventListener ###### Properties
  Name | Type | Description
  --- | --- | ---
  `once` | boolean | If true then the handler will be called only once

  Inherited From:
    - Core.EventHandler#addEventListener

  ##### Returns:

  Returns the object that 'addEventListener' is being called on
  Type
    object

  ##### Example

      annotManager.addEventListener('annotationChanged', (annotations, action) => {
        ...
      });

#### addSignature()

  Add the signature to the document.

  ##### Returns:

  A promise that resolves when the signature is added
  Type
    Promise.<void>

#### clearLocation()

  Clear the location which is set when a mouse click is performed

#### clearSignatureCanvas()

  Clears the signature canvas and the underlying annotation

#### contextMenu(e)

  The function is called when a context menu should be shown. Use e.preventDefault to disable the default browser context menu.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object

  Inherited From:
    - Core.Tools.Tool#contextMenu

#### deleteSavedSignature(index)

  Delete an annotation in the tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `index` | number | The index of the saved annotation to be deleted

#### exportSignatures()

  Exports all saved signatures as an array The array can be stringified using JSON.stringify and saved for later use

  ##### Returns:

  Returns a promise that resolves an array that contains arrays of path points or a base64 image data
  Type
    Promise.<Array.<(string|Array.<Array.<Core.Math.Point>>)>>

#### getDocumentViewer()

  Returns the instance of DocumentViewer for this tool.
  Inherited From:
    - Core.Tools.Tool#getDocumentViewer

  ##### Returns:

  The instance of DocumentViewer for this tool.
  Type
    Core.DocumentViewer

#### getMouseLocation(e)

  Takes an event object from a mouse event and converts the location into window coordinates

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates

  Inherited From:
    - Core.Tools.Tool#getMouseLocation

  ##### Returns:

  Returns an object with x and y coordinates of the mouse cursor in the viewer
  Type
    Core.Math.Point

#### getPreview(annotation)

  Gets the preview about how the annot will be drawn on the document

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.FreeHandAnnotation | Core.Annotations.StampAnnotation |

  ##### Returns:

  A promise that resolves with a base64 string of the preview image
  Type
    Promise.<string>

#### getSavedSignatures()

  Returns the array of saved annotations

  ##### Returns:

  an array of annotations
  Type
    Array.<(Core.Annotations.FreeHandAnnotation|Core.Annotations.StampAnnotation)>

#### hasLocation()

  Returns if the signature tool has any location to draw the signature

  ##### Returns:

  Type
    boolean

#### hidePreview()

  Hide the preview element

#### importSignatures(signatureData)

  Loads signature data into the signature tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `signatureData` | Array.<(string|Array.<Array.<Core.Math.Point>>)> | An array contains arrays of path points or base64 image data If the element is a string, a stamp annotation will be saved and the string will be the value of its ImageData property If the element is an array of objects, a freehand annotation will be saved and the array will be its paths

  ##### Returns:

  Promise

#### isEmptySignature()

  Checks if the underlying annotation is empty. If the underlying annotation is a freehand, it's empty if it doesn't have any paths If the underlying annotation is a stamp, it's empty if its ImageData property has a falsy value

  ##### Returns:

  If number of drawn paths is 0.
  Type
    Promise.<boolean>

#### keyDown(e)

  The function is called when a keyboard key is down.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing keyboard key data.

  Inherited From:
    - Core.Tools.Tool#keyDown

#### mouseDoubleClick(e)

  The function is called when the mouse left button is double clicked.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseDoubleClick

#### mouseLeftDown(e)

  The function called when the left mouse button is down

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseLeftDown

#### mouseLeftUp(e)

  The function called when the left mouse button is up. Typically, annotations are created and added to the annotation manager at this point.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseLeftUp

#### mouseMove(e)

  The function called when the mouse moves.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseMove

#### mouseRightDown(e)

  The function called when the right mouse button is down.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `e` |  | The event object containing mouse coordinates.

  Inherited From:
    - Core.Tools.Tool#mouseRightDown

#### off( [type] [, fn])

  Remove a handler of the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number | <optional> | The name of the event to remove the handler of. If type is undefined, all the handlers of the object will be removed
  `fn` | function | <optional> | The handler associated with this event to be removed. If fn is undefined, all the handlers of the given event name will be removed

  Inherited From:
    - Core.EventHandler#off
  Deprecated:
    - Since version 8.0. Use removeEventListener instead.

  ##### Returns:

  Returns the object that 'off' is being called on
  Type
    object

  ##### Example

      annotManager.off();
      annotManager.off('annotationChanged');
      annotManager.off('annotationChanged', fn);

#### on(type, fn)

  Add a handler to the given event name

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | number | The name of the event to listen to
  `fn` | function | The handler to be called when the event is triggered

  Inherited From:
    - Core.EventHandler#on
  Deprecated:
    - Since version 8.0. Use addEventListener instead.

  ##### Returns:

  Returns the object that 'on' is being called on
  Type
    object

  ##### Example

      annotManager.on('annotationChanged', (annotations, action) => {
        ...
      });

#### one(type, fn)

  Same as 'on' except the handler will be called only once

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | number | The name of the event to listen to
  `fn` | function | The handler to be called when the event is triggered

  Inherited From:
    - Core.EventHandler#one
  Deprecated:
    - Since version 8.0. Use addEventListener with {'once': true} as options instead.

  ##### Returns:

  Returns the object that 'one' is being called on
  Type
    object

  ##### Example

      annotManager.one('annotationChanged', (annotations, action) => {
       ...
      });

#### removeEventListener( [type] [, fn])

  Remove a handler of the given event name

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number | <optional> | The name of the event to remove the handler of. If type is undefined, all the handlers of the object will be removed
  `fn` | function | <optional> | The handler associated with this event to be removed. If fn is undefined, all the handlers of the given event name will be removed

  Inherited From:
    - Core.EventHandler#removeEventListener

  ##### Returns:

  Returns the object that 'removeEventListener' is being called on
  Type
    object

  ##### Example

      annotManager.removeEventListener();
      annotManager.removeEventListener('annotationChanged');
      annotManager.removeEventListener('annotationChanged', fn);

#### resizeCanvas()

  Resize the current signature canvas

#### saveSignatures(annotations)

  Save an array of freehand or stamp annotations to the signature tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotations` | Core.Annotations.FreeHandAnnotation | Core.Annotations.StampAnnotation | Annotations to be saved to the signature tool

#### setName(name)

  Set the name of the tool, which can be accessed by toolObject.name

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `name` | string | Name of the tool

  Inherited From:
    - Core.Tools.Tool#setName

#### setSignature(annotation)

  Sets the underlying annotation used by the tool If a base64 string is passed, the underlying annotation will be a stamp annotation with the string being its ImageData

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.FreeHandAnnotation | Core.Annotations.StampAnnotation | string | Array.<object> | Annotation to set

  ##### Returns:

  Promise

#### setSignatureCanvas(canvas)

  Sets the canvas to be used by the signature tool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `canvas` | HTMLCanvasElement | The canvas that the signature tool uses to draw on.

#### setStyles(newStyles)

  Set the style for the tool, which will be applied to annotations drawn afterwards

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `newStyles` | object | function | if an object is used, it should contain properties of the new styles. If a function is used, the current styles will be passed as its argument and the function should return an object which contains properties of the new styles. Example of valid properties: StrokeColor, TextColor, FillColor, FontSize, Opacity, StrokeThickness, Precision, Scale, OverlayText, Style and Dashes.

  Inherited From:
    - Core.Tools.Tool#setStyles

#### showPreview()

  Shows the preview about how the underlying annot looks like if it's drawn.

#### switchIn(oldTool)

  The function is called when this tool is selected. Typically use for changing mouse cursors, and initializing states for the tool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `oldTool` | Core.Tools.Tool | The Tool class that was previously selected.

  Inherited From:
    - Core.Tools.Tool#switchIn

#### switchOut(newTool)

  The function is called when this tool is deselected. Typically use for changing mouse cursors, and cleaning up states for the tool.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `newTool` | Core.Tools.Tool | The Tool class that was newly selected.

  Inherited From:
    - Core.Tools.Tool#switchOut

#### trigger(type [, data])

  Calls the handlers of the event name with given data

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string | number |  | event name of which the handlers will be called.
  `data` | * | <optional> | data that will be passed to the handlers. If data is an array, it will be spread and then passed to the handlers

  Inherited From:
    - Core.EventHandler#trigger

  ##### Returns:

  Returns the object that 'trigger' is being called on
  Type
    object

  ##### Example

      annotManager.trigger('annotationChanged');
      annotManager.trigger('annotationChanged', [[annotation], 'add', {}]);

### Events

#### annotationAdded

  Triggered when an annotation has been added to the document by the tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | The annotation that was added

#### locationSelected

  Triggered when a page location has been clicked on by the tool

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `pageCoordinates` | Core.Tools.PageCoordinate |  | Indicates where the tool clicked
  `signatureWidget` | Core.Annotations.SignatureWidgetAnnotation | <optional> | The signature widget that was clicked to trigger the event

#### signatureDeleted

  Triggered when the tool deletes a signature

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | The annotation that was deleted
  `index` | number | The index of the annotation in the list

#### signatureSaved

  Triggered when the tool saves a signature

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | The annotation that was saved

#### Search results