1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
3 | typeof define === 'function' && define.amd ? define(factory) :
|
4 | (global.pointsToVertices = factory());
|
5 | }(this, (function () { 'use strict';
|
6 |
|
7 | var mapChannel = (function (channel) {
|
8 | return channel / 255;
|
9 | });
|
10 |
|
11 | var normalize$1 = (function (min, max, value) {
|
12 | if (value < min) return min;else if (value > max) return max;else return value;
|
13 | });
|
14 |
|
15 | var rgbToVec4 = (function (color) {
|
16 |
|
17 | var alpha = false;
|
18 |
|
19 | if (color.startsWith('rgba(')) alpha = true;else if (color.startsWith('rgb(')) alpha = false;
|
20 |
|
21 | var split = alpha ? 'rgba(' : 'rgb(';
|
22 |
|
23 | var channels = color.split(split)[1].split(')')[0].split(',');
|
24 | if (channels.length < 3 || channels.length > 4) {
|
25 | throw new Error(color + ' is not a valid rgb(a) color');
|
26 | }
|
27 |
|
28 | channels = channels.map(function (c) {
|
29 | return parseFloat(c);
|
30 | }).map(function (c) {
|
31 | return normalize$1(0, 255, c);
|
32 | });
|
33 |
|
34 | var _channels = channels,
|
35 | r = _channels[0],
|
36 | g = _channels[1],
|
37 | b = _channels[2],
|
38 | _channels$ = _channels[3],
|
39 | a = _channels$ === undefined ? 1 : _channels$;
|
40 |
|
41 | var aa = normalize$1(0, 1, a);
|
42 |
|
43 | var rgb = [r, g, b].map(mapChannel);
|
44 |
|
45 | return [].concat(rgb, [aa]);
|
46 | });
|
47 |
|
48 | var hexToRgb = (function (hex) {
|
49 |
|
50 | var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
51 | result = result.slice(1, 4);
|
52 | result = result.map(function (r) {
|
53 | return parseInt(r, 16);
|
54 | });
|
55 |
|
56 | var _result = result,
|
57 | r = _result[0],
|
58 | g = _result[1],
|
59 | b = _result[2];
|
60 |
|
61 | var a = 1;
|
62 |
|
63 | return { r: r, g: g, b: b, a: a };
|
64 | });
|
65 |
|
66 | var hexToVec4 = (function (color) {
|
67 |
|
68 | var isValid = /^#[0-9A-F]{6}$/i.test(color);
|
69 |
|
70 | if (!isValid) {
|
71 | throw new Error(color + ' is not a valid hex color');
|
72 | }
|
73 |
|
74 | var colorObj = hexToRgb(color);
|
75 | var r = colorObj.r,
|
76 | g = colorObj.g,
|
77 | b = colorObj.b;
|
78 |
|
79 | var colors = [r, g, b];
|
80 |
|
81 | return [].concat(colors.map(function (c) {
|
82 | return mapChannel(c);
|
83 | }), [1]);
|
84 | });
|
85 |
|
86 | var colorToVec4 = (function (color) {
|
87 |
|
88 | if (typeof color === 'string') {
|
89 |
|
90 | if (color.startsWith('rgba')) return rgbToVec4(color);else if (color.startsWith('rgb')) return rgbToVec4(color);else if (color.startsWith('#')) return hexToVec4(color);else throw new Error(color + ' is not a valid color, must be rgba, rgb, hex or vec4');
|
91 | } else if (Array.isArray(color)) {
|
92 | if (color.length !== 4) {
|
93 | throw new Error('[' + color + '] is not a valid vec4');
|
94 | }
|
95 | return color;
|
96 | } else {
|
97 | throw new Error(color + ' is not a valid color, must be rgba, rgb, hex or vec4');
|
98 | }
|
99 | });
|
100 |
|
101 | var normalize = function normalize(min, max, value) {
|
102 | if (value < min) return min;else if (value > max) return max;
|
103 | return value;
|
104 | };
|
105 |
|
106 | var pointToVertex = (function (point) {
|
107 | var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
108 | _ref$color = _ref.color,
|
109 | color = _ref$color === undefined ? true : _ref$color,
|
110 | _ref$dx = _ref.dx,
|
111 | dx = _ref$dx === undefined ? 0 : _ref$dx,
|
112 | _ref$dy = _ref.dy,
|
113 | dy = _ref$dy === undefined ? 0 : _ref$dy,
|
114 | _ref$dz = _ref.dz,
|
115 | dz = _ref$dz === undefined ? 0 : _ref$dz,
|
116 | _ref$dcolor = _ref.dcolor,
|
117 | dcolor = _ref$dcolor === undefined ? [0, 0, 0, 1] : _ref$dcolor;
|
118 |
|
119 | var _point$x = point.x,
|
120 | x = _point$x === undefined ? dx : _point$x,
|
121 | _point$y = point.y,
|
122 | y = _point$y === undefined ? dy : _point$y,
|
123 | _point$z = point.z,
|
124 | z = _point$z === undefined ? dz : _point$z;
|
125 |
|
126 |
|
127 | x = normalize(-1, 1, x);
|
128 | y = normalize(-1, 1, y);
|
129 | z = normalize(-1, 1, z);
|
130 |
|
131 | var _point$color = point.color,
|
132 | pColor = _point$color === undefined ? dcolor : _point$color;
|
133 |
|
134 |
|
135 | if (pColor && color) {
|
136 | var colorVec = colorToVec4(pColor);
|
137 |
|
138 | return [x, y, z].concat(colorVec);
|
139 | } else {
|
140 |
|
141 | return [x, y, z];
|
142 | }
|
143 | });
|
144 |
|
145 | var flatten = (function (arr) {
|
146 | return [].concat.apply([], arr);
|
147 | });
|
148 |
|
149 | var index = (function (points) {
|
150 | var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
151 | _ref$color = _ref.color,
|
152 | color = _ref$color === undefined ? true : _ref$color,
|
153 | _ref$dx = _ref.dx,
|
154 | dx = _ref$dx === undefined ? 0 : _ref$dx,
|
155 | _ref$dy = _ref.dy,
|
156 | dy = _ref$dy === undefined ? 0 : _ref$dy,
|
157 | _ref$dz = _ref.dz,
|
158 | dz = _ref$dz === undefined ? 0 : _ref$dz,
|
159 | _ref$dcolor = _ref.dcolor,
|
160 | dcolor = _ref$dcolor === undefined ? [0, 0, 0, 1] : _ref$dcolor,
|
161 | _ref$meta = _ref.meta,
|
162 | meta = _ref$meta === undefined ? false : _ref$meta;
|
163 |
|
164 | var options = {
|
165 | color: color, dx: dx, dy: dy, dz: dz, dcolor: dcolor, meta: meta
|
166 | };
|
167 |
|
168 | var vertices = flatten(points.map(function (p) {
|
169 | return pointToVertex(p, options);
|
170 | }));
|
171 |
|
172 | if (meta) {
|
173 |
|
174 | var _meta = {};
|
175 | _meta.vertexLength = color ? 7 : 3;
|
176 | _meta.amount = vertices.length / _meta.vertexLength;
|
177 | _meta.position = { start: 0, length: 3 };
|
178 | if (color) _meta.color = { start: 3, length: 4 };
|
179 | return { data: vertices, meta: _meta };
|
180 | } else {
|
181 | return vertices;
|
182 | }
|
183 | });
|
184 |
|
185 | return index;
|
186 |
|
187 | })));
|