From 2e9bfa707b33f7e371088b66e75f4e76f90ebcee Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Fri, 2 May 2014 10:32:16 -0400 Subject: new image system --- www/js/api.js | 120 +++++++++++++++++++++++++--------------------------------- 1 file changed, 51 insertions(+), 69 deletions(-) (limited to 'www/js/api.js') diff --git a/www/js/api.js b/www/js/api.js index 67c8320..c92d3d7 100644 --- a/www/js/api.js +++ b/www/js/api.js @@ -28,7 +28,7 @@ window.html5ks.api = { return false; } return true; - }; + }.bind(this); if (nextVol()) this._fading[channel] = setInterval(nextVol, 50); return when.resolve(); }, @@ -214,6 +214,7 @@ window.html5ks.api = { runInst: function (inst) { + console.debug(inst); var cmd = inst[0].replace(/"/g, ''); return this._safeCall(cmd, this[cmd], inst.slice(1)); }, @@ -273,79 +274,60 @@ window.html5ks.api = { Show: function (imspec) { var deferred = when.defer(); - var name = console.log(imspec); - return when.resolve(); - var lookup = document.getElementById(name), - el = lookup || document.createElement("img"); - if (!location && !lookup) location = "center"; - el.onload = function () { - if (location) { - // calculate position - // we don't actually know how big the image is till we fetch it - var pos = html5ks.api._positions[location]; - if (pos) { - el.style.left = pos.xpos * 800 + "px"; - el.style.top = pos.ypos * 600 + "px"; - el.style.marginLeft = "-" + pos.xanchor * el.width + "px"; - el.style.marginTop = "-" + pos.yanchor * el.height + "px"; - } - el.style.display = "block"; - } - html5ks.spin(-1); - deferred.resolve(); - }; - el.onerror = function () { - el.parentNode.removeChild(el); - html5ks.spin(-1); - deferred.resolve(); - }; - var nom = name; - if (type && type !== "None") { - nom = name + "_" + type; - } - var image = html5ks.data.images[nom]; - switch (typeof image) { - case "string": - if (image.substring(0, 1) === "#") { - el = document.createElement("div"); - el.style.backgroundColor = image; - el.style.height = "100%"; - html5ks.elements.show.appendChild(el); - deferred.resolve(); - return deferred.promise; - } - break; - case "undefined": - switch (name) { - case "bg": - image = "bgs/" + type + ".jpg"; + html5ks.fetch("json", "ui_settings").then(function (d) { + var name = imspec[0].join(' '); + var image = d[name]; + if (!image) { + switch (imspec[0][0]) { + case 'url': + image = {eval: imspec[0][1]}; break; - case "url": - name = type; - image = type; + case 'bg': + image = {eval: "bgs/" + imspec[0][1] + ".jpg"}; break; default: - image = "sprites/" + name + "/" + (type && type.indexOf("_close") > -1 ? "close/" : "") + name + "_" + type + ".png"; + return deferred.resolve(); } - } - if (typeof image === "string") { - image = {image: image}; - } - var src = ""; - if (Modernizr.webp) { - src = image.image.replace(/\.[a-z]+$/, ".webp"); - } else { - src = image.image; - } - el.id = name; - el.src = "dump/" + src; - html5ks.spin(1); - // prevent FOUIPC (flash of incorrectly placed content) - if (!lookup) { - el.style.display = "none"; - html5ks.elements.show.appendChild(el); - } + } + console.log(image); + var lookup = document.getElementById(name), + el = lookup || document.createElement("img"); + if (!location && !lookup) location = "center"; + el.onload = function () { + if (location) { + // calculate position + // we don't actually know how big the image is till we fetch it + var pos = html5ks.api._positions[location]; + if (pos) { + el.style.left = pos.xpos * 800 + "px"; + el.style.top = pos.ypos * 600 + "px"; + el.style.marginLeft = "-" + pos.xanchor * el.width + "px"; + el.style.marginTop = "-" + pos.yanchor * el.height + "px"; + } + el.style.display = "block"; + } + html5ks.spin(-1); + deferred.resolve(); + }; + el.onerror = function () { + el.parentNode.removeChild(el); + html5ks.spin(-1); + deferred.resolve(); + }; + var src = image.eval; + if (Modernizr.webp) { + src = src.replace(/\.[a-z]+$/, ".webp"); + } + el.id = name; + el.src = "dump/" + src; + html5ks.spin(1); + // prevent FOUIPC (flash of incorrectly placed content) + if (!lookup) { + el.style.display = "none"; + html5ks.elements.show.appendChild(el); + } + }); return deferred.promise; }, hide: function (name) { -- cgit v1.2.3-54-g00ecf