Newer
Older
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { defaults } from 'mol-util';
import { Structure } from 'mol-model/structure';
import { VisualQuality } from 'mol-geo/geometry/base';
export interface VisualUpdateState {
updateTransform: boolean
updateMatrix: boolean
updateColor: boolean
updateSize: boolean
createGeometry: boolean
}
export namespace VisualUpdateState {
export function create(): VisualUpdateState {
return {
updateTransform: false,
updateMatrix: false,
createGeometry: false,
createNew: false,
}
}
export function reset(state: VisualUpdateState) {
state.updateTransform = false
state.updateMatrix = false
state.updateColor = false
state.updateSize = false
state.createGeometry = false
quality: VisualQuality
detail: number
radialSegments: number
export function getQualityProps(props: Partial<QualityProps>, data?: any) {
let detail = defaults(props.detail, 1)
let radialSegments = defaults(props.radialSegments, 12)
let linearSegments = defaults(props.linearSegments, 8)
if (quality === 'auto' && data instanceof Structure) {
let score = data.elementCount
if (data.isCoarse) score *= 10
} else if (score > 100_000) {
quality = 'low'
} else if (score > 30_000) {
quality = 'medium'
resolution = 0.3
break
case 'higher':
detail = 3
radialSegments = 28
linearSegments = 14
radialSegments = 4
linearSegments = 2
radialSegments = 2
linearSegments = 1
// use defaults or given props as set above
linearSegments,
resolution