CrystVis

lib/visualizer.js~ CrystVis

An object providing a full interface to a renderer for crystallographic models

Constructor

# new CrystVis(element, width, height)

An object providing a full interface to a renderer for crystallographic models

Parameters:
Name Type Default Description
element string

CSS-style identifier for the HTML element to put the renderer in

width int 0

Window width

height int 0

Window height. If both this and width are set to 0, the window fits its context and automatically resizes with it

Members

# displayed :ModelView

Displayed atoms

Type:
  • ModelView

# highlightSelected :bool

Whether the selected atoms should be highlighted with auras

Type:
  • bool

# (readonly) model :Model

Currently loaded model

Type:
  • Model

# (readonly) modelList :Array

List of loaded models

Type:
  • Array

# (readonly) modelName :String

Name of the currently loaded model

Type:
  • String

# selected :ModelView

Selected atoms

Type:
  • ModelView

Methods

# addPrimitive(p)

Add a primitive shape to the drawing

Parameters:
Name Type Description
p THREE.Object3D

Primitive to add

# centerCamera(center, shift)

Center the camera on a given point

Parameters:
Name Type Description
center Array.<float>

Point in model space that the orbiting camera should be centred on and look at

shift Array.<float>

Shift (in units of width/height of the canvas) with which the center of the camera should be rendered with respect to the center of the canvas

# deleteModel(name)

Erase a model from the recorded ones

Parameters:
Name Type Description
name String

Name of the model to delete

# displayModel(name)

Render a model

Parameters:
Name Type Default Description
name String null

Name of the model to display. If empty, just clear the renderer window.

# getScreenshotData() → {String}

Recover a data URL of a PNG screenshot of the current scene

Returns:

A data URL of the PNG screenshot

Type
String

# loadModels(contents, format, prefix, parameters) → {Object}

Load one or more atomic models from a file's contents

Parameters:
Name Type Default Description
contents String

The contents of the structure file

format String cif

The file's format (cif, xyz, etc.). Default is cif.

prefix String null

Prefix to use when naming the models. Default is empty.

parameters Object

Loading parameters:

  • supercell: supercell size (only used if the structure is periodic)
  • molecularCrystal: if true, try to make the model load completing molecules across periodic boundaries
  • useNMRActiveIsotopes: if true, all isotopes are set by default to the most common one with non-zero spin
  • vdwScaling: scale van der Waals radii by a constant factor
  • vdwElementScaling: table of per-element factors to scale VdW radii by
Returns:

Names of the models we tried to load, and values of true/false for successful loading or not

Type
Object

# onAtomBox(callback)

Set a callback function for an event where a user drags a box around multiple atoms. The function should take as arguments a ModelView including the atoms in the box:

function callback(view) { ... }

Parameters:
Name Type Default Description
callback function null

Callback function for the event. Passing "null" restores default behaviour

# onAtomClick(callback, modifiers)

Set a callback function for an event where a user clicks on an atom. The function should take as arguments the atom image for the clicked atom and the event object:

function callback(atom, event) { ... }

Parameters:
Name Type Default Description
callback function null

Callback function for the event. Passing "null" restores default behaviour

modifiers int

Click event. Use the following flags to define it:

  • CrystVis.LEFT_CLICK
  • CrystVis.RIGHT_CLICK
  • CrystVis.MIDDLE_CLICK
  • CrystVis.CTRL_BUTTON
  • CrystVis.ALT_BUTTON
  • CrystVis.SHIFT_BUTTON
  • CrystVis.CMD_BUTTON

For example, CrystVis.LEFT_CLICK + CrystVis.SHIFT_BUTTON defines the event for a click while the Shift key is pressed.

# reloadModel(name, parameters)

Reload a model, possibly with new parameters

Parameters:
Name Type Description
name String

Name of the model to reload.

parameters Object

Loading parameters as in .loadModels()

# removePrimitive(p)

Remove a primitive shape from the drawing

Parameters:
Name Type Description
p THREE.Object3D

Primitive to remove