| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- <!doctype html>
 
- <html>
 
- <head>
 
-   <title>Playback > Cursor Experiment</title>
 
-   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
 
-   <style>
 
-     html, body {
 
-       padding: 0; margin: 0;
 
-     }
 
-     div.big {
 
-       font-size: 10em;
 
-       text-align: center;
 
-       background: url('cat.png');
 
-       text-shadow: 1px 1px 1px black;
 
-       color: white;
 
-     }
 
-     div.rep1 {
 
-       position: fixed;
 
-       top: 0;
 
-       left: 0; right: 0;
 
-       overflow: hidden;
 
-       box-shadow: 0 0 20px black;
 
-       background-color: white;
 
-     }
 
-   </style>
 
- <script>(function(){
 
- // The layers
 
- var rep1, main;
 
- var lines = [];
 
- var nlines = 3 + Math.floor(Math.random() * 4);
 
- var current = 0; // current line
 
- var currentWidth = 0; // the width of current line
 
- var currentHeight = 0;
 
- var heightSum = 0;
 
- var currentX = 0; // x of the cursor
 
- var dx = 20;
 
- var cursor;
 
- var interval;
 
- function Cursor() {
 
-   var cursor1 = document.createElement("img");
 
-   var cursor2 = document.createElement("img");
 
-   // Public
 
-   this.cursor1 = cursor1;
 
-   this.cursor2 = cursor2;
 
-   // Set position
 
-   cursor1.style.position = "absolute";
 
-   cursor2.style.position = "fixed";
 
-   // Set z-indices
 
-   cursor1.style.zIndex = "-1";
 
-   cursor2.style.zIndex = "-1";
 
-   // Generate a gradient
 
-   this.style = function (width, height, color) {
 
-     var c = document.createElement("canvas");
 
-     c.width = width; c.height = height;
 
-     var ctx = c.getContext("2d");
 
-     ctx.globalAlpha = 0.5
 
-     // Generate the gradient
 
-     var gradient = ctx.createLinearGradient(0, 0, width, 0);
 
-     gradient.addColorStop(0, "transparent");
 
-     gradient.addColorStop(0.5, color);
 
-     gradient.addColorStop(1, "transparent");
 
-     ctx.fillStyle = gradient;
 
-     ctx.fillRect(0, 0, width, height);
 
-     // Set the images
 
-     cursor1.src = cursor2.src = c.toDataURL('image/png');
 
-     cursor1.width  = cursor2.width  = width ;
 
-     cursor1.height = cursor2.height = height;
 
-   }
 
-   // Set positions
 
-   this.set = function (x, y) {
 
-     cursor1.style.top = heightSum + "px";
 
-     cursor1.style.left = currentX + "px";
 
-     cursor2.style.top = heightSum + "px";
 
-     cursor2.style.left = currentX + "px";
 
-   }
 
-   // Display
 
-   this.show2 = function (vis) {
 
-     if (vis) {
 
-       cursor2.style.display = "block";
 
-     } else {
 
-       cursor2.style.display = "none";
 
-     }
 
-   }
 
- }
 
- window.onload = function() {
 
-   window.resizeTo(650, 650);
 
-   cursor = new Cursor();
 
-   rep1 = document.createElement("div");
 
-   rep1.className = "rep1";
 
-   var helper = document.createElement("div");
 
-   helper.className = "helper";
 
-   rep1.appendChild(cursor.cursor2);
 
-   rep1.appendChild(helper);
 
-   main = document.createElement("div");
 
-   main.className = "main";
 
-   document.body.appendChild(cursor.cursor1);
 
-   document.body.appendChild(main);
 
-   document.body.appendChild(rep1);
 
-   //rep1.style.display = "none";
 
-   // z-indices
 
-   //main.style.zIndex = "1";
 
-   //rep1.style.zIndex = "1";
 
-   //main.style.background = "green";
 
-   //
 
-   lines = [];
 
-   var els = [main, helper];
 
-   // fix div colors
 
-   for (var i = 0; i < nlines; i++)
 
-     for (var j = 0; j < els.length; j ++) {
 
-     var div = document.createElement("div");
 
-     div.className = "big";
 
-     if (j === 0)
 
-       lines.push(div);
 
-     els[j].appendChild(div);
 
-     div.innerHTML = (i ? " " : ":") + (i + 1) + (i !== nlines - 1 ? " " : ":");
 
-   }
 
-   // Initialize variabels
 
-   heightSum = 0;
 
-   currentX = 0; currentWidth = -1; current = -1;
 
-   currentHeight = 0;
 
-   window.setTimeout(init, 1);
 
- }
 
- function init() {
 
-   // Fix height
 
-   rep1.style.height = Math.floor(window.innerHeight / 2) + "px";
 
-   // start animation
 
-   interval = window.setInterval(step, 20);
 
- }
 
- function step () {
 
-   currentX += dx;
 
-   // We need to go to another staff line
 
-   if (currentX > currentWidth) {
 
-     heightSum += currentHeight;
 
-     currentX = 0;
 
-     current += 1;
 
-     if (current == lines.length) {
 
-       //window.clearInterval(interval);
 
-       //return false;
 
-       current = 0;
 
-       heightSum = 0;
 
-     }
 
-     if (current === lines.length - 1) {
 
-       console.log("Last line: repeat");
 
-       showRep1(0);
 
-     }
 
-     var thenHideSep1 = (current === 0);
 
-     window.setTimeout(function(){scrollToLine(current, thenHideSep1);}, 0);
 
-     currentWidth = lines[current].offsetWidth - 20;
 
-     currentHeight = lines[current].offsetHeight;
 
-     // Re-generate cursor
 
-     cursor.style(20, currentHeight, "black");
 
-   }
 
-   cursor.set(heightSum, currentX);
 
- }
 
- function scrollToLine(line, thenHideSep1) {
 
-   var height = lines[line].offsetHeight;
 
-   var windowHeight = window.innerHeight;
 
-   var top = Math.max(0, (windowHeight - height) >> 1);
 
-   //window.scrollTo(0, heightSum + top);
 
-   if (thenHideSep1) {
 
-     // Put the cursor on Sep1
 
-     cursor.show2(true);
 
-     $('html, body').animate({
 
-           scrollTop: heightSum - top
 
-       }, 500, function() {
 
-         showRep1();
 
-       });
 
-   } else {
 
-     $('html, body').animate({
 
-           scrollTop: heightSum - top
 
-       }, 500);
 
-   }
 
- }
 
- // Show or hide repetition view
 
- function showRep1(line) {
 
-   if (typeof line !== "undefined") {
 
-     rep1.scrollTop = 0;
 
-     //rep1.style.display = "block";
 
-     $(rep1).fadeIn("slow");
 
-   } else {
 
-     // rep1.style.display = "none";
 
-     $(rep1).fadeOut("fast");
 
-     cursor.show2(false);
 
-   }
 
- }
 
- }());
 
- </script>
 
- </head>
 
- </html>
 
 
  |