helpers.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { PluginStateObject } from '../objects';
  7. import { DistanceData } from '../../mol-repr/shape/loci/distance';
  8. import { LabelData } from '../../mol-repr/shape/loci/label';
  9. import { OrientationData } from '../../mol-repr/shape/loci/orientation';
  10. import { AngleData } from '../../mol-repr/shape/loci/angle';
  11. import { DihedralData } from '../../mol-repr/shape/loci/dihedral';
  12. import { PlaneData } from '../../mol-repr/shape/loci/plane';
  13. export function getDistanceDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): DistanceData {
  14. const lociA = s[0].loci;
  15. const lociB = s[1].loci;
  16. return { pairs: [{ loci: [lociA, lociB] as const }] };
  17. }
  18. export function getAngleDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): AngleData {
  19. const lociA = s[0].loci;
  20. const lociB = s[1].loci;
  21. const lociC = s[2].loci;
  22. return { triples: [{ loci: [lociA, lociB, lociC] as const }] };
  23. }
  24. export function getDihedralDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): DihedralData {
  25. const lociA = s[0].loci;
  26. const lociB = s[1].loci;
  27. const lociC = s[2].loci;
  28. const lociD = s[3].loci;
  29. return { quads: [{ loci: [lociA, lociB, lociC, lociD] as const }] };
  30. }
  31. export function getLabelDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): LabelData {
  32. const loci = s[0].loci;
  33. return { infos: [{ loci }] };
  34. }
  35. export function getOrientationDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): OrientationData {
  36. return { locis: s.map(v => v.loci) };
  37. }
  38. export function getPlaneDataFromStructureSelections(s: ReadonlyArray<PluginStateObject.Molecule.Structure.SelectionEntry>): PlaneData {
  39. return { locis: s.map(v => v.loci) };
  40. }