ソースを参照

limit max number of generated colors

Alexander Rose 5 年 前
コミット
1923535918

+ 2 - 1
src/apps/viewer/extensions/cellpack/model.ts

@@ -201,7 +201,8 @@ export const LoadCellPackModel = StateAction.build({
                                     name: 'generate',
                                     params: {
                                         hue, chroma: [30, 80], luminance: [15, 85],
-                                        clusteringStepCount: 50, minSampleCount: 800
+                                        clusteringStepCount: 50, minSampleCount: 800,
+                                        maxCount: 75
                                     }
                                 }
                             }

+ 6 - 2
src/mol-theme/color/util.ts

@@ -22,7 +22,10 @@ export function getPaletteParams(props: Partial<GetPaletteProps> = {}) {
             scale: PD.Group({
                 list: PD.ColorScale<ColorListName>(p.scaleList, ColorListOptions),
             }, { isFlat: true }),
-            generate: PD.Group(DistinctColorsParams, { isFlat: true })
+            generate: PD.Group({
+                ...DistinctColorsParams,
+                maxCount: PD.Numeric(75, { min: 1, max: 250, step: 1 })
+            }, { isFlat: true })
         }, {
             options: [
                 ['scale', 'From Scale'],
@@ -51,8 +54,9 @@ export function getPalette(count: number, props: PaletteProps) {
         legend = scale.legend
         color = scale.color
     } else {
+        count = Math.min(count, props.palette.params.maxCount)
         const colors = distinctColors(count, props.palette.params)
-        color = (i: number) => colors[i]
+        color = (i: number) => colors[i % count]
     }
 
     return { color, legend }