aboutsummaryrefslogtreecommitdiff
path: root/benchmark/scripts/color.js
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/scripts/color.js')
-rw-r--r--benchmark/scripts/color.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/benchmark/scripts/color.js b/benchmark/scripts/color.js
new file mode 100644
index 0000000..074c963
--- /dev/null
+++ b/benchmark/scripts/color.js
@@ -0,0 +1,39 @@
+function Color(hex = '#000000')
+{
+ this.hex = hex;
+
+ var r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(this.hex);
+
+ this.rgb = {r: parseInt(r[1], 16),g: parseInt(r[2], 16),b: parseInt(r[3], 16)}
+
+ this.r = this.rgb.r;
+ this.g = this.rgb.g;
+ this.b = this.rgb.b;
+
+ this.average = parseInt((this.rgb.r + this.rgb.g + this.rgb.b)/3)
+ this.invert = {r:255-this.rgb.r, g:255-this.rgb.g, b:255-this.rgb.b};
+
+ this.contrast = function(b)
+ {
+ let a_lum = 0.2126 * _linear(this.r / 256) + 0.7152 * _linear(this.g / 256) + 0.0722 * _linear(this.b / 256)
+ let b_lum = 0.2126 * _linear(b.r / 256) + 0.7152 * _linear(b.g / 256) + 0.0722 * _linear(b.b / 256)
+ return a_lum > b_lum ? (a_lum + 0.05) / (b_lum + 0.05) : (b_lum + 0.05) / (a_lum + 0.05);
+ }
+
+ this.rgba = function()
+ {
+ return "rgba("+this.rgb().r+","+this.rgb().g+","+this.rgb().b+",1)";
+ }
+
+ this.floats = function()
+ {
+ return { r:this.rgb.r/255, g:this.rgb.g/255, b:this.rgb.b/255 }
+ }
+
+ this.toString = function()
+ {
+ return this.hex;
+ }
+
+ function _linear(v){ return (v <= 0.03928) ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }
+} \ No newline at end of file