uniform.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { ColorTheme } from '../color';
  7. import { Color } from '../../mol-util/color';
  8. import { ParamDefinition as PD } from '../../mol-util/param-definition'
  9. import { ThemeDataContext } from '../theme';
  10. import { TableLegend } from '../../mol-util/legend';
  11. import { defaults } from '../../mol-util';
  12. const DefaultColor = Color(0xCCCCCC)
  13. const Description = 'Gives everything the same, uniform color.'
  14. export const UniformColorThemeParams = {
  15. value: PD.Color(DefaultColor),
  16. }
  17. export type UniformColorThemeParams = typeof UniformColorThemeParams
  18. export function getUniformColorThemeParams(ctx: ThemeDataContext) {
  19. return UniformColorThemeParams // TODO return copy
  20. }
  21. export function UniformColorTheme(ctx: ThemeDataContext, props: PD.Values<UniformColorThemeParams>): ColorTheme<UniformColorThemeParams> {
  22. const color = defaults(props.value, DefaultColor)
  23. return {
  24. factory: UniformColorTheme,
  25. granularity: 'uniform',
  26. color: () => color,
  27. props: props,
  28. description: Description,
  29. legend: TableLegend([['uniform', color]])
  30. }
  31. }
  32. export const UniformColorThemeProvider: ColorTheme.Provider<UniformColorThemeParams> = {
  33. label: 'Uniform',
  34. category: ColorTheme.Category.Misc,
  35. factory: UniformColorTheme,
  36. getParams: getUniformColorThemeParams,
  37. defaultValues: PD.getDefaultValues(UniformColorThemeParams),
  38. isApplicable: (ctx: ThemeDataContext) => true
  39. }