# Class: Model3DSelectionModel

## Core.Annotations. Model3DSelectionModel

A selection model based on the annotation's bounding box. This is used for Model3D annotations.

#### new Model3DSelectionModel(annotation, canModify, isSelected)

  Creates a Model3D selection model.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | the annotation
  `canModify` | boolean | indicates if the annotation can be modified
  `isSelected` | boolean | boolean to denote if the annotation is selected

### Extends

- Core.Annotations.BoxSelectionModel

### Methods

#### canModify()

  Indicates that the associated annotation is able to be modified
  Inherited From:
    - Core.Annotations.SelectionModel#canModify

  ##### Returns:

  Type
    boolean

#### drawSelectionOutline(ctx, annotation, zoom)

  Draws the selection outline of the annotation. By default, a rectangle is drawn based on the annotations x, y, width and height.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `ctx` | CanvasRenderingContext2D |
  `annotation` | Core.Annotations.Annotation |
  `zoom` | number |

  Inherited From:
    - Core.Annotations.SelectionModel#drawSelectionOutline

#### getControlHandles()

  Returns the ControlHandle objects associated with this selection model.
  Inherited From:
    - Core.Annotations.SelectionModel#getControlHandles

  ##### Returns:

  An array of ControlHandleObject
  Type
    Array.<Core.Annotations.ControlHandle>

#### getDimensions(annotation)

  Gets the dimensions {x, y, width, height} of the selection bounding box. It may be different from the annotation's bounding box. e.g. The selection bounding box may have a padding.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation |

  Inherited From:
    - Core.Annotations.SelectionModel#getDimensions

  ##### Returns:

  Type
    Core.Math.Rect

#### isSelected()

  Indicates that the associated annotation is already selected. This can be useful to implement different selection behaviors when an annotation is selected.
  Inherited From:
    - Core.Annotations.SelectionModel#isSelected

  ##### Returns:

  Type
    boolean

#### testControlHandles(annotation, zoom, x, y)

  Hit detection for each control handle.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation |
  `zoom` | number |
  `x` | number |
  `y` | number |

  Inherited From:
    - Core.Annotations.SelectionModel#testControlHandles

  ##### Returns:

  The control handle that was hit
  Type
    Core.Annotations.ControlHandle

#### testSelection(annotation, x, y, pageMatrix, zoom, rotation)

  Determines if the provided point is a hit on the selected annotationhandle. * See Core.Annotations.SelectionAlgorithm for usuable selection algorithms.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `annotation` | Core.Annotations.Annotation | the annotation
  `x` | number | the x-coordinate of the point to test, in page coordinates
  `y` | number | the y-coordinate of the point to test, in page coordinates
  `pageMatrix` | object | the page matrix of the page the annotation is on
  `zoom` | number | the zoom level of the page the annotation is on
  `rotation` | Core.PageRotation | the rotation of the page the annotation is on

  Inherited From:
    - Core.Annotations.SelectionModel#testSelection

  ##### Returns:

  true if the provided point is a hit
  Type
    boolean

#### Search results