From 4224cc3066e168839f4a360563dfe8645ed76585 Mon Sep 17 00:00:00 2001 From: Iam Naughton Phier Date: Tue, 5 Aug 2014 17:02:29 +0300 Subject: [PATCH] first try: multiple file format loading --- sahli.js | 136 ++++++++++++++++++++++++++++++++---------------- sahliformat.txt | 12 +++-- 2 files changed, 98 insertions(+), 50 deletions(-) diff --git a/sahli.js b/sahli.js index cd446c0..67d5e37 100644 --- a/sahli.js +++ b/sahli.js @@ -34,58 +34,104 @@ var Sahli = function() { this.nonfsheight = document.height - 40; this.loadpic = function(picdata, inserthere) { - var infob = $('div.infobox'); + var jumptable = { + 'plain':this.loadplain(), + 'xbin':this.loadxbin(), + 'ice':this.loadice(), + 'avatar':this.loadavatar(), + 'pcboard':this.loadpcboard(), + 'ansi':this.loadansi(), + 'idf':this.loadidf(), + 'bin':this.loadbin(), + 'adf':this.loadadf(), + 'tundra':this.loadtundra() + } + jumptable[picdata.filetype](picdata,inserthere); + } + + this.loadplain = function(picdata, inserthere) { + ref = this; var pdiv = $('
'); var canv = document.createElement('canvas'); var req = new XMLHttpRequest(); - var fname = sahli.location + '/' + picdata.file; + var fname = sahli.location + '/' + picdata.file; + var ptxt = $('
');
+        var color = this.calccolor(picdata.color);
+        var bgcolor = this.calccolor(picdata.bg);
+
         pdiv.addClass('scrolly');
-        ref = this;
-        if (picdata.amiga && this.asciiasgfx) {
-            var ptxt = $('
');
-            var color = this.calccolor(picdata.color);
-            var bgcolor = this.calccolor(picdata.bg);
-            ptxt.addClass(picdata.font.toLowerCase());
-            ptxt.css({
-                'color': color,
-                'background-color': bgcolor,
-                'margin': 'auto'
-            });
-            ptxt.width(picdata.width * 8);
-            pdiv.width('100%');
-            pdiv.append(ptxt);
-            // x-user-defined
-            req.overrideMimeType('text/plain; charset=ISO-8859-1');
-            req.onreadystatechange = function() {
-                if (req.readyState === req.DONE) {
-                    if (req.status === 200 || req.status === 0) {
-                        ptxt.text(this.responseText);
-                        inserthere.after(pdiv);
-                    } else {
-                        sahli.loaderror(inserthere,fname,req.statusText,req.status)
-                        // I really should make a real error handler.
-                    }
+        ptxt.addClass(picdata.font.toLowerCase());
+        ptxt.css({
+            'color': color,
+            'background-color': bgcolor,
+            'margin': 'auto'
+        });
+        ptxt.width(picdata.width * 8);
+        pdiv.width('100%');
+        pdiv.append(ptxt);
+        // x-user-defined
+        // this is going to be interesting when dealing with ansi files in UTF-8 and SHIFT-JIS etc
+        req.overrideMimeType('text/plain; charset=ISO-8859-1');
+        req.onreadystatechange = function() {
+            if (req.readyState === req.DONE) {
+                if (req.status === 200 || req.status === 0) {
+                    ptxt.text(this.responseText);
+                    inserthere.after(pdiv);
+                } else {
+                    sahli.loaderror(inserthere,fname,req.statusText,req.status)
                 }
-            };
-            req.open('GET', fname , true);
-            req.send(null);
-
-        } else {
-            this.image = new ImageTextModeANSI();
-            this.SAUCE = new ImageTextModeSAUCE();
-            var picload = this.image.parseUrl(fname);
-            this.image.renderCanvas(canv);
-            pdiv.append(canv);
-            inserthere.after(pdiv);
-            this.origwidth = canv.width;
-            this.origheight = canv.height;
-            if (picload < 1) {                
-                // this is incorrect but currently parseUrl does not return errors.
-                // fix, then deal with.
-                sahli.loaderror(inserthere,fname,'Not found',404);
             }
+        };
+        req.open('GET', fname , true);
+        req.send(null);
 
+    this.loadansi = function(picdata,inserthere) {
+        this.image = new ImageTextModeANSI();
+        this.SAUCE = new ImageTextModeSAUCE();
+        var picload = this.image.parseUrl(fname);
+        this.image.renderCanvas(canv);
+        pdiv.append(canv);
+        inserthere.after(pdiv);
+        this.origwidth = canv.width;
+        this.origheight = canv.height;
+        if (picload < 1) {
+            // this is incorrect but currently parseUrl does not return errors.
+            // fix, then deal with.
+            sahli.loaderror(inserthere,fname,'Not found',404);
         }
+
+    this.loadxbin = function(picdata,inserthere){
+        alert('xbin');
+    }
+
+    this.loadbin = function(picdata,inserthere){
+        alert('bin');
+    }
+    this.loadice = function(picdata,inserthere){
+        alert('ice');
+    }
+    this.loadidf = function(picdata,inserthere){
+        alert('idf');
+    }
+    this.loadadf = function(picdata,inserthere){
+        alert('adf');
+    }
+    this.loadavatar = function(picdata,inserthere){
+        alert('avatar');
+    }
+    this.loadtundra = function(picdata,inserthere){
+        alert('tundra');
+    }
+    this.loadpcboard = function(picdata,inserthere){
+        alert('pcboard');
+    }
+    this.loadxbin = function(picdata,inserthere){
+        alert('xbin');
+    }
+
+
+    this.fillinfo = function(picdata) {
+        var infob = $('div.infobox');
         infob.find('h1').text(picdata.name);
         infob.find('h2').text(picdata.author);
         infob.find('h3#text').text(picdata.line1);
@@ -104,7 +150,7 @@ var Sahli = function() {
             tmptxt = $("

").text("error! "+ errorText + " code " + errorCode + " file " + fname); } - inserthere.after(tmptxt); + inserthere.after(tmptxt); } this.calccolor = function(colorset) { diff --git a/sahliformat.txt b/sahliformat.txt index 31ad32d..a32d21c 100644 --- a/sahliformat.txt +++ b/sahliformat.txt @@ -3,7 +3,7 @@ A Sahli file is JSON, so all JSON formatting and rule processing applies. Version A: -There were 2 primary sections within the file: The slide section and the +There were 2 primary sections within the file: The slide section and the filedata section. Version B: 3 primary sections, slide / filedata and now location. @@ -14,8 +14,9 @@ Version B: === slides === This, if implemented (which it isn't) would allow you to generate slides- - such as if you weren't using partymeister for slides. + such as if you weren't using partymeister for slides. +EXAMPLE: "slides": { "background": "screen.png", "template": "template.html", @@ -36,7 +37,7 @@ Version B: This _is_ implemented and holds the data for each ansi or ascii "slide" in the "slideshow" (if using a 'slideshow' paradigm.) - +EXAMPLE: "filedata": [{ "file": "spaceflight.asc", "name": "Spaceflight", @@ -67,7 +68,8 @@ Version B: filetype: * NEW IN VERSION B* The type of file - i.e. use the parsing method for file type X. Possible legal types: - "plain" - for standard ascii and ansi (i.e. the default.) + "plain" - for 'standard' ascii (Amiga or pc.) ISO-8859-1 + "ansi" - 'normal' ansi, can have or not have SAUCE data. "xbin" - saved as xbin "ice" - saved in the ICE format "adf" - saved as ADF (NOT amiga disk file, some ansi format that is not @@ -76,7 +78,7 @@ Version B: "avatar" - avatar format "bin" - bin format. Not "any binary" format, but the ansi 'bin' format. * no I don't know the difference, but someone does and they wrote the - original code for it. + original code for it. "idf" - idf format. "pcboard" - pcboard ansi format. "tundra" - tundra format. (from tundradraw, I assume.)