# Class: RubberStampCreateTool

## Core.Tools. RubberStampCreateTool

Represents the tool for creating Core.Annotations.StampAnnotation.

#### new RubberStampCreateTool(docViewer)

  ##### Parameters:

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

### Extends

- Core.Tools.Tool

### Methods

#### addCustomStamp(options)

  Add a single custom stamp to tool's list

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | Core.Tools.RubberStampCreateTool.CustomStampData | The custom stamp data

#### 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
  Overrides:
    - Core.Tools.Tool#addEventListener

  ##### Returns:

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

  ##### Example

      myObject.addEventListener('eventName', (eventParameter1, eventParameter2) => {
        ...
      });

#### addStamp()

  Add the stamp to the document.

  ##### Returns:

  Type
    Promise.<void>

#### 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
  Overrides:
    - Core.Tools.Tool#contextMenu

#### drawCustomStamp(options)

  Draw custom stamp annotation onto a canvas

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | object | An object that can contain the following optional parameters ###### Properties
  Name | Type | Argument | Description
  --- | --- | --- | ---
  `title` | string | <optional> | Custom stamp's main text
  `subtitle` | string | <optional> | Time format text used as a custom timestamp, e.g. "DD-MM-YYYY" To render a plain-text string as a subtitle, place the desired string inside of square brackets e.g. "[This is a subtitle]".
  `color` | string | <optional> | Fill color value, see Annotation.Color
  `textColor` | string | <optional> | Text color value, see Annotation.Color
  `canvas` | string | <optional> | Canvas to draw this annotation
  `width` | string | <optional> | Default width of stamp
  `height` | string | <optional> | Default height of stamp
  `canvasParent` | string | <optional> | Parent DOM element of canvas
  `font` | string | <optional> | Font family to use for stamp text
  `bold` | boolean | <optional> | Whether to use bold styling for the title or not
  `italic` | boolean | <optional> | Whether to use italic styling for the title or not
  `underline` | boolean | <optional> | Whether to underline the title or not
  `strikeout` | boolean | <optional> | Whether to strikeout the title or not

#### getCustomStampAnnotations()

  Get array of custom annotations.

  ##### Returns:

  Type
    Promise.<Array.<Core.Annotations.StampAnnotation>>

#### getCustomStamps()

  Returns array of objects representing the custom stamps

  ##### Returns:

  An array of objects representing the custom stamps
  Type
    Array.<Core.Tools.RubberStampCreateTool.CustomStampData>

#### getDocumentViewer()

  Returns the instance of DocumentViewer for this tool.
  Inherited From:
    - Core.Tools.Tool#getDocumentViewer
  Overrides:
    - 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
  Overrides:
    - 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, parameters)

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

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.StampAnnotation | annotation to get the preview for.
  `parameters` | Object | canvas parameters and optional text for annotation, e.g. translated text. e.g. { canvasHeight: number, canvasWidth: number, text: string }

  ##### Returns:

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

#### getStandardStampAnnotations()

  Get array of standard stamp annotations.

  ##### Returns:

  Type
    Promise.<Array.<Core.Annotations.StampAnnotation>>

#### getStandardStamps()

  Returns array of strings representing the built-in, default stamps

  ##### Returns:

  Type
    Array.<string>

#### getStandardStamps()

  Returns array of strings representing the standard stamps

  ##### Returns:

  An array of objects representing the standard stamps
  Type
    Array.<string>

#### hidePreview()

  Hide the preview element

