summaryrefslogtreecommitdiffstats
path: root/web/js/labitrack.d/05-utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/js/labitrack.d/05-utils.js')
-rw-r--r--web/js/labitrack.d/05-utils.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/web/js/labitrack.d/05-utils.js b/web/js/labitrack.d/05-utils.js
new file mode 100644
index 0000000..12822da
--- /dev/null
+++ b/web/js/labitrack.d/05-utils.js
@@ -0,0 +1,36 @@
+(function(labitrack){
+
+labitrack.utils = {};
+labitrack.utils.new_context = function(w, h){
+ var canvas = document.createElement('canvas');
+ canvas.width = w;
+ canvas.height = h;
+ return canvas.getContext('2d');
+};
+
+// Color quantization using Euclidean distance
+// https://en.wikipedia.org/wiki/Euclidean_distance
+// We don't do any alpha blending for now
+labitrack.utils.convert_to_monochrome = function(data){
+ var p = data.data;
+ for(var i = 0, l = p.length; i < l; i+=4) {
+ var v = (p[i+3] === 0 // handle alpha
+ ||
+ (Math.pow(p[i], 2) + Math.pow(p[i+1], 2) + Math.pow(p[i+2], 2))
+ >
+ (Math.pow(255-p[i], 2) + Math.pow(255-p[i+1], 2) + Math.pow(255-p[i+2], 2))
+ ) * 255;
+ p[i] = p[i+1] = p[i+2] = v;
+ p[i+3] = 255;
+ }
+};
+
+labitrack.utils.time = function(callback){
+ var start = Date.now();
+ var end = start;
+ callback();
+ end = Date.now();
+ return end - start;
+};
+
+}(labitrack));