The Drawing object is an implementation of the PlaceableObject container. Each Drawing is a placeable object in the DrawingsLayer.

Hierarchy (View Summary)

Constructors

Properties

Accessors

Methods

Constructors

Properties

_fixedPoints: number[]

An internal flag for the permanent points of the polygon.

_onkeydown: null | Function = null

The registered keydown listener.

_pendingText: string

The pending text.

controlIcon: null | ControlIcon

A control icon for interacting with the object

document: CanvasDocument

A reference to the Scene embedded Document instance which this object represents

frame: Container<DisplayObject>

The border frame and resizing handles for the drawing.

mouseInteractionManager: MouseInteractionManager

A mouse interaction manager instance which handles mouse workflows related to this object.

renderFlags: RenderFlags

Status flags which are applied at render-time to update the PlaceableObject. If an object defines RenderFlags, it should at least include flags for "redraw" and "refresh".

Retain a reference to the Scene within which this Placeable Object resides

shape: any

The drawing shape which is rendered as a PIXI.Graphics in the interface or a PrimaryGraphics in the Primary Group.

text: null | PreciseText = null

A text label that may be displayed as part of the interface layer for the Drawing.

texture: null | Texture<Resource> = null

The texture that is used to fill this Drawing, if any.

embeddedName: string = "Drawing"

Identify the official Document name for this PlaceableObject class

FREEHAND_SAMPLE_RATE: number = 75

The rate at which points are sampled (in milliseconds) during a freehand drawing workflow

RENDER_FLAG_PRIORITY: string = "OBJECTS"

The ticker priority when RenderFlags of this class are handled. Valid values are OBJECTS or PERCEPTION.

RENDER_FLAGS: {
    redraw: { propagate: string[] };
    refresh: { alias: boolean; propagate: string[] };
    refreshElevation: {};
    refreshFrame: {};
    refreshMesh: {
        deprecated: { alias: boolean; since: number; until: number };
        propagate: string[];
    };
    refreshPosition: {};
    refreshRotation: { propagate: string[] };
    refreshShape: {};
    refreshSize: { propagate: string[] };
    refreshState: {};
    refreshText: {};
    refreshTransform: { alias: boolean; propagate: string[] };
} = ...

Type declaration

  • redraw: { propagate: string[] }
  • refresh: { alias: boolean; propagate: string[] }
  • refreshElevation: {}
  • refreshFrame: {}
  • refreshMesh: {
        deprecated: { alias: boolean; since: number; until: number };
        propagate: string[];
    }

    since v12

  • refreshPosition: {}
  • refreshRotation: { propagate: string[] }
  • refreshShape: {}
  • refreshSize: { propagate: string[] }
  • refreshState: {}
  • refreshText: {}
  • refreshTransform: { alias: boolean; propagate: string[] }
SHAPE_TYPES: {
    CIRCLE: string;
    ELLIPSE: string;
    POLYGON: string;
    RECTANGLE: string;
} = ShapeData.TYPES

A convenience reference to the possible shape types.

