Advertisement
Guest User

Untitled

a guest
May 17th, 2020
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var stdout = "";
  2.  
  3. if (!window.console) console = {};
  4. console.log = console.log || function(){};
  5.  
  6. function cursor_wait() {
  7.     document.body.style.cursor = 'wait';
  8. }
  9.  
  10. function cursor_clear() {
  11.     document.body.style.cursor = 'default';
  12. }
  13.  
  14. cursor_wait();
  15.  
  16. function getParameterByName(name) {
  17.  var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
  18.  return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
  19. }
  20.  
  21. function isNumeric(o)
  22. {
  23.     return !isNaN(parseFloat(o)) && isFinite(o);
  24. }
  25.  
  26. function out()
  27. {
  28.     var args = Array.prototype.slice.call(arguments, 0);
  29.     //    document.getElementById('output').innerHTML += args.join(" ") + "\n";
  30.     stdout += args.join(" ") + "\n";
  31. }
  32.  
  33.  
  34. function adjustGamma( orig, gamma)
  35. {
  36.     var o = orig / 255.0;
  37.     var adj = Math.pow( o, gamma);
  38.     var res = Math.floor( adj * 255.0);
  39.     if( (orig != 0) && (res == 0)) {
  40.     res = 1;
  41.     }
  42.     return res;
  43. }
  44.  
  45.  
  46. var origurl = document.location.href;
  47. //"http://soliton.vm.bytemark.co.uk/pub/cpt-city/dca/tn/alarm.p1.0.2.png.index.html";
  48.  
  49. // origurl = //document.location.href;
  50. var url2 = origurl.replace( "/tn/", "/");
  51. var url3 = url2.replace( ".png.index.html", ".c3g");
  52.  
  53. var onSite = url3.indexOf("http://soliton.vm.bytemark.co.uk/");
  54. if( onSite != 0) {
  55.     window.location.href="http://soliton.vm.bytemark.co.uk/pub/cpt-city/";
  56.     //return;
  57. }
  58.  
  59. var matches = url3.match("([^/]+)\.c3g");
  60. var nom = matches[1];
  61. nom = nom.replace(/[^A-Za-z0-9]/g,"_");
  62. nom = nom + "_gp";
  63.  
  64.  
  65. var src = "/*\n\
  66.   CSS3 gradient\n\
  67.   cptutils 1.55\n\
  68.   Mon Sep  1 00:02:16 2014\n\
  69. */\n\
  70. \n\
  71. linear-gradient(\n\
  72.  0deg,\n\
  73.  rgb(186,218,139)   0.000%,\n\
  74.  rgb(186,218,139)   3.330%,\n\
  75.  rgb(231,234,155)   3.330%,\n\
  76.  rgb(231,234,155)   8.330%,\n\
  77.  rgb(254,243,181)   8.330%,\n\
  78.  rgb(254,243,181)  16.670%,\n\
  79.  rgb(246,215,150)  16.670%,\n\
  80.  rgb(246,215,150)  25.000%,\n\
  81.  rgb(205,164,119)  25.000%,\n\
  82.  rgb(205,164,119)  33.330%,\n\
  83.  rgb(187,144,105)  33.330%,\n\
  84.  rgb(187,144,105)  50.000%,\n\
  85.  rgb(225,225,225)  50.000%,\n\
  86.  rgb(225,225,225) 100.000%\n\
  87.  );";
  88.  
  89.  
  90. var rgamma = 2.6;
  91. var ggamma = 2.2;
  92. var bgamma = 2.5;
  93.  
  94. var garg = getParameterByName("gamma");
  95. if( isNumeric( garg)) { rgamma=garg; ggamma=garg; bgamma=garg; }
  96. var rgarg = getParameterByName("rgamma");
  97. if( isNumeric( rgarg)) { rgamma = rgarg; }
  98. var ggarg = getParameterByName("ggamma");
  99. if( isNumeric( ggarg)) { ggamma = ggarg; }
  100. var bgarg = getParameterByName("bgamma");
  101. if( isNumeric( bgarg)) { bgamma = bgarg; }
  102.  
  103. function CreateConversion( src)
  104. {
  105.     stdout="";
  106.  
  107.     if( src.indexOf("rgba(") > -1 ) {
  108.     alert("WARNING: TRANSPARENCY not supported.");
  109.     }
  110.  
  111.     var segs = 0;
  112.     var lines = src.split('\n');
  113.  
  114.     out("DEFINE_GRADIENT_PALETTE( " + nom + " ) {");
  115.    
  116.     for(var i = 0;i < lines.length;i++){
  117.     var line = lines[i]
  118.        
  119.     //out(line);
  120.     var nums = line.match("([0-9]+), *([0-9]+), *([0-9]+)\\) *([0-9.]+)");
  121.     if( nums ) {
  122.         //out( nums);
  123.         var r = nums[1];
  124.         var g = nums[2];
  125.         var b = nums[3];
  126.         var pct = nums[4];
  127.         var ndx = Math.floor( (pct * 255.0) / 100.0 );
  128.        
  129.         r = adjustGamma( r, rgamma);
  130.         g = adjustGamma( g, ggamma);
  131.         b = adjustGamma( b, bgamma);
  132.        
  133.         var rstr = ("  " + r).slice(-3);
  134.         var gstr = ("  " + g).slice(-3);
  135.         var bstr = ("  " + b).slice(-3);
  136.         var ndxstr = ("  " + ndx).slice(-3);
  137.        
  138.         var outstr = "  ";
  139.         outstr += ndxstr + ", ";
  140.         outstr += rstr + ",";
  141.         outstr += gstr + ",";
  142.         outstr += bstr;
  143.        
  144.         if( ndx == 255 ) {
  145.         outstr += "};";
  146.         } else {
  147.         outstr += ",";
  148.         }
  149.         out( outstr);
  150.         segs++;
  151.     }
  152.     }
  153.  
  154.     var prologue = "";
  155.     prologue += ("// Gradient palette \"" + nom + "\", originally from\n");
  156.     prologue += ("// " + origurl + "\n");
  157.     prologue += ("// converted for FastLED with gammas (" + rgamma + ", " + ggamma + ", " + bgamma + ")\n");
  158.     prologue += ("// Size: " + ((segs)* 4) + " bytes of program space.\n");
  159.  
  160.     if( segs > 50) {
  161.     alert("NOTE: this is a BIG one (" + (segs) + " control points, " +((segs) * 4) + " bytes), and some colors may not show.");
  162.     } else if( segs > 16) {
  163.     alert("NOTE: >16 control points (" + (segs) + "), some colors may not show.");
  164.     }
  165.  
  166.  
  167.     return prologue + "\n" + stdout;
  168. }
  169.  
  170. function DoConvert( content)
  171. {
  172.     var res = CreateConversion( content);
  173.     //console.log(content);
  174.     console.log(res);
  175.     window.prompt("COPY this code, paste into your FastLED sketch:",res);
  176.    
  177. }
  178.  
  179.  
  180.  
  181. if( onSite == 0) {
  182.     var i = document.createElement('iframe');
  183.     i.id = 'srcframe';
  184.     i.style.display = 'none';
  185.     i.onload = function() {
  186.     var fr = document.getElementById("srcframe");
  187.     var iframeDocument = fr.contentDocument || fr.contentWindow.document;
  188.     var content = iframeDocument.body.innerHTML;
  189.     DoConvert( content);
  190.     i.parentNode.removeChild(i); };
  191.  
  192.     i.src = url3;
  193.     document.body.appendChild(i);
  194. } else {
  195.     window.location.href="http://soliton.vm.bytemark.co.uk/pub/cpt-city/";
  196. }
  197. cursor_clear();
  198. //alert(stdout);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement