summaryrefslogtreecommitdiff
path: root/shader-gif.html
diff options
context:
space:
mode:
authorjules <jules@okfoc.us>2013-12-16 16:44:31 -0500
committerjules <jules@okfoc.us>2013-12-16 16:44:31 -0500
commitb3807b435f3ed01f159fb0f6c53956962b964d13 (patch)
tree13b4bcb8117a91a04602c5103d71323c35394711 /shader-gif.html
parent647e85694a9ab1ef8ef9f0ad321710c064cf74fd (diff)
ui reorg, remove all frames, handle alpha w/ bgcolor
Diffstat (limited to 'shader-gif.html')
-rw-r--r--shader-gif.html84
1 files changed, 59 insertions, 25 deletions
diff --git a/shader-gif.html b/shader-gif.html
index 45069bd..8d8d63b 100644
--- a/shader-gif.html
+++ b/shader-gif.html
@@ -2,42 +2,63 @@
<head>
<title>Shader</title>
<style type="text/css">
-#url { width: 100px; }
-#width,#height,#framecount,#delay {width: 30px; }
+#url { width: 450px; }
+#width,#height,#framecount,#framedelay,#frameinterval,#background { width: 30px; }
#shader { width: 100%; height: 247px; font-family: fixed; }
-#frames { width: 450px; height: 100px; }
+#frames { width: 435px; min-height: 100px; border: 1px solid #ddd; line-height: 0; }
#controls { width: 450px; }
-#frames div { padding: 1px; position: relative; }
+#frames div { margin: 1px; padding: 0; position: relative; border: 1px solid #eee; }
+#frames canvas { display: block }
#frames .remove { position: absolute; top: 5px; right: 5px; color: #f00; padding: 3px; border: 0;background: white; font-size: 10px; line-height: 10px; }
.paused { background: black; color: white; border-width: 1px; padding: 2px 7px; }
.paused { outline: 0 !important; }
div { display: inline-block; padding: 10px;}
-#controls,#workspace,#rendered{float: left;}
+#controls,#workspace,#rendered{ float: left; }
#rendered { display: none; }
+#render,#save { font-weight: bold; }
</style>
</head>
<body>
+
<div id="controls">
-<input type="text" id="url" value="img/1376516658960-dumpfm-DoritoWitch-TimeFLyTrans0001.png">
-frames <input type="text" id="framecount" value="1">
-delay <input type="text" id="delay" value="0.1s">
-<button id="reset">reset</button>
-<button id="pause">pause</button>
-<button id="add-frame">+frame</button>
-<button id="render" disabled>render</button>
-<button id="demo">demo</button>
-<button id="dither-demo">dither</button>
-<br>
-<br>
-<textarea id="shader"></textarea>
-<div id="frames"></div>
+
+ frame delay <input type="text" id="framedelay" value="0.1s">
+ background <input type="text" id="background" value="#fff">
+ <button id="reset">reset</button>
+ <button id="pause">pause</button>
+ <button id="render" disabled>render</button>
+ <br>
+ <input type="text" id="url" value="img/1376516658960-dumpfm-DoritoWitch-TimeFLyTrans0001.png">
+ <br>
+ <br>
+
+ <textarea id="shader"></textarea>
+ <br>
+ <br>
+
+ frames <input type="text" id="framecount" value="1">
+ interval <input type="text" id="frameinterval" value="0.1s">
+ <button id="add-frame">+add frame</button>
+ <button id="remove-all-frames">remove all</button>
+ <br>
+
+ <div id="frames"></div>
+ <br>
+ <br>
+
+ <button id="demo">demo</button>
+ <button id="dither-demo">dither</button>
+ <br>
</div>
+
<div id="workspace"></div>
+
<div id="rendered">
-<span id="status"></span>
-<button id="save" disabled>save</button>
-<br>
+ <span id="status"></span>
+ <button id="save" disabled>save</button>
+ <br>
</div>
+
</body>
<script type="text/javascript" src="js/vendor/gif-encode/util.js"></script>
<script type="text/javascript" src="js/vendor/gif-encode/tube.js"></script>
@@ -78,7 +99,17 @@ function init(){
mousey = event.pageY
})
$(document).on("click","#frames .remove",remove_frame)
+ $("#framecount").change(function(){
+ var val = $(this).int()
+ if (val < 1 || isNaN(val)) $(this).val(val = 1)
+ if (val == 1) $("#add-frame").html("+add frame")
+ else $("#add-frame").html("+add frames")
+ })
+ $("#background").change(function(){
+ document.body.style.backgroundColor = $("#background").string()
+ })
$("#frames").disableSelection();
+ $("#remove-all-frames").click(remove_all_frames)
$("#render").click(render)
$("#save").click(save)
demo('#first')
@@ -100,7 +131,6 @@ function reset(){
start_t = old_t
pause_t = 0
$("#rendered").hide()
- $("#frames").empty()
}
function pause(state){
$("#pause").toggleClass("paused", paused = typeof state == "boolean" ? state : ! paused)
@@ -185,7 +215,7 @@ function add_single_frame(){
function add_frames(frame_count){
rendering = true
var t = old_t - start_t - pause_t
- var frame_delay = $("#delay").float() * 1000
+ var frame_delay = $("#frameinterval").float() * 1000
for (var i = 0; i < frame_count; i++) {
t += frame_delay
shade(frame, t)
@@ -199,14 +229,18 @@ function remove_frame(){
$("#render").disable()
}
}
+function remove_all_frames(){
+ $("#frames").empty()
+}
function render (){
if (rendering) return
rendering = true
encoder.reset()
- var delay = $("#delay").float() * 1000 || 100
+ var delay = $("#framedelay").float() * 1000 || 100
$("#frames canvas.fullsize").each(function(){
- encoder.addFrame(this, delay)
+ var frame = cq(this.width, this.height).fillStyle($("#background").string()).fillRect(0,0,this.width, this.height).drawImage(this,0,0)
+ encoder.addFrame(frame.canvas, delay)
})
$("#pause,#render,#add-frame").disable()
$("#rendered").find("img").remove()