Accessors

  • get _original(): undefined | PlaceableObject

    The object that this object is a preview of if this object is a preview.

    Returns undefined | PlaceableObject

  • get bounds(): any

    Returns any

  • get center(): Point

    Returns Point

  • get controlled(): boolean

    An indicator for whether the object is currently controlled

    Returns boolean

  • get hasActiveHUD(): boolean

    Is the HUD display active for this Placeable?

    Returns boolean

  • get hasPreview(): boolean

    Does there exist a temporary preview of this placeable object?

    Returns boolean

  • get hasText(): boolean

    Does the Drawing have text that is displayed?

    Returns boolean

  • get hover(): boolean

    An indicator for whether the object is currently a hover target

    Returns boolean

  • get id(): string

    The id of the corresponding Document which this PlaceableObject represents.

    Returns string

  • get interactionState(): | undefined
    | {
        CLICKED: number;
        DRAG: number;
        DROP: number;
        GRABBED: number;
        HOVER: number;
        NONE: number;
    }

    The mouse interaction state of this placeable.

    Returns
        | undefined
        | {
            CLICKED: number;
            DRAG: number;
            DROP: number;
            GRABBED: number;
            HOVER: number;
            NONE: number;
        }

  • get isAuthor(): boolean

    A convenient reference for whether the current User is the author of the Drawing document.

    Returns boolean

  • get isOwner(): boolean

    A convenient reference for whether the current User has full control over the document.

    Returns boolean

  • get isPolygon(): boolean

    A Boolean flag for whether the Drawing is a Polygon type (either linear or freehand)?

    Returns boolean

  • get isPreview(): boolean

    Is this placeable object a temporary preview?

    Returns boolean

  • get isTiled(): boolean

    A Boolean flag for whether the Drawing utilizes a tiled texture background?

    Returns boolean

  • get isVisible(): boolean

    Is this Drawing currently visible on the Canvas?

    Returns boolean

  • get layer(): PlaceablesLayer

    Provide a reference to the CanvasLayer which contains this PlaceableObject.

    Returns PlaceablesLayer

  • get objectId(): string

    A unique identifier which is used to uniquely identify elements on the canvas related to this object.

    Returns string

  • get sheet(): DocumentSheetV2

    A document sheet used to configure the properties of this Placeable Object or the Document it represents.

    Returns DocumentSheetV2

  • get sourceId(): string

    The named identified for the source object associated with this PlaceableObject. This differs from the objectId because the sourceId is the same for preview objects as for the original.

    Returns string

  • get type(): string

    The shape type that this Drawing represents. A value in Drawing.SHAPE_TYPES.

    Returns string

  • get implementation(): typeof PlaceableObject

    Return a reference to the configured subclass of this base PlaceableObject type.

    Returns typeof PlaceableObject

