overpaint.ts 1004 B

12345678910111213141516171819202122232425262728
  1. /**
  2. * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { Loci } from 'mol-model/loci';
  7. import { Color } from 'mol-util/color';
  8. export { Overpaint }
  9. type Overpaint = { layers: ReadonlyArray<Overpaint.Layer>, readonly alpha: number }
  10. namespace Overpaint {
  11. export type Layer = { readonly loci: Loci, readonly color: Color }
  12. export const Empty: Overpaint = { layers: [], alpha: 1 }
  13. export function areEqual(oA: Overpaint, oB: Overpaint) {
  14. if (oA.layers.length === 0 && oB.layers.length === 0) return true
  15. if (oA.layers.length !== oB.layers.length) return false
  16. if (oA.alpha !== oB.alpha) return false
  17. for (let i = 0, il = oA.layers.length; i < il; ++i) {
  18. if (oA.layers[i].color !== oB.layers[i].color) return false
  19. if (!Loci.areEqual(oA.layers[i].loci, oB.layers[i].loci)) return false
  20. }
  21. return true
  22. }
  23. }