molstar 3.44.0 → 3.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/viewer/molstar.css +1 -1
- package/build/viewer/molstar.js +1 -1
- package/lib/cli/cifschema/index.js +2 -2
- package/lib/commonjs/cli/cifschema/index.js +2 -2
- package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
- package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
- package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
- package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
- package/lib/commonjs/extensions/dnatco/ntc-tube/representation.d.ts +3 -3
- package/lib/commonjs/extensions/mvs/behavior.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/behavior.js +3 -1
- package/lib/commonjs/extensions/mvs/components/annotation-color-theme.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/components/annotation-color-theme.js +3 -2
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +3 -1
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.js +3 -2
- package/lib/commonjs/extensions/mvs/components/annotation-prop.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/components/annotation-prop.js +2 -2
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.js +4 -3
- package/lib/commonjs/extensions/mvs/components/custom-tooltips-prop.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/components/custom-tooltips-prop.js +2 -2
- package/lib/commonjs/extensions/mvs/components/is-mvs-model-prop.d.ts +21 -0
- package/lib/commonjs/extensions/mvs/components/is-mvs-model-prop.js +40 -0
- package/lib/commonjs/extensions/mvs/components/multilayer-color-theme.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/components/multilayer-color-theme.js +4 -3
- package/lib/commonjs/extensions/mvs/load.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/load.js +5 -2
- package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
- package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
- package/lib/commonjs/extensions/rcsb/graphql/types.d.ts +160 -1
- package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +10 -5
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/color-data.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/color-data.js +15 -8
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders-builder.d.ts +9 -3
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders-builder.js +13 -6
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +11 -2
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +14 -9
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
- package/lib/commonjs/mol-geo/util/location-iterator.d.ts +4 -1
- package/lib/commonjs/mol-geo/util/location-iterator.js +8 -1
- package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -0
- package/lib/commonjs/mol-gl/renderable/cylinders.js +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
- package/lib/commonjs/mol-gl/shader/cylinders.vert.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/cylinders.vert.js +2 -2
- package/lib/commonjs/mol-io/reader/cif/schema/bird.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/bird.js +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/ccd.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/ccd.js +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +2 -2
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +1 -1
- package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
- package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +2 -1
- package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +2 -1
- package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +6 -3
- package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +8 -4
- package/lib/commonjs/mol-plugin/behavior/dynamic/representation.d.ts +1 -1
- package/lib/commonjs/mol-plugin/behavior/dynamic/representation.js +12 -6
- package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +9 -7
- package/lib/commonjs/mol-plugin-state/transforms/representation.js +16 -10
- package/lib/commonjs/mol-plugin-ui/controls/parameters.d.ts +2 -3
- package/lib/commonjs/mol-plugin-ui/controls/parameters.js +48 -12
- package/lib/commonjs/mol-plugin-ui/controls.d.ts +2 -2
- package/lib/commonjs/mol-plugin-ui/controls.js +7 -2
- package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
- package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
- package/lib/commonjs/mol-repr/shape/loci/label.d.ts +4 -1
- package/lib/commonjs/mol-repr/shape/loci/label.js +16 -9
- package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
- package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
- package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +7 -5
- package/lib/commonjs/mol-repr/structure/complex-visual.js +3 -2
- package/lib/commonjs/mol-repr/structure/params.d.ts +5 -4
- package/lib/commonjs/mol-repr/structure/registry.d.ts +15 -10
- package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +6 -3
- package/lib/commonjs/mol-repr/structure/representation/backbone.js +1 -1
- package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +6 -3
- package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +6 -3
- package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +6 -3
- package/lib/commonjs/mol-repr/structure/representation/cartoon.js +1 -1
- package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +6 -3
- package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
- package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
- package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
- package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
- package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
- package/lib/commonjs/mol-repr/structure/units-visual.d.ts +7 -5
- package/lib/commonjs/mol-repr/structure/units-visual.js +3 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +5 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.js +8 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.js +1 -1
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +5 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +8 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +1 -1
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +2 -1
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +2 -1
- package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +4 -4
- package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-bond.d.ts +4 -2
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-bond.js +27 -26
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-element.d.ts +2 -2
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-ring-fill.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +4 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.js +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.js +1 -1
- package/lib/commonjs/mol-repr/structure/visual/util/bond.d.ts +9 -2
- package/lib/commonjs/mol-repr/structure/visual/util/bond.js +28 -2
- package/lib/commonjs/mol-repr/structure/visual/util/link.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/util/link.js +16 -13
- package/lib/commonjs/mol-repr/structure/visual/util/polymer.d.ts +3 -1
- package/lib/commonjs/mol-repr/structure/visual/util/polymer.js +2 -2
- package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
- package/lib/commonjs/mol-repr/volume/registry.d.ts +2 -2
- package/lib/commonjs/mol-repr/volume/segment.d.ts +5 -5
- package/lib/commonjs/mol-util/param-definition.d.ts +9 -2
- package/lib/commonjs/mol-util/param-definition.js +2 -2
- package/lib/extensions/anvil/behavior.d.ts +1 -1
- package/lib/extensions/anvil/representation.d.ts +4 -4
- package/lib/extensions/cellpack/representation.d.ts +1 -1
- package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
- package/lib/extensions/dnatco/ntc-tube/representation.d.ts +3 -3
- package/lib/extensions/mvs/behavior.d.ts +1 -1
- package/lib/extensions/mvs/behavior.js +3 -1
- package/lib/extensions/mvs/components/annotation-color-theme.d.ts +1 -1
- package/lib/extensions/mvs/components/annotation-color-theme.js +3 -2
- package/lib/extensions/mvs/components/annotation-label/representation.d.ts +3 -1
- package/lib/extensions/mvs/components/annotation-label/representation.js +3 -2
- package/lib/extensions/mvs/components/annotation-prop.d.ts +1 -1
- package/lib/extensions/mvs/components/annotation-prop.js +2 -2
- package/lib/extensions/mvs/components/custom-label/representation.d.ts +1 -1
- package/lib/extensions/mvs/components/custom-label/representation.js +4 -3
- package/lib/extensions/mvs/components/custom-tooltips-prop.d.ts +1 -1
- package/lib/extensions/mvs/components/custom-tooltips-prop.js +2 -2
- package/lib/extensions/mvs/components/is-mvs-model-prop.d.ts +21 -0
- package/lib/extensions/mvs/components/is-mvs-model-prop.js +35 -0
- package/lib/extensions/mvs/components/multilayer-color-theme.d.ts +1 -1
- package/lib/extensions/mvs/components/multilayer-color-theme.js +4 -3
- package/lib/extensions/mvs/load.d.ts +1 -1
- package/lib/extensions/mvs/load.js +5 -2
- package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
- package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
- package/lib/extensions/rcsb/graphql/types.d.ts +160 -1
- package/lib/extensions/rcsb/validation-report/representation.d.ts +10 -5
- package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
- package/lib/mol-geo/geometry/color-data.d.ts +1 -0
- package/lib/mol-geo/geometry/color-data.js +15 -8
- package/lib/mol-geo/geometry/cylinders/cylinders-builder.d.ts +9 -3
- package/lib/mol-geo/geometry/cylinders/cylinders-builder.js +13 -6
- package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +11 -2
- package/lib/mol-geo/geometry/cylinders/cylinders.js +14 -9
- package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
- package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
- package/lib/mol-geo/util/location-iterator.d.ts +4 -1
- package/lib/mol-geo/util/location-iterator.js +8 -1
- package/lib/mol-gl/renderable/cylinders.d.ts +2 -0
- package/lib/mol-gl/renderable/cylinders.js +1 -1
- package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
- package/lib/mol-gl/shader/cylinders.vert.d.ts +2 -2
- package/lib/mol-gl/shader/cylinders.vert.js +2 -2
- package/lib/mol-io/reader/cif/schema/bird.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/bird.js +1 -1
- package/lib/mol-io/reader/cif/schema/ccd.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/ccd.js +1 -1
- package/lib/mol-io/reader/cif/schema/mmcif.d.ts +2 -2
- package/lib/mol-io/reader/cif/schema/mmcif.js +1 -1
- package/lib/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/mol-model-formats/shape/ply.d.ts +2 -2
- package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +2 -1
- package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +2 -1
- package/lib/mol-model-props/computed/representations/interactions.d.ts +6 -3
- package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +8 -4
- package/lib/mol-plugin/behavior/dynamic/representation.d.ts +1 -1
- package/lib/mol-plugin/behavior/dynamic/representation.js +12 -6
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-state/transforms/representation.d.ts +9 -7
- package/lib/mol-plugin-state/transforms/representation.js +16 -10
- package/lib/mol-plugin-ui/controls/parameters.d.ts +2 -3
- package/lib/mol-plugin-ui/controls/parameters.js +48 -12
- package/lib/mol-plugin-ui/controls.d.ts +2 -2
- package/lib/mol-plugin-ui/controls.js +7 -2
- package/lib/mol-plugin-ui/skin/base/components/controls.scss +14 -3
- package/lib/mol-plugin-ui/skin/base/components/viewport.scss +9 -3
- package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
- package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
- package/lib/mol-repr/shape/loci/label.d.ts +4 -1
- package/lib/mol-repr/shape/loci/label.js +16 -9
- package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
- package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
- package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
- package/lib/mol-repr/structure/complex-visual.d.ts +7 -5
- package/lib/mol-repr/structure/complex-visual.js +3 -2
- package/lib/mol-repr/structure/params.d.ts +5 -4
- package/lib/mol-repr/structure/registry.d.ts +15 -10
- package/lib/mol-repr/structure/representation/backbone.d.ts +6 -3
- package/lib/mol-repr/structure/representation/backbone.js +1 -1
- package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +6 -3
- package/lib/mol-repr/structure/representation/carbohydrate.d.ts +6 -3
- package/lib/mol-repr/structure/representation/cartoon.d.ts +6 -3
- package/lib/mol-repr/structure/representation/cartoon.js +1 -1
- package/lib/mol-repr/structure/representation/ellipsoid.d.ts +6 -3
- package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
- package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
- package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
- package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
- package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
- package/lib/mol-repr/structure/units-visual.d.ts +7 -5
- package/lib/mol-repr/structure/units-visual.js +3 -2
- package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +5 -2
- package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js +8 -2
- package/lib/mol-repr/structure/visual/bond-inter-unit-line.js +1 -1
- package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +5 -2
- package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js +8 -2
- package/lib/mol-repr/structure/visual/bond-intra-unit-line.js +1 -1
- package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +2 -1
- package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +2 -1
- package/lib/mol-repr/structure/visual/element-sphere.d.ts +4 -4
- package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
- package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/nucleotide-atomic-bond.d.ts +4 -2
- package/lib/mol-repr/structure/visual/nucleotide-atomic-bond.js +27 -26
- package/lib/mol-repr/structure/visual/nucleotide-atomic-element.d.ts +2 -2
- package/lib/mol-repr/structure/visual/nucleotide-atomic-ring-fill.d.ts +1 -1
- package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +4 -2
- package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.js +4 -4
- package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
- package/lib/mol-repr/structure/visual/polymer-backbone-sphere.js +2 -2
- package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
- package/lib/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
- package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
- package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/polymer-trace-mesh.js +1 -1
- package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
- package/lib/mol-repr/structure/visual/polymer-tube-mesh.js +1 -1
- package/lib/mol-repr/structure/visual/util/bond.d.ts +9 -2
- package/lib/mol-repr/structure/visual/util/bond.js +28 -2
- package/lib/mol-repr/structure/visual/util/link.d.ts +2 -0
- package/lib/mol-repr/structure/visual/util/link.js +16 -13
- package/lib/mol-repr/structure/visual/util/polymer.d.ts +3 -1
- package/lib/mol-repr/structure/visual/util/polymer.js +2 -2
- package/lib/mol-repr/volume/isosurface.d.ts +5 -5
- package/lib/mol-repr/volume/registry.d.ts +2 -2
- package/lib/mol-repr/volume/segment.d.ts +5 -5
- package/lib/mol-util/param-definition.d.ts +9 -2
- package/lib/mol-util/param-definition.js +2 -2
- package/package.json +33 -21
|
@@ -23,20 +23,23 @@ export var CylindersBuilder;
|
|
|
23
23
|
var ends = ChunkedArray.create(Float32Array, 3, chunkSize, cylinders ? cylinders.endBuffer.ref.value : initialCount);
|
|
24
24
|
var scales = ChunkedArray.create(Float32Array, 1, chunkSize, cylinders ? cylinders.scaleBuffer.ref.value : initialCount);
|
|
25
25
|
var caps = ChunkedArray.create(Float32Array, 1, chunkSize, cylinders ? cylinders.capBuffer.ref.value : initialCount);
|
|
26
|
-
var
|
|
26
|
+
var colorModes = ChunkedArray.create(Float32Array, 1, chunkSize, cylinders ? cylinders.colorModeBuffer.ref.value : initialCount);
|
|
27
|
+
var add = function (startX, startY, startZ, endX, endY, endZ, radiusScale, topCap, bottomCap, colorMode, group) {
|
|
27
28
|
for (var i = 0; i < 6; ++i) {
|
|
28
29
|
caAdd3(starts, startX, startY, startZ);
|
|
29
30
|
caAdd3(ends, endX, endY, endZ);
|
|
30
31
|
caAdd(groups, group);
|
|
31
32
|
caAdd(scales, radiusScale);
|
|
32
33
|
caAdd(caps, (topCap ? 1 : 0) + (bottomCap ? 2 : 0));
|
|
34
|
+
caAdd(colorModes, colorMode);
|
|
33
35
|
}
|
|
34
36
|
};
|
|
35
|
-
var addFixedCountDashes = function (start, end, segmentCount, radiusScale, topCap, bottomCap, stubCap, group) {
|
|
37
|
+
var addFixedCountDashes = function (start, end, segmentCount, radiusScale, topCap, bottomCap, stubCap, interpolate, group) {
|
|
36
38
|
var d = Vec3.distance(start, end);
|
|
37
39
|
var isOdd = segmentCount % 2 !== 0;
|
|
38
40
|
var s = Math.floor((segmentCount + 1) / 2);
|
|
39
41
|
var step = d / (segmentCount + 0.5);
|
|
42
|
+
var colorMode = 2.0;
|
|
40
43
|
Vec3.setMagnitude(tmpDir, Vec3.sub(tmpDir, end, start), step);
|
|
41
44
|
Vec3.copy(tmpVecA, start);
|
|
42
45
|
for (var j = 0; j < s; ++j) {
|
|
@@ -49,16 +52,19 @@ export var CylindersBuilder;
|
|
|
49
52
|
else {
|
|
50
53
|
Vec3.add(tmpVecB, tmpVecA, tmpDir);
|
|
51
54
|
}
|
|
52
|
-
|
|
55
|
+
if (interpolate) {
|
|
56
|
+
colorMode = Vec3.distance(start, tmpVecB) / (d * 2);
|
|
57
|
+
}
|
|
58
|
+
add(tmpVecA[0], tmpVecA[1], tmpVecA[2], tmpVecB[0], tmpVecB[1], tmpVecB[2], radiusScale, topCap, bottomCap, colorMode, group);
|
|
53
59
|
Vec3.add(tmpVecA, tmpVecA, tmpDir);
|
|
54
60
|
}
|
|
55
61
|
};
|
|
56
62
|
return {
|
|
57
63
|
add: add,
|
|
58
64
|
addFixedCountDashes: addFixedCountDashes,
|
|
59
|
-
addFixedLengthDashes: function (start, end, segmentLength, radiusScale, topCap, bottomCap, group) {
|
|
65
|
+
addFixedLengthDashes: function (start, end, segmentLength, radiusScale, topCap, bottomCap, interpolate, group) {
|
|
60
66
|
var d = Vec3.distance(start, end);
|
|
61
|
-
addFixedCountDashes(start, end, d / segmentLength, radiusScale, topCap, bottomCap, true, group);
|
|
67
|
+
addFixedCountDashes(start, end, d / segmentLength, radiusScale, topCap, bottomCap, true, interpolate, group);
|
|
62
68
|
},
|
|
63
69
|
getCylinders: function () {
|
|
64
70
|
var cylinderCount = groups.elementCount / 6;
|
|
@@ -67,11 +73,12 @@ export var CylindersBuilder;
|
|
|
67
73
|
var eb = ChunkedArray.compact(ends, true);
|
|
68
74
|
var ab = ChunkedArray.compact(scales, true);
|
|
69
75
|
var cb = ChunkedArray.compact(caps, true);
|
|
76
|
+
var cmb = ChunkedArray.compact(colorModes, true);
|
|
70
77
|
var mb = cylinders && cylinderCount <= cylinders.cylinderCount ? cylinders.mappingBuffer.ref.value : new Float32Array(cylinderCount * 18);
|
|
71
78
|
var ib = cylinders && cylinderCount <= cylinders.cylinderCount ? cylinders.indexBuffer.ref.value : new Uint32Array(cylinderCount * 12);
|
|
72
79
|
if (!cylinders || cylinderCount > cylinders.cylinderCount)
|
|
73
80
|
fillMappingAndIndices(cylinderCount, mb, ib);
|
|
74
|
-
return Cylinders.create(mb, ib, gb, sb, eb, ab, cb, cylinderCount, cylinders);
|
|
81
|
+
return Cylinders.create(mb, ib, gb, sb, eb, ab, cb, cmb, cylinderCount, cylinders);
|
|
75
82
|
}
|
|
76
83
|
};
|
|
77
84
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2020-2023 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { ValueCell } from '../../../mol-util';
|
|
7
8
|
import { Mat4 } from '../../../mol-math/linear-algebra';
|
|
@@ -27,6 +28,13 @@ export interface Cylinders {
|
|
|
27
28
|
readonly scaleBuffer: ValueCell<Float32Array>;
|
|
28
29
|
/** Cylinder cap buffer as array of cap flags wrapped in a value cell */
|
|
29
30
|
readonly capBuffer: ValueCell<Float32Array>;
|
|
31
|
+
/**
|
|
32
|
+
* Cylinder colorMode buffer as array of coloring modes flags wrapped in a value cell
|
|
33
|
+
* - for colorMode between 0 and 1 use colorMode to interpolate
|
|
34
|
+
* - for colorMode == 2 do nothing, i.e., use given theme color
|
|
35
|
+
* - for colorMode == 3 use position on cylinder axis to interpolate
|
|
36
|
+
*/
|
|
37
|
+
readonly colorModeBuffer: ValueCell<Float32Array>;
|
|
30
38
|
/** Bounding sphere of the cylinders */
|
|
31
39
|
readonly boundingSphere: Sphere3D;
|
|
32
40
|
/** Maps group ids to cylinder indices */
|
|
@@ -34,7 +42,7 @@ export interface Cylinders {
|
|
|
34
42
|
setBoundingSphere(boundingSphere: Sphere3D): void;
|
|
35
43
|
}
|
|
36
44
|
export declare namespace Cylinders {
|
|
37
|
-
function create(mappings: Float32Array, indices: Uint32Array, groups: Float32Array, starts: Float32Array, ends: Float32Array, scales: Float32Array, caps: Float32Array, cylinderCount: number, cylinders?: Cylinders): Cylinders;
|
|
45
|
+
function create(mappings: Float32Array, indices: Uint32Array, groups: Float32Array, starts: Float32Array, ends: Float32Array, scales: Float32Array, caps: Float32Array, colorModes: Float32Array, cylinderCount: number, cylinders?: Cylinders): Cylinders;
|
|
38
46
|
function createEmpty(cylinders?: Cylinders): Cylinders;
|
|
39
47
|
function transform(cylinders: Cylinders, t: Mat4): void;
|
|
40
48
|
const Params: {
|
|
@@ -43,10 +51,11 @@ export declare namespace Cylinders {
|
|
|
43
51
|
doubleSided: PD.BooleanParam;
|
|
44
52
|
ignoreLight: PD.BooleanParam;
|
|
45
53
|
xrayShaded: PD.Select<boolean | "inverted">;
|
|
46
|
-
transparentBackfaces: PD.Select<
|
|
54
|
+
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
|
|
47
55
|
solidInterior: PD.BooleanParam;
|
|
48
56
|
bumpFrequency: PD.Numeric;
|
|
49
57
|
bumpAmplitude: PD.Numeric;
|
|
58
|
+
colorMode: PD.Select<"default" | "interpolate">;
|
|
50
59
|
alpha: PD.Numeric;
|
|
51
60
|
quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
|
|
52
61
|
material: PD.Group<PD.Normalize<{
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2020-2023 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { __assign } from "tslib";
|
|
7
8
|
import { ValueCell } from '../../../mol-util';
|
|
@@ -22,10 +23,10 @@ import { createEmptyClipping } from '../clipping-data';
|
|
|
22
23
|
import { createEmptySubstance } from '../substance-data';
|
|
23
24
|
export var Cylinders;
|
|
24
25
|
(function (Cylinders) {
|
|
25
|
-
function create(mappings, indices, groups, starts, ends, scales, caps, cylinderCount, cylinders) {
|
|
26
|
+
function create(mappings, indices, groups, starts, ends, scales, caps, colorModes, cylinderCount, cylinders) {
|
|
26
27
|
return cylinders ?
|
|
27
|
-
update(mappings, indices, groups, starts, ends, scales, caps, cylinderCount, cylinders) :
|
|
28
|
-
fromArrays(mappings, indices, groups, starts, ends, scales, caps, cylinderCount);
|
|
28
|
+
update(mappings, indices, groups, starts, ends, scales, caps, colorModes, cylinderCount, cylinders) :
|
|
29
|
+
fromArrays(mappings, indices, groups, starts, ends, scales, caps, colorModes, cylinderCount);
|
|
29
30
|
}
|
|
30
31
|
Cylinders.create = create;
|
|
31
32
|
function createEmpty(cylinders) {
|
|
@@ -36,16 +37,17 @@ export var Cylinders;
|
|
|
36
37
|
var eb = cylinders ? cylinders.endBuffer.ref.value : new Float32Array(0);
|
|
37
38
|
var ab = cylinders ? cylinders.scaleBuffer.ref.value : new Float32Array(0);
|
|
38
39
|
var cb = cylinders ? cylinders.capBuffer.ref.value : new Float32Array(0);
|
|
39
|
-
|
|
40
|
+
var cmb = cylinders ? cylinders.colorModeBuffer.ref.value : new Float32Array(0);
|
|
41
|
+
return create(mb, ib, gb, sb, eb, ab, cb, cmb, 0, cylinders);
|
|
40
42
|
}
|
|
41
43
|
Cylinders.createEmpty = createEmpty;
|
|
42
44
|
function hashCode(cylinders) {
|
|
43
45
|
return hashFnv32a([
|
|
44
46
|
cylinders.cylinderCount, cylinders.mappingBuffer.ref.version, cylinders.indexBuffer.ref.version,
|
|
45
|
-
cylinders.groupBuffer.ref.version, cylinders.startBuffer.ref.version, cylinders.endBuffer.ref.version, cylinders.scaleBuffer.ref.version, cylinders.capBuffer.ref.version
|
|
47
|
+
cylinders.groupBuffer.ref.version, cylinders.startBuffer.ref.version, cylinders.endBuffer.ref.version, cylinders.scaleBuffer.ref.version, cylinders.capBuffer.ref.version, cylinders.colorModeBuffer.ref.version
|
|
46
48
|
]);
|
|
47
49
|
}
|
|
48
|
-
function fromArrays(mappings, indices, groups, starts, ends, scales, caps, cylinderCount) {
|
|
50
|
+
function fromArrays(mappings, indices, groups, starts, ends, scales, caps, colorModes, cylinderCount) {
|
|
49
51
|
var boundingSphere = Sphere3D();
|
|
50
52
|
var groupMapping;
|
|
51
53
|
var currentHash = -1;
|
|
@@ -60,6 +62,7 @@ export var Cylinders;
|
|
|
60
62
|
endBuffer: ValueCell.create(ends),
|
|
61
63
|
scaleBuffer: ValueCell.create(scales),
|
|
62
64
|
capBuffer: ValueCell.create(caps),
|
|
65
|
+
colorModeBuffer: ValueCell.create(colorModes),
|
|
63
66
|
get boundingSphere() {
|
|
64
67
|
var newHash = hashCode(cylinders);
|
|
65
68
|
if (newHash !== currentHash) {
|
|
@@ -84,7 +87,7 @@ export var Cylinders;
|
|
|
84
87
|
};
|
|
85
88
|
return cylinders;
|
|
86
89
|
}
|
|
87
|
-
function update(mappings, indices, groups, starts, ends, scales, caps, cylinderCount, cylinders) {
|
|
90
|
+
function update(mappings, indices, groups, starts, ends, scales, caps, colorModes, cylinderCount, cylinders) {
|
|
88
91
|
if (cylinderCount > cylinders.cylinderCount) {
|
|
89
92
|
ValueCell.update(cylinders.mappingBuffer, mappings);
|
|
90
93
|
ValueCell.update(cylinders.indexBuffer, indices);
|
|
@@ -95,6 +98,7 @@ export var Cylinders;
|
|
|
95
98
|
ValueCell.update(cylinders.endBuffer, ends);
|
|
96
99
|
ValueCell.update(cylinders.scaleBuffer, scales);
|
|
97
100
|
ValueCell.update(cylinders.capBuffer, caps);
|
|
101
|
+
ValueCell.update(cylinders.colorModeBuffer, colorModes);
|
|
98
102
|
return cylinders;
|
|
99
103
|
}
|
|
100
104
|
function transform(cylinders, t) {
|
|
@@ -107,7 +111,7 @@ export var Cylinders;
|
|
|
107
111
|
}
|
|
108
112
|
Cylinders.transform = transform;
|
|
109
113
|
//
|
|
110
|
-
Cylinders.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), sizeAspectRatio: PD.Numeric(1, { min: 0, max: 3, step: 0.01 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Select(false, [[false, 'Off'], [true, 'On'], ['inverted', 'Inverted']], BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), solidInterior: PD.Boolean(true, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
|
|
114
|
+
Cylinders.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), sizeAspectRatio: PD.Numeric(1, { min: 0, max: 3, step: 0.01 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Select(false, [[false, 'Off'], [true, 'On'], ['inverted', 'Inverted']], BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), solidInterior: PD.Boolean(true, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory), colorMode: PD.Select('default', PD.arrayToOptions(['default', 'interpolate']), BaseGeometry.ShadingCategory) });
|
|
111
115
|
Cylinders.Utils = {
|
|
112
116
|
Params: Cylinders.Params,
|
|
113
117
|
createEmpty: createEmpty,
|
|
@@ -155,7 +159,7 @@ export var Cylinders;
|
|
|
155
159
|
var padding = getMaxSize(size) * props.sizeFactor;
|
|
156
160
|
var invariantBoundingSphere = Sphere3D.clone(cylinders.boundingSphere);
|
|
157
161
|
var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount, 0);
|
|
158
|
-
return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded === 'inverted' ? 'inverted' : props.xrayShaded === true ? 'on' : 'off'), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), dSolidInterior: ValueCell.create(props.solidInterior), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
|
|
162
|
+
return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, aColorMode: cylinders.colorModeBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded === 'inverted' ? 'inverted' : props.xrayShaded === true ? 'on' : 'off'), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), dSolidInterior: ValueCell.create(props.solidInterior), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude), dDualColor: ValueCell.create(props.colorMode === 'interpolate') });
|
|
159
163
|
}
|
|
160
164
|
function createValuesSimple(cylinders, props, colorValue, sizeValue, transform) {
|
|
161
165
|
var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
|
|
@@ -172,6 +176,7 @@ export var Cylinders;
|
|
|
172
176
|
ValueCell.updateIfChanged(values.dSolidInterior, props.solidInterior);
|
|
173
177
|
ValueCell.updateIfChanged(values.uBumpFrequency, props.bumpFrequency);
|
|
174
178
|
ValueCell.updateIfChanged(values.uBumpAmplitude, props.bumpAmplitude);
|
|
179
|
+
ValueCell.updateIfChanged(values.dDualColor, props.colorMode === 'interpolate');
|
|
175
180
|
}
|
|
176
181
|
function updateBoundingSphere(values, cylinders) {
|
|
177
182
|
var invariantBoundingSphere = Sphere3D.clone(cylinders.boundingSphere);
|
|
@@ -64,7 +64,7 @@ export declare namespace Mesh {
|
|
|
64
64
|
flatShaded: PD.BooleanParam;
|
|
65
65
|
ignoreLight: PD.BooleanParam;
|
|
66
66
|
xrayShaded: PD.Select<boolean | "inverted">;
|
|
67
|
-
transparentBackfaces: PD.Select<
|
|
67
|
+
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
|
|
68
68
|
bumpFrequency: PD.Numeric;
|
|
69
69
|
bumpAmplitude: PD.Numeric;
|
|
70
70
|
alpha: PD.Numeric;
|
|
@@ -38,7 +38,7 @@ export declare namespace Spheres {
|
|
|
38
38
|
doubleSided: PD.BooleanParam;
|
|
39
39
|
ignoreLight: PD.BooleanParam;
|
|
40
40
|
xrayShaded: PD.Select<boolean | "inverted">;
|
|
41
|
-
transparentBackfaces: PD.Select<
|
|
41
|
+
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
|
|
42
42
|
solidInterior: PD.BooleanParam;
|
|
43
43
|
clipPrimitive: PD.BooleanParam;
|
|
44
44
|
approximate: PD.BooleanParam;
|
|
@@ -48,7 +48,7 @@ export declare namespace TextureMesh {
|
|
|
48
48
|
flatShaded: PD.BooleanParam;
|
|
49
49
|
ignoreLight: PD.BooleanParam;
|
|
50
50
|
xrayShaded: PD.Select<boolean | "inverted">;
|
|
51
|
-
transparentBackfaces: PD.Select<
|
|
51
|
+
transparentBackfaces: PD.Select<"on" | "off" | "opaque">;
|
|
52
52
|
bumpFrequency: PD.Numeric;
|
|
53
53
|
bumpAmplitude: PD.Numeric;
|
|
54
54
|
alpha: PD.Numeric;
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { Iterator } from '../../mol-data';
|
|
7
8
|
import { Vec3 } from '../../mol-math/linear-algebra';
|
|
8
9
|
import { Location } from '../../mol-model/location';
|
|
9
10
|
export interface LocationValue {
|
|
10
11
|
location: Location;
|
|
12
|
+
location2: Location;
|
|
11
13
|
index: number;
|
|
12
14
|
groupIndex: number;
|
|
13
15
|
instanceIndex: number;
|
|
@@ -21,6 +23,7 @@ export interface LocationIterator extends Iterator<LocationValue> {
|
|
|
21
23
|
readonly count: number;
|
|
22
24
|
readonly stride: number;
|
|
23
25
|
readonly nonInstanceable: boolean;
|
|
26
|
+
readonly hasLocation2: boolean;
|
|
24
27
|
move(): LocationValue;
|
|
25
28
|
reset(): void;
|
|
26
29
|
skipInstance(): void;
|
|
@@ -28,7 +31,7 @@ export interface LocationIterator extends Iterator<LocationValue> {
|
|
|
28
31
|
}
|
|
29
32
|
type LocationGetter = (groupIndex: number, instanceIndex: number) => Location;
|
|
30
33
|
type IsSecondaryGetter = (groupIndex: number, instanceIndex: number) => boolean;
|
|
31
|
-
export declare function LocationIterator(groupCount: number, instanceCount: number, stride: number, getLocation: LocationGetter, nonInstanceable?: boolean, isSecondary?: IsSecondaryGetter): LocationIterator;
|
|
34
|
+
export declare function LocationIterator(groupCount: number, instanceCount: number, stride: number, getLocation: LocationGetter, nonInstanceable?: boolean, isSecondary?: IsSecondaryGetter, getLocation2?: LocationGetter): LocationIterator;
|
|
32
35
|
/** A position Location */
|
|
33
36
|
export interface PositionLocation {
|
|
34
37
|
readonly kind: 'position-location';
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { Vec3 } from '../../mol-math/linear-algebra';
|
|
7
8
|
import { NullLocation } from '../../mol-model/location';
|
|
8
|
-
export function LocationIterator(groupCount, instanceCount, stride, getLocation, nonInstanceable, isSecondary) {
|
|
9
|
+
export function LocationIterator(groupCount, instanceCount, stride, getLocation, nonInstanceable, isSecondary, getLocation2) {
|
|
9
10
|
if (nonInstanceable === void 0) { nonInstanceable = false; }
|
|
10
11
|
if (isSecondary === void 0) { isSecondary = function () { return false; }; }
|
|
11
12
|
if (groupCount % stride !== 0) {
|
|
@@ -13,6 +14,7 @@ export function LocationIterator(groupCount, instanceCount, stride, getLocation,
|
|
|
13
14
|
}
|
|
14
15
|
var value = {
|
|
15
16
|
location: NullLocation,
|
|
17
|
+
location2: NullLocation,
|
|
16
18
|
index: 0,
|
|
17
19
|
groupIndex: 0,
|
|
18
20
|
instanceIndex: 0,
|
|
@@ -23,6 +25,7 @@ export function LocationIterator(groupCount, instanceCount, stride, getLocation,
|
|
|
23
25
|
var groupIndex = 0;
|
|
24
26
|
var instanceIndex = 0;
|
|
25
27
|
var voidInstances = false;
|
|
28
|
+
var hasLocation2 = !!getLocation2;
|
|
26
29
|
return {
|
|
27
30
|
get hasNext() { return hasNext; },
|
|
28
31
|
get isNextNewInstance() { return isNextNewInstance; },
|
|
@@ -31,12 +34,15 @@ export function LocationIterator(groupCount, instanceCount, stride, getLocation,
|
|
|
31
34
|
count: groupCount * instanceCount,
|
|
32
35
|
stride: stride,
|
|
33
36
|
nonInstanceable: nonInstanceable,
|
|
37
|
+
hasLocation2: hasLocation2,
|
|
34
38
|
move: function () {
|
|
35
39
|
if (hasNext) {
|
|
36
40
|
value.groupIndex = groupIndex;
|
|
37
41
|
value.instanceIndex = instanceIndex;
|
|
38
42
|
value.index = instanceIndex * groupCount + groupIndex;
|
|
39
43
|
value.location = getLocation(groupIndex, voidInstances ? -1 : instanceIndex);
|
|
44
|
+
if (hasLocation2)
|
|
45
|
+
value.location2 = getLocation2(groupIndex, voidInstances ? -1 : instanceIndex);
|
|
40
46
|
value.isSecondary = isSecondary(groupIndex, voidInstances ? -1 : instanceIndex);
|
|
41
47
|
groupIndex += stride;
|
|
42
48
|
if (groupIndex === groupCount) {
|
|
@@ -54,6 +60,7 @@ export function LocationIterator(groupCount, instanceCount, stride, getLocation,
|
|
|
54
60
|
},
|
|
55
61
|
reset: function () {
|
|
56
62
|
value.location = NullLocation;
|
|
63
|
+
value.location2 = NullLocation;
|
|
57
64
|
value.index = 0;
|
|
58
65
|
value.groupIndex = 0;
|
|
59
66
|
value.instanceIndex = 0;
|
|
@@ -14,6 +14,7 @@ export declare const CylindersSchema: {
|
|
|
14
14
|
aMapping: AttributeSpec<"float32">;
|
|
15
15
|
aScale: AttributeSpec<"float32">;
|
|
16
16
|
aCap: AttributeSpec<"float32">;
|
|
17
|
+
aColorMode: AttributeSpec<"float32">;
|
|
17
18
|
elements: ElementsSpec<"uint32">;
|
|
18
19
|
padding: ValueSpec<"number">;
|
|
19
20
|
uDoubleSided: UniformSpec<"b">;
|
|
@@ -23,6 +24,7 @@ export declare const CylindersSchema: {
|
|
|
23
24
|
dSolidInterior: DefineSpec<"boolean">;
|
|
24
25
|
uBumpFrequency: UniformSpec<"f">;
|
|
25
26
|
uBumpAmplitude: UniformSpec<"f">;
|
|
27
|
+
dDualColor: DefineSpec<"boolean">;
|
|
26
28
|
uSize: UniformSpec<"f">;
|
|
27
29
|
uSizeTexDim: UniformSpec<"v2">;
|
|
28
30
|
tSize: import("./schema").TextureSpec<"image-uint8">;
|
|
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
|
|
|
9
9
|
import { GlobalUniformSchema, BaseSchema, AttributeSpec, InternalSchema, SizeSchema, ElementsSpec, ValueSpec, DefineSpec, GlobalTextureSchema, UniformSpec } from './schema';
|
|
10
10
|
import { CylindersShaderCode } from '../shader-code';
|
|
11
11
|
import { ValueCell } from '../../mol-util';
|
|
12
|
-
export var CylindersSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aStart: AttributeSpec('float32', 3, 0), aEnd: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 3, 0), aScale: AttributeSpec('float32', 1, 0), aCap: AttributeSpec('float32', 1, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b', 'material'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('string', ['off', 'on', 'inverted']), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), dSolidInterior: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f', 'material'), uBumpAmplitude: UniformSpec('f', 'material') });
|
|
12
|
+
export var CylindersSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aStart: AttributeSpec('float32', 3, 0), aEnd: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 3, 0), aScale: AttributeSpec('float32', 1, 0), aCap: AttributeSpec('float32', 1, 0), aColorMode: AttributeSpec('float32', 1, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b', 'material'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('string', ['off', 'on', 'inverted']), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), dSolidInterior: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f', 'material'), uBumpAmplitude: UniformSpec('f', 'material'), dDualColor: DefineSpec('boolean') });
|
|
13
13
|
export function CylindersRenderable(ctx, id, values, state, materialId, variants) {
|
|
14
14
|
var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), CylindersSchema);
|
|
15
15
|
var internalValues = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
1
|
+
export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_groupInstance)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export var assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
1
|
+
export var assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_groupInstance)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2020-
|
|
2
|
+
* Copyright (c) 2020-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
*/
|
|
6
|
-
export declare const cylinders_vert = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelTransform = uModel * aTransform;\n\n vTransform = aTransform;\n vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n vSize = size * aScale;\n vCap = aCap;\n\n vModelPosition = (vStart + vEnd) * 0.5;\n vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 dir = vEnd - vStart;\n // ensure cylinder 'dir' is pointing towards the camera\n if(dot(camDir, dir) < 0.0) {\n dir = -dir;\n }\n\n vec3 left = cross(camDir, dir);\n vec3 up = cross(left, dir);\n left = vSize * normalize(left);\n up = vSize * normalize(up);\n\n // move vertex in object-space from center to corner\n vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n gl_Position = uProjection * mvPosition;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping\n gl_Position.z = (uProjection * mvPosition).z;\n }\n\n #include clip_instance\n}\n";
|
|
6
|
+
export declare const cylinders_vert = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\nattribute float aColorMode;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelTransform = uModel * aTransform;\n\n vTransform = aTransform;\n vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n vSize = size * aScale;\n vCap = aCap;\n\n vModelPosition = (vStart + vEnd) * 0.5;\n vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 dir = vEnd - vStart;\n float f = aMapping.x > 0.0 ? 1.0 : 0.0;\n // ensure cylinder 'dir' is pointing towards the camera\n if(dot(camDir, dir) < 0.0) {\n dir = -dir;\n f = 1.0 - f;\n }\n\n vec3 left = cross(camDir, dir);\n vec3 up = cross(left, dir);\n left = vSize * normalize(left);\n up = vSize * normalize(up);\n\n // move vertex in object-space from center to corner\n vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n gl_Position = uProjection * mvPosition;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping\n gl_Position.z = (uProjection * mvPosition).z;\n }\n\n #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance))\n // dual-color mixing\n // - for aColorMode between 0 and 1 use aColorMode to interpolate\n // - for aColorMode == 2 do nothing, i.e., use vColor\n // - for aColorMode == 3 use position on cylinder axis to interpolate\n if (aColorMode <= 1.0){\n vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode);\n } else if (aColorMode == 3.0) {\n vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5));\n }\n #endif\n\n #include clip_instance\n}\n";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2020-
|
|
2
|
+
* Copyright (c) 2020-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
*/
|
|
6
|
-
export var cylinders_vert = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelTransform = uModel * aTransform;\n\n vTransform = aTransform;\n vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n vSize = size * aScale;\n vCap = aCap;\n\n vModelPosition = (vStart + vEnd) * 0.5;\n vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 dir = vEnd - vStart;\n // ensure cylinder 'dir' is pointing towards the camera\n if(dot(camDir, dir) < 0.0) {\n dir = -dir;\n }\n\n vec3 left = cross(camDir, dir);\n vec3 up = cross(left, dir);\n left = vSize * normalize(left);\n up = vSize * normalize(up);\n\n // move vertex in object-space from center to corner\n vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n gl_Position = uProjection * mvPosition;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping\n gl_Position.z = (uProjection * mvPosition).z;\n }\n\n #include clip_instance\n}\n";
|
|
6
|
+
export var cylinders_vert = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\nattribute float aColorMode;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelTransform = uModel * aTransform;\n\n vTransform = aTransform;\n vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n vSize = size * aScale;\n vCap = aCap;\n\n vModelPosition = (vStart + vEnd) * 0.5;\n vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 dir = vEnd - vStart;\n float f = aMapping.x > 0.0 ? 1.0 : 0.0;\n // ensure cylinder 'dir' is pointing towards the camera\n if(dot(camDir, dir) < 0.0) {\n dir = -dir;\n f = 1.0 - f;\n }\n\n vec3 left = cross(camDir, dir);\n vec3 up = cross(left, dir);\n left = vSize * normalize(left);\n up = vSize * normalize(up);\n\n // move vertex in object-space from center to corner\n vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n gl_Position = uProjection * mvPosition;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping\n gl_Position.z = (uProjection * mvPosition).z;\n }\n\n #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance))\n // dual-color mixing\n // - for aColorMode between 0 and 1 use aColorMode to interpolate\n // - for aColorMode == 2 do nothing, i.e., use vColor\n // - for aColorMode == 3 use position on cylinder axis to interpolate\n if (aColorMode <= 1.0){\n vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode);\n } else if (aColorMode == 3.0) {\n vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5));\n }\n #endif\n\n #include clip_instance\n}\n";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -1953,7 +1953,7 @@ export declare const mmCIF_Schema: {
|
|
|
1953
1953
|
/**
|
|
1954
1954
|
* The identifying content type of the related entry.
|
|
1955
1955
|
*/
|
|
1956
|
-
content_type: Schema.Aliased<"split" | "other" | "minimized average structure" | "representative structure" | "ensemble" | "derivative structure" | "native structure" | "associated EM volume" | "other EM volume" | "associated NMR restraints" | "associated structure factors" | "associated SAS data" | "protein target sequence and/or protocol data" | "re-refinement" | "complete structure" | "unspecified">;
|
|
1956
|
+
content_type: Schema.Aliased<"split" | "other" | "minimized average structure" | "representative structure" | "ensemble" | "derivative structure" | "native structure" | "associated EM volume" | "other EM volume" | "focused EM volume" | "consensus EM volume" | "associated NMR restraints" | "associated structure factors" | "associated SAS data" | "protein target sequence and/or protocol data" | "re-refinement" | "complete structure" | "unspecified">;
|
|
1957
1957
|
};
|
|
1958
1958
|
/**
|
|
1959
1959
|
* The PDBX_ENTITY_NONPOLY category provides a mapping between
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
|
-
* Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.
|
|
4
|
+
* Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.386, IHM 1.25, MA 1.4.6.
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/ciftools package
|
|
7
7
|
*/
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @author molstar/cli/chem-comp-dict/create-saccharides
|
|
7
7
|
*/
|
|
8
|
-
export var SaccharideNames = new Set(['145', '147', '149', '289', '291', '293', '445', '475', '491', '510', '604', '045', '05L', '07E', '07Y', '08U', '09X', '0AT', '0BD', '0H0', '0HX', '0LP', '0MK', '0NZ', '0TS', '0UB', '0V4', '0WK', '0XY', '0YT', '10M', '12E', '14T', '15L', '16F', '16G', '16O', '17T', '18D', '18O', '18T', '1AR', '1BW', '1CF', '1FT', '1GL', '1GN', '1JB', '1LL', '1NA', '1S3', '1S4', '1SD', '1X4', '20S', '20X', '22O', '22S', '23V', '24S', '25E', '26M', '26O', '26Q', '26R', '26V', '26W', '26Y', '27C', '2DG', '2DR', '2F8', '2FG', '2FL', '2FP', '2GL', '2GS', '2H5', '2HA', '2M4', '2M5', '2M8', '2OS', '2SI', '2WP', '2WS', '32O', '34V', '38J', '3BU', '3CM', '3DO', '3DY', '3FM', '3GR', '3HD', '3J3', '3J4', '3LJ', '3LR', '3MF', '3MG', '3MK', '3R3', '3S6', '3SA', '3YW', '40J', '42D', '44S', '46D', '46M', '46Z', '48Z', '49A', '49S', '49T', '49V', '4AM', '4CQ', '4GC', '4GL', '4GP', '4JA', '4N2', '4NN', '4QY', '4R1', '4RS', '4SG', '4U0', '4U1', '4U2', '4UZ', '4V5', '50A', '51N', '56N', '57S', '5DI', '5GF', '5GO', '5II', '5KQ', '5KS', '5KT', '5KV', '5L2', '5L3', '5LS', '5LT', '5MM', '5N6', '5QP', '5RP', '5SA', '5SP', '5TH', '5TJ', '5TK', '5TM', '61J', '62I', '64K', '66O', '6BG', '6C2', '6DM', '6GB', '6GP', '6GR', '6K3', '6KH', '6KL', '6KS', '6KU', '6KW', '6LA', '6LS', '6LW', '6MJ', '6MN', '6PG', '6PY', '6PZ', '6S2', '6SA', '6UD', '6Y6', '6YR', '6ZC', '73E', '79J', '7CV', '7D1', '7GP', '7JZ', '7K2', '7K3', '7NU', '7SA', '83Y', '89Y', '8B7', '8B9', '8EX', '8GA', '8GG', '8GP', '8I4', '8LM', '8LR', '8OQ', '8PK', '8S0', '8YV', '95Z', '96O', '98U', '9AM', '9C1', '9CD', '9GP', '9KJ', '9MR', '9OK', '9PG', '9QG', '9QZ', '9S7', '9SG', '9SJ', '9SM', '9SP', '9T1', '9T7', '9VP', '9WJ', '9WN', '9WZ', '9YW', 'A0K', 'A1Q', 'A2G', 'A5C', 'A6P', 'AAL', 'AAO', 'ABC', 'ABD', 'ABE', 'ABF', 'ABL', 'AC1', 'ACG', 'ACR', 'ACX', 'ADA', 'ADG', 'ADR', 'AF1', 'AFD', 'AFL', 'AFO', 'AFP', 'AFR', 'AGC', 'AGH', 'AGL', 'AGR', 'AH2', 'AH8', 'AHG', 'AHM', 'AHR', 'AIG', 'ALL', 'ALX', 'AMG', 'AMN', 'AMU', 'AMV', 'ANA', 'AOG', 'AOS', 'AQA', 'ARA', 'ARB', 'ARE', 'ARI', 'ARW', 'ASC', 'ASG', 'ASO', 'AXP', 'AXR', 'AY9', 'AZC', 'B0D', 'B16', 'B1H', 'B1N', 'B2G', 'B4G', 'B6D', 'B7G', 'B8D', 'B9D', 'BBK', 'BBV', 'BCD', 'BCW', 'BDF', 'BDG', 'BDP', 'BDR', 'BDZ', 'BEM', 'BFN', 'BFP', 'BG6', 'BG8', 'BGC', 'BGL', 'BGN', 'BGP', 'BGS', 'BHG', 'BM3', 'BM7', 'BMA', 'BMX', 'BND', 'BNG', 'BNX', 'BO1', 'BOG', 'BQY', 'BRI', 'BS7', 'BTG', 'BTU', 'BW3', 'BWG', 'BXF', 'BXP', 'BXX', 'BXY', 'BZD', 'C3B', 'C3G', 'C3X', 'C4B', 'C4W', 'C4X', 'C5X', 'CAP', 'CBF', 'CBI', 'CBK', 'CDR', 'CE5', 'CE6', 'CE8', 'CEG', 'CEX', 'CEY', 'CEZ', 'CGF', 'CJB', 'CKB', 'CKP', 'CNP', 'CR1', 'CR6', 'CRA', 'CT3', 'CTO', 'CTR', 'CTT', 'D0N', 'D1M', 'D5E', 'D6G', 'DAF', 'DAG', 'DAN', 'DDA', 'DDB', 'DDL', 'DEG', 'DEL', 'DFR', 'DFX', 'DG0', 'DGC', 'DGD', 'DGM', 'DGO', 'DGS', 'DGU', 'DIG', 'DJB', 'DJE', 'DK4', 'DKX', 'DKZ', 'DL6', 'DLD', 'DLF', 'DLG', 'DMU', 'DNO', 'DO8', 'DOM', 'DP5', 'DPC', 'DQQ', 'DQR', 'DR2', 'DR3', 'DR4', 'DR5', 'DRI', 'DSR', 'DT6', 'DVC', 'DYM', 'E3M', 'E4P', 'E5G', 'EAG', 'EBG', 'EBQ', 'EEN', 'EEQ', 'EGA', 'EJT', 'EMP', 'EMZ', 'EPG', 'EQP', 'EQV', 'ERE', 'ERI', 'ETT', 'EUS', 'F1P', 'F1X', 'F55', 'F58', 'F6P', 'F8X', 'FBP', 'FCA', 'FCB', 'FCT', 'FDP', 'FDQ', 'FFC', 'FFX', 'FIF', 'FIX', 'FK9', 'FKD', 'FMF', 'FMO', 'FNG', 'FNY', 'FRU', 'FSA', 'FSI', 'FSM', 'FSR', 'FSW', 'FU4', 'FUB', 'FUC', 'FUD', 'FUF', 'FUL', 'FUY', 'FVQ', 'FX1', 'FYJ', 'G0S', 'G16', 'G1P', 'G20', 'G28', 'G2F', 'G3F', 'G3I', 'G4D', 'G4S', 'G6D', 'G6P', 'G6S', 'G7P', 'G8Z', 'GAA', 'GAC', 'GAD', 'GAF', 'GAL', 'GAT', 'GBH', 'GC1', 'GC4', 'GC9', 'GCB', 'GCD', 'GCN', 'GCO', 'GCS', 'GCT', 'GCU', 'GCV', 'GCW', 'GDA', 'GDL', 'GE1', 'GE3', 'GFP', 'GIV', 'GL0', 'GL1', 'GL2', 'GL4', 'GL5', 'GL6', 'GL7', 'GL9', 'GLA', 'GLB', 'GLC', 'GLD', 'GLF', 'GLG', 'GLO', 'GLP', 'GLS', 'GLT', 'GLW', 'GM0', 'GMB', 'GMH', 'GMT', 'GMZ', 'GN1', 'GN4', 'GNS', 'GNX', 'GP0', 'GP1', 'GP4', 'GPH', 'GPK', 'GPM', 'GPO', 'GPQ', 'GPU', 'GPV', 'GPW', 'GQ1', 'GRF', 'GRX', 'GS1', 'GS4', 'GS9', 'GSA', 'GSD', 'GTE', 'GTH', 'GTK', 'GTM', 'GTR', 'GU0', 'GU1', 'GU2', 'GU3', 'GU4', 'GU5', 'GU6', 'GU8', 'GU9', 'GUF', 'GUL', 'GUP', 'GUZ', 'GXL', 'GXV', 'GYE', 'GYG', 'GYP', 'GYU', 'GYV', 'GZL', 'H1M', 'H1S', 'H2P', 'H3S', 'H53', 'H6Q', 'H6Z', 'HBZ', 'HD4', 'HDL', 'HMS', 'HNV', 'HNW', 'HSG', 'HSH', 'HSJ', 'HSQ', 'HSR', 'HSU', 'HSX', 'HSY', 'HSZ', 'HTG', 'HTM', 'HVC', 'I57', 'IAB', 'IDC', 'IDF', 'IDG', 'IDR', 'IDS', 'IDT', 'IDU', 'IDX', 'IDY', 'IEM', 'IN1', 'IPT', 'ISD', 'ISL', 'ISX', 'IVG', 'IXD', 'J5B', 'JFZ', 'JHM', 'JLT', 'JRV', 'JS2', 'JSV', 'JV4', 'JVA', 'JVS', 'JZR', 'K5B', 'K99', 'KBA', 'KBG', 'KD5', 'KDA', 'KDB', 'KDD', 'KDE', 'KDF', 'KDM', 'KDN', 'KDO', 'KDR', 'KFN', 'KG1', 'KGM', 'KHP', 'KME', 'KO1', 'KO2', 'KOT', 'KQC', 'KTU', 'L1L', 'L6N', 'L6S', 'L6T', 'LAG', 'LAH', 'LAI', 'LAK', 'LAO', 'LAT', 'LB2', 'LBS', 'LBT', 'LCN', 'LDY', 'LEC', 'LER', 'LFC', 'LFR', 'LGC', 'LGU', 'LKA', 'LKS', 'LM2', 'LMO', 'LMT', 'LMU', 'LNV', 'LOG', 'LOX', 'LPK', 'LRH', 'LSM', 'LTG', 'LTM', 'LVO', 'LVZ', 'LXB', 'LXC', 'LXZ', 'LZ0', 'M1F', 'M1P', 'M2F', 'M3M', 'M3N', 'M55', 'M6D', 'M6P', 'M7B', 'M7P', 'M8C', 'MA1', 'MA2', 'MA3', 'MA8', 'MAB', 'MAF', 'MAG', 'MAL', 'MAN', 'MAT', 'MAV', 'MAW', 'MBE', 'MBF', 'MBG', 'MCU', 'MDA', 'MDP', 'MFA', 'MFB', 'MFU', 'MG5', 'MGA', 'MGC', 'MGL', 'MGS', 'MJJ', 'MLB', 'MLR', 'MMA', 'MMN', 'MN0', 'MNA', 'MQG', 'MQT', 'MRH', 'MRP', 'MSX', 'MTT', 'MUB', 'MUG', 'MUR', 'MVP', 'MXY', 'MXZ', 'MYG', 'N1L', 'N3U', 'N9S', 'NA1', 'NAA', 'NAG', 'NBG', 'NBX', 'NBY', 'NDG', 'NED', 'NFG', 'NG1', 'NG6', 'NGA', 'NGB', 'NGC', 'NGE', 'NGF', 'NGK', 'NGL', 'NGR', 'NGS', 'NGY', 'NGZ', 'NHF', 'NLC', 'NM6', 'NM9', 'NNG', 'NPF', 'NSQ', 'NT1', 'NTF', 'NTO', 'NTP', 'NXD', 'NYT', 'O1G', 'OAK', 'OEL', 'OI7', 'OPM', 'ORP', 'OSU', 'OTG', 'OTN', 'OTU', 'OX2', 'P53', 'P6P', 'P8E', 'PA1', 'PA5', 'PAV', 'PDX', 'PH5', 'PKM', 'PNA', 'PNG', 'PNJ', 'PNW', 'PPC', 'PRP', 'PSG', 'PSJ', 'PSV', 'PTQ', 'PUF', 'PZU', 'QDK', 'QIF', 'QKH', 'QPS', 'QV4', 'R1P', 'R1X', 'R2B', 'R2G', 'R5P', 'RAA', 'RAE', 'RAF', 'RAM', 'RAO', 'RAT', 'RB5', 'RBL', 'RCD', 'RDP', 'REL', 'RER', 'RF5', 'RG1', 'RGG', 'RHA', 'RHC', 'RI2', 'RIB', 'RIP', 'RM4', 'RNS', 'RNT', 'ROB', 'ROR', 'RP3', 'RP5', 'RP6', 'RPA', 'RR7', 'RRJ', 'RRY', 'RST', 'RTG', 'RTV', 'RUB', 'RUG', 'RUU', 'RV7', 'RVG', 'RVM', 'RWI', 'RY7', 'RZM', 'S6P', 'S7P', 'S81', 'SA0', 'SCG', 'SCR', 'SDD', 'SDY', 'SEJ', 'SF6', 'SF9', 'SFJ', 'SFU', 'SG4', 'SG5', 'SG6', 'SG7', 'SGA', 'SGC', 'SGD', 'SGN', 'SGS', 'SHB', 'SHD', 'SHG', 'SI3', 'SIA', 'SID', 'SIO', 'SIZ', 'SLB', 'SLM', 'SLT', 'SMD', 'SN5', 'SNG', 'SOE', 'SOG', 'SOL', 'SOR', 'SR1', 'SSG', 'SSH', 'STW', 'STZ', 'SUC', 'SUP', 'SUS', 'SWE', 'SZZ', 'T68', 'T6D', 'T6P', 'T6T', 'TA6', 'TAG', 'TCB', 'TCG', 'TDG', 'TEU', 'TF0', 'TFU', 'TGA', 'TGK', 'TGR', 'TGY', 'TH1', 'TM5', 'TM6', 'TM9', 'TMR', 'TMX', 'TNX', 'TOA', 'TOC', 'TQY', 'TRE', 'TRV', 'TS8', 'TT7', 'TTV', 'TTZ', 'TU4', 'TUG', 'TUJ', 'TUP', 'TUR', 'TVD', 'TVG', 'TVM', 'TVS', 'TVV', 'TVY', 'TW7', 'TWA', 'TWD', 'TWG', 'TWJ', 'TWY', 'TXB', 'TY6', 'TYV', 'U1Y', 'U2A', 'U2D', 'U63', 'U8V', 'U97', 'U9A', 'U9D', 'U9G', 'U9J', 'U9M', 'UAP', 'UBH', 'UBO', 'UCD', 'UDC', 'UEA', 'V3M', 'V3P', 'V71', 'VG1', 'VJ1', 'VJ4', 'VKN', 'VTB', 'W9T', 'WIA', 'WOO', 'WUN', 'WZ1', 'WZ2', 'WZ4', 'X0X', 'X1P', 'X1X', 'X2F', 'X2Y', 'X34', 'X4S', 'X5S', 'X6X', 'X6Y', 'XBP', 'XDP', 'XDX', 'XGP', 'XIL', 'XKJ', 'XLF', 'XLS', 'XMM', 'XS2', 'XUL', 'XXM', 'XXR', 'XXX', 'XY6', 'XY9', 'XYB', 'XYF', 'XYL', 'XYP', 'XYS', 'XYT', 'XYZ', 'YDR', 'YIO', 'YJM', 'YKR', 'YO5', 'YX0', 'YX1', 'YYB', 'YYD', 'YYH', 'YYJ', 'YYK', 'YYM', 'YYQ', 'YYR', 'YZ0', 'YZT', 'Z0F', 'Z15', 'Z16', 'Z2D', 'Z2T', 'Z3K', 'Z3L', 'Z3Q', 'Z3U', 'Z4K', 'Z4R', 'Z4S', 'Z4U', 'Z4V', 'Z4W', 'Z4Y', 'Z57', 'Z5J', 'Z5L', 'Z61', 'Z6G', 'Z6H', 'Z6J', 'Z6W', 'Z8H', 'Z8T', 'Z9D', 'Z9E', 'Z9H', 'Z9K', 'Z9L', 'Z9M', 'Z9N', 'Z9W', 'ZB0', 'ZB1', 'ZB2', 'ZB3', 'ZCD', 'ZCZ', 'ZD0', 'ZDC', 'ZDM', 'ZDO', 'ZEE', 'ZEL', 'ZGE', 'ZMR', 'UMQ', 'SQD']);
|
|
8
|
+
export var SaccharideNames = new Set(['145', '147', '149', '289', '291', '293', '445', '475', '491', '510', '604', '045', '05L', '07E', '07Y', '08U', '09X', '0AT', '0BD', '0H0', '0HX', '0LP', '0MK', '0NZ', '0TS', '0UB', '0V4', '0WK', '0XY', '0YT', '10M', '12E', '14T', '15L', '16F', '16G', '16O', '17T', '18D', '18O', '18T', '1AR', '1BW', '1CF', '1FT', '1GL', '1GN', '1JB', '1LL', '1NA', '1S3', '1S4', '1SD', '1X4', '20S', '20X', '22O', '22S', '23V', '24S', '25E', '26M', '26O', '26Q', '26R', '26V', '26W', '26Y', '27C', '2DG', '2DR', '2F8', '2FG', '2FL', '2FP', '2GL', '2GS', '2H5', '2HA', '2M4', '2M5', '2M8', '2OS', '2SI', '2WP', '2WS', '32O', '34V', '38J', '3BU', '3CM', '3DO', '3DY', '3FM', '3GR', '3HD', '3J3', '3J4', '3LJ', '3LR', '3MF', '3MG', '3MK', '3R3', '3S6', '3SA', '3YW', '40J', '42D', '44S', '46D', '46M', '46Z', '48Z', '49A', '49S', '49T', '49V', '4AM', '4CQ', '4GC', '4GL', '4GP', '4JA', '4N2', '4NN', '4QY', '4R1', '4RS', '4SG', '4U0', '4U1', '4U2', '4UZ', '4V5', '50A', '51N', '56N', '57S', '5DI', '5GF', '5GO', '5II', '5KQ', '5KS', '5KT', '5KV', '5L2', '5L3', '5LS', '5LT', '5MM', '5N6', '5QP', '5RP', '5SA', '5SP', '5TH', '5TJ', '5TK', '5TM', '61J', '62I', '64K', '66O', '6BG', '6C2', '6DM', '6GB', '6GP', '6GR', '6K3', '6KH', '6KL', '6KS', '6KU', '6KW', '6LA', '6LS', '6LW', '6MJ', '6MN', '6PG', '6PY', '6PZ', '6S2', '6SA', '6UD', '6Y6', '6YR', '6ZC', '73E', '79J', '7CV', '7D1', '7GP', '7JZ', '7K2', '7K3', '7NU', '7SA', '83Y', '89Y', '8B7', '8B9', '8EX', '8GA', '8GG', '8GP', '8I4', '8LM', '8LR', '8OQ', '8PK', '8S0', '8YV', '95Z', '96O', '98U', '9AM', '9C1', '9CD', '9GP', '9KJ', '9MR', '9OK', '9PG', '9QG', '9QZ', '9S7', '9SG', '9SJ', '9SM', '9SP', '9T1', '9T7', '9VP', '9WJ', '9WN', '9WZ', '9YW', 'A0K', 'A1Q', 'A2G', 'A5C', 'A6P', 'AAL', 'AAO', 'ABC', 'ABD', 'ABE', 'ABF', 'ABL', 'AC1', 'ACG', 'ACR', 'ACX', 'ADA', 'ADG', 'ADR', 'AF1', 'AFD', 'AFL', 'AFO', 'AFP', 'AFR', 'AGC', 'AGH', 'AGL', 'AGR', 'AH2', 'AH8', 'AHG', 'AHM', 'AHR', 'AIG', 'ALL', 'ALX', 'AMG', 'AMN', 'AMU', 'AMV', 'ANA', 'AOG', 'AOS', 'AQA', 'ARA', 'ARB', 'ARE', 'ARI', 'ARW', 'ASC', 'ASG', 'ASO', 'AXP', 'AXR', 'AY9', 'AZC', 'B0D', 'B16', 'B1H', 'B1N', 'B2G', 'B4G', 'B6D', 'B7G', 'B8D', 'B9D', 'BBK', 'BBV', 'BCD', 'BCW', 'BDF', 'BDG', 'BDP', 'BDR', 'BDZ', 'BEM', 'BFN', 'BFP', 'BG6', 'BG8', 'BGC', 'BGL', 'BGN', 'BGP', 'BGS', 'BHG', 'BM3', 'BM7', 'BMA', 'BMX', 'BND', 'BNG', 'BNX', 'BO1', 'BOG', 'BQY', 'BRI', 'BS7', 'BTG', 'BTU', 'BW3', 'BWG', 'BXF', 'BXP', 'BXX', 'BXY', 'BZD', 'C3B', 'C3G', 'C3X', 'C4B', 'C4W', 'C4X', 'C5X', 'CAP', 'CBF', 'CBI', 'CBK', 'CDR', 'CE5', 'CE6', 'CE8', 'CEG', 'CEX', 'CEY', 'CEZ', 'CGF', 'CJB', 'CKB', 'CKP', 'CNP', 'CR1', 'CR6', 'CRA', 'CT3', 'CTO', 'CTR', 'CTT', 'D0N', 'D1M', 'D5E', 'D6G', 'DAF', 'DAG', 'DAN', 'DDA', 'DDB', 'DDL', 'DEG', 'DEL', 'DFR', 'DFX', 'DG0', 'DGC', 'DGD', 'DGM', 'DGO', 'DGS', 'DGU', 'DIG', 'DJB', 'DJE', 'DK4', 'DKX', 'DKZ', 'DL6', 'DLD', 'DLF', 'DLG', 'DMU', 'DNO', 'DO8', 'DOM', 'DP5', 'DPC', 'DQQ', 'DQR', 'DR2', 'DR3', 'DR4', 'DR5', 'DRI', 'DSR', 'DT6', 'DVC', 'DYM', 'E3M', 'E4P', 'E5G', 'EAG', 'EBG', 'EBQ', 'EEN', 'EEQ', 'EGA', 'EJT', 'EMP', 'EMZ', 'EPG', 'EQP', 'EQV', 'ERE', 'ERI', 'ETT', 'EUS', 'F1P', 'F1X', 'F55', 'F58', 'F6P', 'F8X', 'FBP', 'FCA', 'FCB', 'FCT', 'FDP', 'FDQ', 'FFC', 'FFX', 'FIF', 'FIX', 'FK9', 'FKD', 'FMF', 'FMO', 'FNG', 'FNY', 'FRU', 'FSA', 'FSI', 'FSM', 'FSR', 'FSW', 'FU4', 'FUB', 'FUC', 'FUD', 'FUF', 'FUL', 'FUY', 'FVQ', 'FX1', 'FYJ', 'G0S', 'G16', 'G1P', 'G20', 'G28', 'G2F', 'G3F', 'G3I', 'G4D', 'G4S', 'G6D', 'G6P', 'G6S', 'G7P', 'G8Z', 'GAA', 'GAC', 'GAD', 'GAF', 'GAL', 'GAT', 'GBH', 'GC1', 'GC4', 'GC9', 'GCB', 'GCD', 'GCN', 'GCO', 'GCS', 'GCT', 'GCU', 'GCV', 'GCW', 'GDA', 'GDL', 'GE1', 'GE3', 'GFP', 'GIV', 'GL0', 'GL1', 'GL2', 'GL4', 'GL5', 'GL6', 'GL7', 'GL9', 'GLA', 'GLB', 'GLC', 'GLD', 'GLF', 'GLG', 'GLO', 'GLP', 'GLS', 'GLT', 'GLW', 'GM0', 'GMB', 'GMH', 'GMT', 'GMZ', 'GN1', 'GN4', 'GNS', 'GNX', 'GP0', 'GP1', 'GP4', 'GPH', 'GPK', 'GPM', 'GPO', 'GPQ', 'GPU', 'GPV', 'GPW', 'GQ1', 'GRF', 'GRX', 'GS1', 'GS4', 'GS9', 'GSA', 'GSD', 'GTE', 'GTH', 'GTK', 'GTM', 'GTR', 'GU0', 'GU1', 'GU2', 'GU3', 'GU4', 'GU5', 'GU6', 'GU8', 'GU9', 'GUF', 'GUL', 'GUP', 'GUZ', 'GXL', 'GXV', 'GYE', 'GYG', 'GYP', 'GYU', 'GYV', 'GZL', 'H1M', 'H1S', 'H2P', 'H3S', 'H53', 'H6Q', 'H6Z', 'HBZ', 'HD4', 'HDL', 'HMS', 'HNV', 'HNW', 'HSG', 'HSH', 'HSJ', 'HSQ', 'HSR', 'HSU', 'HSX', 'HSY', 'HSZ', 'HTG', 'HTM', 'HVC', 'I57', 'IAB', 'IDC', 'IDF', 'IDG', 'IDR', 'IDS', 'IDT', 'IDU', 'IDX', 'IDY', 'IEM', 'IN1', 'IPT', 'ISD', 'ISL', 'ISX', 'IVG', 'IXD', 'J5B', 'JFZ', 'JHM', 'JLT', 'JRV', 'JS2', 'JSV', 'JV4', 'JVA', 'JVS', 'JZR', 'K5B', 'K99', 'KBA', 'KBG', 'KD5', 'KDA', 'KDB', 'KDD', 'KDE', 'KDF', 'KDM', 'KDN', 'KDO', 'KDR', 'KFN', 'KG1', 'KGM', 'KHP', 'KME', 'KO1', 'KO2', 'KOT', 'KQC', 'KTU', 'L1L', 'L6N', 'L6S', 'L6T', 'LAG', 'LAH', 'LAI', 'LAK', 'LAO', 'LAT', 'LB2', 'LBS', 'LBT', 'LCN', 'LDY', 'LEC', 'LER', 'LFC', 'LFR', 'LGC', 'LGU', 'LKA', 'LKS', 'LM2', 'LMO', 'LMT', 'LMU', 'LNV', 'LOG', 'LOX', 'LPK', 'LRH', 'LSM', 'LTG', 'LTM', 'LVO', 'LVZ', 'LXB', 'LXC', 'LXZ', 'LZ0', 'M1F', 'M1P', 'M2F', 'M3M', 'M3N', 'M55', 'M6D', 'M6P', 'M7B', 'M7P', 'M8C', 'MA1', 'MA2', 'MA3', 'MA8', 'MAB', 'MAF', 'MAG', 'MAL', 'MAN', 'MAT', 'MAV', 'MAW', 'MBE', 'MBF', 'MBG', 'MCU', 'MDA', 'MDP', 'MFA', 'MFB', 'MFU', 'MG5', 'MGA', 'MGC', 'MGL', 'MGS', 'MJJ', 'MLB', 'MLR', 'MMA', 'MMN', 'MN0', 'MNA', 'MQG', 'MQT', 'MRH', 'MRP', 'MSX', 'MTT', 'MUB', 'MUG', 'MUR', 'MVP', 'MXY', 'MXZ', 'MYG', 'N1L', 'N3U', 'N9S', 'NA1', 'NAA', 'NAG', 'NBG', 'NBX', 'NBY', 'NDG', 'NED', 'NFG', 'NG1', 'NG6', 'NGA', 'NGB', 'NGC', 'NGE', 'NGF', 'NGK', 'NGL', 'NGR', 'NGS', 'NGY', 'NGZ', 'NHF', 'NLC', 'NM6', 'NM9', 'NNG', 'NPF', 'NSQ', 'NT1', 'NTF', 'NTO', 'NTP', 'NXD', 'NYT', 'O1G', 'OAK', 'OEL', 'OI7', 'OPM', 'ORP', 'OSU', 'OTG', 'OTN', 'OTU', 'OX2', 'P53', 'P6P', 'P8E', 'PA1', 'PA5', 'PAV', 'PDX', 'PH5', 'PKM', 'PNA', 'PNG', 'PNJ', 'PNW', 'PPC', 'PRP', 'PSG', 'PSJ', 'PSV', 'PTQ', 'PUF', 'PZU', 'QDK', 'QIF', 'QKH', 'QPS', 'QV4', 'R1P', 'R1X', 'R2B', 'R2G', 'R5P', 'RAA', 'RAE', 'RAF', 'RAM', 'RAO', 'RAT', 'RB5', 'RBL', 'RCD', 'RDP', 'REL', 'RER', 'RF5', 'RG1', 'RGG', 'RHA', 'RHC', 'RI2', 'RIB', 'RIP', 'RM4', 'RNS', 'RNT', 'ROB', 'ROR', 'RP3', 'RP5', 'RP6', 'RPA', 'RR7', 'RRJ', 'RRY', 'RST', 'RTG', 'RTV', 'RUB', 'RUG', 'RUU', 'RV7', 'RVG', 'RVM', 'RWI', 'RY7', 'RZM', 'S6P', 'S7P', 'S81', 'SA0', 'SCG', 'SCR', 'SDD', 'SDY', 'SEJ', 'SF6', 'SF9', 'SFJ', 'SFU', 'SG4', 'SG5', 'SG6', 'SG7', 'SGA', 'SGC', 'SGD', 'SGN', 'SGS', 'SHB', 'SHD', 'SHG', 'SI3', 'SIA', 'SID', 'SIO', 'SIZ', 'SLB', 'SLM', 'SLT', 'SMD', 'SN5', 'SNG', 'SOE', 'SOG', 'SOL', 'SOR', 'SR1', 'SSG', 'SSH', 'STW', 'STZ', 'SUC', 'SUP', 'SUS', 'SWE', 'SZZ', 'T68', 'T6D', 'T6P', 'T6T', 'TA6', 'TAG', 'TCB', 'TCG', 'TDG', 'TEU', 'TF0', 'TFU', 'TGA', 'TGK', 'TGR', 'TGY', 'TH1', 'TM5', 'TM6', 'TM9', 'TMR', 'TMX', 'TNX', 'TOA', 'TOC', 'TQY', 'TRE', 'TRV', 'TS8', 'TT7', 'TTV', 'TTZ', 'TU4', 'TUG', 'TUJ', 'TUP', 'TUR', 'TVD', 'TVG', 'TVM', 'TVS', 'TVV', 'TVY', 'TW7', 'TWA', 'TWD', 'TWG', 'TWJ', 'TWY', 'TXB', 'TY6', 'TYV', 'U1Y', 'U2A', 'U2D', 'U63', 'U8V', 'U97', 'U9A', 'U9D', 'U9G', 'U9J', 'U9M', 'UAP', 'UBH', 'UBO', 'UCD', 'UDC', 'UEA', 'V3M', 'V3P', 'V71', 'VDF', 'VG1', 'VJ1', 'VJ4', 'VKN', 'VTB', 'W9T', 'WIA', 'WOO', 'WUN', 'WZ1', 'WZ2', 'WZ4', 'X0X', 'X1P', 'X1X', 'X2F', 'X2Y', 'X34', 'X4S', 'X5S', 'X6X', 'X6Y', 'XBP', 'XDP', 'XDX', 'XGP', 'XIL', 'XKJ', 'XLF', 'XLS', 'XMM', 'XS2', 'XUL', 'XXM', 'XXR', 'XXX', 'XY6', 'XY9', 'XYB', 'XYF', 'XYL', 'XYP', 'XYS', 'XYT', 'XYZ', 'YDR', 'YIO', 'YJM', 'YKR', 'YO5', 'YX0', 'YX1', 'YYB', 'YYD', 'YYH', 'YYJ', 'YYK', 'YYM', 'YYQ', 'YYR', 'YZ0', 'YZT', 'Z0F', 'Z15', 'Z16', 'Z2D', 'Z2T', 'Z3K', 'Z3L', 'Z3Q', 'Z3U', 'Z4K', 'Z4R', 'Z4S', 'Z4U', 'Z4V', 'Z4W', 'Z4Y', 'Z57', 'Z5J', 'Z5L', 'Z61', 'Z6G', 'Z6H', 'Z6J', 'Z6W', 'Z8H', 'Z8T', 'Z9D', 'Z9E', 'Z9H', 'Z9K', 'Z9L', 'Z9M', 'Z9N', 'Z9W', 'ZB0', 'ZB1', 'ZB2', 'ZB3', 'ZCD', 'ZCZ', 'ZD0', 'ZDC', 'ZDM', 'ZDO', 'ZEE', 'ZEL', 'ZGE', 'ZMR', 'UMQ', 'SQD']);
|