Advertisement
NeoGriever

Untitled

Dec 17th, 2020
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="de" dir="ltr">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Secretly</title>
  6. <link rel="preconnect" href="https://fonts.gstatic.com">
  7. <link href="https://fonts.googleapis.com/css2?family=Tomorrow:wght@200&family=Anton&family=Lexend+Tera&family=Major+Mono+Display&display=swap" rel="stylesheet">
  8. <style>
  9. body, html {
  10. background:transparent;
  11. margin:0px;
  12. padding:0px;
  13. overflow:hidden;
  14. height:100%;
  15. }
  16. </style>
  17. <script>
  18. var fontName = "Lexend Tera";
  19. var useFrame = 1;
  20. var useFrameBackground = 1;
  21. var useTextShadow = 1;
  22. var pixelPerSecond = 62.7682;
  23. var positionOffset = 0;
  24. var nthFrame = 8;
  25. var c, g, text, textFrame, speedMultiplier, curFrame = 0;
  26. function calcHue(val) {
  27. while(val > 360) {
  28. val -= 360;
  29. }
  30. return(val);
  31. }
  32. function generateHue(graphics, inverted, timeOffset, speed, brightness) {
  33. var currentHUEoffset = 360 * ((timeOffset / 1000) * speed % 1);
  34. if(inverted) {
  35. currentHUEoffset = 360 * (1 - (timeOffset / 1000) * speed % 1);
  36. }
  37. var grd = graphics.createLinearGradient(0, 0, c.width, 0);
  38. grd.addColorStop(0.000, "hsl(" + calcHue( 0 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  39. grd.addColorStop(0.125, "hsl(" + calcHue( 45 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  40. grd.addColorStop(0.250, "hsl(" + calcHue( 90 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  41. grd.addColorStop(0.375, "hsl(" + calcHue(135 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  42. grd.addColorStop(0.500, "hsl(" + calcHue(180 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  43. grd.addColorStop(0.625, "hsl(" + calcHue(225 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  44. grd.addColorStop(0.750, "hsl(" + calcHue(270 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  45. grd.addColorStop(0.875, "hsl(" + calcHue(315 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  46. grd.addColorStop(1.000, "hsl(" + calcHue(360 + currentHUEoffset) + ", 100%, " + brightness + "%)");
  47. return(grd);
  48. }
  49. function grabTextWidth(graphics, font, text) {
  50. graphics.font = font;
  51. return graphics.measureText(text);
  52. }
  53. function initialize() {
  54. c = document.createElement("canvas");
  55. c.width = Math.max(100, Math.min(1920*2, document.body.offsetWidth));
  56. c.height = Math.max(25, Math.min(250, document.body.offsetHeight));
  57. document.body.appendChild(c);
  58. g = c.getContext("2d");
  59. g.font = Math.floor(c.height * 0.65) + "px " + fontName;
  60. g.textAlign = "left";
  61. g.textBaseline = "middle";
  62. speedMultiplier = Math.max(1, Math.min(10, ((1 / 25) * c.height)));
  63. }
  64. function drawIt(timeOffset) {
  65. curFrame++;
  66. if(curFrame >= nthFrame) {
  67. curFrame = 0;
  68. textFrame = grabTextWidth(g, g.font, text);
  69. g.lineWidth = Math.max(1, c.height * 0.025);
  70.  
  71. var grd = generateHue(g, true, timeOffset, 0.15, 50);
  72. var grd2 = generateHue(g, false, timeOffset, 0.04, 70);
  73. var grd3 = generateHue(g, false, timeOffset, 0.24, 30);
  74.  
  75. var x_offset = (c.width - textFrame.width) / 2;
  76. if(textFrame.width > c.width) {
  77. x_offset = (timeOffset / 1000) * pixelPerSecond * speedMultiplier;
  78. x_offset = (c.width + textFrame.width) - (x_offset % (c.width + textFrame.width));
  79. x_offset -= textFrame.width;
  80. }
  81.  
  82. g.clearRect(0, 0, c.width, c.height);
  83.  
  84. g.fillStyle = grd2;
  85. g.strokeStyle = grd2;
  86. if(useFrameBackground) {
  87. g.globalAlpha = 0.15;
  88. g.fillRect(0, 0, c.width, c.height);
  89. g.globalAlpha = 1.00;
  90. }
  91.  
  92. if(useTextShadow) {
  93. g.lineWidth = Math.max(1, c.height * 0.085);
  94. g.strokeStyle = grd3;
  95. g.globalAlpha = 0.3;
  96. g.strokeText(text, x_offset, (c.height / 2));
  97. g.globalAlpha = 1.0;
  98. }
  99. g.fillStyle = grd;
  100. g.fillText(text, x_offset, (c.height / 2));
  101.  
  102. if(useFrame) {
  103. g.lineWidth = Math.max(1, c.height * 0.025);
  104. g.strokeStyle = grd2;
  105. g.beginPath();
  106. g.rect(0, 0, c.width, c.height);
  107. g.closePath();
  108. g.stroke();
  109. }
  110. }
  111. requestAnimationFrame(drawIt);
  112. }
  113. window.addEventListener("load", () => {
  114. initialize();
  115.  
  116. var textData = location.search.substr(1);
  117. var b = parseInt(textData[0]).toString(2);
  118. while(b.length < 3) {b = "0" + b;};
  119. b = b.split("");
  120.  
  121. useFrame = (b[0] == "1");
  122. useFrameBackground = (b[1] == "1");
  123. useTextShadow = (b[2] == "1");
  124.  
  125. text = decodeURIComponent(textData.substr(1));
  126. textFrame = grabTextWidth(g, g.font, text);
  127.  
  128. requestAnimationFrame(drawIt);
  129. }, true);
  130. </script>
  131. </head>
  132. <body>
  133. </body>
  134. </html>
  135.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement