1 | import * as d3 from 'd3-color';
|
2 | export function rgb2arr(str) {
|
3 | var color = d3.color(str);
|
4 | var arr = [0, 0, 0, 0];
|
5 |
|
6 | if (color != null) {
|
7 | arr[0] = color.r / 255;
|
8 | arr[1] = color.g / 255;
|
9 | arr[2] = color.b / 255;
|
10 | arr[3] = color.opacity;
|
11 | }
|
12 |
|
13 | return arr;
|
14 | }
|
15 | export function decodePickingColor(color) {
|
16 | var i1 = color && color[0];
|
17 | var i2 = color && color[1];
|
18 | var i3 = color && color[2];
|
19 | var index = i1 + i2 * 256 + i3 * 65536 - 1;
|
20 | return index;
|
21 | }
|
22 | export function encodePickingColor(featureIdx) {
|
23 | return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];
|
24 | }
|
25 | export function generateColorRamp(colorRamp) {
|
26 | var canvas = document.createElement('canvas');
|
27 | var ctx = canvas.getContext('2d');
|
28 | canvas.width = 256;
|
29 | canvas.height = 1;
|
30 | var gradient = ctx.createLinearGradient(0, 0, 256, 1);
|
31 | var data = null;
|
32 | var min = colorRamp.positions[0];
|
33 | var max = colorRamp.positions[colorRamp.positions.length - 1];
|
34 |
|
35 | for (var i = 0; i < colorRamp.colors.length; ++i) {
|
36 | var value = (colorRamp.positions[i] - min) / (max - min);
|
37 | gradient.addColorStop(value, colorRamp.colors[i]);
|
38 | }
|
39 |
|
40 | ctx.fillStyle = gradient;
|
41 | ctx.fillRect(0, 0, 256, 1);
|
42 | data = new Uint8ClampedArray(ctx.getImageData(0, 0, 256, 1).data);
|
43 | return new ImageData(data, 256, 1);
|
44 | }
|
45 |
|
\ | No newline at end of file |