2 linhas
26 KiB
JavaScript
Arquivo Executável
2 linhas
26 KiB
JavaScript
Arquivo Executável
var plotty=function(){function a(a,b){var c=a.__proto__||a.constructor.prototype;return b in a&&(!(b in c)||c[b]!==a[b])}function b(a,b){return"undefined"!=typeof a?a:b}function c(a,b){for(var c=["webgl","experimental-webgl"],d=null,e=0;e<c.length;++e){try{d=a.getContext(c[e],{preserveDrawingBuffer: true})}catch(f){}if(d)break}return d&&d.getExtension("OES_texture_float")?d:null}function d(a,b,c,d,e){var f=b,g=b+d,h=c,i=c+e;a.bufferData(a.ARRAY_BUFFER,new Float32Array([f,h,g,h,f,i,f,i,g,h,g,i]),a.STATIC_DRAW)}var e={viridis:new Uint8Array([68,1,84,255,68,2,86,255,69,4,87,255,69,5,89,255,70,7,90,255,70,8,92,255,70,10,93,255,70,11,94,255,71,13,96,255,71,14,97,255,71,16,99,255,71,17,100,255,71,19,101,255,72,20,103,255,72,22,104,255,72,23,105,255,72,24,106,255,72,26,108,255,72,27,109,255,72,28,110,255,72,29,111,255,72,31,112,255,72,32,113,255,72,33,115,255,72,35,116,255,72,36,117,255,72,37,118,255,72,38,119,255,72,40,120,255,72,41,121,255,71,42,122,255,71,44,122,255,71,45,123,255,71,46,124,255,71,47,125,255,70,48,126,255,70,50,126,255,70,51,127,255,70,52,128,255,69,53,129,255,69,55,129,255,69,56,130,255,68,57,131,255,68,58,131,255,68,59,132,255,67,61,132,255,67,62,133,255,66,63,133,255,66,64,134,255,66,65,134,255,65,66,135,255,65,68,135,255,64,69,136,255,64,70,136,255,63,71,136,255,63,72,137,255,62,73,137,255,62,74,137,255,62,76,138,255,61,77,138,255,61,78,138,255,60,79,138,255,60,80,139,255,59,81,139,255,59,82,139,255,58,83,139,255,58,84,140,255,57,85,140,255,57,86,140,255,56,88,140,255,56,89,140,255,55,90,140,255,55,91,141,255,54,92,141,255,54,93,141,255,53,94,141,255,53,95,141,255,52,96,141,255,52,97,141,255,51,98,141,255,51,99,141,255,50,100,142,255,50,101,142,255,49,102,142,255,49,103,142,255,49,104,142,255,48,105,142,255,48,106,142,255,47,107,142,255,47,108,142,255,46,109,142,255,46,110,142,255,46,111,142,255,45,112,142,255,45,113,142,255,44,113,142,255,44,114,142,255,44,115,142,255,43,116,142,255,43,117,142,255,42,118,142,255,42,119,142,255,42,120,142,255,41,121,142,255,41,122,142,255,41,123,142,255,40,124,142,255,40,125,142,255,39,126,142,255,39,127,142,255,39,128,142,255,38,129,142,255,38,130,142,255,38,130,142,255,37,131,142,255,37,132,142,255,37,133,142,255,36,134,142,255,36,135,142,255,35,136,142,255,35,137,142,255,35,138,141,255,34,139,141,255,34,140,141,255,34,141,141,255,33,142,141,255,33,143,141,255,33,144,141,255,33,145,140,255,32,146,140,255,32,146,140,255,32,147,140,255,31,148,140,255,31,149,139,255,31,150,139,255,31,151,139,255,31,152,139,255,31,153,138,255,31,154,138,255,30,155,138,255,30,156,137,255,30,157,137,255,31,158,137,255,31,159,136,255,31,160,136,255,31,161,136,255,31,161,135,255,31,162,135,255,32,163,134,255,32,164,134,255,33,165,133,255,33,166,133,255,34,167,133,255,34,168,132,255,35,169,131,255,36,170,131,255,37,171,130,255,37,172,130,255,38,173,129,255,39,173,129,255,40,174,128,255,41,175,127,255,42,176,127,255,44,177,126,255,45,178,125,255,46,179,124,255,47,180,124,255,49,181,123,255,50,182,122,255,52,182,121,255,53,183,121,255,55,184,120,255,56,185,119,255,58,186,118,255,59,187,117,255,61,188,116,255,63,188,115,255,64,189,114,255,66,190,113,255,68,191,112,255,70,192,111,255,72,193,110,255,74,193,109,255,76,194,108,255,78,195,107,255,80,196,106,255,82,197,105,255,84,197,104,255,86,198,103,255,88,199,101,255,90,200,100,255,92,200,99,255,94,201,98,255,96,202,96,255,99,203,95,255,101,203,94,255,103,204,92,255,105,205,91,255,108,205,90,255,110,206,88,255,112,207,87,255,115,208,86,255,117,208,84,255,119,209,83,255,122,209,81,255,124,210,80,255,127,211,78,255,129,211,77,255,132,212,75,255,134,213,73,255,137,213,72,255,139,214,70,255,142,214,69,255,144,215,67,255,147,215,65,255,149,216,64,255,152,216,62,255,155,217,60,255,157,217,59,255,160,218,57,255,162,218,55,255,165,219,54,255,168,219,52,255,170,220,50,255,173,220,48,255,176,221,47,255,178,221,45,255,181,222,43,255,184,222,41,255,186,222,40,255,189,223,38,255,192,223,37,255,194,223,35,255,197,224,33,255,200,224,32,255,202,225,31,255,205,225,29,255,208,225,28,255,210,226,27,255,213,226,26,255,216,226,25,255,218,227,25,255,221,227,24,255,223,227,24,255,226,228,24,255,229,228,25,255,231,228,25,255,234,229,26,255,236,229,27,255,239,229,28,255,241,229,29,255,244,230,30,255,246,230,32,255,248,230,33,255,251,231,35,255,253,231,37,255]),inferno:new Uint8Array([0,0,4,255,1,0,5,255,1,1,6,255,1,1,8,255,2,1,10,255,2,2,12,255,2,2,14,255,3,2,16,255,4,3,18,255,4,3,20,255,5,4,23,255,6,4,25,255,7,5,27,255,8,5,29,255,9,6,31,255,10,7,34,255,11,7,36,255,12,8,38,255,13,8,41,255,14,9,43,255,16,9,45,255,17,10,48,255,18,10,50,255,20,11,52,255,21,11,55,255,22,11,57,255,24,12,60,255,25,12,62,255,27,12,65,255,28,12,67,255,30,12,69,255,31,12,72,255,33,12,74,255,35,12,76,255,36,12,79,255,38,12,81,255,40,11,83,255,41,11,85,255,43,11,87,255,45,11,89,255,47,10,91,255,49,10,92,255,50,10,94,255,52,10,95,255,54,9,97,255,56,9,98,255,57,9,99,255,59,9,100,255,61,9,101,255,62,9,102,255,64,10,103,255,66,10,104,255,68,10,104,255,69,10,105,255,71,11,106,255,73,11,106,255,74,12,107,255,76,12,107,255,77,13,108,255,79,13,108,255,81,14,108,255,82,14,109,255,84,15,109,255,85,15,109,255,87,16,110,255,89,16,110,255,90,17,110,255,92,18,110,255,93,18,110,255,95,19,110,255,97,19,110,255,98,20,110,255,100,21,110,255,101,21,110,255,103,22,110,255,105,22,110,255,106,23,110,255,108,24,110,255,109,24,110,255,111,25,110,255,113,25,110,255,114,26,110,255,116,26,110,255,117,27,110,255,119,28,109,255,120,28,109,255,122,29,109,255,124,29,109,255,125,30,109,255,127,30,108,255,128,31,108,255,130,32,108,255,132,32,107,255,133,33,107,255,135,33,107,255,136,34,106,255,138,34,106,255,140,35,105,255,141,35,105,255,143,36,105,255,144,37,104,255,146,37,104,255,147,38,103,255,149,38,103,255,151,39,102,255,152,39,102,255,154,40,101,255,155,41,100,255,157,41,100,255,159,42,99,255,160,42,99,255,162,43,98,255,163,44,97,255,165,44,96,255,166,45,96,255,168,46,95,255,169,46,94,255,171,47,94,255,173,48,93,255,174,48,92,255,176,49,91,255,177,50,90,255,179,50,90,255,180,51,89,255,182,52,88,255,183,53,87,255,185,53,86,255,186,54,85,255,188,55,84,255,189,56,83,255,191,57,82,255,192,58,81,255,193,58,80,255,195,59,79,255,196,60,78,255,198,61,77,255,199,62,76,255,200,63,75,255,202,64,74,255,203,65,73,255,204,66,72,255,206,67,71,255,207,68,70,255,208,69,69,255,210,70,68,255,211,71,67,255,212,72,66,255,213,74,65,255,215,75,63,255,216,76,62,255,217,77,61,255,218,78,60,255,219,80,59,255,221,81,58,255,222,82,56,255,223,83,55,255,224,85,54,255,225,86,53,255,226,87,52,255,227,89,51,255,228,90,49,255,229,92,48,255,230,93,47,255,231,94,46,255,232,96,45,255,233,97,43,255,234,99,42,255,235,100,41,255,235,102,40,255,236,103,38,255,237,105,37,255,238,106,36,255,239,108,35,255,239,110,33,255,240,111,32,255,241,113,31,255,241,115,29,255,242,116,28,255,243,118,27,255,243,120,25,255,244,121,24,255,245,123,23,255,245,125,21,255,246,126,20,255,246,128,19,255,247,130,18,255,247,132,16,255,248,133,15,255,248,135,14,255,248,137,12,255,249,139,11,255,249,140,10,255,249,142,9,255,250,144,8,255,250,146,7,255,250,148,7,255,251,150,6,255,251,151,6,255,251,153,6,255,251,155,6,255,251,157,7,255,252,159,7,255,252,161,8,255,252,163,9,255,252,165,10,255,252,166,12,255,252,168,13,255,252,170,15,255,252,172,17,255,252,174,18,255,252,176,20,255,252,178,22,255,252,180,24,255,251,182,26,255,251,184,29,255,251,186,31,255,251,188,33,255,251,190,35,255,250,192,38,255,250,194,40,255,250,196,42,255,250,198,45,255,249,199,47,255,249,201,50,255,249,203,53,255,248,205,55,255,248,207,58,255,247,209,61,255,247,211,64,255,246,213,67,255,246,215,70,255,245,217,73,255,245,219,76,255,244,221,79,255,244,223,83,255,244,225,86,255,243,227,90,255,243,229,93,255,242,230,97,255,242,232,101,255,242,234,105,255,241,236,109,255,241,237,113,255,241,239,117,255,241,241,121,255,242,242,125,255,242,244,130,255,243,245,134,255,243,246,138,255,244,248,142,255,245,249,146,255,246,250,150,255,248,251,154,255,249,252,157,255,250,253,161,255,252,255,164,255]),rainbow:{colors:["#96005A","#0000C8","#0019FF","#0098FF","#2CFF96","#97FF00","#FFEA00","#FF6F00","#FF0000"],positions:[0,.125,.25,.375,.5,.625,.75,.875,1]},jet:{colors:["#000083","#003CAA","#05FFFF","#FFFF00","#FA0000","#800000"],positions:[0,.125,.375,.625,.875,1]},hsv:{colors:["#ff0000","#fdff02","#f7ff02","#00fc04","#00fc0a","#01f9ff","#0200fd","#0800fd","#ff00fb","#ff00f5","#ff0006"],positions:[0,.169,.173,.337,.341,.506,.671,.675,.839,.843,1]},hot:{colors:["#000000","#e60000","#ffd200","#ffffff"],positions:[0,.3,.6,1]},cool:{colors:["#00ffff","#ff00ff"],positions:[0,1]},spring:{colors:["#ff00ff","#ffff00"],positions:[0,1]},summer:{colors:["#008066","#ffff66"],positions:[0,1]},autumn:{colors:["#ff0000","#ffff00"],positions:[0,1]},winter:{colors:["#0000ff","#00ff80"],positions:[0,1]},bone:{colors:["#000000","#545474","#a9c8c8","#ffffff"],positions:[0,.376,.753,1]},copper:{colors:["#000000","#ffa066","#ffc77f"],positions:[0,.804,1]},greys:{colors:["#000000","#ffffff"],positions:[0,1]},yignbu:{colors:["#081d58","#253494","#225ea8","#1d91c0","#41b6c4","#7fcdbb","#c7e9b4","#edf8d9","#ffffd9"],positions:[0,.125,.25,.375,.5,.625,.75,.875,1]},greens:{colors:["#00441b","#006d2c","#238b45","#41ab5d","#74c476","#a1d99b","#c7e9c0","#e5f5e0","#f7fcf5"],positions:[0,.125,.25,.375,.5,.625,.75,.875,1]},yiorrd:{colors:["#800026","#bd0026","#e31a1c","#fc4e2a","#fd8d3c","#feb24c","#fed976","#ffeda0","#ffffcc"],positions:[0,.125,.25,.375,.5,.625,.75,.875,1]},bluered:{colors:["#0000ff","#ff0000"],positions:[0,1]},rdbu:{colors:["#050aac","#6a89f7","#bebebe","#dcaa84","#e6915a","#b20a1c"],positions:[0,.35,.5,.6,.7,1]},picnic:{colors:["#0000ff","#3399ff","#66ccff","#99ccff","#ccccff","#ffffff","#ffccff","#ff99ff","#ff66cc","#ff6666","#ff0000"],positions:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]},portland:{colors:["#0c3383","#0a88ba","#f2d338","#f28f38","#d91e1e"],positions:[0,.25,.5,.75,1]},blackbody:{colors:["#000000","#e60000","#e6d200","#ffffff","#a0c8ff"],positions:[0,.2,.4,.7,1]},earth:{colors:["#000082","#00b4b4","#28d228","#e6e632","#784614","#ffffff"],positions:[0,.1,.2,.4,.6,1]},electric:{colors:["#000000","#1e0064","#780064","#a05a00","#e6c800","#fffadc"],positions:[0,.15,.4,.6,.8,1]},magma:new Uint8Array([0,0,4,255,1,0,5,255,1,1,6,255,1,1,8,255,2,1,9,255,2,2,11,255,2,2,13,255,3,3,15,255,3,3,18,255,4,4,20,255,5,4,22,255,6,5,24,255,6,5,26,255,7,6,28,255,8,7,30,255,9,7,32,255,10,8,34,255,11,9,36,255,12,9,38,255,13,10,41,255,14,11,43,255,16,11,45,255,17,12,47,255,18,13,49,255,19,13,52,255,20,14,54,255,21,14,56,255,22,15,59,255,24,15,61,255,25,16,63,255,26,16,66,255,28,16,68,255,29,17,71,255,30,17,73,255,32,17,75,255,33,17,78,255,34,17,80,255,36,18,83,255,37,18,85,255,39,18,88,255,41,17,90,255,42,17,92,255,44,17,95,255,45,17,97,255,47,17,99,255,49,17,101,255,51,16,103,255,52,16,105,255,54,16,107,255,56,16,108,255,57,15,110,255,59,15,112,255,61,15,113,255,63,15,114,255,64,15,116,255,66,15,117,255,68,15,118,255,69,16,119,255,71,16,120,255,73,16,120,255,74,16,121,255,76,17,122,255,78,17,123,255,79,18,123,255,81,18,124,255,82,19,124,255,84,19,125,255,86,20,125,255,87,21,126,255,89,21,126,255,90,22,126,255,92,22,127,255,93,23,127,255,95,24,127,255,96,24,128,255,98,25,128,255,100,26,128,255,101,26,128,255,103,27,128,255,104,28,129,255,106,28,129,255,107,29,129,255,109,29,129,255,110,30,129,255,112,31,129,255,114,31,129,255,115,32,129,255,117,33,129,255,118,33,129,255,120,34,129,255,121,34,130,255,123,35,130,255,124,35,130,255,126,36,130,255,128,37,130,255,129,37,129,255,131,38,129,255,132,38,129,255,134,39,129,255,136,39,129,255,137,40,129,255,139,41,129,255,140,41,129,255,142,42,129,255,144,42,129,255,145,43,129,255,147,43,128,255,148,44,128,255,150,44,128,255,152,45,128,255,153,45,128,255,155,46,127,255,156,46,127,255,158,47,127,255,160,47,127,255,161,48,126,255,163,48,126,255,165,49,126,255,166,49,125,255,168,50,125,255,170,51,125,255,171,51,124,255,173,52,124,255,174,52,123,255,176,53,123,255,178,53,123,255,179,54,122,255,181,54,122,255,183,55,121,255,184,55,121,255,186,56,120,255,188,57,120,255,189,57,119,255,191,58,119,255,192,58,118,255,194,59,117,255,196,60,117,255,197,60,116,255,199,61,115,255,200,62,115,255,202,62,114,255,204,63,113,255,205,64,113,255,207,64,112,255,208,65,111,255,210,66,111,255,211,67,110,255,213,68,109,255,214,69,108,255,216,69,108,255,217,70,107,255,219,71,106,255,220,72,105,255,222,73,104,255,223,74,104,255,224,76,103,255,226,77,102,255,227,78,101,255,228,79,100,255,229,80,100,255,231,82,99,255,232,83,98,255,233,84,98,255,234,86,97,255,235,87,96,255,236,88,96,255,237,90,95,255,238,91,94,255,239,93,94,255,240,95,94,255,241,96,93,255,242,98,93,255,242,100,92,255,243,101,92,255,244,103,92,255,244,105,92,255,245,107,92,255,246,108,92,255,246,110,92,255,247,112,92,255,247,114,92,255,248,116,92,255,248,118,92,255,249,120,93,255,249,121,93,255,249,123,93,255,250,125,94,255,250,127,94,255,250,129,95,255,251,131,95,255,251,133,96,255,251,135,97,255,252,137,97,255,252,138,98,255,252,140,99,255,252,142,100,255,252,144,101,255,253,146,102,255,253,148,103,255,253,150,104,255,253,152,105,255,253,154,106,255,253,155,107,255,254,157,108,255,254,159,109,255,254,161,110,255,254,163,111,255,254,165,113,255,254,167,114,255,254,169,115,255,254,170,116,255,254,172,118,255,254,174,119,255,254,176,120,255,254,178,122,255,254,180,123,255,254,182,124,255,254,183,126,255,254,185,127,255,254,187,129,255,254,189,130,255,254,191,132,255,254,193,133,255,254,194,135,255,254,196,136,255,254,198,138,255,254,200,140,255,254,202,141,255,254,204,143,255,254,205,144,255,254,207,146,255,254,209,148,255,254,211,149,255,254,213,151,255,254,215,153,255,254,216,154,255,253,218,156,255,253,220,158,255,253,222,160,255,253,224,161,255,253,226,163,255,253,227,165,255,253,229,167,255,253,231,169,255,253,233,170,255,253,235,172,255,252,236,174,255,252,238,176,255,252,240,178,255,252,242,180,255,252,244,182,255,252,246,184,255,252,247,185,255,252,249,187,255,252,251,189,255,252,253,191,255]),plasma:new Uint8Array([13,8,135,255,16,7,136,255,19,7,137,255,22,7,138,255,25,6,140,255,27,6,141,255,29,6,142,255,32,6,143,255,34,6,144,255,36,6,145,255,38,5,145,255,40,5,146,255,42,5,147,255,44,5,148,255,46,5,149,255,47,5,150,255,49,5,151,255,51,5,151,255,53,4,152,255,55,4,153,255,56,4,154,255,58,4,154,255,60,4,155,255,62,4,156,255,63,4,156,255,65,4,157,255,67,3,158,255,68,3,158,255,70,3,159,255,72,3,159,255,73,3,160,255,75,3,161,255,76,2,161,255,78,2,162,255,80,2,162,255,81,2,163,255,83,2,163,255,85,2,164,255,86,1,164,255,88,1,164,255,89,1,165,255,91,1,165,255,92,1,166,255,94,1,166,255,96,1,166,255,97,0,167,255,99,0,167,255,100,0,167,255,102,0,167,255,103,0,168,255,105,0,168,255,106,0,168,255,108,0,168,255,110,0,168,255,111,0,168,255,113,0,168,255,114,1,168,255,116,1,168,255,117,1,168,255,119,1,168,255,120,1,168,255,122,2,168,255,123,2,168,255,125,3,168,255,126,3,168,255,128,4,168,255,129,4,167,255,131,5,167,255,132,5,167,255,134,6,166,255,135,7,166,255,136,8,166,255,138,9,165,255,139,10,165,255,141,11,165,255,142,12,164,255,143,13,164,255,145,14,163,255,146,15,163,255,148,16,162,255,149,17,161,255,150,19,161,255,152,20,160,255,153,21,159,255,154,22,159,255,156,23,158,255,157,24,157,255,158,25,157,255,160,26,156,255,161,27,155,255,162,29,154,255,163,30,154,255,165,31,153,255,166,32,152,255,167,33,151,255,168,34,150,255,170,35,149,255,171,36,148,255,172,38,148,255,173,39,147,255,174,40,146,255,176,41,145,255,177,42,144,255,178,43,143,255,179,44,142,255,180,46,141,255,181,47,140,255,182,48,139,255,183,49,138,255,184,50,137,255,186,51,136,255,187,52,136,255,188,53,135,255,189,55,134,255,190,56,133,255,191,57,132,255,192,58,131,255,193,59,130,255,194,60,129,255,195,61,128,255,196,62,127,255,197,64,126,255,198,65,125,255,199,66,124,255,200,67,123,255,201,68,122,255,202,69,122,255,203,70,121,255,204,71,120,255,204,73,119,255,205,74,118,255,206,75,117,255,207,76,116,255,208,77,115,255,209,78,114,255,210,79,113,255,211,81,113,255,212,82,112,255,213,83,111,255,213,84,110,255,214,85,109,255,215,86,108,255,216,87,107,255,217,88,106,255,218,90,106,255,218,91,105,255,219,92,104,255,220,93,103,255,221,94,102,255,222,95,101,255,222,97,100,255,223,98,99,255,224,99,99,255,225,100,98,255,226,101,97,255,226,102,96,255,227,104,95,255,228,105,94,255,229,106,93,255,229,107,93,255,230,108,92,255,231,110,91,255,231,111,90,255,232,112,89,255,233,113,88,255,233,114,87,255,234,116,87,255,235,117,86,255,235,118,85,255,236,119,84,255,237,121,83,255,237,122,82,255,238,123,81,255,239,124,81,255,239,126,80,255,240,127,79,255,240,128,78,255,241,129,77,255,241,131,76,255,242,132,75,255,243,133,75,255,243,135,74,255,244,136,73,255,244,137,72,255,245,139,71,255,245,140,70,255,246,141,69,255,246,143,68,255,247,144,68,255,247,145,67,255,247,147,66,255,248,148,65,255,248,149,64,255,249,151,63,255,249,152,62,255,249,154,62,255,250,155,61,255,250,156,60,255,250,158,59,255,251,159,58,255,251,161,57,255,251,162,56,255,252,163,56,255,252,165,55,255,252,166,54,255,252,168,53,255,252,169,52,255,253,171,51,255,253,172,51,255,253,174,50,255,253,175,49,255,253,177,48,255,253,178,47,255,253,180,47,255,253,181,46,255,254,183,45,255,254,184,44,255,254,186,44,255,254,187,43,255,254,189,42,255,254,190,42,255,254,192,41,255,253,194,41,255,253,195,40,255,253,197,39,255,253,198,39,255,253,200,39,255,253,202,38,255,253,203,38,255,252,205,37,255,252,206,37,255,252,208,37,255,252,210,37,255,251,211,36,255,251,213,36,255,251,215,36,255,250,216,36,255,250,218,36,255,249,220,36,255,249,221,37,255,248,223,37,255,248,225,37,255,247,226,37,255,247,228,37,255,246,230,38,255,246,232,38,255,245,233,38,255,245,235,39,255,244,237,39,255,243,238,39,255,243,240,39,255,242,242,39,255,241,244,38,255,241,245,37,255,240,247,36,255,240,249,33,255])},f="attribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec2 u_resolution;\nvarying vec2 v_texCoord;\nvoid main() {\n// convert the rectangle from pixels to 0.0 to 1.0\nvec2 zeroToOne = a_position / u_resolution;\n// convert from 0->1 to 0->2\nvec2 zeroToTwo = zeroToOne * 2.0;\n// convert from 0->2 to -1->+1 (clipspace)\nvec2 clipSpace = zeroToTwo - 1.0;\ngl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);\n// pass the texCoord to the fragment shader\n// The GPU will interpolate this value between points.\nv_texCoord = a_texCoord;\n}",g="precision mediump float;\n// our textur\nuniform sampler2D u_textureData;\nuniform sampler2D u_textureScale;\nuniform vec2 u_textureSize;\nuniform vec2 u_domain;\nuniform float u_noDataValue;\nuniform bool u_clampLow;\nuniform bool u_clampHigh;\n// the texCoords passed in from the vertex shader.\nvarying vec2 v_texCoord;\nvoid main() {\nvec2 onePixel = vec2(1.0, 1.0) / u_textureSize;\nfloat value = texture2D(u_textureData, v_texCoord)[0];\nif (value == u_noDataValue)\ngl_FragColor = vec4(0.0, 0, 0, 0.0);\nelse if ((!u_clampLow && value < u_domain[0]) || (!u_clampHigh && value > u_domain[1]))\ngl_FragColor = vec4(0, 0, 0, 0);\nelse {\nfloat normalisedValue = (value - u_domain[0]) / (u_domain[1] - u_domain[0]);\ngl_FragColor = texture2D(u_textureScale, vec2(normalisedValue, 0));\n}\n}",h=function(a){this.datasetCollection={},this.currentDataset=null,this.setCanvas(a.canvas);var d;if(b(a.useWebGL,!0)&&(d=c(this.canvas))){this.gl=d;var e=d.createShader(d.VERTEX_SHADER);if(d.shaderSource(e,f),d.compileShader(e),!d.getShaderParameter(e,d.COMPILE_STATUS))throw new Error(d.getShaderInfoLog(e));var h=d.createShader(d.FRAGMENT_SHADER);if(d.shaderSource(h,g),d.compileShader(h),!d.getShaderParameter(h,d.COMPILE_STATUS))throw new Error(d.getShaderInfoLog(h));var i=this.program=d.createProgram();d.attachShader(i,e),d.attachShader(i,h),d.linkProgram(i),d.useProgram(this.program);var j=d.getAttribLocation(i,"a_texCoord");this.texCoordBuffer=d.createBuffer(),d.bindBuffer(d.ARRAY_BUFFER,this.texCoordBuffer),d.bufferData(d.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),d.STATIC_DRAW),d.enableVertexAttribArray(j),d.vertexAttribPointer(j,2,d.FLOAT,!1,0,0)}else this.ctx=this.canvas.getContext("2d");if(a.colorScaleImage?this.setColorScaleImage(a.colorScaleImage):this.setColorScale(b(a.colorScale,"viridis")),this.setDomain(b(a.domain,[0,1])),this.setClamp(b(a.clampLow,!0),a.clampHigh),this.setNoDataValue(a.noDataValue),a.data){var k=a.data.length;this.setData(a.data,b(a.width,a.data[k-2]),b(a.height,a.data[k-2]))}if(a.datasets)for(var l=0;l<a.datasets.length;++l){var m=a.datasets[l];this.addDataset(m.id,m.data,m.width,m.height)}};h.prototype.getData=function(){var a=this.currentDataset;if(!a)throw new Error("No dataset available.");return a.data},h.prototype.atPoint=function(a,b){var c=this.currentDataset;if(!c)throw new Error("No dataset available.");if(a>=c.width||b>=c.height)throw new Error("Coordinates are outside of image bounds.");return c.data[b*c.width+a]};var i=function(a,b,c,d,e){var f;return a&&(a.viewport(0,0,d,e),f=a.createTexture(),a.bindTexture(a.TEXTURE_2D,f),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,d,e,0,a.LUMINANCE,a.FLOAT,new Float32Array(c))),{textureData:f,width:d,height:e,data:c,id:b}};h.prototype.setData=function(a,b,c){this.currentDataset&&null===this.currentDataset.id&&j(this.gl,this.currentDataset),this.currentDataset=i(this.gl,null,a,b,c)},h.prototype.addDataset=function(a,b,c,d){if(this.datasetAvailable(a))throw new Error("There is already a dataset registered with id '"+a+"'");this.datasetCollection[a]=i(this.gl,a,b,c,d),this.currentDataset||(this.currentDataset=this.datasetCollection[a])},h.prototype.setCurrentDataset=function(a){if(!this.datasetAvailable(a))throw new Error("No such dataset registered: '"+a+"'");this.currentDataset&&null===this.currentDataset.id&&j(this.gl,this.currentDataset),this.currentDataset=this.datasetCollection[a]};var j=function(a,b){a&&a.deleteTexture(b.textureData)};h.prototype.removeDataset=function(a){var b=this.datasetCollection[a];if(!b)throw new Error("No such dataset registered: '"+a+"'");j(this.gl,b),this.currentDataset===b&&(this.currentDataset=null),delete this.datasetCollection[a]},h.prototype.datasetAvailable=function(b){return a(this.datasetCollection,b)},h.prototype.getColorScaleImage=function(){return this.colorScaleImage},h.prototype.setCanvas=function(a){this.canvas=a||document.createElement("canvas")},h.prototype.getCanvas=function(){return this.canvas},h.prototype.setDomain=function(a){if(!a||2!==a.length)throw new Error("Invalid domain specified.");this.domain=a};var k=function(a,b,c){if(b.length!==c.length)throw new Error("Invalid color scale.");e[a]={colors:b,positions:c}},l=function(a,b){var c=e[a];b.height=1;var d=b.getContext("2d");if("[object Object]"===Object.prototype.toString.call(c)){b.width=256;for(var f=d.createLinearGradient(0,0,256,1),g=0;g<c.colors.length;++g)f.addColorStop(c.positions[g],c.colors[g]);d.fillStyle=f,d.fillRect(0,0,256,1)}else{if("[object Uint8Array]"!==Object.prototype.toString.call(c))throw new Error("Color scale not defined.");b.width=256;var h=d.createImageData(256,1);h.data.set(c),d.putImageData(h,0,0)}};return h.prototype.setColorScale=function(b){if(!a(e,b))throw new Error("No such color scale '"+b+"'");this.colorScaleCanvas||(this.colorScaleCanvas=document.createElement("canvas"),this.colorScaleCanvas.width=256,this.colorScaleCanvas.height=1),l(b,this.colorScaleCanvas),this.name=b,this.setColorScaleImage(this.colorScaleCanvas)},h.prototype.setColorScaleImage=function(a){this.colorScaleImage=a;var b=this.gl;b&&(this.textureScale&&b.deleteTexture(this.textureScale),this.textureScale=b.createTexture(),b.bindTexture(b.TEXTURE_2D,this.textureScale),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST),b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,a))},h.prototype.setClamp=function(a,b){this.clampLow=a,this.clampHigh="undefined"!=typeof b?b:a},h.prototype.setNoDataValue=function(a){this.noDataValue=a},h.prototype.render=function(){var a=this.canvas,b=this.currentDataset;if(a.width=b.width,a.height=b.height,this.gl){var c=this.gl;c.viewport(0,0,b.width,b.height),c.useProgram(this.program),c.uniform1i(c.getUniformLocation(this.program,"u_textureData"),0),c.uniform1i(c.getUniformLocation(this.program,"u_textureScale"),1),c.activeTexture(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,b.textureData),c.activeTexture(c.TEXTURE1),c.bindTexture(c.TEXTURE_2D,this.textureScale);var e=c.getAttribLocation(this.program,"a_position"),f=c.getUniformLocation(this.program,"u_domain"),g=c.getUniformLocation(this.program,"u_resolution"),h=c.getUniformLocation(this.program,"u_noDataValue"),i=c.getUniformLocation(this.program,"u_clampLow"),j=c.getUniformLocation(this.program,"u_clampHigh");c.uniform2f(g,a.width,a.height),c.uniform2fv(f,this.domain),c.uniform1i(i,this.clampLow),c.uniform1i(j,this.clampHigh),c.uniform1f(h,this.noDataValue);var k=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,k),c.enableVertexAttribArray(e),c.vertexAttribPointer(e,2,c.FLOAT,!1,0,0),d(c,0,0,a.width,a.height),c.drawArrays(c.TRIANGLES,0,6)}else if(this.ctx){for(var l,m=this.ctx,n=a.width,o=a.height,p=m.createImageData(n,o),q=this.domain[1]-this.domain[0],r=this.colorScaleCanvas.width,s=this.colorScaleCanvas.getContext("2d").getImageData(0,0,r,1).data,t=b.data,u=0;o>u;u++)for(var v=0;n>v;v++){var w=u*n+v,x=4*(u*n+v),y=Math.round((t[w]-this.domain[0])/q*r);l=255,0>y?(y=0,this.clampLow||(l=0)):y>255&&(y=255,this.clampHigh||(l=0)),t[w]===this.noDataValue&&(l=0),p.data[x+0]=s[4*y],p.data[x+1]=s[4*y+1],p.data[x+2]=s[4*y+2],p.data[x+3]=l}m.putImageData(p,0,0)}},h.prototype.renderDataset=function(a){return this.setCurrentDataset(a),this.render()},h.prototype.getColor=function(a){var b=this.colorScaleCanvas.width,c=this.colorScaleCanvas.getContext("2d").getImageData(0,0,b,1).data,d=this.domain[1]-this.domain[0],e=Math.round((a-this.domain[0])/d*b),f=255;return 0>e&&(e=0,this.clampLow||(f=0)),e>255&&(e=255,this.clampHigh||(f=0)),[c[4*e],c[4*e+1],c[4*e+2],f]},{plot:h,addColorScale:k,colorscales:e,renderColorScaleToCanvas:l}}();"undefined"!=typeof module&&(module.exports=plotty);
|
|
//# sourceMappingURL=plotty.min.js.map
|