diff --git a/src/mol-geo/representation/structure/index.ts b/src/mol-geo/representation/structure/index.ts index 37defba37882ce7208f97fc5edf357348957abfb..4ed40c07f36ba579c7c624817cf12368469bcb83 100644 --- a/src/mol-geo/representation/structure/index.ts +++ b/src/mol-geo/representation/structure/index.ts @@ -27,10 +27,23 @@ interface QualityProps { } function getQualityProps(props: Partial<QualityProps>, structure: Structure) { - const quality = defaults(props.quality, 'auto' as VisualQuality) + let quality = defaults(props.quality, 'auto' as VisualQuality) let detail = 1 let radialSegments = 12 + if (quality === 'auto') { + const score = structure.elementCount + if (score > 500_000) { + quality = 'lowest' + } else if (score > 100_000) { + quality = 'low' + } else if (score > 30_000) { + quality = 'medium' + } else { + quality = 'high' + } + } + switch (quality) { case 'highest': detail = 3 @@ -52,9 +65,6 @@ function getQualityProps(props: Partial<QualityProps>, structure: Structure) { detail = 0 radialSegments = 3 break - case 'auto': - // TODO - break case 'custom': detail = defaults(props.detail, 1) radialSegments = defaults(props.radialSegments, 12)