#### isEmptyStamp()

  Checks if the underlying annotation is empty. If the underlying annotation is a StampAnnotation type return true.

  ##### Returns:

  Type
    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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - Core.Tools.Tool#off
  Deprecated:
    - Since version 8.0. Use removeEventListener instead.

  ##### Returns:

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

  ##### Example

      myObject.off();
      myObject.off('eventName');
      myObject.off('eventName', 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
  Overrides:
    - Core.Tools.Tool#on
  Deprecated:
    - Since version 8.0. Use addEventListener instead.

  ##### Returns:

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

  ##### Example

      myObject.on('eventName', (eventParameter1, eventParameter2) => {
        ...
      });

#### 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
  Overrides:
    - Core.Tools.Tool#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

      myObject.one('eventName', (eventParameter1, eventParameter2) => {
       ...
      });

#### 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
  Overrides:
    - Core.Tools.Tool#removeEventListener
  Deprecated:
    - for version 9.0. Use [removeEventListener] with fn specified

  ##### Returns:

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

  ##### Example

      myObject.removeEventListener();
      myObject.removeEventListener('eventName');
      myObject.removeEventListener('eventName', fn);

#### setCustomDrawFunction(callback)

  Sets a custom function to be used for drawing extra content on top of custom stamps, enabling customization of the CanvasRenderingContext2D of the Canvas element used for Rubber Stamps

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | function | A callback side effect function that takes a two parameters. The first is assumed to be the type CanvasRenderingContext2D, and modifies the parameter for the purposes of custom drawing behavior on top of the default stamp behavior. The second parameter is optional, and is assumed to be an instance of the Core.Annotations.Annotation class, wherein custom behavior for the stamp annotation being modified can be added (i.e. conditionally apply custom drawing on certain annotations only)

  ##### Example

      WebViewer(
       // ...
      ).then(instance => {
        const { docViewer } = instance;
        const tool = docViewer.getTool('AnnotationCreateRubberStamp');
        tool.setCustomDrawFunction((ctx, annotation) => {
          const { Icon } = annotation;
          // `Icon` contains the text content of the stamp
          // This example conditionally renders custom content on the stamp only
          // if the contents of the stamp are in the approved list of stamps to
          // draw on
          const stampsToDrawOn = [
            'Approved',
            'Completed',
            'Final',
          ];
          if (stampsToDrawOn.includes(Icon)) {
            // Arbitrary example where an image is available in the DOM
            const img = document.getElementById('my-company-logo');
            ctx.drawImage(
              img, // The image to render
              0, // The X coordinate of where to place the image
              0, // The Y coordinate of where the place the image
              25, // The width of the image in pixels
              25, // The height of the image in pixels
            );
          }
        });
      });

#### setCustomStamps(stamps)

  Accepts and sets an array of objects representing custom stamps

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `stamps` | Array.<Core.Tools.RubberStampCreateTool.CustomStampData> | An array of objects representing custom stamps Example: [ { "title": "Sample Text", "subtitle": "DD-MM-YYYY", "color": window.Annotations.Color(0,0,0) } ]

#### 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
  Overrides:
    - Core.Tools.Tool#setName

#### setRubberStamp(annotation, text)

  Sets the underlying annotation used by the tool

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.StampAnnotation | Annotation to set
  `text` | string | Text to be set in the stamp

  ##### Returns:

  Type
    Promise.<void>

#### setStandardStamps(stamps)

  Accepts and sets an array of objects representing standard stamps

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `stamps` | Array.<string> | An array of strings representing the standard stamps

#### 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - 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
  Overrides:
    - Core.Tools.Tool#trigger

  ##### Returns:

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

  ##### Example

      myObject.trigger('eventName');
      myObject.trigger('eventName', [eventParameter1, eventParameter2]);

#### useStamp(options)

  Have this rubber stamp tool always create a single type of stamp with the specified icon value.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | object | An object that can contain the following optional parameters ###### Properties
  Name | Type | Argument | Description
  --- | --- | --- | ---
  `Icon` | string |  | The name of the icon can be used, eg: 'SBRejected' | 'SHAccepted' | 'Dot'
  `FillColor` | Core.Annotations.Color | <optional> | The color of the stamp. Defaults to black.
  `Width` | number | <optional> | The width of the stamp
  `Height` | number | <optional> | The Height of the stamp
  `Opacity` | number | <optional> | The Opacity of the stamp

### Type Definitions

#### CustomStampData

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `title` | string | <optional> | Custom stamp's main text
  `subtitle` | string | <optional> | Time format text used as a custom timestamp, e.g. "DD-MM-YYYY" To render a plain-text string as a subtitle, place the desired string inside of square brackets e.g. "[This is a subtitle]".
  `color` | Core.Annotations.Color | <optional> | Background color value
  `font` | string | <optional> | Font family to use for stamp text
  `bold` | boolean | <optional> | Whether to use bold styling for the title or not
  `italic` | boolean | <optional> | Whether to use italic styling for the title or not
  `underline` | boolean | <optional> | Whether to underline the title or not
  `strikeout` | boolean | <optional> | Whether to strikeout the title or not

### Events

#### annotationAdded

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

  ##### Parameters:

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

#### Search results