From ba837a229a566ca58569ce2b82cd6a986ef75964 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 5 Jan 2014 22:42:47 -0500 Subject: load shaders from json --- js/user.js | 58 ++++++++++++++++++++++++++++++++---------------------- shader-picker.html | 39 +++++++++++++++++++++++++----------- shaders.json | 1 + 3 files changed, 64 insertions(+), 34 deletions(-) create mode 100644 shaders.json diff --git a/js/user.js b/js/user.js index 11b46df..39beaaa 100644 --- a/js/user.js +++ b/js/user.js @@ -44,36 +44,53 @@ user.shaders.init = function(){ user.shaders.bind() } user.shaders.bind = function(){ - var shaders = user.shaders.getShaders() user.shaders.buttons = {} - for (var i = 0; i < shaders.length; i++){ - user.shaders.bindButton(shaders[i]) + user.shaders.bindButtons( user.shaders.getShaders() ) + if ('SHADERS' in window) { + user.shaders.bindButtons( window.SHADERS ) } document.getElementById("add-shader").addEventListener("click", user.shaders.save, false) document.getElementById("remove-shader").addEventListener("click", user.shaders.remove, false) } -user.shaders.bindButton = function(name){ - console.log("button >> " + name) +user.shaders.bindButtons = function(shaders){ + for (var i = 0; i < shaders.length; i++){ + user.shaders.bindButton(shaders[i]) + } +} +user.shaders.bindButton = function(data){ + console.log("button >> " + data.name) var button = document.createElement("button") - button.innerHTML = name - button.addEventListener("click", user.shaders.load.bind(this, name), false) + button.innerHTML = data.name + button.addEventListener("click", user.shaders.load.bind(this, data), false) document.getElementById("shaders").appendChild(button) - user.shaders.buttons[name] = button + user.shaders.buttons[data.name] = button } -user.shaders.load = function(name){ - console.log(name) - var shader = localStorage.getItem("im.shaders." + name) +user.shaders.load = function(data){ + console.log(data.name) + var shader = data.shader if (shader && shader.length > 0) { - user.shaders.name = name + user.shaders.name = data.name $("#shader").val(shader) + // pause here? shader_build() $(".active").removeClass("active") - $(user.shaders.buttons[name]).addClass("active") + $(user.shaders.buttons[data.name]).addClass("active") } } + +user.shaders.getShaderIndex = function(){ + return JSON.parse( localStorage.getItem("im.shaders") ) || [] +} user.shaders.getShader = function(name){ return localStorage.getItem("im.shaders."+name) || null } +user.shaders.getShaders = function(){ + var shaders = user.shaders.getShaderIndex() + return shaders.map(function(name){ return { name: name, shader: user.shaders.getShader(name) } }) +} +user.shaders.setShaderIndex = function(shaders){ + localStorage.setItem("im.shaders", JSON.stringify(shaders)) +} user.shaders.setShader = function(name, shader){ if (! name.length || ! shader.length || !name.length || !shader.length) return localStorage.setItem("im.shaders." + name, shader) @@ -81,12 +98,7 @@ user.shaders.setShader = function(name, shader){ user.shaders.removeShader = function(name){ localStorage.removeItem("im.shaders." + name) } -user.shaders.getShaders = function(){ - return JSON.parse( localStorage.getItem("im.shaders") ) || [] -} -user.shaders.setShaders = function(shaders){ - localStorage.setItem("im.shaders", JSON.stringify(shaders)) -} + user.shaders.save = function(){ var name = prompt("enter shader name") var shader = $("#shader").val() @@ -96,9 +108,9 @@ user.shaders.save = function(){ user.shaders.setShader(name, shader) - var shaders = user.shaders.getShaders() + var shaders = user.shaders.getShaderIndex() shaders.push(name) - user.shaders.setShaders(shaders) + user.shaders.setShaderIndex(shaders) user.shaders.name = name user.shaders.bindButton(name) @@ -107,9 +119,9 @@ user.shaders.remove = function(){ var name = user.shaders.name if (! name || ! name.length) return - var shaders = user.shaders.getShaders() + var shaders = user.shaders.getShaderIndex() if (shaders.splice( shaders.indexOf(name), 1 )) { - user.shaders.setShaders(shaders) + user.shaders.setShaderIndex(shaders) user.shaders.removeShader(name) $(user.shaders.buttons[name]).remove() user.shaders.name = "" diff --git a/shader-picker.html b/shader-picker.html index 65a1a11..8449935 100644 --- a/shader-picker.html +++ b/shader-picker.html @@ -32,6 +32,7 @@ form { display: inline-block; } #gallery-images { display: block; max-height: 210px; overflow-y: auto; } #gallery-images img, #gallery-images canvas { max-width: 200px; height: 100px; margin: 5px; cursor: pointer; } #username { width: 40px; } +a { color: #00f; } @@ -80,13 +81,16 @@ form { display: inline-block; }

+
+
+ Photoblaster Gallery
@@ -122,6 +126,7 @@ form { display: inline-block; } +