UNPKG

5.12 kBJavaScriptView Raw
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
7var mapChannel = (function (channel) {
8 return channel / 255;
9});
10
11var normalize$1 = (function (min, max, value) {
12 if (value < min) return min;else if (value > max) return max;else return value;
13});
14
15var 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
48var 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
66var 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
86var 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
101var normalize = function normalize(min, max, value) {
102 if (value < min) return min;else if (value > max) return max;
103 return value;
104};
105
106var 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 // [x, y, z, r, g, b, a]
138 return [x, y, z].concat(colorVec);
139 } else {
140 // [x, y, z]
141 return [x, y, z];
142 }
143});
144
145var flatten = (function (arr) {
146 return [].concat.apply([], arr);
147});
148
149var 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
185return index;
186
187})));