summaryrefslogtreecommitdiff
path: root/js/frames.js
diff options
context:
space:
mode:
authorjules <jules@okfoc.us>2015-02-23 14:06:21 -0500
committerjules <jules@okfoc.us>2015-02-23 14:06:21 -0500
commitf7fe15700ae7403a37554e13a18ac7652ec0763a (patch)
tree44c3fbf8f29fbb288e955acc8688e864902ed66a /js/frames.js
parent1631cdf643283fc71bc9d70b5dcbce03ab9c2386 (diff)
export webm
Diffstat (limited to 'js/frames.js')
-rw-r--r--js/frames.js56
1 files changed, 45 insertions, 11 deletions
diff --git a/js/frames.js b/js/frames.js
index 163e899..dd8759c 100644
--- a/js/frames.js
+++ b/js/frames.js
@@ -1,9 +1,10 @@
var frame_thumb_size = 93
var frame_editor = {}
+var lastGif, lastWebm
frame_editor.init = function(){
- frame_editor.bind()
+ frame_editor.bind()
}
frame_editor.bind = function(){
@@ -28,16 +29,18 @@ frame_editor.bind = function(){
$("#sort-frames").click(sort_frames)
$("#render").click(render)
+ $("#render-webm").click(render_webm)
$("#save").click(save)
$("#upload").click(upload)
- $("#background").change(function(){
- document.body.style.backgroundColor = $("#background").string()
- })
+ $("#background").change(function(){
+ document.body.style.backgroundColor = $("#background").string()
+ })
}
function add_frame(){
- $("#render").enable()
+ $("#render").enable()
+ $("#render-webm").enable()
var frame_count = $("#framecount").int()
if (frame_count < 2) {
add_single_frame()
@@ -99,7 +102,7 @@ function sort_frames(){
function render (){
if (rendering) return
if ($("#frames canvas.fullsize").length == 0) {
- add_frame()
+ add_frame()
}
rendering = true
@@ -109,7 +112,7 @@ function render (){
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()
+ $("#pause,#render,#render-webm,#add-frame").disable()
$("#workspace").find("img").remove()
$("#rendered").show()
// really bad results with neuquant?
@@ -119,7 +122,7 @@ function render (){
try {
encoder.encode()
} catch (e) {
- $("#pause,#render,#add-frame").enable()
+ $("#pause,#render,#render-webm,#add-frame").enable()
rendering = false
status(e)
throw e
@@ -127,6 +130,36 @@ function render (){
$("#render").html("rendering")
}
+function render_webm (){
+ if (rendering) return
+ if ($("#frames canvas.fullsize").length == 0) {
+ add_frame()
+ }
+ rendering = true
+ var $frames = $("#frames canvas.fullsize")
+ var webm_encoder = new Whammy.Video($frames.length)
+ $frames.each(function(){
+ var frame = cq(this.width, this.height).fillStyle($("#background").string()).fillRect(0,0,this.width, this.height).drawImage(this,0,0)
+ webm_encoder.add(frame.canvas)
+ })
+ lastGif = null
+ var output = lastWebm = webm_encoder.compile();
+ var video = document.createElement("video")
+ video.src = (window.webkitURL || window.URL).createObjectURL(output);
+ video.setAttribute("loop", true)
+ video.setAttribute("autoplay", true)
+ video.play()
+ $("#workspace canvas").hide()
+ $("#workspace").append(video)
+ $("#uploaded-url").hide().val("")
+ $("#uploaded-url + br").hide()
+ $("#save,#upload,#rendered").show()
+ $("#pause,#render,#render-webm,#add-frame,#save,#upload").enable()
+ $("#render").html("render gif")
+ rendering = false
+ pause(true)
+}
+
var encoder = new GifEncoder()
encoder.on("quantized", function(url){
@@ -145,12 +178,13 @@ encoder.on("rendered", function(bytes){
encoder.on("rendered-url", function(url){
var image = new Image ()
lastGif = image.src = url
- $("#workspace canvas").hide()
+ lastWebm = null
+ $("#workspace canvas").hide()
$("#workspace").append(image)
$("#uploaded-url").hide().val("")
- $("#uploaded-url + br").hide()
+ $("#uploaded-url + br").hide()
$("#save,#upload,#rendered").show()
- $("#pause,#render,#add-frame,#save,#upload").enable()
+ $("#pause,#render,#render-webm,#add-frame,#save,#upload").enable()
$("#render").html("render gif")
rendering = false
pause(true)