From 9433b20670a1eada77e1a4372a8f8ccad6f499c3 Mon Sep 17 00:00:00 2001 From: jules Date: Sat, 25 Jan 2014 23:24:36 -0500 Subject: split out help and whatever else --- js/gallery.js | 12 +++++++++++- js/help.js | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 js/help.js (limited to 'js') diff --git a/js/gallery.js b/js/gallery.js index 16ecdd8..d114ec6 100644 --- a/js/gallery.js +++ b/js/gallery.js @@ -3,7 +3,10 @@ var gallery = {} -gallery.init = function(){ +gallery.init = function(choose){ + if (choose) { + galler.choose = choose; + } gallery.bind() } @@ -52,3 +55,10 @@ gallery.image = function(im){ gallery.click = function(){ gallery.choose() } + +// template for choose function.. bound to an image object +gallery.choose = function(){ + var img = this + var imageURL = this.src +} + diff --git a/js/help.js b/js/help.js new file mode 100644 index 0000000..5610794 --- /dev/null +++ b/js/help.js @@ -0,0 +1,19 @@ + +var help = {} + +help.init = function(){ + help.bind() +} + +help.bind = function(){ + $(window).on("scroll DOMMouseScroll mousewheel", function(){ scrolling = true }) + $("#help,#instructions .close").click(function(){ $("#instructions").toggle() }) + $("#instructions").draggable({ + start: drag_start, + stop: drag_stop + }) + $("#instructions").disableSelection(); +} + +function drag_start(){ dragging = true; $(this).addClass("dragging") } +function drag_stop(){ dragging = false; $(".dragging").removeClass("dragging") } -- cgit v1.2.3-70-g09d2 From e873e6c1b0d2f4e06b94138a22d0d4292c52a037 Mon Sep 17 00:00:00 2001 From: jules Date: Sat, 25 Jan 2014 23:42:19 -0500 Subject: logging, error fix, css --- js/api/set.js | 4 ++++ js/error.highlight.js | 2 +- shader-api.html | 10 +++++++++- shader-picker.html | 10 ++++++---- 4 files changed, 20 insertions(+), 6 deletions(-) (limited to 'js') diff --git a/js/api/set.js b/js/api/set.js index 92cc071..8732c87 100644 --- a/js/api/set.js +++ b/js/api/set.js @@ -10,14 +10,17 @@ function save_shader(){ } var blob = dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png")) + status('saving..') console.log(params) $.post("http://asdf.us/cgi-bin/im/shader/save", params, function(resp){ console.log(resp); data = JSON.parse(resp) if (data.ERROR){ + status('error saving shader') alert(data.ERROR) return false } + status('uploading thumbnail') if (! shader_id_root) { shader_id_root = data.id; } @@ -40,6 +43,7 @@ function save_shader(){ contentType: false, }).done(function(resp){ console.log(resp); + status('') var data = JSON.parse(resp) if (data.success) { $shader.find("img").attr("src", data.url) diff --git a/js/error.highlight.js b/js/error.highlight.js index 0b478e2..f46d0ec 100644 --- a/js/error.highlight.js +++ b/js/error.highlight.js @@ -136,7 +136,7 @@ var init = function(){ create_el_highlight() create_el_textmeasure() scrollbar_width = calc_scrollbar_width() - textarea.addEventListener('scroll', reposition_highlight) + dom.textarea.addEventListener('scroll', reposition_highlight) } // exports diff --git a/shader-api.html b/shader-api.html index 416f21a..b860093 100644 --- a/shader-api.html +++ b/shader-api.html @@ -16,6 +16,13 @@ form { display: inline-block; } #shader-name { width: 75px; } #shader-id { width: 40px; } a { color: #00f; } +#help { float: right; } +.dragging { cursor: -webkit-grabbing !important; } +#instructions { position: absolute;top:20px;right:20px; width:190px;height:465px; box-shadow:5px 5px 10px rgba(0,0,0,0.3); background:rgba(255,255,255,0.8); display: none; cursor: -webkit-grab; } +#instructions iframe {width: 100%;height:100%;margin:0;padding:0;border:0;} +#instructions.dragging iframe { pointer-events: none; } +#instructions .close { position: absolute; top: 5px; right: 5px; color: #f00; padding: 3px; border: 0;background: white; font-size: 10px; line-height: 10px; } + @@ -35,6 +42,7 @@ a { color: #00f; } -->
+ @@ -74,6 +82,7 @@ a { color: #00f; } + @@ -122,4 +131,3 @@ function init(){ -- \ No newline at end of file diff --git a/shader-picker.html b/shader-picker.html index 0896609..7efe39f 100644 --- a/shader-picker.html +++ b/shader-picker.html @@ -130,6 +130,12 @@ a { color: #00f; } + + + - -- cgit v1.2.3-70-g09d2 From e7b0213ebf2621b71fcaa04e7ad80614853e9551 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 00:11:32 -0500 Subject: toggle gallery --- dither-picker.html | 4 +-- js/gallery.js | 2 +- js/render.js | 2 +- shader-combo.html | 80 +++++++++++++++++++++++++++++++++++------------------- shader-gif.html | 4 +-- 5 files changed, 58 insertions(+), 34 deletions(-) (limited to 'js') diff --git a/dither-picker.html b/dither-picker.html index 5e9bff9..fe210ef 100644 --- a/dither-picker.html +++ b/dither-picker.html @@ -16,7 +16,7 @@ - +
@@ -123,7 +123,7 @@ ui.dither = function (frame){ return cc } -function status(s){ $("#status").html(s); console.log(s) } +function status(s){ $(".status").html(s); console.log(s) } $(ui.init) diff --git a/js/gallery.js b/js/gallery.js index d114ec6..a9430fc 100644 --- a/js/gallery.js +++ b/js/gallery.js @@ -5,7 +5,7 @@ var gallery = {} gallery.init = function(choose){ if (choose) { - galler.choose = choose; + gallery.choose = choose; } gallery.bind() } diff --git a/js/render.js b/js/render.js index fdb0125..4a9eeef 100644 --- a/js/render.js +++ b/js/render.js @@ -103,4 +103,4 @@ function draw(t) { shade(frame, t) } -function status(s){ $("#status").html(s); console.log(s) } +function status(s){ $(".status").html(s); console.log(s) } diff --git a/shader-combo.html b/shader-combo.html index 3c2eac0..92cb6e1 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -7,8 +7,8 @@ #shader { width: 400px; height: 247px; font-family: fixed; } div { float: left; padding: 10px;} form { display: inline-block; } -#shader-api,#gallery { clear: right; width:100%; padding: 0; font-size: 12px; } -#shader-gallery,#gallery-images { display: block; min-height: 152px; max-height: 210px; overflow-y: auto; width: 100%; padding: 0; } +#header { clear: right; width:100%; padding: 0; font-size: 12px; } +#shader-gallery,#gallery-images { display: block; height: 152px; overflow-y: auto; width: 100%; padding: 0; } #shader-gallery img,#shader-gallery canvas,#gallery-images img, #gallery-images canvas { max-width: 200px; height: 100px; margin: 5px; cursor: pointer; clear: right; } .shader { width: 100px; } .shader span { display: block } @@ -22,43 +22,49 @@ a { color: #00f; } #instructions iframe {width: 100%;height:100%;margin:0;padding:0;border:0;} #instructions.dragging iframe { pointer-events: none; } #instructions .close { position: absolute; top: 5px; right: 5px; color: #f00; padding: 3px; border: 0;background: white; font-size: 10px; line-height: 10px; } - +.hidden { display: none; } +.form { display: none; } +.bold { font-weight: bold; } - -
+
@@ -130,10 +136,28 @@ function init(){ $("#reset").click(reset) $("#pause").click(pause) + $("#toggle-shaders").click(function(){ + $("#header .form").hide() + $("#shader-api-form").show() + $(".bold").removeClass("bold") + $(this).addClass("bold") + }).trigger("click") + $("#toggle-images").click(function(){ + $("#header .form").hide() + $("#gallery-form").show() + $(".bold").removeClass("bold") + $(this).addClass("bold") + }) + $("#toggle-off").click(function(){ + $("#header .form").hide() + $(".bold").removeClass("bold") + }) + user.init() help.init() shader_gallery.init() - + gallery.init(choose) + document.getElementById('shader').addEventListener('input', shader_build); requestAnimationFrame(animate) diff --git a/shader-gif.html b/shader-gif.html index 1369225..1f944c9 100644 --- a/shader-gif.html +++ b/shader-gif.html @@ -67,7 +67,7 @@ div { display: inline-block; padding: 10px;} - +
@@ -337,7 +337,7 @@ function render (){ } function status(s){ - $("#status").html(s) + $(".status").html(s) } var encoder = new GifEncoder() -- cgit v1.2.3-70-g09d2 From 009007363dfca587c2cbbdbba6566179a05d8fb6 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 00:17:45 -0500 Subject: merge js into combo --- js/frames.js | 6 ++++-- js/help.js | 2 ++ js/render.js | 2 -- shader-combo.html | 20 +++++++++++++++----- 4 files changed, 21 insertions(+), 9 deletions(-) (limited to 'js') diff --git a/js/frames.js b/js/frames.js index c9c844d..2dddae2 100644 --- a/js/frames.js +++ b/js/frames.js @@ -29,6 +29,10 @@ frame_editor.bind = function(){ $("#render").click(render) $("#save").click(save) $("#upload").click(upload) + + $("#background").change(function(){ + document.body.style.backgroundColor = $("#background").string() + }) } function add_frame(){ @@ -121,8 +125,6 @@ function render (){ $("#render").html("rendering") } -function status(s){ $(".status").html(s) } - var encoder = new GifEncoder() encoder.on("quantized", function(url){ diff --git a/js/help.js b/js/help.js index 5610794..1794f3b 100644 --- a/js/help.js +++ b/js/help.js @@ -17,3 +17,5 @@ help.bind = function(){ function drag_start(){ dragging = true; $(this).addClass("dragging") } function drag_stop(){ dragging = false; $(".dragging").removeClass("dragging") } + +function status(s){ $(".status").html(s); console.log(s) } diff --git a/js/render.js b/js/render.js index 4a9eeef..a22c9fe 100644 --- a/js/render.js +++ b/js/render.js @@ -102,5 +102,3 @@ function draw(t) { frame = giveFrame(t) shade(frame, t) } - -function status(s){ $(".status").html(s); console.log(s) } diff --git a/shader-combo.html b/shader-combo.html index 92cb6e1..aa6edd2 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -46,13 +46,13 @@ a { color: #00f; } | + + - - @@ -80,7 +80,6 @@ a { color: #00f; }
-
@@ -125,16 +124,24 @@ a { color: #00f; } var cc = cq(0,0).appendTo("#workspace") var w, h +var lastGif +var mousex, mousey + var firsttime = true var shader_gallery_template = $("#shader-gallery-template").html() - $(init) function init(){ $("#url").change(load) $("#reset").click(reset) $("#pause").click(pause) + $("#step-forward").click(step_forward) + + $(document).on("mousemove", function(e) { + mousex = e.pageX + mousey = e.pageY + }) $("#toggle-shaders").click(function(){ $("#header .form").hide() @@ -152,6 +159,10 @@ function init(){ $("#header .form").hide() $(".bold").removeClass("bold") }) + + frame_editor.init() + help.init() + load() user.init() help.init() @@ -164,6 +175,5 @@ function init(){ } - -- cgit v1.2.3-70-g09d2 From 9f1b5a177eee98f64e7581756cd5fdc7635691ca Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 00:58:01 -0500 Subject: css shakeup --- js/gallery.js | 1 + shader-api.html | 1 + shader-combo.html | 57 ++++++++++++++++++++++++++++++++++++++++++------------- 3 files changed, 46 insertions(+), 13 deletions(-) (limited to 'js') diff --git a/js/gallery.js b/js/gallery.js index a9430fc..b9acfc0 100644 --- a/js/gallery.js +++ b/js/gallery.js @@ -46,6 +46,7 @@ gallery.image = function(im){ $(thumb.canvas).show() }) $(img).click(gallery.choose); + $("#persist-image").attr("checked", false) } try { img.src = im.url; } catch(e){ return; } diff --git a/shader-api.html b/shader-api.html index b860093..dc96762 100644 --- a/shader-api.html +++ b/shader-api.html @@ -79,6 +79,7 @@ a { color: #00f; }
+
diff --git a/shader-combo.html b/shader-combo.html index aa6edd2..6d402da 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -3,28 +3,50 @@ @@ -43,8 +65,9 @@ a { color: #00f; } | - - | + + + @@ -53,16 +76,14 @@ a { color: #00f; } - + - -
@@ -79,11 +100,21 @@ a { color: #00f; } + +
+ + + +
+ +
+
+
@@ -148,14 +179,14 @@ function init(){ $("#shader-api-form").show() $(".bold").removeClass("bold") $(this).addClass("bold") - }).trigger("click") + }) // .trigger("click") $("#toggle-images").click(function(){ $("#header .form").hide() $("#gallery-form").show() $(".bold").removeClass("bold") $(this).addClass("bold") }) - $("#toggle-off").click(function(){ + $(".toggle-off").click(function(){ $("#header .form").hide() $(".bold").removeClass("bold") }) -- cgit v1.2.3-70-g09d2 From c0815501d532c9f18cc0941839295ad193cde87a Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 01:05:04 -0500 Subject: make_thumbnail --- js/api/gallery.js | 1 + js/api/set.js | 47 ++++++++++++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 19 deletions(-) (limited to 'js') diff --git a/js/api/gallery.js b/js/api/gallery.js index 92764c6..c1a779d 100644 --- a/js/api/gallery.js +++ b/js/api/gallery.js @@ -40,6 +40,7 @@ shader_gallery.bind = function(){ } function new_shader(){ + shader_id_root = null run_shader({ id: "", shader_id: "", diff --git a/js/api/set.js b/js/api/set.js index 8732c87..3ce0c3a 100644 --- a/js/api/set.js +++ b/js/api/set.js @@ -8,7 +8,7 @@ function save_shader(){ name: $("#shader-name").val() || "", shader_id: shader_id_root } - var blob = dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png")) + var thumb = make_thumbnail() status('saving..') console.log(params) @@ -31,24 +31,33 @@ function save_shader(){ $shader = display_shader(params) $("#shader-gallery").prepend($shader) - var form = new FormData(); + save_thumbnail(data.id, thumb) + }) +} - form.append("id", data.id); - form.append("qqfile", blob); - $.ajax({ - url: "http://asdf.us/cgi-bin/im/shader/thumbnail_upload", - type: "POST", - data: form, - processData: false, - contentType: false, - }).done(function(resp){ - console.log(resp); - status('') - var data = JSON.parse(resp) - if (data.success) { - $shader.find("img").attr("src", data.url) - } - }); +function make_thumbnail(){ + return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png")) +} - }) +function save_thumbnail(id, thumb){ + thumb = thumb || make_thumbnail() + + var form = new FormData(); + + form.append("id", data.id); + form.append("qqfile", thumb); + $.ajax({ + url: "http://asdf.us/cgi-bin/im/shader/thumbnail_upload", + type: "POST", + data: form, + processData: false, + contentType: false, + }).done(function(resp){ + console.log(resp); + status('') + var data = JSON.parse(resp) + if (data.success) { + $shader.find("img").attr("src", data.url) + } + }); } -- cgit v1.2.3-70-g09d2 From 2d0d3f2bcf078d8ab0747061f2fc5cc3d626e6e3 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 01:10:58 -0500 Subject: fix --- js/api/set.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'js') diff --git a/js/api/set.js b/js/api/set.js index 3ce0c3a..461f3e3 100644 --- a/js/api/set.js +++ b/js/api/set.js @@ -40,11 +40,13 @@ function make_thumbnail(){ } function save_thumbnail(id, thumb){ + if (! id || id == "") return + thumb = thumb || make_thumbnail() var form = new FormData(); - form.append("id", data.id); + form.append("id", id); form.append("qqfile", thumb); $.ajax({ url: "http://asdf.us/cgi-bin/im/shader/thumbnail_upload", -- cgit v1.2.3-70-g09d2 From b0b1b4cfbe3217b9f35343bdc35cdd058f4cf534 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 02:26:23 -0500 Subject: allow empty canvas w/ no url --- js/api/gallery.js | 3 ++- js/api/set.js | 2 +- js/gallery.js | 1 - js/image.js | 12 ++++++++++-- js/render.js | 40 ++++++++++++++++++++++++++++++++++------ js/shader.js | 6 ++++-- shader-combo.html | 11 +++++++---- 7 files changed, 58 insertions(+), 17 deletions(-) (limited to 'js') diff --git a/js/api/gallery.js b/js/api/gallery.js index c1a779d..0404009 100644 --- a/js/api/gallery.js +++ b/js/api/gallery.js @@ -68,7 +68,7 @@ function load_shaders(err, shaders){ var $shader = display_shader(shaders[i]) $el.append( $shader ) } - if (firsttime) { + if (false && firsttime) { firsttime = false run_shader(shaders[0]) } @@ -81,5 +81,6 @@ function display_shader(shader_object){ html = html.replace("{" + field + "}", shader_object[field]) } $shader.html(html) + shader_object.id && $shader.data("id", shader_object.id) return $shader; } diff --git a/js/api/set.js b/js/api/set.js index 461f3e3..16e60fe 100644 --- a/js/api/set.js +++ b/js/api/set.js @@ -59,7 +59,7 @@ function save_thumbnail(id, thumb){ status('') var data = JSON.parse(resp) if (data.success) { - $shader.find("img").attr("src", data.url) + $(".shader[data-id="+id+"]").find("img").attr("src", data.url) } }); } diff --git a/js/gallery.js b/js/gallery.js index b9acfc0..839316c 100644 --- a/js/gallery.js +++ b/js/gallery.js @@ -14,7 +14,6 @@ gallery.bind = function(){ $("#gallery-random").click(asdf.random) $("#gallery-search").submit(dumpfm.search) $(document).on("click", "#gallery-images canvas", gallery.click) - status("ready") } gallery.load = function(ims){ diff --git a/js/image.js b/js/image.js index 7a5240f..4de7fd9 100644 --- a/js/image.js +++ b/js/image.js @@ -1,15 +1,23 @@ +var gif, img + function loadImage(imageURL, callback) { var imageURL = proxify( imageURL ); window.gif = window.img = null - if (imageURL.substr(-3) === "gif") { + if (! imageURL) { + window.gif = null + window.img = null + callback() + } + else if (imageURL.substr(-3) === "gif") { window.gif = GIF(imageURL); // gif.on("error", tryToLoadNextImage); // gif.on("rendered", trackLoadTime); gif.on("rendered", callback); return gif.render(); - } else { + } + else { window.img = new Image(); // img.addEventListener("error", tryToLoadNextImage); img.addEventListener("load", callback); diff --git a/js/render.js b/js/render.js index a22c9fe..f6684d7 100644 --- a/js/render.js +++ b/js/render.js @@ -9,9 +9,10 @@ function choose (){ $("#url").val(imageURL) loadImage(imageURL, ready) } + function load(){ - loading = true var imageURL = $("#url").val() + loading = true loadImage(imageURL, ready) } @@ -25,7 +26,7 @@ function ready(){ f.cloneData = f.ctx.getImageData(0,0,w,h) } } - else { + else if (window.img) { fc = cq(img.width, img.height) fc.drawImage(img, 0, 0) frame = img_frame = { ctx: fc.context } @@ -33,25 +34,52 @@ function ready(){ h = cc.canvas.height = frame.ctx.canvas.height frame.cloneData = frame.ctx.getImageData(0,0,w,h) } + else { + cc.canvas.width = w + cc.canvas.height = h + shader_build() + } + displayWidthHeight(w, h) } +function displayWidthHeight(width, height){ + $("#width").val(width) + $("#height").val(height) +} +$("#width").change(function(){ + w = abs(parseInt(this.value,10)) || 1 + cc.canvas.width = w + cc.canvas.height = h +}) +$("#height").change(function(){ + h = abs(parseInt(this.value,10)) || 1 + cc.canvas.width = w + cc.canvas.height = h +}) function giveFrame(t){ if (window.gif) { if (gif.currentFrame) { return gif.frames[gif.currentFrame(t)] } - else { + else if (gif.frames) { return gif.frames[0] } } - else if (window.img) { + if (window.img) { return img_frame } else { - return cq(w, h) + return empty_frame() } } +function empty_frame(){ + w = w || 400 + h = h || 266 + var cx = cq(w, h).fillStyle("rgba(255,255,255,255)").fillRect(0,0,w,h) + return { ctx: cx.context, cloneData: cx.getImageData(0,0,w,h) } +} + function reset(){ start_t = old_t pause_t = 0 @@ -76,7 +104,7 @@ function animate(t){ var step_t = t - old_t old_t = t - + if (paused || dragging || rendering || scrolling || deferring) { pause_t += step_t if (scrolling) { diff --git a/js/shader.js b/js/shader.js index 4a6e950..7773b89 100644 --- a/js/shader.js +++ b/js/shader.js @@ -1,3 +1,5 @@ +function shader (x,y,t,d) {} + var shader_build = function(){ var fn_str = document.getElementById('shader').value if (!fn_str.length) fn_str = "" @@ -46,7 +48,7 @@ var firefox_stack_regexp = /:([0-9]+)$/; function shade_error_handling(frame, t){ if (! t || isNaN(t)) throw Error ("No time specified") - if (! frame) throw Error ("No frame specified") + if (! frame || ! frame.ctx || ! frame.cloneData) throw Error ("No frame specified") var imgData = frame.ctx.getImageData(0,0,w,h) var data = imgData.data @@ -77,7 +79,7 @@ function shade_error_handling(frame, t){ } else if (lines.length > 1) { // attempt chrome match var matches = lines[1].match(chrome_stack_regexp) - if (matches.length > 1) + if (matches && matches.length > 1) error_highlight.on(parseInt(matches[1]) - 3) } diff --git a/shader-combo.html b/shader-combo.html index 6d402da..e61beee 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -3,7 +3,8 @@ @@ -99,23 +101,20 @@ form { display: inline-block; }
- - + + + +
+
- - - -
- -
-
- - frames +
+ + frames -


+ gif delay background +   + + + +
-- cgit v1.2.3-70-g09d2 From c3470d02a57396e92a71d3cfb072e655ccb51780 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 04:25:35 -0500 Subject: examples placeholder --- js/image.js | 3 ++- js/render.js | 2 -- shader-combo.html | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'js') diff --git a/js/image.js b/js/image.js index aabab89..1f36473 100644 --- a/js/image.js +++ b/js/image.js @@ -1,4 +1,5 @@ var gif, img +var imageURL = null function loadImage(imageURL, callback) { var imageURL = proxify( imageURL ); @@ -37,7 +38,7 @@ function giveImage(t) { function proxify (url) { if (url.indexOf("http") == 0) - return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); + return "/cgi-bin/proxy?" + url.replace(/^https?:\/\//, ""); else return url } diff --git a/js/render.js b/js/render.js index cfc2d81..4de7329 100644 --- a/js/render.js +++ b/js/render.js @@ -2,10 +2,8 @@ var frame, img_frame; var timeout, raf_id, start_t = 0, old_t = 0, pause_t = 0 var paused = false, dragging = false, rendering = false, scrolling = false, deferring = false, scrollTimeout = null var fps = 30 -var imageURL = "" function choose (){ - imageURL = this.src loading = true $("#url").val(imageURL) loadImage(imageURL, ready) diff --git a/shader-combo.html b/shader-combo.html index f51037b..5b218a6 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -59,6 +59,9 @@ form { display: inline-block; }
@@ -231,6 +225,12 @@ function init(){ cc.canvas.width = w cc.canvas.height = h }) + $("#reorder-frames").change(function(){ + var order = $(this).val() + if (order) { + + } + }) load() help.init() -- cgit v1.2.3-70-g09d2 From e3297c52583f38ed71f7734f1ff04a267834e40c Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 26 Jan 2014 21:45:12 -0500 Subject: fix rendering bug --- js/api/gallery.js | 1 + js/frames.js | 3 +-- js/render.js | 2 ++ shader-combo.html | 11 +++++------ 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'js') diff --git a/js/api/gallery.js b/js/api/gallery.js index 830ff93..e8af7f1 100644 --- a/js/api/gallery.js +++ b/js/api/gallery.js @@ -76,6 +76,7 @@ function load_shaders(err, shaders){ function display_shader(shader_object){ var $shader = $("
").addClass("shader") $shader.data("shader", shader_object) + $shader.data("id", shader_object.id) var html = shader_gallery_template for (var field in shader_object) { html = html.replace("{" + field + "}", shader_object[field]) diff --git a/js/frames.js b/js/frames.js index 887b497..571e862 100644 --- a/js/frames.js +++ b/js/frames.js @@ -97,12 +97,11 @@ function sort_frames(){ function render (){ if (rendering) return - rendering = true - if ($("#frames canvas.fullsize").length == 0) { add_frame() } + rendering = true encoder.reset() var delay = $("#framedelay").float() * 1000 || 100 $("#frames canvas.fullsize").each(function(){ diff --git a/js/render.js b/js/render.js index 205da88..bd6deb1 100644 --- a/js/render.js +++ b/js/render.js @@ -7,6 +7,7 @@ function choose (){ loading = true $("#url").val(this.src) loadImage(this.src, ready) + reset() } function load(){ @@ -84,6 +85,7 @@ function reset(){ pause(false) $("#workspace img").remove() $("#workspace canvas").show() + $("#uploaded-url").hide().val("") remove_all_frames() draw(0) } diff --git a/shader-combo.html b/shader-combo.html index 97ffd33..65b81e9 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -3,6 +3,10 @@ ").appendTo(f)),g.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",g.opacity)),g.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",g.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!d)for(e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("activate",b,this._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){var c,d,e,f,g=this.options,h=!1;for(this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;c--)if(d=this.items[c],e=d.item[0],f=this._intersectsWithPointer(d),f&&d.instance===this.currentContainer&&e!==this.currentItem[0]&&this.placeholder[1===f?"next":"prev"]()[0]!==e&&!a.contains(this.placeholder[0],e)&&("semi-dynamic"===this.options.type?!a.contains(this.element[0],e):!0)){if(this.direction=1===f?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(d))break;this._rearrange(b,d),this._trigger("change",b,this._uiHash());break}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(b){if(a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b),this.options.revert){var d=this,e=this.placeholder.offset(),f=this.options.axis,g={};f&&"x"!==f||(g.left=e.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),f&&"y"!==f||(g.top=e.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,a(this.helper).animate(g,parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--)this.containers[b]._trigger("deactivate",null,this._uiHash(this)),this.containers[b].containerCache.over&&(this.containers[b]._trigger("out",null,this._uiHash(this)),this.containers[b].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[\-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l="x"===this.options.axis||d+j>h&&i>d+j,m="y"===this.options.axis||b+k>f&&g>b+k,n=l&&m;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?n:b+this.helperProportions.width/2>f&&g>c-this.helperProportions.width/2&&d+this.helperProportions.height/2>h&&i>e-this.helperProportions.height/2},_intersectsWithPointer:function(a){var c="x"===this.options.axis||b(this.positionAbs.top+this.offset.click.top,a.top,a.height),d="y"===this.options.axis||b(this.positionAbs.left+this.offset.click.left,a.left,a.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return e?this.floating?g&&"right"===g||"down"===f?2:1:f&&("down"===f?2:1):!1},_intersectsWithSides:function(a){var c=b(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height),d=b(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?"right"===f&&d||"left"===f&&!d:e&&("down"===e&&c||"up"===e&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return 0!==a&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return 0!==a&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor===String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c,d,e,f,g=[],h=[],i=this._connectWith();if(i&&b)for(c=i.length-1;c>=0;c--)for(e=a(i[c]),d=e.length-1;d>=0;d--)f=a.data(e[d],this.widgetFullName),f&&f!==this&&!f.options.disabled&&h.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f]);for(h.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),c=h.length-1;c>=0;c--)h[c][0].each(function(){g.push(this)});return a(g)},_removeCurrentsFromItems:function(){var b=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=a.grep(this.items,function(a){for(var c=0;b.length>c;c++)if(b[c]===a.item[0])return!1;return!0})},_refreshItems:function(b){this.items=[],this.containers=[this];var c,d,e,f,g,h,i,j,k=this.items,l=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],m=this._connectWith();if(m&&this.ready)for(c=m.length-1;c>=0;c--)for(e=a(m[c]),d=e.length-1;d>=0;d--)f=a.data(e[d],this.widgetFullName),f&&f!==this&&!f.options.disabled&&(l.push([a.isFunction(f.options.items)?f.options.items.call(f.element[0],b,{item:this.currentItem}):a(f.options.items,f.element),f]),this.containers.push(f));for(c=l.length-1;c>=0;c--)for(g=l[c][1],h=l[c][0],d=0,j=h.length;j>d;d++)i=a(h[d]),i.data(this.widgetName+"-item",g),k.push({item:i,instance:g,width:0,height:0,left:0,top:0})},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var c,d,e,f;for(c=this.items.length-1;c>=0;c--)d=this.items[c],d.instance!==this.currentContainer&&this.currentContainer&&d.item[0]!==this.currentItem[0]||(e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item,b||(d.width=e.outerWidth(),d.height=e.outerHeight()),f=e.offset(),d.left=f.left,d.top=f.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c=this.containers.length-1;c>=0;c--)f=this.containers[c].element.offset(),this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight();return this},_createPlaceholder:function(b){b=b||this;var c,d=b.options;d.placeholder&&d.placeholder.constructor!==String||(c=d.placeholder,d.placeholder={element:function(){var d=b.currentItem[0].nodeName.toLowerCase(),e=a("<"+d+">",b.document[0]).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===d?b.currentItem.children().each(function(){a(" ",b.document[0]).attr("colspan",a(this).attr("colspan")||1).appendTo(e)}):"img"===d&&e.attr("src",b.currentItem.attr("src")),c||e.css("visibility","hidden"),e},update:function(a,e){(!c||d.forcePlaceholderSize)&&(e.height()||e.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10)))}}),b.placeholder=a(d.placeholder.element.call(b.element,b.currentItem)),b.currentItem.after(b.placeholder),d.placeholder.update(b,b.placeholder)},_contactContainers:function(d){var e,f,g,h,i,j,k,l,m,n,o=null,p=null;for(e=this.containers.length-1;e>=0;e--)if(!a.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(o&&a.contains(this.containers[e].element[0],o.element[0]))continue;o=this.containers[e],p=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",d,this._uiHash(this)),this.containers[e].containerCache.over=0);if(o)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",d,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(g=1e4,h=null,n=o.floating||c(this.currentItem),i=n?"left":"top",j=n?"width":"height",k=this.positionAbs[i]+this.offset.click[i],f=this.items.length-1;f>=0;f--)a.contains(this.containers[p].element[0],this.items[f].item[0])&&this.items[f].item[0]!==this.currentItem[0]&&(!n||b(this.positionAbs.top+this.offset.click.top,this.items[f].top,this.items[f].height))&&(l=this.items[f].item.offset()[i],m=!1,Math.abs(l-k)>Math.abs(l+this.items[f][j]-k)&&(m=!0,l+=this.items[f][j]),g>Math.abs(l-k)&&(g=Math.abs(l-k),h=this.items[f],this.direction=m?"up":"down"));if(!h&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return;h?this._rearrange(d,h,null,!0):this._rearrange(d,null,this.containers[p].element,!0),this._trigger("change",d,this._uiHash()),this.containers[p]._trigger("change",d,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",d,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):"clone"===c.helper?this.currentItem.clone():this.currentItem;return d.parents("body").length||a("parent"!==c.appendTo?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!d[0].style.width||c.forceHelperSize)&&d.width(this.currentItem.width()),(!d[0].style.height||c.forceHelperSize)&&d.height(this.currentItem.height()),d},_adjustOffsetFromHelper:function(b){"string"==typeof b&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&a.ui.ie)&&(b={top:0,left:0}),{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b,c,d,e=this.options;"parent"===e.containment&&(e.containment=this.helper[0].parentNode),("document"===e.containment||"window"===e.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a("document"===e.containment?document:window).width()-this.helperProportions.width-this.margins.left,(a("document"===e.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(e.containment)||(b=a(e.containment)[0],c=a(e.containment).offset(),d="hidden"!==a(b).css("overflow"),this.containment=[c.left+(parseInt(a(b).css("borderLeftWidth"),10)||0)+(parseInt(a(b).css("paddingLeft"),10)||0)-this.margins.left,c.top+(parseInt(a(b).css("borderTopWidth"),10)||0)+(parseInt(a(b).css("paddingTop"),10)||0)-this.margins.top,c.left+(d?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(a(b).css("borderLeftWidth"),10)||0)-(parseInt(a(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,c.top+(d?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(a(b).css("borderTopWidth"),10)||0)-(parseInt(a(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(b,c){c||(c=this.position);var d="absolute"===b?1:-1,e="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,f=/(html|body)/i.test(e[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():f?0:e.scrollTop())*d,left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():f?0:e.scrollLeft())*d}},_generatePosition:function(b){var c,d,e=this.options,f=b.pageX,g=b.pageY,h="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(h[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(b.pageX-this.offset.click.leftthis.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top)),e.grid&&(c=this.originalPageY+Math.round((g-this.originalPageY)/e.grid[1])*e.grid[1],g=this.containment?c-this.offset.click.top>=this.containment[1]&&c-this.offset.click.top<=this.containment[3]?c:c-this.offset.click.top>=this.containment[1]?c-e.grid[1]:c+e.grid[1]:c,d=this.originalPageX+Math.round((f-this.originalPageX)/e.grid[0])*e.grid[0],f=this.containment?d-this.offset.click.left>=this.containment[0]&&d-this.offset.click.left<=this.containment[2]?d:d-this.offset.click.left>=this.containment[0]?d-e.grid[0]:d+e.grid[0]:d)),{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():i?0:h.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():i?0:h.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this.counter;this._delay(function(){e===this.counter&&this.refreshPositions(!d)})},_clear:function(a,b){this.reverting=!1;var c,d=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(c in this._storedCSS)("auto"===this._storedCSS[c]||"static"===this._storedCSS[c])&&(this._storedCSS[c]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!b&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||b||d.push(function(a){this._trigger("update",a,this._uiHash())}),this!==this.currentContainer&&(b||(d.push(function(a){this._trigger("remove",a,this._uiHash())}),d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.currentContainer)),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.currentContainer)))),c=this.containers.length-1;c>=0;c--)b||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[c])),this.containers[c].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[c])),this.containers[c].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!b){for(this._trigger("beforeStop",a,this._uiHash()),c=0;d.length>c;c++)d[c].call(this,a);this._trigger("stop",a,this._uiHash())}return this.fromOutside=!1,!1}if(b||this._trigger("beforeStop",a,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!b){for(c=0;d.length>c;c++)d[c].call(this,a);this._trigger("stop",a,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}})}(jQuery),function(a,b){var c=/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);a.requestAnimationFrame=function(){return a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,1e3/60)}}();var d=function(b){if(0===arguments.length){var c=d.createCanvas(a.innerWidth,a.innerHeight);a.addEventListener("resize",function(){})}else if("string"==typeof b)var c=document.querySelector(b);else if("number"==typeof b)var c=d.createCanvas(arguments[0],arguments[1]);else if(b instanceof Image||b instanceof HTMLImageElement)var c=d.createCanvas(b);else{if(b instanceof d.Wrapper)return b;var c=b}return new d.Wrapper(c)};d.extend=function(){for(var a=1;a2){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)}return Math.abs(a-b)},d.extend(d,{keycodes:{37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete",8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"escape",32:"space",33:"pageup",34:"pagedown",35:"end",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scrolllock",186:"semicolon",187:"equal",188:"comma",189:"dash",190:"period",191:"slash",192:"graveaccent",219:"openbracket",220:"backslash",221:"closebraket",222:"singlequote"},cleanArray:function(a,b){for(var c=arguments[arguments.length-1],d="function"==typeof c,e=0,f=a.length;f>e;e++)(null===a[e]||b&&a[e][b])&&(d&&c(a[e]),a.splice(e--,1),f--)},specialBlendFunctions:["color","value","hue","saturation"],blendFunctions:{normal:function(a,b){return b},overlay:function(a,b){a/=255,b/=255;var c=0;return c=.5>a?2*a*b:1-2*(1-a)*(1-b),Math.min(255,Math.max(0,255*c|0))},hardLight:function(a,b){return d.blendFunctions.overlay(b,a)},softLight:function(a,b){a/=255,b/=255;var c=(1-2*b)*a*a+2*b*a;return d.limitValue(255*c,0,255)},dodge:function(a,b){return Math.min(256*a/(255-b+1),255)},burn:function(a,b){return 255-Math.min(256*(255-a)/(b+1),255)},multiply:function(a,b){return b*a/255},divide:function(a,b){return Math.min(256*a/(b+1),255)},screen:function(a,b){return 255-(255-b)*(255-a)/255},grainExtract:function(a,b){return d.limitValue(a-b+128,0,255)},grainMerge:function(a,b){return d.limitValue(a+b-128,0,255)},difference:function(a,b){return Math.abs(a-b)},addition:function(a,b){return Math.min(a+b,255)},substract:function(a,b){return Math.max(a-b,0)},darkenOnly:function(a,b){return Math.min(a,b)},lightenOnly:function(a,b){return Math.max(a,b)},color:function(a,b){var c=d.rgbToHsl(a),e=d.rgbToHsl(b);return d.hslToRgb(e[0],e[1],c[2])},hue:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return e[1]?d.hsvToRgb(e[0],c[1],c[2]):d.hsvToRgb(c[0],c[1],c[2])},value:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return d.hsvToRgb(c[0],c[1],e[2])},saturation:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return d.hsvToRgb(c[0],e[1],c[2])}},blend:function(a,b,c,e){"undefined"==typeof e&&(e=1);var a=d(a),b=d(b),f=a.context,g=b.context,h=f.getImageData(0,0,a.canvas.width,a.canvas.height),i=g.getImageData(0,0,b.canvas.width,b.canvas.height),j=h.data,k=i.data,l=this.createImageData(a.canvas.width,a.canvas.height),m=l.data,n=d.blendFunctions[c];if(-1!==d.specialBlendFunctions.indexOf(c))for(var o=0,p=j.length;p>o;o+=4){var q=n([j[o+0],j[o+1],j[o+2]],[k[o+0],k[o+1],k[o+2]]);m[o+0]=j[o+0]+(q[0]-j[o+0])*e,m[o+1]=j[o+1]+(q[1]-j[o+1])*e,m[o+2]=j[o+2]+(q[2]-j[o+2])*e,m[o+3]=j[o+3]}else for(var o=0,p=j.length;p>o;o+=4){var r=n(j[o+0],k[o+0]),s=n(j[o+1],k[o+1]),t=n(j[o+2],k[o+2]);m[o+0]=j[o+0]+(r-j[o+0])*e,m[o+1]=j[o+1]+(s-j[o+1])*e,m[o+2]=j[o+2]+(t-j[o+2])*e,m[o+3]=j[o+3]}return a.context.putImageData(l,0,0),a},wrapValue:function(a,b,c){var d=Math.abs(c-b);return b+(a-b)%d},limitValue:function(a,b,c){return b>a?b:a>c?c:a},mix:function(a,b,c){return a+(b-a)*c},hexToRgb:function(a){return 7===a.length?["0x"+a[1]+a[2]|0,"0x"+a[3]+a[4]|0,"0x"+a[5]+a[6]|0]:["0x"+a[1]|0,"0x"+a[2],"0x"+a[3]|0]},rgbToHex:function(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1,7)},rgbToHsl:function(a,b,c){a instanceof Array&&(c=a[2],b=a[1],a=a[0]),a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},hslToRgb:function(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(0==b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return[255*e|0,255*f|0,255*g|0]},rgbToHsv:function(a,b,c){a instanceof Array&&(c=a[2],b=a[1],a=a[0]),a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=f,i=f-g;if(e=0==f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},hsvToRgb:function(a,b,c){var d,e,f,g=Math.floor(6*a),h=6*a-g,i=c*(1-b),j=c*(1-h*b),k=c*(1-(1-h)*b);switch(g%6){case 0:d=c,e=k,f=i;break;case 1:d=j,e=c,f=i;break;case 2:d=i,e=c,f=k;break;case 3:d=i,e=j,f=c;break;case 4:d=k,e=i,f=c;break;case 5:d=c,e=i,f=j}return[255*d|0,255*e|0,255*f|0]},color:function(){var a=new d.Color;return a.parse(arguments[0],arguments[1]),a},createCanvas:function(a,b){var c=document.createElement("canvas");if(arguments[0]instanceof Image||arguments[0]instanceof HTMLImageElement){var d=arguments[0];c.width=d.width,c.height=d.height,c.getContext("2d").drawImage(d,0,0)}else c.width=a,c.height=b;return c},createImageData:function(a,b){return document.createElement("Canvas").getContext("2d").createImageData(a,b)},mousePosition:function(a){var c=0,d=0,e=0,f=0,g=a.target||a.srcElement,h=0,i=0;do c+=g.offsetLeft,d+=g.offsetTop;while(g=g.offsetParent);return a.changedTouches&&a.changedTouches[0]!==b&&(a=a.changedTouches[0]),a.pageX||a.pageY?(h=a.pageX,i=a.pageY):(a.clientX||a.clientY)&&(h=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,i=a.clientY+document.body.scrollTop+document.documentElement.scrollTop),e=h-c,f=i-d,{x:e,y:f}}}),d.Wrapper=function(a){this.context=a.getContext("2d"),this.canvas=a},d.Wrapper.prototype={appendTo:function(a){if("object"==typeof a)var b=a;else var b=document.querySelector(a);return b.appendChild(this.canvas),this},blendOn:function(a,b,c){return d.blend(a,this,b,c),this},blend:function(a,b,c){if("string"==typeof a){var e=a;a=d(d.createCanvas(this.canvas.width,this.canvas.height)),a.fillStyle(e).fillRect(0,0,this.canvas.width,this.canvas.height)}return d.blend(this,a,b,c),this},circle:function(a,b,c){return this.context.arc(a,b,c,0,2*Math.PI),this},crop:function(a,b,c,e){var f=d.createCanvas(c,e),g=f.getContext("2d");return g.drawImage(this.canvas,a,b,c,e,0,0,c,e),this.canvas.width=c,this.canvas.height=e,this.clear(),this.context.drawImage(f,0,0),this},set:function(a){d.extend(this.context,a)},resize:function(a,b){var c=a,e=b;1===arguments.length?(c=arguments[0]*this.canvas.width|0,e=arguments[0]*this.canvas.height|0):null===b?this.canvas.width>a?(e=this.canvas.height*(a/this.canvas.width)|0,c=a):(c=this.canvas.width,e=this.canvas.height):null===a&&(this.canvas.width>a?(c=this.canvas.width*(b/this.canvas.height)|0,e=b):(c=this.canvas.width,e=this.canvas.height));var f=d(c,e).drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,c,e);return this.canvas=f.canvas,this.context=f.context,this},trim:function(a,b){var c;a?(a=d.color(a).toArray(),c=!a[3]):c=!0;for(var e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=[this.canvas.width,this.canvas.height,0,0],h=0,i=f.length;i>h;h+=4){if(c){if(!f[h+3])continue}else if(f[h+0]===a[0]&&f[h+1]===a[1]&&f[h+2]===a[2])continue;var j=(h/4|0)%this.canvas.width|0,k=(h/4|0)/this.canvas.width|0;jg[2]&&(g[2]=j),kg[3]&&(g[3]=k) -}return 0===g[2]||0===g[3]||(b&&(b.left=g[0],b.top=g[1],b.width=g[2]-g[0],b.height=g[3]-g[1]),this.crop(g[0],g[1],g[2]-g[0]+1,g[3]-g[1]+1)),this},resizePixel:function(a){var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,e=document.createElement("canvas"),f=e.context=e.getContext("2d");e.width=this.canvas.width*a|0,e.height=this.canvas.height*a|0;for(var g=0,h=c.length;h>g;g+=4)if(c[g+3]){f.fillStyle=d.rgbToHex(c[g+0],c[g+1],c[g+2]);var i=g/4%this.canvas.width,j=g/4/this.canvas.width|0;f.fillRect(i*a,j*a,a,a)}return this.canvas.width=e.width,this.canvas.height=e.height,this.clear().drawImage(e,0,0),this;var i,j,e,f},matchPalette:function(a){for(var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=[],e=0;ee;e+=4)if(c[e+3]){var g=d.rgbToHex(c[e+0],c[e+1],c[e+2]);-1===a.indexOf(g)&&a.push(g)}return a},pixelize:function(a){if(!a)return this;a=a||4;var b=this.context.mozImageSmoothingEnabled,c=this.context.webkitImageSmoothingEnabled;this.context.mozImageSmoothingEnabled=!1,this.context.webkitImageSmoothingEnabled=!1;var d=this.canvas.width/a/this.canvas.width,e=cq(this.canvas.width,this.canvas.height);return e.drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,this.canvas.width*d|0,this.canvas.height*d|0),this.clear().drawImage(e.canvas,0,0,this.canvas.width*d|0,this.canvas.height*d|0,0,0,this.canvas.width,this.canvas.height),this.context.mozImageSmoothingEnabled=b,this.context.webkitImageSmoothingEnabled=c,this},colorToMask:function(a,b){a=d.color(a).toArray();for(var c=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),e=c.data,f=[],g=0,h=e.length;h>g;g+=4)f.push(e[g+0]==a[0]&&e[g+1]==a[1]&&e[g+2]==a[2]?b||!1:!b);return f},grayscaleToMask:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=[],d=0,e=b.length;e>d;d+=4)c.push((b[d+0]+b[d+1]+b[d+2])/3|0);return c},grayscaleToAlpha:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0,d=b.length;d>c;c+=4)b[c+3]=(b[c+0]+b[c+1]+b[c+2])/3|0,b[c+0]=b[c+1]=b[c+2]=255;return this.context.putImageData(a,0,0),this},applyMask:function(a){for(var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,d="boolean"==typeof a[0]?"bool":"byte",e=0,f=c.length;f>e;e+=4){var g=a[e/4];c[e+3]="bool"===d?255*g|0:0|g}return this.context.putImageData(b,0,0),this},fillMask:function(a){var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,e="boolean"==typeof a[0]?"bool":"byte",f=2===arguments.length?"normal":"gradient",g=d.color(arguments[1]);"gradient"===f&&(colorB=d.color(arguments[2]));for(var h=0,i=c.length;i>h;h+=4){var j=a[h/4];"byte"===e&&(j/=255),"normal"===f?j&&(c[h+0]=0|g[0],c[h+1]=0|g[1],c[h+2]=0|g[2],c[h+3]=255*j|0):(c[h+0]=g[0]+(colorB[0]-g[0])*j|0,c[h+1]=g[1]+(colorB[1]-g[1])*j|0,c[h+2]=g[2]+(colorB[2]-g[2])*j|0,c[h+3]=255)}return this.context.putImageData(b,0,0),this},clear:function(a){return a?(this.context.fillStyle=a,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)):this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this},clone:function(){var a=d.createCanvas(this.canvas.width,this.canvas.height);return a.getContext("2d").drawImage(this.canvas,0,0),d(a)},fillStyle:function(a){return this.context.fillStyle=a,this},strokeStyle:function(a){return this.context.strokeStyle=a,this},gradientText:function(a,b,c,d,e){var f=a.split(" "),g=2*this.font().match(/\d+/g)[0],h=0,i=0;if(d)for(var j=0,k=[""],l=0;ld&&(k[++j]="",h=0),k[j]+=m,h+=n}else var k=[a];for(var l=0;lj;j+=4)h=d.rgbToHsl(g[j+0],g[j+1],g[j+2]),b=null===a[0]?h[0]:d.limitValue(a[0],0,1),c=null===a[1]?h[1]:d.limitValue(a[1],0,1),e=null===a[2]?h[2]:d.limitValue(a[2],0,1),i=d.hslToRgb(b,c,e),g[j+0]=i[0],g[j+1]=i[1],g[j+2]=i[2];return this.context.putImageData(f,0,0),this},shiftHsl:function(){if(1===arguments.length)var a=arguments[0];else var a=arguments;for(var b,c,e,f=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),g=f.data,h=[],i=[],j=0,k=g.length;k>j;j+=4)h=d.rgbToHsl(g[j+0],g[j+1],g[j+2]),b=null===a[0]?h[0]:d.wrapValue(h[0]+a[0],0,1),c=null===a[1]?h[1]:d.limitValue(h[1]+a[1],0,1),e=null===a[2]?h[2]:d.limitValue(h[2]+a[2],0,1),i=d.hslToRgb(b,c,e),g[j+0]=i[0],g[j+1]=i[1],g[j+2]=i[2];return this.context.putImageData(f,0,0),this},replaceHue:function(a,b){for(var c,e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=[],h=[],i=0,j=f.length;j>i;i+=4)g=d.rgbToHsl(f[i+0],f[i+1],f[i+2]),c=Math.abs(g[0]-a)<.05?d.wrapValue(b,0,1):g[0],h=d.hslToRgb(c,g[1],g[2]),f[i+0]=h[0],f[i+1]=h[1],f[i+2]=h[2];return this.context.putImageData(e,0,0),this},invert:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0,d=b.length;d>c;c+=4)b[c+0]=255-b[c+0],b[c+1]=255-b[c+1],b[c+2]=255-b[c+2];return this.context.putImageData(a,0,0),this},roundRect:function(a,b,c,d,e){return this.beginPath(),this.moveTo(a+e,b),this.lineTo(a+c-e,b),this.quadraticCurveTo(a+c,b,a+c,b+e),this.lineTo(a+c,b+d-e),this.quadraticCurveTo(a+c,b+d,a+c-e,b+d),this.lineTo(a+e,b+d),this.quadraticCurveTo(a,b+d,a,b+d-e),this.lineTo(a,b+e),this.quadraticCurveTo(a,b,a+e,b),this.closePath(),this},wrappedText:function(a,b,c,d,e){var f=a instanceof Array?a:this.flowText(a,d),g=2*this.font().match(/\d+/g)[0],h=0,i=0;if(d)for(var j=0,f=[""],k=0;kd&&(f[++j]="",h=0),f[j]+=l,h+=m}else var f=[a];for(var k=0;kb?(f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=0):f[e]+=" ";else{var j=this.context.measureText(i).width;d+=j,d>b&&f[e].length&&(f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=j),f[e]+=i}else f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=0}else var f=[a];return f},textBoundaries:function(a,b){for(var c=this.flowText(a,b||1/0),d=2*this.font().match(/\d+/g)[0],e=0,f=0;fo;o++)for(var p=1;k-1>p;p++){for(var q=4*(o*k+p),r=0,s=0,t=0,u=0,v=0;f>v;v++)for(var w=0;f>w;w++){var x=o+v-g,y=p+w-g;if(x>=0&&j>x&&y>=0&&i>y){var z=4*(x*i+y),A=a[v*f+w]/c;r+=h[z+0]*A,s+=h[z+1]*A,t+=h[z+2]*A,u+=h[z+3]*A}}n[q+0]=d.mix(h[q+0],r,b),n[q+1]=d.mix(h[q+1],s,b),n[q+2]=d.mix(h[q+2],t,b),n[q+3]=u}},blur:function(a){return this.convolve([1,1,1,1,1,1,1,1,1],a,9)},gaussianBlur:function(a){return this.convolve([6.7e-7,2292e-8,19117e-8,38771e-8,19117e-8,2292e-8,6.7e-7,2292e-8,78633e-8,.00655965,.01330373,.00655965,78633e-8,2292e-8,19117e-8,.00655965,.05472157,.11098164,.05472157,.00655965,19117e-8,38771e-8,.01330373,.11098164,.22508352,.11098164,.01330373,38771e-8,19117e-8,.00655965,.05472157,.11098164,.05472157,.00655965,19117e-8,2292e-8,78633e-8,.00655965,.01330373,.00655965,78633e-8,2292e-8,6.7e-7,2292e-8,19117e-8,38771e-8,19117e-8,2292e-8,6.7e-7],a,1)},sharpen:function(a){return this.convolve([0,-1,0,-1,5,-1,0,-1,0],a)},threshold:function(a){for(var b,c,d,e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=0;g=a?255:0;f[g]=f[g+1]=f[g+2]=h}return this.context.putImageData(e,0,0),this},sepia:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0;cj&&k>p&&(q=Math.abs(d)>Math.abs(e)?d>0?"left":"right":e>0?"up":"down",a.call(i,q))}var i=this.tempContext||this,j=c||35,k=e||350,l=0,m=0,n=0,o=0;return this.canvas.addEventListener("touchstart",function(a){f(a)}),this.canvas.addEventListener("touchmove",function(a){g(a)}),this.canvas.addEventListener("touchend",function(a){h(a)}),this.canvas.addEventListener("mousedown",function(a){f(a)}),this.canvas.addEventListener("mousemove",function(a){g(a)}),this.canvas.addEventListener("mouseup",function(a){h(a)}),this},onKeyDown:function(a){var b=this.tempContext||this;return document.addEventListener("keydown",function(c){if(c.which>=48&&c.which<=90)var e=String.fromCharCode(c.which).toLowerCase();else var e=d.keycodes[c.which];a.call(b,e)}),this},onKeyUp:function(a){var b=this.tempContext||this;return document.addEventListener("keyup",function(c){if(c.which>=48&&c.which<=90)var e=String.fromCharCode(c.which).toLowerCase();else var e=d.keycodes[c.which];a.call(b,e)}),this},onResize:function(b){var c=this.tempContext||this;return a.addEventListener("resize",function(){b.call(c,a.innerWidth,a.innerHeight)}),b.call(c,a.innerWidth,a.innerHeight),this},onDropImage:function(a){var b=this.tempContext||this;return document.addEventListener("drop",function(c){c.stopPropagation(),c.preventDefault();var d=c.dataTransfer.files[0];if(!/image/i.test(d.type))return!1;var e=new FileReader;e.onload=function(c){var d=new Image;d.onload=function(){a.call(b,this)},d.src=c.target.result},e.readAsDataURL(d)}),document.addEventListener("dragover",function(a){a.preventDefault()}),this}};for(var e=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createImageData","createLinearGradient","createRadialGradient","createPattern","drawFocusRing","drawImage","fill","fillRect","fillText","getImageData","isPointInPath","lineTo","measureText","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setTransform","stroke","strokeRect","strokeText","transform","translate"],f=0;f2&&d.push(a)}),0==d.length||"undefined"==d[0]?status("search query too small"):(status("searching for '"+d.join(" and ")+"'"),dumpfm.fetch({query:d.join("+"),success:gallery.load}))},dumpfm.fetch=function(a){if(!dumpfm.fetching){dumpfm.fetching=!0;var b={};$.ajax({url:"http://dump.fm/cmd/search/"+a.query,data:b,dataType:"jsonp",success:function(b){dumpfm.fetching=!1;for(var c=0,d=b.length;d>c;c++){var e=b[c].url;e=e.match(/^\/\d+\//)?"http://dump.fm/images/"+e:"http://"+e,b[c].url=e}a.success&&a.success(b)},error:a.error||function(a){console.log(a)}})}};var gif,img,imageURL=null,user=new function(){};user.init=function(){user.load(),user.bind()},user.bind=function(){$("#username").on("input",user.save)},user.load=function(){user.username=user.getCookie(),$("#username").val(user.username)},user.sanitize=function(){return $("#username").val().replace(/[^-_ a-zA-Z0-9]/g,"")},user.getCookie=function(){var a=localStorage.getItem("im.name")||"";if(document.cookie&&!a.length){var b=document.cookie.split(";");for(i in b){var c=b[i].split("=");if(-1!==c[0].indexOf("imname")&&"false"!==c[1]&&"undefined"!==c[1]&&c[1].length)return c[1]}}return a},user.save=function(){var a=user.sanitize();a!=user.username&&user.setCookie(a)},user.setCookie=function(a){console.log("setting to "+a),document.cookie="imname="+a+";path=/;domain=.asdf.us;max-age=1086400",localStorage.setItem("im.name",a)};var gallery={};gallery.init=function(a){a&&(gallery.choose=a),gallery.bind()},gallery.bind=function(){$("#gallery-random").click(asdf.random),$("#gallery-search").submit(dumpfm.search),$(document).on("click","#gallery-images canvas",gallery.click)},gallery.load=function(a){status("loading "+a.length+" images"),$("#gallery-images").empty();for(var b=0;ba||isNaN(a))&&$(this).val(a=1),$("#add-frame").html(1==a?"+add frame":"+add frames")}),$("#frames").disableSelection(),$("#remove-all-frames").click(remove_all_frames),$("#weave-frames").click(weave_frames),$("#shuffle-frames").click(shuffle_frames),$("#reverse-frames").click(reverse_frames),$("#sort-frames").click(sort_frames),$("#render").click(render),$("#save").click(save),$("#upload").click(upload),$("#background").change(function(){document.body.style.backgroundColor=$("#background").string()})};var encoder=new GifEncoder;encoder.on("quantized",function(){status("encoding"),encoder.encode()}),encoder.on("encoded-frame",function(a,b){status("encoded "+a+" / "+b)}),encoder.on("rendered",function(a){status(filesize(a.length))}),encoder.on("rendered-url",function(a){var b=new Image;lastGif=b.src=a,$("#workspace canvas").hide(),$("#workspace").append(b),$("#uploaded-url").hide().val(""),$("#uploaded-url + br").hide(),$("#save,#upload,#rendered").show(),$("#pause,#render,#add-frame,#save,#upload").enable(),$("#render").html("render gif"),rendering=!1,pause(!0)});var frame,img_frame,timeout,raf_id,start_t=0,old_t=0,pause_t=0,paused=!1,dragging=!1,rendering=!1,scrolling=!1,deferring=!1,scrollTimeout=null,fps=30,shader_build=function(){var a=document.getElementById("shader").value;a.length||(a="");try{var b=new Function("x","y","t","d",a);shader=b,shade=shade_error_handling}catch(c){try{acorn.parse(a)}catch(c){error_highlight.on(c.loc.line-1)}throw Error("Shader compilation error")}},r,g,b,a,w,h,actual_w,actual_h,chrome_stack_regexp=/:([0-9]+)/,firefox_stack_regexp=/:([0-9]+)$/;shade=shade_error_handling(function(){var a={},b={},c={},d="",e=0,f=0,g=0,h=function(){a.highlight.style.display="none"},i=function(b){c=a.textarea.getBoundingClientRect();var g=a.textarea.value,h=g.split("\n"),i=h.slice(0,b),k=h[b];a.textmeasure.innerHTML=1===i.length?i+d:i.join("
"+d),e=a.textmeasure.offsetHeight,a.textmeasure.innerHTML=k+d,f=a.textmeasure.offsetHeight,j()},j=function(){var b=c.top+c.height;a.highlight.style.width=a.textarea.scrollHeight>a.textarea.clientHeight?c.width-g+"px":c.width+"px",a.highlight.style.left=c.left+"px";var d=c.top+e-a.textarea.scrollTop;a.highlight.style.top=d+a.html.scrollTop+a.body.scrollTop+"px";var h=f;d+h>b&&(h=Math.max(0,b-d)),d"),f=b[d].username;e.val(f).html(f),c.append(e)}}),$(document).on("change","#pick-user",function(){var a=$(this).val();ShaderAPI.username(a,load_shaders)}),$(document).on("click",".shader",function(){run_shader($(this).data("shader"))})};var ShaderAPI={};ShaderAPI.limit=24,ShaderAPI.info=function(a,b){ShaderAPI.fetch({f:"info",id:a},b)},ShaderAPI.all=function(a){ShaderAPI.fetch({f:"all"},a)},ShaderAPI.range=function(a,b,c){ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit,last:b},c)},ShaderAPI.latest=function(a,b){b||(b=a,a=ShaderAPI.limit),ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit},b)},ShaderAPI.page=function(a,b,c){ShaderAPI.fetch({f:"range",last:(a-1)*b,limit:b||ShaderAPI.limit},c)},ShaderAPI.history=function(a,b){ShaderAPI.fetch({f:"history",id:a},b)},ShaderAPI.username=function(a,b){ShaderAPI.fetch({f:"username",username:a},b)},ShaderAPI.list_users=function(a){ShaderAPI.fetch({f:"list_users"},a)},ShaderAPI.originals=function(a){ShaderAPI.fetch({f:"originals"},a)},ShaderAPI.fetch=function(a,b){$.ajax({url:"http://asdf.us/cgi-bin/im/shader/view",data:a,dataType:"jsonp",success:function(a){a.SUCCESS?b(null,a.data):a.ERROR&&b(a.ERROR,a.data)}})};var shader_id_root=null,cc=cq(0,0).appendTo("#workspace"),w=400,h=400,lastGif,mousex,mousey,firsttime=!0,shader_gallery_template=$("#shader-gallery-template").html();$(init); \ No newline at end of file +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b){if(a&&""!=a){b=b||make_thumbnail();var c=new FormData;c.append("id",a),c.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:c,processData:!1,contentType:!1}).done(function(b){console.log(b),status("");var c=JSON.parse(b);c.success&&$(".shader[data-id="+a+"]").find("img").attr("src",c.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H();return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal"); +case pc:var b=ub,c=sb;D();var d=Y();return d.start=c,d.end=tb,lb.locations&&(d.loc.start=b,d.loc.end=vb),lb.ranges&&(d.range=[c,tb]),O(qc),d;case lc:var a=H();return D(),a.elements=jb(mc,!0,!0),J(a,"ArrayExpression");case nc:return gb();case Xb:var a=H();return D(),ib(a,!1);case ec:return fb();default:P()}}function fb(){var a=H();return D(),a.callee=db(eb(),!0),a.arguments=L(pc)?jb(qc,!1):Hb,J(a,"NewExpression")}function gb(){var a=H(),b=!0,d=!1;for(a.properties=[],D();!L(oc);){if(b)b=!1;else if(O(rc),lb.allowTrailingCommas&&L(oc))break;var e,f={key:hb()},g=!1;if(L(tc)?(f.value=Y(!0),e=f.kind="init"):lb.ecmaVersion>=5&&"Identifier"===f.key.type&&("get"===f.key.name||"set"===f.key.name)?(g=d=!0,e=f.kind=f.key.name,f.key=hb(),wb!==pc&&P(),f.value=ib(H(),!1)):P(),"Identifier"===f.key.type&&(Gb||d))for(var h=0;hg?a.id:a.params[g];if((Pc(h.name)||Qc(h.name))&&c(h.start,"Defining '"+h.name+"' in strict mode"),g>=0)for(var i=0;g>i;++i)h.name===a.params[i].name&&c(h.start,"Argument name clash in strict mode")}return J(a,b?"FunctionDeclaration":"FunctionExpression")}function jb(a,b,c){for(var d=[],e=!0;!L(a);){if(e)e=!1;else if(O(rc),b&&lb.allowTrailingCommas&&L(a))break;d.push(c&&wb===rc?null:Y(!0))}return d}function kb(a){var b=H();return b.name=wb===Lb?xb:a&&!lb.forbidReserved&&wb.keyword||P(),yb=!1,D(),J(b,"Identifier")}a.version="0.4.1";var lb,mb,nb,ob;a.parse=function(a,c){return mb=String(a),nb=mb.length,b(c),f(),R(lb.program)};var pb=a.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},qb=a.getLineInfo=function(a,b){for(var c=1,d=0;;){Yc.lastIndex=d;var e=Yc.exec(a);if(!(e&&e.indexa?36===a:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Vc.test(String.fromCharCode(a))},$c=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Wc.test(String.fromCharCode(a))},_c={kind:"loop"},ad={kind:"switch"}}),function(a,b,c,d){function e(d){if(!c[d]){if(!b[d]){if(a)return a(d);throw new Error("Cannot find module '"+d+"'")}var f=c[d]={exports:{}};b[d][0](function(a){var c=b[d][1][a];return e(c?c:a)},f,f.exports)}return c[d].exports}for(var f=0;f1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},i.proto.send=function(a){i.total[a]||(i.total[a]=0),i.total[a]+=1;var b,c,f,g=this.listeners,j=this.globListeners,k=d(a);if(arguments.length){var l=Array.prototype.splice.call(arguments,1);l.push(a)}else var l=[];for(var m=0;c=k[m];m++){var n={},o={};if(b=g[c])for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c;var q=c.split(":");for(var r in j){if("*"!==r){var s=h[r]||(h[r]=r.split(":"));if(!e(s,q))continue}b=j[r];for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c}var t=[];for(var f in n)t.push(n[f]);for(var f,p=0;f=t[p];p++)f.apply(f,l)}return this},b.exports=i},{"./object/setproto":7,"./string/tokenize":8,"./string/globber":9,"./uid":10,"./nexttick":11}],7:[function(a,b){var c=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]};b.exports=c},{}],8:[function(a,b){var c=function(a,b){return a.trim().split(b||c.default)};c.default=/\s+/g,b.exports=c},{}],9:[function(a,b){var c=function(a,b){var d,e=a[0],f=a.slice(1),g=b.length;if("*"===e){for(var h=0;g>=h;++h)if(c(f,b.slice(h)))return!0;return!1}return d=e===b[0],d&&(!f.length&&!g||c(f,b.slice(1)))};b.exports=c},{}],10:[function(a,b){var c=function(){return c.counter++ +""};c.counter=1,b.exports=c},{}],11:[function(a,b){if(window.ActiveXObject||!window.postMessage)var c=function(a){setTimeout(a,0)};else{var d=[],e="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==e&&(a.stopPropagation&&a.stopPropagation(),d.length&&d.shift()())},!0);var c=function(a){d.push(a),window.postMessage(e,"*")}}b.exports=c},{}],4:[function(a,b){var c=(a("./benchmark"),a("./object/setproto")),d=a("./object/extend"),e=a("./tube"),f=function(a,b){var d=e();return c(d,f.proto),b&&b.benchmark&&(d.benchmark=b.benchmark),d.src=a,d};f.proto={},d(f.proto,e.proto),f.proto.load=function(){var a=this,b=a.src;"string"==typeof b?a.loadFromUrl(b):b instanceof File?a.loadFromFile(b):b instanceof ArrayBuffer&&a("load",b)},f.proto.loadFromFile=function(a){var b=this,c=new FileReader;c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-disk"),b("load",c.result,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-disk"),c.readAsArrayBuffer(a)},f.proto.loadFromUrl=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a),c.responseType="arraybuffer",c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-network"),b("load",c.response,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-network"),c.send()},b.exports=f},{"./benchmark":2,"./object/setproto":7,"./object/extend":12,"./tube":3}],12:[function(a,b){b.exports=function(a,b){for(var c in b)a[c]=b[c];return a}},{}],5:[function(a,b){!function(){var c=a("./spec").blockSigs,d=a("./spec").extSigs,e=a("./palette"),f=a("./animate").makeCurrentFrame,g=a("../../binaryspec"),h=a("./spec").spec,i=g(h),j=function(a){k(a)},k=function(a,b){b=b||"header";for(var c=a.buf;"done"!==b&&"error"!==b;)if(b in l&&"function"==typeof l[b])b=l[b](a);else{var d=i.parts[b].byteSize;if(c.abuf.byteLengthe){i=!0;break}if(h=d[g],g+=1,0===h){j+=1;break}if(g+h>e){i=!0;break}b.push(g+h),g+=h,j+=h+1}return i?(console.log("out of data"),!1):(c.cursor+=j,a.benchmark&&a.benchmark.stop("read-subblocks"),{start:f,blockEnds:b})};b.exports=j}()},{"./spec":13,"./palette":14,"./animate":15,"../../binaryspec":16}],13:[function(a,b,c){var d={33:"extension",44:"imageDesc",59:"trailer"};c.blockSigs=d;var e={249:"graphicControl",254:"comment",1:"plainText",255:"applicationExtension"};c.extSigs=e;var f={header:["str[3] signature","str[3] version"],screenDesc:["u16 w","u16 h","bit paletteExists","bit[3] resolution ignore","bit sortFlag ignore","bit[3] paletteSize","u8 bgColorIndex","u8 aspectRatio ignore"],imageDesc:["u8 sig ignore","u16 x","u16 y","u16 w","u16 h","bit paletteExists","bit interlaced","bit sortFlag","bit[2] reserved ignore","bit[3] paletteSize"],applicationExtension:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","str[8] identifier","str[3] authCode ignore"],graphicControl:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","bit[3] reserved ignore","bit[3] disposalMethod","bit userInput ignore","bit transparentColor","u16 delay","u8 transparentIndex","u8 blockTerminator ignore"],comment:["u8 sig ignore","u8 extSig ignore"],plainText:["u8 sig ignore","u8 extSig ignore","u8 blockSize","u16 textGridLeft","u16 textGridTop","u16 textGridWidth","u16 textGridHeight","u8 charCellWidth","u8 charCellHeight","u8 fgColorIndex","u8 bgColorIndex"],imageData:["u8 lzwCodeSize"]};c.spec=f},{}],14:[function(a,b){!function(){var c=a("../../color/rgba2css"),d=(a("../../create/2d"),a("../../create/imagedata")),e={};e.binary2rgba=function(a){for(var b=new Uint8Array(a.byteLength/3*4),c=0,d=0,e=a.byteLength/3*4;e>d;d+=4)b[d]=a[c],b[d+1]=a[c+1],b[d+2]=a[c+2],b[d+3]=255,c+=3;return b},e.create=function(a){var b={0:0},e=["rgba(0,0,0,0)"],f=[[0,0,0,0]],g=function(a){for(var d=0,g=a.length;g>d;d+=4){var h=a[d+3];if(0!==h){var i=a[d],j=a[d+1],k=a[d+2],l=(i|j<<8|k<<16|h<<24).toString();if(!(l in b)){b[l]=f.length;var m=[i,j,k,h];f.push(m),e.push(c(m))}}}};"palette"in a&&g(a.palette);for(var h=0;hk;k+=4){var n=f[k/4];m[k]=n[0],m[k+1]=n[1],m[k+2]=n[2],m[k+3]=n[3]}return{rgba2Index:b,index2Rgba:f,index2Css:e,imagedata:j,length:f.length}},b.exports=e}()},{"../../color/rgba2css":17,"../../create/2d":18,"../../create/imagedata":19}],17:[function(a,b){var c=function(a){return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};b.exports=c},{}],18:[function(a,b){var c=function(a,b){var c=document.createElement("canvas");return c.width=a||0,c.height=b||0,c.getContext("2d")};"undefined"!=typeof b&&(b.exports=c)},{}],19:[function(a,b){var c=function d(a,b){return d.ctx.createImageData(a,b)};c.ctx=document.createElement("canvas").getContext("2d"),"undefined"!=typeof b&&(b.exports=c)},{}],15:[function(a,b,c){var d=function(){var a=100;1===this.frames.length&&(this.currentFrame=function(){return 0});for(var b=0,c=[],d=0;d0?10*f.delay:a;b+=g,c.push(b)}this.currentFrame=e(c)},e=function(a){var b=a[a.length-1];return function(c){for(var d=(c||Date.now())%b,e=0;e1,m=b[j]*k;d.fields.push({name:g[1],type:j,ignore:h,bitSize:m,isArray:l}),e+=m}return d.bitSize=e,d.byteSize=e/8,d};e.proto.decodeBinaryFieldsToJSON=function(a,b,c){for(var e=this,f=e.parts[a],h={},i=f.fields.length,j=0,k=0;i>k;k++){var l=f.fields[k];if(!l.ignore){{var m=j%8,n=Math.floor((j-m)/8);n+Math.ceil(l.bitSize/8)}switch(l.type){case"u8":h[l.name]=c.u8[b+n];break;case"i8":h[l.name]=c.dv.getInt8(b+n);break;case"u16":h[l.name]=c.dv.getUint16(b+n,!0);break;case"i16":h[l.name]=c.dv.getInt16(b+n,!0);break;case"u32":h[l.name]=c.dv.getUint32(b+n,!0);break;case"i32":h[l.name]=c.dv.getInt32(b+n,!0);break;case"str":h[l.name]=g(c.abuf,b+n,l.bitSize>>3);break;case"bit":if(l.isArray){for(var o=new d(c.abuf,b+n),p=[],q=m;q>3],c=7&a;return b>>7-c&1},b.exports=c},{}],6:[function(a,b){var c=a("../../create/2d"),d=a("../../create/imagedata"),e=a("../../nexttick"),f=a("./decode-lzw"),g=function(a,b){b=b||{};var d=a.benchmark||!1,i=b.frameNum||0;if(0===i)for(var j=0;j=a.frames.length)return a.rendered=!0,void a.tube("rendered");var k=a.frames[i],l=a.buf.pixeldata;d&&d.start("decompress-lzw"),f(k.blockinfo,a.buf.u8,k.lzwCodeSize,k.w,k.h,l),d&&d.stop("decompress-lzw"),k.interlaced&&(d&&d.start("deinterlace"),l=m(l,k.w,k.h),d&&d.stop("deinterlace")),d&&d.start("pixeldata-to-canvas"),h(l,a,i),d&&d.stop("pixeldata-to-canvas");var n=g.bind(void 0,a,{frameNum:i+1});e(n)},h=function(a,b,c){var d=b.frames[c],e=d.ctx;if(0===c)return void e.putImageData(k(a,b,d),d.x,d.y,0,0,d.w,d.h);var f,g=c-1,h=b.frames[g],l=h.ctx.canvas;if((0===h.disposalMethod||1===h.disposalMethod)&&(f=i(b,c,a),e.drawImage(l,0,0),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)),2===h.disposalMethod&&(0===h.x&&0===h.y&&h.w===b.w&&h.h===b.h?e.putImageData(j(b,c,a),d.x,d.y,0,0,d.w,d.h):(h.y>0&&e.drawImage(l,0,0,b.w,h.y,0,0,b.w,h.y),h.x>0&&e.drawImage(l,0,h.y,h.x,h.h,0,h.y,h.x,h.h),h.x+h.w0&&3===b.frames[g].disposalMethod;)g-=1;h=b.frames[g],3!=h.disposalMethod&&e.drawImage(h.ctx.canvas,0,0),f=i(b,c,a),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)}},i=function(a,b,d){if(i.ctx&&i.ctx.canvas.width===a.w&&i.ctx.canvas.height===a.h)var e=i.ctx;else var e=i.ctx=c(a.w,a.h);var f=a.frames[b];d=d||f.pixelData;var g="palette"in f?f.palette:a.palette,h="transparentIndex"in f?f.transparentIndex:-1;h>-1&&(g[4*h+3]=0);var j=l(a,g,d,f.w,f.h,h);return e.putImageData(j,0,0,0,0,f.w,f.h),e},j=function(a,b,c){var d=a.frames[b];c=c||d.pixelData;var e="palette"in d?d.palette:a.palette,f="transparentIndex"in d?d.transparentIndex:-1;return f>-1&&(e[4*f+3]=0),l(a,e,c,d.w,d.h,f)},k=function(a,b,c){var d="palette"in c?c.palette:b.palette,e="transparentIndex"in c?c.transparentIndex:-1;return e>-1&&(d[4*e+3]=0),l(b,d,a,c.w,c.h,e)},l=function(a,b,c,e,f){if(l.imagedata&&l.imagedata.width===a.w&&l.imagedata.height===a.h)var g=l.imagedata;else var g=l.imagedata=d(a.w,a.h);for(var h=g.data,i=0,j=0;f>j;j++)for(var k=j*a.w,m=0;e>m;m++){var n=4*(m+k),o=4*c[i];h[n]=b[o],h[n+1]=b[o+1],h[n+2]=b[o+2],h[n+3]=b[o+3],i+=1}return g},m=function(a,b,c){for(var d=new Uint8Array(a.length),e=Math.ceil(c/8),f=Math.ceil(c/4),g=Math.ceil(c/2),h=0;c>h;h++){var i,j=b*h;i=h%8===0?b*(h/8):(h+4)%8===0?b*((h-4)/8+e):h%2===0?b*((h-2)/4+f):b*((h-1)/2+g);for(var k=0;b>k;k++)d[j+k]=a[i+k]}return d};b.exports=g},{"../../create/2d":18,"../../create/imagedata":19,"../../nexttick":11,"./decode-lzw":21}],21:[function(a,b){var c=function(a,b,c,d,e,f,g){var h,i,j,k=4096,l=-1,m=d*e,n=0,o=0,p=0,f=f||new Uint8Array(m),q=new Uint16Array(2*k),r=new Uint8Array(k),s=new Uint8Array(k+1),t=1<h;h++)q[h]=0,r[h]=h;for(var y=0,z=0,A=a.start,B=a.blockEnds,C=B.shift(),D=0;m>D;){if(0===o){if(w>y){z+=b[A]<>=w,y-=w,h>v&&console.log(":("),h===u){console.log("fuck");break}if(h===t){w=c+1,x=(1<t;)s[o++]=r[h],h=q[h];n=r[h],s[o++]=n,q[v]=j,r[v]=n,v++,0===(v&x)&&k>v&&(w++,x+=v),j=i}o--,f[p++]=g?g[s[o]]:s[o],D++}return f};b.exports=c},{}]},{},[1]);var nextTick=function(){if(window.ActiveXObject||!window.postMessage)var a=function(a){setTimeout(a,0)};else{var b=[],c="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==c&&(a.stopPropagation&&a.stopPropagation(),b.length&&b.shift()())},!0);var a=function(a){b.push(a),window.postMessage(c,"*")}}return a}(),Uid=function(){var a=0;return function(){return a++ +""}}(),tokenize=function(){var a=function(b,c){return b.trim().split(c||a.default)};return a.default=/\s+/g,a}(),globber=function(a,b){var c,d=a[0],e=a.slice(1),f=b.length;if("*"===d){for(var g=0;f>=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1],arguments[2]||{}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0,workerURL=URL.createObjectURL(new Blob(["(",function(){function a(a){var c=a.imageData,d=b(c.data),e=new NeuQuant(d,d.length,1),f=e.process();self.postMessage({task:"quantize",neuquant:e.save(),colortab:f})}function b(a){for(var b=[],c=0,d=0,e=a.length;e>c;d+=4)b[c++]=a[d],b[c++]=a[d+1],b[c++]=a[d+2];return b}function c(a){var b=a.frame_index,c=a.frame_length,d=a.height,e=a.width,f=a.imageData,g=a.delay,h=a.neuquant,i=a.colortab,j=new GIFEncoder;j.setRepeat(0),j.setQuality(1),j.setSize(e,d),j.setDelay(g),0==b?j.start():(j.cont(),j.setProperties(!0,!1)),j.setNeuquant(h,i),j.addFrame(f,!0),c==b&&j.finish(),self.postMessage({task:"encode",frame_index:b,frame_data:j.stream().getData()}),delete j,delete a}GIFEncoder=function(){function a(){this.bin=[]}for(var b=0,c={};256>b;b++)c[b]=String.fromCharCode(b);a.prototype.getData=function(){for(var a="",b=this.bin.length,d=0;b>d;d++)a+=c[this.bin[d]];return a},a.prototype.writeByte=function(a){this.bin.push(a)},a.prototype.writeUTFBytes=function(a){for(var b=a.length,c=0;b>c;c++)this.writeByte(a.charCodeAt(c))},a.prototype.writeBytes=function(a,b,c){for(var d=c||a.length,e=b||0;d>e;e++)this.writeByte(a[e])};var d,e,f,g,h,i,j,k,l,m={},n=null,o=-1,p=0,q=!1,r=new Array,s=7,t=-1,u=!1,v=!0,w=!1,x=1,y=null,z=(m.setDelay=function(a){p=Math.round(a/10)},m.setDispose=function(a){a>=0&&(t=a)},m.setRepeat=function(a){a>=0&&(o=a)},m.setTransparent=function(a){n=a},m.addFrame=function(a,b){if(null==a||!q||null==g)throw new Error("Please call start method before calling addFrame");var c=!0;try{b?h=a:(h=a.getImageData(0,0,a.canvas.width,a.canvas.height).data,w||A(a.canvas.width,a.canvas.height)),D(),B(),v&&(G(),I(),o>=0&&H()),E(),F(),v||I(),K(),v=!1}catch(d){c=!1}return c},m.finish=function(){if(!q)return!1;var a=!0;q=!1;try{g.writeByte(59)}catch(b){a=!1}return a},function(){f=0,h=null,i=null,j=null,l=null,u=!1,v=!0}),A=(m.setFrameRate=function(a){15!=a&&(p=Math.round(100/a))},m.setQuality=function(a){x=Math.max(1,a)},m.setSize=function(a,b){(!q||v)&&(d=a,e=b,1>d&&(d=320),1>e&&(e=240),w=!0)}),B=(m.setNeuquant=function(a,b){y=a,l=b},m.start=function(){z();var b=!0;u=!1,g=new a;try{g.writeUTFBytes("GIF89a")}catch(c){b=!1}return q=b},m.cont=function(){z();var b=!0;return u=!1,g=new a,q=b},function(){var a=i.length,b=a/3;j=[];var c;y&&l?(c=new NeuQuant,c.load(y)):(c=new NeuQuant(i,a,x),l=c.process());for(var d=0,e=0;b>e;e++){var g=c.map(255&i[d++],255&i[d++],255&i[d++]);r[g]=!0,j[e]=g}i=null,k=8,s=7,null!=n&&(f=C(n))}),C=function(a){if(null==l)return-1;for(var b=(16711680&a)>>16,c=(65280&a)>>8,d=255&a,e=0,f=16777216,g=l.length,h=0;g>h;){var i=b-(255&l[h++]),j=c-(255&l[h++]),k=d-(255&l[h]),m=i*i+j*j+k*k,n=h/3;r[n]&&f>m&&(f=m,e=n),h++}return e},D=function(){var a=d,b=e;i=[];for(var c=h,f=0,g=0;b>g;g++)for(var j=0;a>j;j++){var k=g*a*4+4*j;i[f++]=c[k],i[f++]=c[k+1],i[f++]=c[k+2]}},E=function(){g.writeByte(33),g.writeByte(249),g.writeByte(4);var a,b;null==n?(a=0,b=0):(a=1,b=2),t>=0&&(b=7&t),b<<=2,g.writeByte(0|b|0|a),J(p),g.writeByte(f),g.writeByte(0)},F=function(){g.writeByte(44),J(0),J(0),J(d),J(e),g.writeByte(v?0:128|s)},G=function(){J(d),J(e),g.writeByte(240|s),g.writeByte(0),g.writeByte(0) +},H=function(){g.writeByte(33),g.writeByte(255),g.writeByte(11),g.writeUTFBytes("NETSCAPE2.0"),g.writeByte(3),g.writeByte(1),J(o),g.writeByte(0)},I=function(){g.writeBytes(l);for(var a=768-l.length,b=0;a>b;b++)g.writeByte(0)},J=function(a){g.writeByte(255&a),g.writeByte(a>>8&255)},K=function(){var a=new LZWEncoder(d,e,j,k);a.encode(g)};return m.stream=function(){return g},m.setProperties=function(a,b){q=a,v=b},m},LZWEncoder=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m={},n=-1,o=12,p=5003,q=o,r=1<=254&&G(b)},D=function(a){E(u),v=j+2,w=!0,J(j,a)},E=function(a){for(var b=0;a>b;++b)s[b]=-1},F=m.compress=function(a,b){var c,d,e,f,m,o,p;for(i=a,w=!1,g=i,h=H(g),j=1<c;c*=2)++p;p=8-p,o=u,E(o),J(j,b);a:for(;(e=I())!=n;)if(c=(e<=0){m=o-d,0==d&&(m=1);do if((d-=m)<0&&(d+=o),s[d]==c){f=t[d];continue a}while(s[d]>=0)}J(f,b),f=e,r>v?(t[d]=v++,s[d]=c):D(b)}else f=t[d];J(f,b),J(k,b)},G=(m.encode=function(c){c.writeByte(d),e=a*b,f=0,F(d+1,c),c.writeByte(0)},function(a){l>0&&(a.writeByte(l),a.writeBytes(A,0,l),l=0)}),H=function(a){return(1<0?x|=a<=8;)C(255&x,b),x>>=8,y-=8;if((v>h||w)&&(w?(h=H(g=i),w=!1):(++g,h=g==q?r:H(g))),a==k){for(;y>0;)C(255&x,b),x>>=8,y-=8;G(b)}};return B.apply(this,arguments),m},NeuQuant=function(){var a,b,c,d,e,f={},g=128,h=499,i=491,j=487,k=503,l=3*k,m=g-1,n=4,o=100,p=16,q=1<>s,u=q<>3,w=6,x=1<i;i++)e[i]=new Array(4),j=e[i],j[0]=j[1]=j[2]=(i<c;c++)b[e[c][3]]=c;for(var d=0,f=0;g>f;f++){var h=b[f];a[d++]=e[h][0],a[d++]=e[h][1],a[d++]=e[h][2]}return a},M=function(){var a,b,c,d,f,h,i,j;for(i=0,j=0,a=0;g>a;a++){for(f=e[a],c=a,d=f[1],b=a+1;g>b;b++)h=e[b],h[1]>1,b=i+1;d>b;b++)G[b]=a;i=d,j=a}}for(G[i]=j+m>>1,b=i+1;256>b;b++)G[b]=m},N=function(){var e,f,g,m,p,q,r,s,t,u,v,x,A,C;for(l>c&&(d=1),a=30+(d-1)/3,x=b,A=0,C=c,v=c/(3*d),u=v/o,s=B,q=y,r=q>>w,1>=r&&(r=0),e=0;r>e;e++)J[e]=s*((r*r-e*e)*D/(r*r));for(t=l>c?3:c%h!=0?3*h:c%i!=0?3*i:c%j!=0?3*j:3*k,e=0;v>e;)if(g=(255&x[A+0])<=C&&(A-=c),e++,0==u&&(u=1),e%u==0)for(s-=s/a,q-=q/z,r=q>>w,1>=r&&(r=0),f=0;r>f;f++)J[f]=s*((r*r-f*f)*D/(r*r))},O=(f.save=function(){var a={netindex:G,netsize:g,network:e};return a},f.load=function(a){G=a.netindex,g=a.netsize,e=a.network},f.map=function(a,b,c){var d,f,h,i,j,k,l;for(j=1e3,l=-1,d=G[b],f=d-1;g>d||f>=0;)g>d&&(k=e[d],h=k[1]-b,h>=j?d=g:(d++,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3])))),f>=0&&(k=e[f],h=b-k[1],h>=j?f=-1:(f--,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3]))));return l},f.process=function(){return N(),O(),M(),L()},function(){var a;for(a=0;g>a;a++)e[a][0]>>=n,e[a][1]>>=n,e[a][2]>>=n,e[a][3]=a}),P=function(a,b,c,d,f){var h,i,j,k,l,m,n;for(j=b-a,-1>j&&(j=-1),k=b+a,k>g&&(k=g),h=b+1,i=b-1,m=1;k>h||i>j;){if(l=J[m++],k>h){n=e[h++];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}if(i>j){n=e[i--];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}}},Q=function(a,b,c,d,f){var g=e[b];g[0]-=a*(g[0]-c)/B,g[1]-=a*(g[1]-d)/B,g[2]-=a*(g[2]-f)/B},R=function(a,b,c){var d,f,h,i,j,k,l,m,o,q;for(m=~(1<<31),o=m,k=-1,l=k,d=0;g>d;d++)q=e[d],f=q[0]-a,0>f&&(f=-f),h=q[1]-b,0>h&&(h=-h),f+=h,h=q[2]-c,0>h&&(h=-h),f+=h,m>f&&(m=f,k=d),i=f-(H[d]>>p-n),o>i&&(o=i,l=d),j=I[d]>>s,I[d]-=j,H[d]+=j<0&&b-1 in a)}function d(a){var b=ob[a]={};return fb.each(a.match(hb)||[],function(a,c){b[c]=!0}),b}function e(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=fb.expando+Math.random()}function f(a,c,d){var e;if(d===b&&1===a.nodeType)if(e="data-"+c.replace(sb,"-$1").toLowerCase(),d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:rb.test(d)?JSON.parse(d):d}catch(f){}pb.set(a,c,d)}else d=b;return d}function g(){return!0}function h(){return!1}function i(){try{return T.activeElement}catch(a){}}function j(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function k(a,b,c){if(fb.isFunction(b))return fb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(Cb.test(b))return fb.filter(b,a,c);b=fb.filter(b,a)}return fb.grep(a,function(a){return bb.call(b,a)>=0!==c})}function l(a,b){return fb.nodeName(a,"table")&&fb.nodeName(1===b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function m(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function n(a){var b=Nb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function o(a,b){for(var c=a.length,d=0;c>d;d++)qb.set(a[d],"globalEval",!b||qb.get(b[d],"globalEval"))}function p(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(qb.hasData(a)&&(f=qb.access(a),g=qb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)fb.event.add(b,e,j[e][c])}pb.hasData(a)&&(h=pb.access(a),i=fb.extend({},h),pb.set(b,i))}}function q(a,c){var d=a.getElementsByTagName?a.getElementsByTagName(c||"*"):a.querySelectorAll?a.querySelectorAll(c||"*"):[];return c===b||c&&fb.nodeName(a,c)?fb.merge([a],d):d}function r(a,b){var c=b.nodeName.toLowerCase();"input"===c&&Kb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function s(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=_b.length;e--;)if(b=_b[e]+c,b in a)return b;return d}function t(a,b){return a=b||a,"none"===fb.css(a,"display")||!fb.contains(a.ownerDocument,a)}function u(b){return a.getComputedStyle(b,null)}function v(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=qb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&t(d)&&(f[g]=qb.access(d,"olddisplay",z(d.nodeName)))):f[g]||(e=t(d),(c&&"none"!==c||!e)&&qb.set(d,"olddisplay",e?c:fb.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function w(a,b,c){var d=Ub.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function x(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=fb.css(a,c+$b[f],!0,e)),d?("content"===c&&(g-=fb.css(a,"padding"+$b[f],!0,e)),"margin"!==c&&(g-=fb.css(a,"border"+$b[f]+"Width",!0,e))):(g+=fb.css(a,"padding"+$b[f],!0,e),"padding"!==c&&(g+=fb.css(a,"border"+$b[f]+"Width",!0,e)));return g}function y(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=u(a),g=fb.support.boxSizing&&"border-box"===fb.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Qb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Vb.test(e))return e;d=g&&(fb.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+x(a,b,c||(g?"border":"content"),d,f)+"px"}function z(a){var b=T,c=Xb[a];return c||(c=A(a,b),"none"!==c&&c||(Rb=(Rb||fb("
- + diff --git a/js/vendor/gif-encode.min.js b/js/vendor/gif-encode.min.js index 4e195aa..be5e2cd 100644 --- a/js/vendor/gif-encode.min.js +++ b/js/vendor/gif-encode.min.js @@ -1,2 +1,2 @@ /* asdf.us/gif-recorder */ -function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;d=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0; \ No newline at end of file +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;d=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0,workerURL=URL.createObjectURL(new Blob(["(",function(){function a(a){var c=a.imageData,d=b(c.data),e=new NeuQuant(d,d.length,1),f=e.process();self.postMessage({task:"quantize",neuquant:e.save(),colortab:f})}function b(a){for(var b=[],c=0,d=0,e=a.length;e>c;d+=4)b[c++]=a[d],b[c++]=a[d+1],b[c++]=a[d+2];return b}function c(a){var b=a.frame_index,c=a.frame_length,d=a.height,e=a.width,f=a.imageData,g=a.delay,h=a.neuquant,i=a.colortab,j=new GIFEncoder;j.setRepeat(0),j.setQuality(1),j.setSize(e,d),j.setDelay(g),0==b?j.start():(j.cont(),j.setProperties(!0,!1)),j.setNeuquant(h,i),j.addFrame(f,!0),c==b&&j.finish(),self.postMessage({task:"encode",frame_index:b,frame_data:j.stream().getData()}),delete j,delete a}GIFEncoder=function(){function a(){this.bin=[]}for(var b=0,c={};256>b;b++)c[b]=String.fromCharCode(b);a.prototype.getData=function(){for(var a="",b=this.bin.length,d=0;b>d;d++)a+=c[this.bin[d]];return a},a.prototype.writeByte=function(a){this.bin.push(a)},a.prototype.writeUTFBytes=function(a){for(var b=a.length,c=0;b>c;c++)this.writeByte(a.charCodeAt(c))},a.prototype.writeBytes=function(a,b,c){for(var d=c||a.length,e=b||0;d>e;e++)this.writeByte(a[e])};var d,e,f,g,h,i,j,k,l,m={},n=null,o=-1,p=0,q=!1,r=new Array,s=7,t=-1,u=!1,v=!0,w=!1,x=1,y=null,z=(m.setDelay=function(a){p=Math.round(a/10)},m.setDispose=function(a){a>=0&&(t=a)},m.setRepeat=function(a){a>=0&&(o=a)},m.setTransparent=function(a){n=a},m.addFrame=function(a,b){if(null==a||!q||null==g)throw new Error("Please call start method before calling addFrame");var c=!0;try{b?h=a:(h=a.getImageData(0,0,a.canvas.width,a.canvas.height).data,w||A(a.canvas.width,a.canvas.height)),D(),B(),v&&(G(),I(),o>=0&&H()),E(),F(),v||I(),K(),v=!1}catch(d){c=!1}return c},m.finish=function(){if(!q)return!1;var a=!0;q=!1;try{g.writeByte(59)}catch(b){a=!1}return a},function(){f=0,h=null,i=null,j=null,l=null,u=!1,v=!0}),A=(m.setFrameRate=function(a){15!=a&&(p=Math.round(100/a))},m.setQuality=function(a){x=Math.max(1,a)},m.setSize=function(a,b){(!q||v)&&(d=a,e=b,1>d&&(d=320),1>e&&(e=240),w=!0)}),B=(m.setNeuquant=function(a,b){y=a,l=b},m.start=function(){z();var b=!0;u=!1,g=new a;try{g.writeUTFBytes("GIF89a")}catch(c){b=!1}return q=b},m.cont=function(){z();var b=!0;return u=!1,g=new a,q=b},function(){var a=i.length,b=a/3;j=[];var c;y&&l?(c=new NeuQuant,c.load(y)):(c=new NeuQuant(i,a,x),l=c.process());for(var d=0,e=0;b>e;e++){var g=c.map(255&i[d++],255&i[d++],255&i[d++]);r[g]=!0,j[e]=g}i=null,k=8,s=7,null!=n&&(f=C(n))}),C=function(a){if(null==l)return-1;for(var b=(16711680&a)>>16,c=(65280&a)>>8,d=255&a,e=0,f=16777216,g=l.length,h=0;g>h;){var i=b-(255&l[h++]),j=c-(255&l[h++]),k=d-(255&l[h]),m=i*i+j*j+k*k,n=h/3;r[n]&&f>m&&(f=m,e=n),h++}return e},D=function(){var a=d,b=e;i=[];for(var c=h,f=0,g=0;b>g;g++)for(var j=0;a>j;j++){var k=g*a*4+4*j;i[f++]=c[k],i[f++]=c[k+1],i[f++]=c[k+2]}},E=function(){g.writeByte(33),g.writeByte(249),g.writeByte(4);var a,b;null==n?(a=0,b=0):(a=1,b=2),t>=0&&(b=7&t),b<<=2,g.writeByte(0|b|0|a),J(p),g.writeByte(f),g.writeByte(0)},F=function(){g.writeByte(44),J(0),J(0),J(d),J(e),g.writeByte(v?0:128|s)},G=function(){J(d),J(e),g.writeByte(240|s),g.writeByte(0),g.writeByte(0)},H=function(){g.writeByte(33),g.writeByte(255),g.writeByte(11),g.writeUTFBytes("NETSCAPE2.0"),g.writeByte(3),g.writeByte(1),J(o),g.writeByte(0)},I=function(){g.writeBytes(l);for(var a=768-l.length,b=0;a>b;b++)g.writeByte(0)},J=function(a){g.writeByte(255&a),g.writeByte(a>>8&255)},K=function(){var a=new LZWEncoder(d,e,j,k);a.encode(g)};return m.stream=function(){return g},m.setProperties=function(a,b){q=a,v=b},m},LZWEncoder=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m={},n=-1,o=12,p=5003,q=o,r=1<=254&&G(b)},D=function(a){E(u),v=j+2,w=!0,J(j,a)},E=function(a){for(var b=0;a>b;++b)s[b]=-1},F=m.compress=function(a,b){var c,d,e,f,m,o,p;for(i=a,w=!1,g=i,h=H(g),j=1<c;c*=2)++p;p=8-p,o=u,E(o),J(j,b);a:for(;(e=I())!=n;)if(c=(e<=0){m=o-d,0==d&&(m=1);do if((d-=m)<0&&(d+=o),s[d]==c){f=t[d];continue a}while(s[d]>=0)}J(f,b),f=e,r>v?(t[d]=v++,s[d]=c):D(b)}else f=t[d];J(f,b),J(k,b)},G=(m.encode=function(c){c.writeByte(d),e=a*b,f=0,F(d+1,c),c.writeByte(0)},function(a){l>0&&(a.writeByte(l),a.writeBytes(A,0,l),l=0)}),H=function(a){return(1<0?x|=a<=8;)C(255&x,b),x>>=8,y-=8;if((v>h||w)&&(w?(h=H(g=i),w=!1):(++g,h=g==q?r:H(g))),a==k){for(;y>0;)C(255&x,b),x>>=8,y-=8;G(b)}};return B.apply(this,arguments),m},NeuQuant=function(){var a,b,c,d,e,f={},g=128,h=499,i=491,j=487,k=503,l=3*k,m=g-1,n=4,o=100,p=16,q=1<>s,u=q<>3,w=6,x=1<i;i++)e[i]=new Array(4),j=e[i],j[0]=j[1]=j[2]=(i<c;c++)b[e[c][3]]=c;for(var d=0,f=0;g>f;f++){var h=b[f];a[d++]=e[h][0],a[d++]=e[h][1],a[d++]=e[h][2]}return a},M=function(){var a,b,c,d,f,h,i,j;for(i=0,j=0,a=0;g>a;a++){for(f=e[a],c=a,d=f[1],b=a+1;g>b;b++)h=e[b],h[1]>1,b=i+1;d>b;b++)G[b]=a;i=d,j=a}}for(G[i]=j+m>>1,b=i+1;256>b;b++)G[b]=m},N=function(){var e,f,g,m,p,q,r,s,t,u,v,x,A,C;for(l>c&&(d=1),a=30+(d-1)/3,x=b,A=0,C=c,v=c/(3*d),u=v/o,s=B,q=y,r=q>>w,1>=r&&(r=0),e=0;r>e;e++)J[e]=s*((r*r-e*e)*D/(r*r));for(t=l>c?3:c%h!=0?3*h:c%i!=0?3*i:c%j!=0?3*j:3*k,e=0;v>e;)if(g=(255&x[A+0])<=C&&(A-=c),e++,0==u&&(u=1),e%u==0)for(s-=s/a,q-=q/z,r=q>>w,1>=r&&(r=0),f=0;r>f;f++)J[f]=s*((r*r-f*f)*D/(r*r))},O=(f.save=function(){var a={netindex:G,netsize:g,network:e};return a},f.load=function(a){G=a.netindex,g=a.netsize,e=a.network},f.map=function(a,b,c){var d,f,h,i,j,k,l;for(j=1e3,l=-1,d=G[b],f=d-1;g>d||f>=0;)g>d&&(k=e[d],h=k[1]-b,h>=j?d=g:(d++,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3])))),f>=0&&(k=e[f],h=b-k[1],h>=j?f=-1:(f--,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3]))));return l},f.process=function(){return N(),O(),M(),L()},function(){var a;for(a=0;g>a;a++)e[a][0]>>=n,e[a][1]>>=n,e[a][2]>>=n,e[a][3]=a}),P=function(a,b,c,d,f){var h,i,j,k,l,m,n;for(j=b-a,-1>j&&(j=-1),k=b+a,k>g&&(k=g),h=b+1,i=b-1,m=1;k>h||i>j;){if(l=J[m++],k>h){n=e[h++];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}if(i>j){n=e[i--];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}}},Q=function(a,b,c,d,f){var g=e[b];g[0]-=a*(g[0]-c)/B,g[1]-=a*(g[1]-d)/B,g[2]-=a*(g[2]-f)/B},R=function(a,b,c){var d,f,h,i,j,k,l,m,o,q;for(m=~(1<<31),o=m,k=-1,l=k,d=0;g>d;d++)q=e[d],f=q[0]-a,0>f&&(f=-f),h=q[1]-b,0>h&&(h=-h),f+=h,h=q[2]-c,0>h&&(h=-h),f+=h,m>f&&(m=f,k=d),i=f-(H[d]>>p-n),o>i&&(o=i,l=d),j=I[d]>>s,I[d]-=j,H[d]+=j<
- @@ -263,6 +262,6 @@ function init(){ requestAnimationFrame(animate) } - + -- cgit v1.2.3-70-g09d2 From 0bd8943d2bfac60d1330304dd63fd4255bbdf218 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Jan 2014 13:29:36 -0500 Subject: pass into save thumbnail --- dist/app.min.js | 2 +- js/api/set.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/dist/app.min.js b/dist/app.min.js index e525383..6b9c7ee 100644 --- a/dist/app.min.js +++ b/dist/app.min.js @@ -1,5 +1,5 @@ /* asdf.us/shader */ -function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b){if(a&&""!=a){b=b||make_thumbnail();var c=new FormData;c.append("id",a),c.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:c,processData:!1,contentType:!1}).done(function(b){console.log(b),status("");var c=JSON.parse(b);c.success&&$(".shader[data-id="+a+"]").find("img").attr("src",c.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H();return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal"); +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b,$shader))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b,c){if(a&&""!=a){b=b||make_thumbnail();var d=new FormData;d.append("id",a),d.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:d,processData:!1,contentType:!1}).done(function(a){console.log(a),status("");var b=JSON.parse(a);b.success&&c.find("img").attr("src",b.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H();return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal"); case pc:var b=ub,c=sb;D();var d=Y();return d.start=c,d.end=tb,lb.locations&&(d.loc.start=b,d.loc.end=vb),lb.ranges&&(d.range=[c,tb]),O(qc),d;case lc:var a=H();return D(),a.elements=jb(mc,!0,!0),J(a,"ArrayExpression");case nc:return gb();case Xb:var a=H();return D(),ib(a,!1);case ec:return fb();default:P()}}function fb(){var a=H();return D(),a.callee=db(eb(),!0),a.arguments=L(pc)?jb(qc,!1):Hb,J(a,"NewExpression")}function gb(){var a=H(),b=!0,d=!1;for(a.properties=[],D();!L(oc);){if(b)b=!1;else if(O(rc),lb.allowTrailingCommas&&L(oc))break;var e,f={key:hb()},g=!1;if(L(tc)?(f.value=Y(!0),e=f.kind="init"):lb.ecmaVersion>=5&&"Identifier"===f.key.type&&("get"===f.key.name||"set"===f.key.name)?(g=d=!0,e=f.kind=f.key.name,f.key=hb(),wb!==pc&&P(),f.value=ib(H(),!1)):P(),"Identifier"===f.key.type&&(Gb||d))for(var h=0;hg?a.id:a.params[g];if((Pc(h.name)||Qc(h.name))&&c(h.start,"Defining '"+h.name+"' in strict mode"),g>=0)for(var i=0;g>i;++i)h.name===a.params[i].name&&c(h.start,"Argument name clash in strict mode")}return J(a,b?"FunctionDeclaration":"FunctionExpression")}function jb(a,b,c){for(var d=[],e=!0;!L(a);){if(e)e=!1;else if(O(rc),b&&lb.allowTrailingCommas&&L(a))break;d.push(c&&wb===rc?null:Y(!0))}return d}function kb(a){var b=H();return b.name=wb===Lb?xb:a&&!lb.forbidReserved&&wb.keyword||P(),yb=!1,D(),J(b,"Identifier")}a.version="0.4.1";var lb,mb,nb,ob;a.parse=function(a,c){return mb=String(a),nb=mb.length,b(c),f(),R(lb.program)};var pb=a.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},qb=a.getLineInfo=function(a,b){for(var c=1,d=0;;){Yc.lastIndex=d;var e=Yc.exec(a);if(!(e&&e.indexa?36===a:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Vc.test(String.fromCharCode(a))},$c=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Wc.test(String.fromCharCode(a))},_c={kind:"loop"},ad={kind:"switch"}}),function(a,b,c,d){function e(d){if(!c[d]){if(!b[d]){if(a)return a(d);throw new Error("Cannot find module '"+d+"'")}var f=c[d]={exports:{}};b[d][0](function(a){var c=b[d][1][a];return e(c?c:a)},f,f.exports)}return c[d].exports}for(var f=0;f1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},i.proto.send=function(a){i.total[a]||(i.total[a]=0),i.total[a]+=1;var b,c,f,g=this.listeners,j=this.globListeners,k=d(a);if(arguments.length){var l=Array.prototype.splice.call(arguments,1);l.push(a)}else var l=[];for(var m=0;c=k[m];m++){var n={},o={};if(b=g[c])for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c;var q=c.split(":");for(var r in j){if("*"!==r){var s=h[r]||(h[r]=r.split(":"));if(!e(s,q))continue}b=j[r];for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c}var t=[];for(var f in n)t.push(n[f]);for(var f,p=0;f=t[p];p++)f.apply(f,l)}return this},b.exports=i},{"./object/setproto":7,"./string/tokenize":8,"./string/globber":9,"./uid":10,"./nexttick":11}],7:[function(a,b){var c=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]};b.exports=c},{}],8:[function(a,b){var c=function(a,b){return a.trim().split(b||c.default)};c.default=/\s+/g,b.exports=c},{}],9:[function(a,b){var c=function(a,b){var d,e=a[0],f=a.slice(1),g=b.length;if("*"===e){for(var h=0;g>=h;++h)if(c(f,b.slice(h)))return!0;return!1}return d=e===b[0],d&&(!f.length&&!g||c(f,b.slice(1)))};b.exports=c},{}],10:[function(a,b){var c=function(){return c.counter++ +""};c.counter=1,b.exports=c},{}],11:[function(a,b){if(window.ActiveXObject||!window.postMessage)var c=function(a){setTimeout(a,0)};else{var d=[],e="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==e&&(a.stopPropagation&&a.stopPropagation(),d.length&&d.shift()())},!0);var c=function(a){d.push(a),window.postMessage(e,"*")}}b.exports=c},{}],4:[function(a,b){var c=(a("./benchmark"),a("./object/setproto")),d=a("./object/extend"),e=a("./tube"),f=function(a,b){var d=e();return c(d,f.proto),b&&b.benchmark&&(d.benchmark=b.benchmark),d.src=a,d};f.proto={},d(f.proto,e.proto),f.proto.load=function(){var a=this,b=a.src;"string"==typeof b?a.loadFromUrl(b):b instanceof File?a.loadFromFile(b):b instanceof ArrayBuffer&&a("load",b)},f.proto.loadFromFile=function(a){var b=this,c=new FileReader;c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-disk"),b("load",c.result,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-disk"),c.readAsArrayBuffer(a)},f.proto.loadFromUrl=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a),c.responseType="arraybuffer",c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-network"),b("load",c.response,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-network"),c.send()},b.exports=f},{"./benchmark":2,"./object/setproto":7,"./object/extend":12,"./tube":3}],12:[function(a,b){b.exports=function(a,b){for(var c in b)a[c]=b[c];return a}},{}],5:[function(a,b){!function(){var c=a("./spec").blockSigs,d=a("./spec").extSigs,e=a("./palette"),f=a("./animate").makeCurrentFrame,g=a("../../binaryspec"),h=a("./spec").spec,i=g(h),j=function(a){k(a)},k=function(a,b){b=b||"header";for(var c=a.buf;"done"!==b&&"error"!==b;)if(b in l&&"function"==typeof l[b])b=l[b](a);else{var d=i.parts[b].byteSize;if(c.abuf.byteLengthe){i=!0;break}if(h=d[g],g+=1,0===h){j+=1;break}if(g+h>e){i=!0;break}b.push(g+h),g+=h,j+=h+1}return i?(console.log("out of data"),!1):(c.cursor+=j,a.benchmark&&a.benchmark.stop("read-subblocks"),{start:f,blockEnds:b})};b.exports=j}()},{"./spec":13,"./palette":14,"./animate":15,"../../binaryspec":16}],13:[function(a,b,c){var d={33:"extension",44:"imageDesc",59:"trailer"};c.blockSigs=d;var e={249:"graphicControl",254:"comment",1:"plainText",255:"applicationExtension"};c.extSigs=e;var f={header:["str[3] signature","str[3] version"],screenDesc:["u16 w","u16 h","bit paletteExists","bit[3] resolution ignore","bit sortFlag ignore","bit[3] paletteSize","u8 bgColorIndex","u8 aspectRatio ignore"],imageDesc:["u8 sig ignore","u16 x","u16 y","u16 w","u16 h","bit paletteExists","bit interlaced","bit sortFlag","bit[2] reserved ignore","bit[3] paletteSize"],applicationExtension:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","str[8] identifier","str[3] authCode ignore"],graphicControl:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","bit[3] reserved ignore","bit[3] disposalMethod","bit userInput ignore","bit transparentColor","u16 delay","u8 transparentIndex","u8 blockTerminator ignore"],comment:["u8 sig ignore","u8 extSig ignore"],plainText:["u8 sig ignore","u8 extSig ignore","u8 blockSize","u16 textGridLeft","u16 textGridTop","u16 textGridWidth","u16 textGridHeight","u8 charCellWidth","u8 charCellHeight","u8 fgColorIndex","u8 bgColorIndex"],imageData:["u8 lzwCodeSize"]};c.spec=f},{}],14:[function(a,b){!function(){var c=a("../../color/rgba2css"),d=(a("../../create/2d"),a("../../create/imagedata")),e={};e.binary2rgba=function(a){for(var b=new Uint8Array(a.byteLength/3*4),c=0,d=0,e=a.byteLength/3*4;e>d;d+=4)b[d]=a[c],b[d+1]=a[c+1],b[d+2]=a[c+2],b[d+3]=255,c+=3;return b},e.create=function(a){var b={0:0},e=["rgba(0,0,0,0)"],f=[[0,0,0,0]],g=function(a){for(var d=0,g=a.length;g>d;d+=4){var h=a[d+3];if(0!==h){var i=a[d],j=a[d+1],k=a[d+2],l=(i|j<<8|k<<16|h<<24).toString();if(!(l in b)){b[l]=f.length;var m=[i,j,k,h];f.push(m),e.push(c(m))}}}};"palette"in a&&g(a.palette);for(var h=0;hk;k+=4){var n=f[k/4];m[k]=n[0],m[k+1]=n[1],m[k+2]=n[2],m[k+3]=n[3]}return{rgba2Index:b,index2Rgba:f,index2Css:e,imagedata:j,length:f.length}},b.exports=e}()},{"../../color/rgba2css":17,"../../create/2d":18,"../../create/imagedata":19}],17:[function(a,b){var c=function(a){return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};b.exports=c},{}],18:[function(a,b){var c=function(a,b){var c=document.createElement("canvas");return c.width=a||0,c.height=b||0,c.getContext("2d")};"undefined"!=typeof b&&(b.exports=c)},{}],19:[function(a,b){var c=function d(a,b){return d.ctx.createImageData(a,b)};c.ctx=document.createElement("canvas").getContext("2d"),"undefined"!=typeof b&&(b.exports=c)},{}],15:[function(a,b,c){var d=function(){var a=100;1===this.frames.length&&(this.currentFrame=function(){return 0});for(var b=0,c=[],d=0;d0?10*f.delay:a;b+=g,c.push(b)}this.currentFrame=e(c)},e=function(a){var b=a[a.length-1];return function(c){for(var d=(c||Date.now())%b,e=0;e1,m=b[j]*k;d.fields.push({name:g[1],type:j,ignore:h,bitSize:m,isArray:l}),e+=m}return d.bitSize=e,d.byteSize=e/8,d};e.proto.decodeBinaryFieldsToJSON=function(a,b,c){for(var e=this,f=e.parts[a],h={},i=f.fields.length,j=0,k=0;i>k;k++){var l=f.fields[k];if(!l.ignore){{var m=j%8,n=Math.floor((j-m)/8);n+Math.ceil(l.bitSize/8)}switch(l.type){case"u8":h[l.name]=c.u8[b+n];break;case"i8":h[l.name]=c.dv.getInt8(b+n);break;case"u16":h[l.name]=c.dv.getUint16(b+n,!0);break;case"i16":h[l.name]=c.dv.getInt16(b+n,!0);break;case"u32":h[l.name]=c.dv.getUint32(b+n,!0);break;case"i32":h[l.name]=c.dv.getInt32(b+n,!0);break;case"str":h[l.name]=g(c.abuf,b+n,l.bitSize>>3);break;case"bit":if(l.isArray){for(var o=new d(c.abuf,b+n),p=[],q=m;q>3],c=7&a;return b>>7-c&1},b.exports=c},{}],6:[function(a,b){var c=a("../../create/2d"),d=a("../../create/imagedata"),e=a("../../nexttick"),f=a("./decode-lzw"),g=function(a,b){b=b||{};var d=a.benchmark||!1,i=b.frameNum||0;if(0===i)for(var j=0;j=a.frames.length)return a.rendered=!0,void a.tube("rendered");var k=a.frames[i],l=a.buf.pixeldata;d&&d.start("decompress-lzw"),f(k.blockinfo,a.buf.u8,k.lzwCodeSize,k.w,k.h,l),d&&d.stop("decompress-lzw"),k.interlaced&&(d&&d.start("deinterlace"),l=m(l,k.w,k.h),d&&d.stop("deinterlace")),d&&d.start("pixeldata-to-canvas"),h(l,a,i),d&&d.stop("pixeldata-to-canvas");var n=g.bind(void 0,a,{frameNum:i+1});e(n)},h=function(a,b,c){var d=b.frames[c],e=d.ctx;if(0===c)return void e.putImageData(k(a,b,d),d.x,d.y,0,0,d.w,d.h);var f,g=c-1,h=b.frames[g],l=h.ctx.canvas;if((0===h.disposalMethod||1===h.disposalMethod)&&(f=i(b,c,a),e.drawImage(l,0,0),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)),2===h.disposalMethod&&(0===h.x&&0===h.y&&h.w===b.w&&h.h===b.h?e.putImageData(j(b,c,a),d.x,d.y,0,0,d.w,d.h):(h.y>0&&e.drawImage(l,0,0,b.w,h.y,0,0,b.w,h.y),h.x>0&&e.drawImage(l,0,h.y,h.x,h.h,0,h.y,h.x,h.h),h.x+h.w0&&3===b.frames[g].disposalMethod;)g-=1;h=b.frames[g],3!=h.disposalMethod&&e.drawImage(h.ctx.canvas,0,0),f=i(b,c,a),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)}},i=function(a,b,d){if(i.ctx&&i.ctx.canvas.width===a.w&&i.ctx.canvas.height===a.h)var e=i.ctx;else var e=i.ctx=c(a.w,a.h);var f=a.frames[b];d=d||f.pixelData;var g="palette"in f?f.palette:a.palette,h="transparentIndex"in f?f.transparentIndex:-1;h>-1&&(g[4*h+3]=0);var j=l(a,g,d,f.w,f.h,h);return e.putImageData(j,0,0,0,0,f.w,f.h),e},j=function(a,b,c){var d=a.frames[b];c=c||d.pixelData;var e="palette"in d?d.palette:a.palette,f="transparentIndex"in d?d.transparentIndex:-1;return f>-1&&(e[4*f+3]=0),l(a,e,c,d.w,d.h,f)},k=function(a,b,c){var d="palette"in c?c.palette:b.palette,e="transparentIndex"in c?c.transparentIndex:-1;return e>-1&&(d[4*e+3]=0),l(b,d,a,c.w,c.h,e)},l=function(a,b,c,e,f){if(l.imagedata&&l.imagedata.width===a.w&&l.imagedata.height===a.h)var g=l.imagedata;else var g=l.imagedata=d(a.w,a.h);for(var h=g.data,i=0,j=0;f>j;j++)for(var k=j*a.w,m=0;e>m;m++){var n=4*(m+k),o=4*c[i];h[n]=b[o],h[n+1]=b[o+1],h[n+2]=b[o+2],h[n+3]=b[o+3],i+=1}return g},m=function(a,b,c){for(var d=new Uint8Array(a.length),e=Math.ceil(c/8),f=Math.ceil(c/4),g=Math.ceil(c/2),h=0;c>h;h++){var i,j=b*h;i=h%8===0?b*(h/8):(h+4)%8===0?b*((h-4)/8+e):h%2===0?b*((h-2)/4+f):b*((h-1)/2+g);for(var k=0;b>k;k++)d[j+k]=a[i+k]}return d};b.exports=g},{"../../create/2d":18,"../../create/imagedata":19,"../../nexttick":11,"./decode-lzw":21}],21:[function(a,b){var c=function(a,b,c,d,e,f,g){var h,i,j,k=4096,l=-1,m=d*e,n=0,o=0,p=0,f=f||new Uint8Array(m),q=new Uint16Array(2*k),r=new Uint8Array(k),s=new Uint8Array(k+1),t=1<h;h++)q[h]=0,r[h]=h;for(var y=0,z=0,A=a.start,B=a.blockEnds,C=B.shift(),D=0;m>D;){if(0===o){if(w>y){z+=b[A]<>=w,y-=w,h>v&&console.log(":("),h===u){console.log("fuck");break}if(h===t){w=c+1,x=(1<t;)s[o++]=r[h],h=q[h];n=r[h],s[o++]=n,q[v]=j,r[v]=n,v++,0===(v&x)&&k>v&&(w++,x+=v),j=i}o--,f[p++]=g?g[s[o]]:s[o],D++}return f};b.exports=c},{}]},{},[1]);var nextTick=function(){if(window.ActiveXObject||!window.postMessage)var a=function(a){setTimeout(a,0)};else{var b=[],c="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==c&&(a.stopPropagation&&a.stopPropagation(),b.length&&b.shift()())},!0);var a=function(a){b.push(a),window.postMessage(c,"*")}}return a}(),Uid=function(){var a=0;return function(){return a++ +""}}(),tokenize=function(){var a=function(b,c){return b.trim().split(c||a.default)};return a.default=/\s+/g,a}(),globber=function(a,b){var c,d=a[0],e=a.slice(1),f=b.length;if("*"===d){for(var g=0;f>=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1],arguments[2]||{}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0,workerURL=URL.createObjectURL(new Blob(["(",function(){function a(a){var c=a.imageData,d=b(c.data),e=new NeuQuant(d,d.length,1),f=e.process();self.postMessage({task:"quantize",neuquant:e.save(),colortab:f})}function b(a){for(var b=[],c=0,d=0,e=a.length;e>c;d+=4)b[c++]=a[d],b[c++]=a[d+1],b[c++]=a[d+2];return b}function c(a){var b=a.frame_index,c=a.frame_length,d=a.height,e=a.width,f=a.imageData,g=a.delay,h=a.neuquant,i=a.colortab,j=new GIFEncoder;j.setRepeat(0),j.setQuality(1),j.setSize(e,d),j.setDelay(g),0==b?j.start():(j.cont(),j.setProperties(!0,!1)),j.setNeuquant(h,i),j.addFrame(f,!0),c==b&&j.finish(),self.postMessage({task:"encode",frame_index:b,frame_data:j.stream().getData()}),delete j,delete a}GIFEncoder=function(){function a(){this.bin=[]}for(var b=0,c={};256>b;b++)c[b]=String.fromCharCode(b);a.prototype.getData=function(){for(var a="",b=this.bin.length,d=0;b>d;d++)a+=c[this.bin[d]];return a},a.prototype.writeByte=function(a){this.bin.push(a)},a.prototype.writeUTFBytes=function(a){for(var b=a.length,c=0;b>c;c++)this.writeByte(a.charCodeAt(c))},a.prototype.writeBytes=function(a,b,c){for(var d=c||a.length,e=b||0;d>e;e++)this.writeByte(a[e])};var d,e,f,g,h,i,j,k,l,m={},n=null,o=-1,p=0,q=!1,r=new Array,s=7,t=-1,u=!1,v=!0,w=!1,x=1,y=null,z=(m.setDelay=function(a){p=Math.round(a/10)},m.setDispose=function(a){a>=0&&(t=a)},m.setRepeat=function(a){a>=0&&(o=a)},m.setTransparent=function(a){n=a},m.addFrame=function(a,b){if(null==a||!q||null==g)throw new Error("Please call start method before calling addFrame");var c=!0;try{b?h=a:(h=a.getImageData(0,0,a.canvas.width,a.canvas.height).data,w||A(a.canvas.width,a.canvas.height)),D(),B(),v&&(G(),I(),o>=0&&H()),E(),F(),v||I(),K(),v=!1}catch(d){c=!1}return c},m.finish=function(){if(!q)return!1;var a=!0;q=!1;try{g.writeByte(59)}catch(b){a=!1}return a},function(){f=0,h=null,i=null,j=null,l=null,u=!1,v=!0}),A=(m.setFrameRate=function(a){15!=a&&(p=Math.round(100/a))},m.setQuality=function(a){x=Math.max(1,a)},m.setSize=function(a,b){(!q||v)&&(d=a,e=b,1>d&&(d=320),1>e&&(e=240),w=!0)}),B=(m.setNeuquant=function(a,b){y=a,l=b},m.start=function(){z();var b=!0;u=!1,g=new a;try{g.writeUTFBytes("GIF89a")}catch(c){b=!1}return q=b},m.cont=function(){z();var b=!0;return u=!1,g=new a,q=b},function(){var a=i.length,b=a/3;j=[];var c;y&&l?(c=new NeuQuant,c.load(y)):(c=new NeuQuant(i,a,x),l=c.process());for(var d=0,e=0;b>e;e++){var g=c.map(255&i[d++],255&i[d++],255&i[d++]);r[g]=!0,j[e]=g}i=null,k=8,s=7,null!=n&&(f=C(n))}),C=function(a){if(null==l)return-1;for(var b=(16711680&a)>>16,c=(65280&a)>>8,d=255&a,e=0,f=16777216,g=l.length,h=0;g>h;){var i=b-(255&l[h++]),j=c-(255&l[h++]),k=d-(255&l[h]),m=i*i+j*j+k*k,n=h/3;r[n]&&f>m&&(f=m,e=n),h++}return e},D=function(){var a=d,b=e;i=[];for(var c=h,f=0,g=0;b>g;g++)for(var j=0;a>j;j++){var k=g*a*4+4*j;i[f++]=c[k],i[f++]=c[k+1],i[f++]=c[k+2]}},E=function(){g.writeByte(33),g.writeByte(249),g.writeByte(4);var a,b;null==n?(a=0,b=0):(a=1,b=2),t>=0&&(b=7&t),b<<=2,g.writeByte(0|b|0|a),J(p),g.writeByte(f),g.writeByte(0)},F=function(){g.writeByte(44),J(0),J(0),J(d),J(e),g.writeByte(v?0:128|s)},G=function(){J(d),J(e),g.writeByte(240|s),g.writeByte(0),g.writeByte(0) },H=function(){g.writeByte(33),g.writeByte(255),g.writeByte(11),g.writeUTFBytes("NETSCAPE2.0"),g.writeByte(3),g.writeByte(1),J(o),g.writeByte(0)},I=function(){g.writeBytes(l);for(var a=768-l.length,b=0;a>b;b++)g.writeByte(0)},J=function(a){g.writeByte(255&a),g.writeByte(a>>8&255)},K=function(){var a=new LZWEncoder(d,e,j,k);a.encode(g)};return m.stream=function(){return g},m.setProperties=function(a,b){q=a,v=b},m},LZWEncoder=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m={},n=-1,o=12,p=5003,q=o,r=1<=254&&G(b)},D=function(a){E(u),v=j+2,w=!0,J(j,a)},E=function(a){for(var b=0;a>b;++b)s[b]=-1},F=m.compress=function(a,b){var c,d,e,f,m,o,p;for(i=a,w=!1,g=i,h=H(g),j=1<c;c*=2)++p;p=8-p,o=u,E(o),J(j,b);a:for(;(e=I())!=n;)if(c=(e<=0){m=o-d,0==d&&(m=1);do if((d-=m)<0&&(d+=o),s[d]==c){f=t[d];continue a}while(s[d]>=0)}J(f,b),f=e,r>v?(t[d]=v++,s[d]=c):D(b)}else f=t[d];J(f,b),J(k,b)},G=(m.encode=function(c){c.writeByte(d),e=a*b,f=0,F(d+1,c),c.writeByte(0)},function(a){l>0&&(a.writeByte(l),a.writeBytes(A,0,l),l=0)}),H=function(a){return(1<0?x|=a<=8;)C(255&x,b),x>>=8,y-=8;if((v>h||w)&&(w?(h=H(g=i),w=!1):(++g,h=g==q?r:H(g))),a==k){for(;y>0;)C(255&x,b),x>>=8,y-=8;G(b)}};return B.apply(this,arguments),m},NeuQuant=function(){var a,b,c,d,e,f={},g=128,h=499,i=491,j=487,k=503,l=3*k,m=g-1,n=4,o=100,p=16,q=1<>s,u=q<>3,w=6,x=1<i;i++)e[i]=new Array(4),j=e[i],j[0]=j[1]=j[2]=(i<c;c++)b[e[c][3]]=c;for(var d=0,f=0;g>f;f++){var h=b[f];a[d++]=e[h][0],a[d++]=e[h][1],a[d++]=e[h][2]}return a},M=function(){var a,b,c,d,f,h,i,j;for(i=0,j=0,a=0;g>a;a++){for(f=e[a],c=a,d=f[1],b=a+1;g>b;b++)h=e[b],h[1]>1,b=i+1;d>b;b++)G[b]=a;i=d,j=a}}for(G[i]=j+m>>1,b=i+1;256>b;b++)G[b]=m},N=function(){var e,f,g,m,p,q,r,s,t,u,v,x,A,C;for(l>c&&(d=1),a=30+(d-1)/3,x=b,A=0,C=c,v=c/(3*d),u=v/o,s=B,q=y,r=q>>w,1>=r&&(r=0),e=0;r>e;e++)J[e]=s*((r*r-e*e)*D/(r*r));for(t=l>c?3:c%h!=0?3*h:c%i!=0?3*i:c%j!=0?3*j:3*k,e=0;v>e;)if(g=(255&x[A+0])<=C&&(A-=c),e++,0==u&&(u=1),e%u==0)for(s-=s/a,q-=q/z,r=q>>w,1>=r&&(r=0),f=0;r>f;f++)J[f]=s*((r*r-f*f)*D/(r*r))},O=(f.save=function(){var a={netindex:G,netsize:g,network:e};return a},f.load=function(a){G=a.netindex,g=a.netsize,e=a.network},f.map=function(a,b,c){var d,f,h,i,j,k,l;for(j=1e3,l=-1,d=G[b],f=d-1;g>d||f>=0;)g>d&&(k=e[d],h=k[1]-b,h>=j?d=g:(d++,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3])))),f>=0&&(k=e[f],h=b-k[1],h>=j?f=-1:(f--,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3]))));return l},f.process=function(){return N(),O(),M(),L()},function(){var a;for(a=0;g>a;a++)e[a][0]>>=n,e[a][1]>>=n,e[a][2]>>=n,e[a][3]=a}),P=function(a,b,c,d,f){var h,i,j,k,l,m,n;for(j=b-a,-1>j&&(j=-1),k=b+a,k>g&&(k=g),h=b+1,i=b-1,m=1;k>h||i>j;){if(l=J[m++],k>h){n=e[h++];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}if(i>j){n=e[i--];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}}},Q=function(a,b,c,d,f){var g=e[b];g[0]-=a*(g[0]-c)/B,g[1]-=a*(g[1]-d)/B,g[2]-=a*(g[2]-f)/B},R=function(a,b,c){var d,f,h,i,j,k,l,m,o,q;for(m=~(1<<31),o=m,k=-1,l=k,d=0;g>d;d++)q=e[d],f=q[0]-a,0>f&&(f=-f),h=q[1]-b,0>h&&(h=-h),f+=h,h=q[2]-c,0>h&&(h=-h),f+=h,m>f&&(m=f,k=d),i=f-(H[d]>>p-n),o>i&&(o=i,l=d),j=I[d]>>s,I[d]-=j,H[d]+=j<0&&b-1 in a)}function d(a){var b=ob[a]={};return fb.each(a.match(hb)||[],function(a,c){b[c]=!0}),b}function e(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=fb.expando+Math.random()}function f(a,c,d){var e;if(d===b&&1===a.nodeType)if(e="data-"+c.replace(sb,"-$1").toLowerCase(),d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:rb.test(d)?JSON.parse(d):d}catch(f){}pb.set(a,c,d)}else d=b;return d}function g(){return!0}function h(){return!1}function i(){try{return T.activeElement}catch(a){}}function j(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function k(a,b,c){if(fb.isFunction(b))return fb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(Cb.test(b))return fb.filter(b,a,c);b=fb.filter(b,a)}return fb.grep(a,function(a){return bb.call(b,a)>=0!==c})}function l(a,b){return fb.nodeName(a,"table")&&fb.nodeName(1===b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function m(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function n(a){var b=Nb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function o(a,b){for(var c=a.length,d=0;c>d;d++)qb.set(a[d],"globalEval",!b||qb.get(b[d],"globalEval"))}function p(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(qb.hasData(a)&&(f=qb.access(a),g=qb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)fb.event.add(b,e,j[e][c])}pb.hasData(a)&&(h=pb.access(a),i=fb.extend({},h),pb.set(b,i))}}function q(a,c){var d=a.getElementsByTagName?a.getElementsByTagName(c||"*"):a.querySelectorAll?a.querySelectorAll(c||"*"):[];return c===b||c&&fb.nodeName(a,c)?fb.merge([a],d):d}function r(a,b){var c=b.nodeName.toLowerCase();"input"===c&&Kb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function s(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=_b.length;e--;)if(b=_b[e]+c,b in a)return b;return d}function t(a,b){return a=b||a,"none"===fb.css(a,"display")||!fb.contains(a.ownerDocument,a)}function u(b){return a.getComputedStyle(b,null)}function v(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=qb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&t(d)&&(f[g]=qb.access(d,"olddisplay",z(d.nodeName)))):f[g]||(e=t(d),(c&&"none"!==c||!e)&&qb.set(d,"olddisplay",e?c:fb.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function w(a,b,c){var d=Ub.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function x(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=fb.css(a,c+$b[f],!0,e)),d?("content"===c&&(g-=fb.css(a,"padding"+$b[f],!0,e)),"margin"!==c&&(g-=fb.css(a,"border"+$b[f]+"Width",!0,e))):(g+=fb.css(a,"padding"+$b[f],!0,e),"padding"!==c&&(g+=fb.css(a,"border"+$b[f]+"Width",!0,e)));return g}function y(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=u(a),g=fb.support.boxSizing&&"border-box"===fb.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Qb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Vb.test(e))return e;d=g&&(fb.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+x(a,b,c||(g?"border":"content"),d,f)+"px"}function z(a){var b=T,c=Xb[a];return c||(c=A(a,b),"none"!==c&&c||(Rb=(Rb||fb("
-
+
diff --git a/shader-picker.html b/shader-picker.html index 7efe39f..8bafc60 100644 --- a/shader-picker.html +++ b/shader-picker.html @@ -21,10 +21,10 @@ div { display: inline-block; padding: 10px;} #rendered img { display: block; } #render,#save { font-weight: bold; } #render { float: right; } -#instructions { position: absolute;top:20px;right:20px; width:190px;height:465px; box-shadow:5px 5px 10px rgba(0,0,0,0.3); background:rgba(255,255,255,0.8); display: none; cursor: -webkit-grab; } -#instructions iframe {width: 100%;height:100%;margin:0;padding:0;border:0;} -#instructions.dragging iframe { pointer-events: none; } -#instructions .close { position: absolute; top: 5px; right: 5px; color: #f00; padding: 3px; border: 0;background: white; font-size: 10px; line-height: 10px; } +#commands { position: absolute;top:20px;right:20px; width:190px;height:465px; box-shadow:5px 5px 10px rgba(0,0,0,0.3); background:rgba(255,255,255,0.8); display: none; cursor: -webkit-grab; } +#commands iframe {width: 100%;height:100%;margin:0;padding:0;border:0;} +#commands.dragging iframe { pointer-events: none; } +#commands .close { position: absolute; top: 5px; right: 5px; color: #f00; padding: 3px; border: 0;background: white; font-size: 10px; line-height: 10px; } .close,.remove { cursor: pointer; } #uploaded-url { display: none; width: 300px; } form { display: inline-block; } @@ -79,7 +79,7 @@ a { color: #00f; } your name here →

- +   @@ -103,7 +103,7 @@ a { color: #00f; }
-
+
diff --git a/tutorial.html b/tutorial.html index 84d4ca0..be42f74 100644 --- a/tutorial.html +++ b/tutorial.html @@ -18,7 +18,7 @@ Your basic variables are position (x, y), time (t), and color (r, g, b, a). Many math functions such as cos and sqrt are available, along with functions from GLSL like step and mix. Click commands to see a complete list. -Use the bar below to search Dumpfm and Photoblaster for images. +Use the bar below to search Dumpfm and Photoblaster for images, or use your own. If you make a cool effect, you can render it out to a gif, or save the shader for others to use. -- cgit v1.2.3-70-g09d2 From ff36ed287ec8747fe25e429bc5fa11961274bbd3 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 2 Feb 2014 02:25:07 -0500 Subject: add examples from json --- Gruntfile.js | 1 + js/api/gallery.js | 7 ++++--- js/api/localstorage.js | 2 +- js/help.js | 22 ++++++++++++++++++++++ shader-combo.html | 21 +-------------------- shaders.json | 2 +- 6 files changed, 30 insertions(+), 25 deletions(-) (limited to 'js') diff --git a/Gruntfile.js b/Gruntfile.js index 95df856..42d25c3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -43,6 +43,7 @@ module.exports = function(grunt) { "js/api/gallery.js", "js/api/get.js", "js/api/set.js", + "shaders.json", "dist/app.init.js", ], dest: 'dist/app.concat.js', diff --git a/js/api/gallery.js b/js/api/gallery.js index c83d5f6..0e6614b 100644 --- a/js/api/gallery.js +++ b/js/api/gallery.js @@ -39,14 +39,15 @@ shader_gallery.bind = function(){ }) } -function new_shader(){ +function new_shader(opt){ + opt = opt || {} shader_id_root = null run_shader({ id: "", shader_id: "", image_url: $("#url").val(), - script: "", - name: "" + script: opt.shader || "", + name: opt.name || "" }) } function run_shader(shader_object){ diff --git a/js/api/localstorage.js b/js/api/localstorage.js index eeae658..309d49d 100644 --- a/js/api/localstorage.js +++ b/js/api/localstorage.js @@ -5,7 +5,7 @@ local_shaders.init = function(){ } local_shaders.bind = function(){ local_shaders.buttons = {} - if ('SHADERS' in window) { + if ('EXAMPLE_SHADERS' in window) { local_shaders.bindButtons( window.SHADERS ) } local_shaders.bindButtons( local_shaders.getShaders() ) diff --git a/js/help.js b/js/help.js index 7bc3a6b..db0ac6d 100644 --- a/js/help.js +++ b/js/help.js @@ -16,6 +16,28 @@ help.bind = function(){ stop: drag_stop }) $("#commands,#tutorial").disableSelection(); + + $("#examples").change(function(){ + help.load_example($(this).val()) + $("#toggle-images").trigger("click") + }) + + if ('EXAMPLE_SHADERS' in window) { + help.examples = {} + window.EXAMPLE_SHADERS.forEach(function(s){ + help.examples[ s.name ] = s.shader + var $option = $("") + $("#examples").append($option) + }) + } +} + +help.examples = {} + +help.load_example = function(name){ + var s = help.examples[name] + $("#shader").html(s) + new_shader({ name: name, shader: s }) } function drag_start(){ dragging = true; $(this).addClass("dragging") } diff --git a/shader-combo.html b/shader-combo.html index 312f52f..399d2e7 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -179,6 +179,7 @@ a { color: #00f; } + - - - diff --git a/shaders.json b/shaders.json index 0653237..c44bc7e 100644 --- a/shaders.json +++ b/shaders.json @@ -1 +1 @@ -window.SHADERS = [{"name":"red","shader":"r = 255"},{"name":"demo","shader":"\n\nu = x + t/10\nv = y * sin(b/100)\n\nrgbpixel(d,u,v)\n\n"},{"name":"dither","shader":"\nxx = x, yy = y\n\nvar d = ((x % 2) + 2 * (y % 2)) - 2\n\nx += w/2\ny -= h/2\nt/=-200\ny/=96\nx/=50\nv = (sin(t+x*y) + 1.0) / 2\nv = (0.6) * v - 0.4 + random()\n\nv = clamp( v*64 + 128 , 0, 255)\nv += d*32\nif (a == 0) r = g = b = xx/w * 255\na = v > 128 ? v:0\n\n"},{"name":"rotozoom","shader":"u = (x * sin(t/10000)) - (y / cos(t/1000))\nv = (x / cos(t/1000)) + (y * sin(t/10000))\nrgbpixel(d,u,v)"},{"name":"donjuan","shader":"t /= 500\nif (a == 0) { r = g = b = 0; t /= -3 }\nr *= (sin(t*x/y) + 1)/2\ng *= (cos(t*y/x) + 0.4)/2\nb *= (sin(t) + 1.5)/2\na = b/9"},{"name":"barber","shader":"t/=10\noo = (y+x+t) % 100\nr *= 1/sin(oo/100)\ng *= 1/sin(oo/100)\nb *= 1/sin(oo/100)"},{"name":"redsmear","shader":"r = x\nz = 10\nr += random()*z\ng += random()*z\nb += random()*z"},{"name":"colorcycle","shader":"\nt /= 5000\nr = hsl2rgb( b/255 + t%2-1, 1.0, 0.5)[0]\n"},{"name":"tvfuzz","shader":"t /= 500\nif (a == 0) { r = g = b = x; t /= -3 }\nvar waveWidth = ((cos(t)/sin(t) - 0.5) * 100) /4\n\nlineSize = 5.0\nvar color = sin(t)*100;\nr -= color * abs(sin((x - (t * 50.0) - (sin(t * 0.2) * 60.0)) * 0.2))\ng -= color * abs(sin(((x + (2.0 * 3.14)) - (t * 50.0) - (sin(t * 0.4) * 60.0)) * 0.2))\nb -= color * abs( sin( ( x - (2.0 * 3.14) - (t * 50.0) - (sin(t * 1.0) * 60.0)) * 0.2 ) );\nif(r&g&b){a = abs(sin(y)*1000)+t}else{a=1000}\n//if(r&g&b){a = abs(sin(y)*1000)-t}else{a=1000}"},{"name":"pepper","shader":"t/=6000000\npx = x/100 - 1\npy = y/(100) -1\nsx = 0.8 * px -py * sin( abs(sin(x/abs(sin(t)))) * px - 5000. * t);\ndy = 1./ (abs(py - sx) );\ndy += (py - (px))*50;\nr += (px + 0.5) * dy \ng = abs(sin(t))*0.9 * dy \nb = dy\na =1000"}] +window.EXAMPLE_SHADERS = [{"name":"red","shader":"r = 255"},{"name":"demo","shader":"\n\nu = x + t/10\nv = y * sin(b/100)\n\nrgbpixel(d,u,v)\n\n"},{"name":"dither","shader":"\nxx = x, yy = y\n\nvar d = ((x % 2) + 2 * (y % 2)) - 2\n\nx += w/2\ny -= h/2\nt/=-200\ny/=96\nx/=50\nv = (sin(t+x*y) + 1.0) / 2\nv = (0.6) * v - 0.4 + random()\n\nv = clamp( v*64 + 128 , 0, 255)\nv += d*32\nif (a == 0) r = g = b = xx/w * 255\na = v > 128 ? v:0\n\n"},{"name":"rotozoom","shader":"u = (x * sin(t/10000)) - (y / cos(t/1000))\nv = (x / cos(t/1000)) + (y * sin(t/10000))\nrgbpixel(d,u,v)"},{"name":"donjuan","shader":"t /= 500\nif (a == 0) { r = g = b = 0; t /= -3 }\nr *= (sin(t*x/y) + 1)/2\ng *= (cos(t*y/x) + 0.4)/2\nb *= (sin(t) + 1.5)/2\na = b/9"},{"name":"barber","shader":"t/=10\noo = (y+x+t) % 100\nr *= 1/sin(oo/100)\ng *= 1/sin(oo/100)\nb *= 1/sin(oo/100)"},{"name":"redsmear","shader":"r = x\nz = 10\nr += random()*z\ng += random()*z\nb += random()*z"},{"name":"colorcycle","shader":"\nt /= 5000\nr = hsl2rgb( b/255 + t%2-1, 1.0, 0.5)[0]\n"},{"name":"tvfuzz","shader":"t /= 500\nif (a == 0) { r = g = b = x; t /= -3 }\nvar waveWidth = ((cos(t)/sin(t) - 0.5) * 100) /4\n\nlineSize = 5.0\nvar color = sin(t)*100;\nr -= color * abs(sin((x - (t * 50.0) - (sin(t * 0.2) * 60.0)) * 0.2))\ng -= color * abs(sin(((x + (2.0 * 3.14)) - (t * 50.0) - (sin(t * 0.4) * 60.0)) * 0.2))\nb -= color * abs( sin( ( x - (2.0 * 3.14) - (t * 50.0) - (sin(t * 1.0) * 60.0)) * 0.2 ) );\nif(r&g&b){a = abs(sin(y)*1000)+t}else{a=1000}\n//if(r&g&b){a = abs(sin(y)*1000)-t}else{a=1000}"},{"name":"pepper","shader":"t/=6000000\npx = x/100 - 1\npy = y/(100) -1\nsx = 0.8 * px -py * sin( abs(sin(x/abs(sin(t)))) * px - 5000. * t);\ndy = 1./ (abs(py - sx) );\ndy += (py - (px))*50;\nr += (px + 0.5) * dy \ng = abs(sin(t))*0.9 * dy \nb = dy\na =1000"}] -- cgit v1.2.3-70-g09d2 From eef34f5138f013d363f1b391feb0dc58c2c7110d Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 2 Feb 2014 02:35:54 -0500 Subject: blaster links, move logo again --- js/api/get.js | 2 +- shader-combo.html | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'js') diff --git a/js/api/get.js b/js/api/get.js index ae06dbd..742d41f 100644 --- a/js/api/get.js +++ b/js/api/get.js @@ -1,5 +1,5 @@ ;var ShaderAPI = {} -ShaderAPI.limit = 24 +ShaderAPI.limit = 50 // info - fetch a single shader // id: shader id diff --git a/shader-combo.html b/shader-combo.html index 399d2e7..60dc72a 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -57,13 +57,13 @@ a { color: #00f; } #logo { display: inline; position: relative; top: 2px; font-size: 18px; font-family: georgia; font-weight: bold; font-style: italic; margin: 0px; color: #243; } #corner { position: fixed; top: -5px; right: 0px; } +.right { position: absolute; right: 0; }
-

shaderblaster