From 7ca8b1e19f4927f8dd2156fa031030d00b6edefc Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Tue, 27 Mar 2018 13:27:12 -0700 Subject: [PATCH] simplified defaults handling --- src/mol-gl/camera.ts | 33 +++++++++++++++++---------------- src/mol-util/index.ts | 4 ++++ 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/mol-gl/camera.ts b/src/mol-gl/camera.ts index 468289b0b..0785b4e15 100644 --- a/src/mol-gl/camera.ts +++ b/src/mol-gl/camera.ts @@ -15,6 +15,7 @@ import REGL = require('regl'); import mouseChange, { MouseModifiers } from 'mol-util/mouse-change' import mouseWheel from 'mol-util/mouse-wheel' +import { defaults } from 'mol-util' import { Mat4, Vec3 } from 'mol-math/linear-algebra/3d' import { clamp, damp } from 'mol-math/interpolate' @@ -53,25 +54,25 @@ export interface Camera { export namespace Camera { export function create (regl: REGL.Regl, element: HTMLElement, props: Partial<CameraState> = {}): Camera { const state: CameraState = { - center: props.center || Vec3.zero(), - theta: props.theta || 0, - phi: props.phi || 0, - distance: Math.log(props.distance || 10.0), + center: defaults(props.center, Vec3.zero()), + theta: defaults(props.theta, 0), + phi: defaults(props.phi, 0), + distance: Math.log(defaults(props.distance, 10.0)), eye: Vec3.zero(), - up: props.up || Vec3.create(0, 1, 0), - fovy: props.fovy || Math.PI / 4.0, - near: typeof props.near !== 'undefined' ? props.near : 0.01, - far: typeof props.far !== 'undefined' ? props.far : 1000.0, - noScroll: typeof props.noScroll !== 'undefined' ? props.noScroll : false, - flipY: !!props.flipY, + up: defaults(props.up, Vec3.create(0, 1, 0)), + fovy: defaults(props.fovy, Math.PI / 4.0), + near: defaults(props.near, 0.01), + far: defaults(props.far, 1000.0), + noScroll: defaults(props.noScroll, false), + flipY: defaults(props.flipY, false), dtheta: 0, dphi: 0, - rotationSpeed: typeof props.rotationSpeed !== 'undefined' ? props.rotationSpeed : 1, - zoomSpeed: typeof props.zoomSpeed !== 'undefined' ? props.zoomSpeed : 1, - renderOnDirty: typeof props.renderOnDirty !== undefined ? !!props.renderOnDirty : false, - damping: typeof props.damping !== 'undefined' ? props.damping : 0.9, - minDistance: Math.log(typeof props.minDistance !== 'undefined' ? props.minDistance : 0.1), - maxDistance: Math.log(typeof props.maxDistance !== 'undefined' ? props.maxDistance : 1000) + rotationSpeed: defaults(props.rotationSpeed, 1), + zoomSpeed: defaults(props.zoomSpeed, 1), + renderOnDirty: defaults(props.renderOnDirty, false), + damping: defaults(props.damping, 0.9), + minDistance: Math.log(defaults(props.minDistance, 0.1)), + maxDistance: Math.log(defaults(props.maxDistance, 1000)) } const view = Mat4.identity() diff --git a/src/mol-util/index.ts b/src/mol-util/index.ts index 191fddd92..caa3e33f4 100644 --- a/src/mol-util/index.ts +++ b/src/mol-util/index.ts @@ -23,4 +23,8 @@ export function arrayEqual<T>(arr1: T[], arr2: T[]) { } } return true +} + +export function defaults (value: any, defaultValue: any) { + return value !== undefined ? value : defaultValue } \ No newline at end of file -- GitLab