Methods

  • Internal

    Add a new polygon point to the drawing, ensuring it differs from the last one

    Parameters

    • position: Point

      The drawing point to add

    • Optionaloptions: { round?: boolean; snap?: boolean; temporary?: boolean } = {}

      Options which configure how the point is added

      • Optionalround?: boolean

        Should the point be rounded to integer coordinates?

      • Optionalsnap?: boolean

        Should the point be snapped to grid precision?

      • Optionaltemporary?: boolean

        Is this a temporary control point?

    Returns void

  • The inner _destroy method which may optionally be defined by each PlaceableObject subclass.

    Parameters

    • options: any

      Options passed to the initial destroy call

    Returns void

  • Parameters

    • options: any

    Returns Promise<void>

  • Internal

    Obtain a shifted position for the Placeable Object.

    Parameters

    • dx: -1 | 0 | 1

      The number of grid units to shift along the X-axis

    • dy: -1 | 0 | 1

      The number of grid units to shift along the Y-axis

    • dz: -1 | 0 | 1

      The number of grid units to shift along the Z-axis

    Returns object

    The shifted target coordinates

  • Callback actions which occur on a single left-click event to assume control of the object

    Parameters

    • event: any

      The triggering canvas interaction event

    Returns boolean | void

  • Additional events that trigger once control of the object is established

    Parameters

    • options: any

      Optional parameters which apply for specific implementations

    Returns void

  • Define additional steps taken when an existing placeable object of this type is deleted

    Parameters

    • options: any
    • userId: any

    Returns void

  • Callback actions which occur on a mouse-move operation.

    Parameters

    • event: any

      The triggering mouse click event

    Returns boolean | void

    If false, the cancellation is prevented

  • Additional events which trigger once control of the object is released

    Parameters

    • options: any

      Options which modify the releasing workflow

    Returns void

  • Define additional steps taken when an existing placeable object of this type is updated with new data

    Parameters

    • changed: any
    • options: any
    • userId: any

    Returns void

  • Internal

    Get the data of the copied object pasted at the position given by the offset. Called by foundry.canvas.layers.PlaceablesLayer#pasteObjects for each copied object.

    Parameters

    • offset: Point

      The offset relative from the current position to the destination

    • Optionaloptions: { hidden?: boolean; snap?: boolean } = {}
      • Optionalhidden?: boolean

        Paste in a hidden state, if applicable. Default is false.

      • Optionalsnap?: boolean

        Snap to the grid. Default is true.

    Returns object

    The update data

  • Internal

    Remove the last fixed point from the polygon

    Returns void

  • Internal

    Determine a new angle of rotation for a PlaceableObject either from an explicit angle or from a delta offset.

    Parameters

    • options: { angle?: number; delta?: number; snap?: number } = {}

      An object which defines the rotation update parameters

      • Optionalangle?: number

        An explicit angle, either this or delta must be provided

      • Optionaldelta?: number

        A relative angle delta, either this or the angle must be provided

      • Optionalsnap?: number

        A precision (in degrees) to which the resulting angle should snap. Default is 0.

    Returns number

    The new rotation angle for the object

  • Test whether a user can perform a certain interaction regarding a Placeable Object

    Parameters

    • user: documents.User

      The User performing the action. Must be equal to game.user.

    • action:
          | "update"
          | "delete"
          | "view"
          | "create"
          | "control"
          | "configure"
          | "hover"
          | "drag"
          | "HUD"

      The named action being attempted

    Returns boolean

    Does the User have rights to perform the action?

  • Clone the placeable object, returning a new object with identical attributes. The returned object is non-interactive, and has no assigned ID. If you plan to use it permanently you should call the create method.

    Returns PlaceableObject

    A new object with identical data

  • Assume control over a PlaceableObject, flagging it as controlled and enabling downstream behaviors

    Parameters

    • Optionaloptions: { releaseOthers?: boolean } = {}

      Additional options which modify the control request

      • OptionalreleaseOthers?: boolean

        Release any other controlled objects first

    Returns boolean

    A flag denoting whether control was successful

  • Draw the placeable object into its parent container

    Parameters

    • Optionaloptions: object = {}

      Options which may modify the draw and refresh workflow

    Returns Promise<PlaceableObject>

    The drawn object

  • Enable text editing for this drawing.

    Parameters

    • Optionaloptions: object = {}

    Returns void

  • Get the snapped position for a given position or the current position.

    Parameters

    • Optionalposition: any

      The position to be used instead of the current position

    Returns Point

    The snapped position

  • Refresh all incremental render flags for the PlaceableObject. This method is no longer used by the core software but provided for backwards compatibility.

    Parameters

    • Optionaloptions: object = {}

      Options which may modify the refresh workflow

    Returns PlaceableObject

    The refreshed object

  • Release control over a PlaceableObject, removing it from the controlled set

    Parameters

    • options: object = {}

      Options which modify the releasing workflow

    Returns boolean

    A Boolean flag confirming the object was released.

  • Rotate the PlaceableObject to a certain angle of facing

    Parameters

    • angle: number

      The desired angle of rotation

    • snap: number

      Snap the angle of rotation to a certain target degree increment

    Returns Promise<PlaceableObject>

    The rotated object

  • Protected

    Does the User have permission to left-click drag this Placeable Object?

    Parameters

    • user: documents.User

      The User performing the action. Always equal to game.user.

    • event: FederatedEvent<UIEvent | PixiTouch>

      The pointer event

    • Optionaloptions: { notify: boolean } = {}

      Options, used internally

    Returns boolean

  • Protected

    Finalize the left-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering mouse click event

    Returns void

  • Protected

    Finalize the right-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering mouse click event

    Returns void

  • Protected

    Get the fill style used for drawing the shape of this Drawing.

    Returns object

    The fill style options (PIXI.IFillStyleOptions).

  • Protected

    Get the line style used for drawing the shape of this Drawing.

    Returns object

    The line style options (PIXI.ILineStyleOptions).

  • Protected

    Get the target opacity that should be used for a Placeable Object depending on its preview state.

    Returns number

  • Protected

    Prepare the text style used to instantiate a PIXI.Text or PreciseText instance for this Drawing document.

    Returns TextStyle

  • Protected

    Initialize the left-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Initialize the right-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a double left-click event to activate

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a single right-click event to configure properties of the object

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a double right-click event to configure properties of the object

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Register pending canvas operations which should occur after a new PlaceableObject of this type is created

    Parameters

    • data: object
    • options: object
    • userId: string

    Returns void

  • Protected

    Conclude a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

    Returns void

  • Protected

    Callback actions which occur on a right mouse-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering mouse click event

    Returns boolean | void

    If false, the cancellation is prevented

  • Protected

    Callback actions which occur on a right mouse-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a right mouse-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a right mouse-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering mouse click event

    Returns false | void

    If false, the start if prevented

  • Protected

    Begin a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

    Returns void

  • Protected

    Handle cancellation of a drag event for one of the resizing handles

    Parameters

    • event: PointerEvent

      The drag cancellation event

    Returns void

  • Protected

    Handle mouseup after dragging a tile scale handler

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The mouseup event

    Returns void

  • Protected

    Handle mousemove while dragging a tile scale handler

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The mouse interaction event

    Returns void

  • Protected

    Starting the resize handle drag event, initialize the original data.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The mouse interaction event

    Returns void

  • Protected

    Handle mouse-over event on a control handle

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The mouseover event

    Returns void

  • Protected

    Handle mouse-out event on a control handle

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The mouseout event

    Returns void

  • Protected

    Actions that should be taken for this Placeable Object when a mouseover event occurs. Hover events on PlaceableObject instances allow event propagation by default.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    • options: { hoverOutOthers?: boolean } = {}

      Options which customize event handling

      • OptionalhoverOutOthers?: boolean

        Trigger hover-out behavior on sibling objects

    Returns boolean | void

  • Protected

    Actions that should be taken for this Placeable Object when a mouseout event occurs

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback action which occurs on a long press.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    • origin: Point

      The local canvas coordinates of the mousepress.

    Returns any

  • Protected

    Handle mouse movement which modifies the dimensions of the drawn shape.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

    Returns void

  • Protected

    Callback actions which occur on a single left-unclick event to assume control of the object

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Callback actions which occur on a single right-unclick event

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns void

  • Protected

    Perform the database updates that should occur as the result of a drag-left-drop operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering canvas interaction event

    Returns null | object[] | [updates: object[], options?: object]

    An array of database updates to perform for documents in this collection

  • Protected

    Should the placeable propagate left click downstream?

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

    Returns boolean

  • Protected

    Should the placeable propagate right click downstream?

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

    Returns boolean

  • Protected

    Update sorting of this Drawing relative to other PrimaryCanvasGroup siblings. Called when the elevation or sort order for the Drawing changes.

    Returns void

  • Protected

    Refresh the border frame that encloses the Drawing.

    Returns void

  • Protected

    Refresh the position.

    Returns void

  • Protected

    Refresh the rotation.

    Returns void

  • Protected

    Clear and then draw the shape.

    Returns void

  • Protected

    Refresh the displayed state of the Drawing. Used to update aspects of the Drawing which change based on the user interaction state.

    Returns void

  • Protected

    Refresh the content and appearance of text.

    Returns void

  • Protected

    Callback actions which occur on a right mouse-drag operation.

    Parameters

    • event: FederatedEvent<UIEvent | PixiTouch>

      The triggering mouse click event

    Returns false | void

    If false, the start if prevented

  • Internal

    Obtain the shifted position.

    Parameters

    • dx: -1 | 0 | 1

      The number of grid units to shift along the X-axis

    • dy: -1 | 0 | 1

      The number of grid units to shift along the Y-axis

    • dz: -1 | 0 | 1

      The number of grid units to shift along the Z-axis

    • position: ElevatedPoint

      The unsnapped position

    • snapped: ElevatedPoint

      The snapped position

    • grid: BaseGrid<GridCoordinates2D, GridCoordinates3D>

      The grid

    Returns ElevatedPoint

    The shifted target coordinates

  • Adjust the location, dimensions, and points of the Drawing before committing the change.

    Parameters

    • data: object

      The DrawingData pending update

    Returns object

    The adjusted data

  • Get a vectorized rescaling transformation for drawing data and dimensions passed in parameter

    Parameters

    • original: Object

      The original drawing data

    • dx: number

      The pixel distance dragged in the horizontal direction

    • dy: number

      The pixel distance dragged in the vertical direction

    Returns object

    The adjusted shape data