diff --git a/sahli.js b/sahli.js
index 91668df..34f0093 100644
--- a/sahli.js
+++ b/sahli.js
@@ -1,7 +1,7 @@
-// .___________________________________. ._____.
-// | / | | . | |_____|
-// | ____ | : | | |
-//: |___/ / | | l_____| |
+// .___________________________________, ___
+// | / | | . \ .(___):
+// | _______ | : \ : |
+//: |___/ / | | \__| |
//| / | | | |
//l__________/__________|___|______l__________j_____j
//
@@ -10,27 +10,30 @@
// Uses fonts by DMG, http://trueschool.se
// Uses SixteenColors textmode js library for rendering
-var Sahli = function(){
+var Sahli = function() {
this.outbox = $('div#outbox');
this.dbox = $('div#drawbox');
- this.image;
+ this.image = 0;
-// scroll speed of 5 looks ... "ok" on macbook pro. 4 was original.
+ // scroll speed of 5 looks ... "ok" on macbook pro. 4 was original.
this.scroll_speed = 5;
this.scroll_direction = 1;
this.zoomspeed = 200;
- this.asciiasgfx = true; // changed at Evoke as the 16colors amiga bits aren't the same as old lib.
+ this.asciiasgfx = true; // changed at Evoke as the 16colors amiga bits aren't the same as old lib.
// You need to submit your fixes/changes to them, truck...
this.DEBUG = false;
this.dbox.height(document.height - 24);
this.dbox.width(document.width - 2);
- this.sizemult = 16; // 32 is larger than screen, and somewhat silly
- this.origheight, this.origwidth, this.filedata, this.slides;
+ this.sizemult = 16; // 32 is larger than screen, and somewhat silly
+ this.origheight = 0;
+ this.origwidth = 0;
+ this.filedata = '';
+ this.slides = 0;
this.currentpic = 0;
this.nonfsheight = document.height - 40;
- this.loadpic = function(picdata,inserthere){
+ this.loadpic = function(picdata, inserthere) {
var infob = $('div.infobox');
var pdiv = $('
');
var canv = document.createElement('canvas');
@@ -42,21 +45,25 @@ var Sahli = function(){
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);
+ ptxt.css({
+ 'color': color,
+ 'background-color': bgcolor,
+ 'margin': 'auto'
+ });
+ ptxt.width(picdata.width * 8);
pdiv.width('100%');
pdiv.append(ptxt);
-// x-user-defined
+ // x-user-defined
req.overrideMimeType('text/plain; charset=ISO-8859-1');
- req.onreadystatechange = function () {
+ req.onreadystatechange = function() {
if (req.readyState === req.DONE) {
if (req.status === 200 || req.status === 0) {
ptxt.text(this.responseText);
inserthere.after(pdiv);
} else {
- // I really should make a real error handler.
+ // I really should make a real error handler.
alert(req);
- };
+ }
}
};
req.open('GET', picdata.file, true);
@@ -66,11 +73,11 @@ var Sahli = function(){
this.image = new ImageTextModeANSI();
this.image.parseUrl(picdata.file);
this.image.renderCanvas(canv);
- pdiv.append(canv)
+ pdiv.append(canv);
inserthere.after(pdiv);
- this.origwidth=canv.width;
- this.origheight=canv.height;
- };
+ this.origwidth = canv.width;
+ this.origheight = canv.height;
+ }
infob.find('h1').text(picdata.name);
infob.find('h2').text(picdata.author);
infob.find('h3#text').text(picdata.line1);
@@ -82,55 +89,67 @@ var Sahli = function(){
};
this.calccolor = function(colorset) {
- return 'rgba('+colorset.toString()+')';
+ return 'rgba(' + colorset.toString() + ')';
};
- this.resize = function(amt){
+ this.resize = function(amt) {
var canv = $('canvas');
var w = canv.width() * amt;
var h = canv.height() * amt;
- canv.animate({width:w,height:h},this.zoomspeed);
+ canv.animate({
+ width: w,
+ height: h
+ }, this.zoomspeed);
};
- this.fullwidth = function(){
- this.stopscroll();
- if($('canvas').width() == this.dbox.width() ) {
+ this.fullwidth = function() {
+ this.stopscroll();
+ if ($('canvas').width() == this.dbox.width()) {
this.originalsize(this.zoomspeed);
} else {
var ratio = this.origwidth / this.dbox.width();
- $('canvas').animate({width:this.dbox.width(),height:this.origheight / ratio},this.zoomspeed);
+ $('canvas').animate({
+ width: this.dbox.width(),
+ height: this.origheight / ratio
+ }, this.zoomspeed);
}
};
- this.fullheight = function(){
+ this.fullheight = function() {
var canv = $('canvas');
- if(canv.height() == this.dbox.height() ) {
+ if (canv.height() == this.dbox.height()) {
this.originalsize(this.zoomspeed);
} else {
- var ratio = this.origheight / this.dbox.height() ;
- canv.animate({height: this.dbox.height(), width:this.origwidth / ratio},this.zoomspeed);
+ var ratio = this.origheight / this.dbox.height();
+ canv.animate({
+ height: this.dbox.height(),
+ width: this.origwidth / ratio
+ }, this.zoomspeed);
}
};
this.originalsize = function(zoomspeed) {
-// why do we not have origwidth now? hmm.
+ // why do we not have origwidth now? hmm.
var canv = $('canvas');
- canv.animate({width: this.origwidth, height:this.origheight},this.zoomspeed);
+ canv.animate({
+ width: this.origwidth,
+ height: this.origheight
+ }, this.zoomspeed);
};
this.toptext = function(text) {
if (this.DEBUG) {
$('h1#top').text(text);
- };
+ }
};
this.setscroll = function() {
var bottom = $('.scrolly').height();
var scrollto = bottom;
var steps;
- // kill animations from before
+ // kill animations from before
this.dbox.stop(true);
if (this.scroll_direction === 1) {
this.scroll_direction = -1;
@@ -140,14 +159,16 @@ var Sahli = function(){
scrollto = 0;
steps = this.dbox.scrollTop();
}
- this.toptext(this.scroll_speed +' | '+ steps);
+ this.toptext(this.scroll_speed + ' | ' + steps);
- this.dbox.animate({scrollTop : scrollto}, this.scroll_speed*steps ,'linear');
+ this.dbox.animate({
+ scrollTop: scrollto
+ }, this.scroll_speed * steps, 'linear');
};
this.resizedrawbox = function(height) {
var dbox1 = $('div#drawbox');
- if( 'undefined' === typeof height ) {
+ if ('undefined' === typeof height) {
dbox1.height(window.innerHeight - 2);
} else {
dbox1.height(height);
@@ -155,33 +176,33 @@ var Sahli = function(){
dbox1.width(window.innerWidth - 2);
};
- this.stopscroll = function () {
+ this.stopscroll = function() {
this.dbox.stop(true);
};
this.moveabout = function(lines) {
var line = this.dbox.scrollTop();
this.dbox.stop(true);
- switch(lines) {
- case 0:
- this.dbox.scrollTop(0);
- break;
- case Infinity:
- this.dbox.scrollTop(this.origheight);
- break;
- default:
- this.dbox.scrollTop(line - lines * 8);
- break;
- }
+ switch (lines) {
+ case 0:
+ this.dbox.scrollTop(0);
+ break;
+ case Infinity:
+ this.dbox.scrollTop(this.origheight);
+ break;
+ default:
+ this.dbox.scrollTop(line - lines * 8);
+ break;
+ }
};
this.requestsahlifile = function(url) {
var ref = this;
- $.getJSON(url,function(json) {
- ref.filedata = json.filedata;
- ref.slides = json.slides;
- ref.buildcompo();
- } );
+ $.getJSON(url, function(json) {
+ ref.filedata = json.filedata;
+ ref.slides = json.slides;
+ ref.buildcompo();
+ });
};
@@ -192,197 +213,195 @@ var Sahli = function(){
this.nextpic = function() {
this.dbox.children().remove();
-// reset scrolling;
- this.stopscroll();
- this.scroll_direction = 1;
+ // reset scrolling;
+ this.stopscroll();
+ this.scroll_direction = 1;
var i = this.currentpic;
var filedata = this.filedata;
- filedata[i].pic = $("
"+filedata[i].file+"
");
+ filedata[i].pic = $("" + filedata[i].file + "
");
this.dbox.append(filedata[i].pic);
- this.loadpic(filedata[i],filedata[i].pic);
+ this.loadpic(filedata[i], filedata[i].pic);
this.currentpic += 1;
- if (this.currentpic > filedata.length -1 ) {
+ if (this.currentpic > filedata.length - 1) {
this.currentpic = 0;
}
};
- this.gofullscreen = function(){
- var docElm= document.documentElement;
- var toid = window.setTimeout( sahli.resizedrawbox, 100);
+ this.gofullscreen = function() {
+ var docElm = document.documentElement;
+ var toid = window.setTimeout(sahli.resizedrawbox, 100);
if (docElm.requestFullscreen) {
docElm.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
- }
- else if (docElm.mozRequestFullScreen) {
+ } else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
- }
- else if (docElm.webkitRequestFullScreen) {
+ } else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
}
};
- this.cancelfullscreen = function(){
- var toid = window.setTimeout( sahli.resizedrawbox, 100, this.nonfsheight );
+ this.cancelfullscreen = function() {
+ var toid = window.setTimeout(sahli.resizedrawbox, 100, this.nonfsheight);
if (document.exitFullscreen) {
document.exitFullscreen();
- }
- else if (document.mozCancelFullScreen) {
+ } else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
- }
- else if (document.webkitCancelFullScreen) {
+ } else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
};
this.fixhelpbox = function() {
var h = $('.help');
-// var xy = {'top': document.height/2 - h.height()/2, 'left': document.width/2 - h.width()/2};
- var xy = {'top': 0, 'left': document.width/2 - h.width()/2};
+ // var xy = {'top': document.height/2 - h.height()/2, 'left': document.width/2 - h.width()/2};
+ var xy = {
+ 'top': 0,
+ 'left': document.width / 2 - h.width() / 2
+ };
h.css(xy);
};
- this.toggledebug = function(){
+ this.toggledebug = function() {
$('h1#top').fadeToggle();
this.DEBUG = (!this.DEBUG);
};
- this.loadkeys = function(){
+ this.loadkeys = function() {
var ref = this;
- $(document).bind('click', function(ev) {
- if (ev.clientY < 100) {
- if (ev.clientX < 100) {
- ref.nextpic();
- } else {
- ref.fullwidth();
- }
- } else {
- ref.setscroll();
- };
- });
-
- $(document).bind('keydown', function(ev){
- switch(ev.which) {
- case 84: // t
- ref.asciiasgfx = (! ref.asciiasgfx);
- ref.toptext(ref.asciiasgfx);
- break;
- case 85: // u
- case 9: // u
- $('div.infobox').slideToggle('slow');
- break;
- case 70: // f
- ref.gofullscreen();
- break;
- case 27: // esc
- case 71: // G, as escape seems to not get passed from fullscreen on chrome
- ref.cancelfullscreen();
- break;
- case 73: // i
- ref.resize(2);
- break;
- case 75: // k
- ref.resize(.5);
- break;
- case 79: // o
- ref.fullwidth();
- break;
- case 76: // l
- ref.fullheight();
- break;
- case 80: // p
- ref.originalsize(0);
- break;
-
- case 83: // s
+ $(document).bind('click', function(ev) {
+ if (ev.clientY < 100) {
+ if (ev.clientX < 100) {
+ ref.nextpic();
+ } else {
+ ref.fullwidth();
+ }
+ } else {
ref.setscroll();
- break;
- case 72: // h
- case 191: // "?" (also / but no shift)
- $('.help').fadeToggle('fast');
- break;
- case 107: // +
- case 190: // .
- ref.scroll_speed = ref.scroll_speed * 2;
- ref.toptext("speed doubled:" + ref.scroll_speed );
- break;
- case 109: // -
- case 188: // ,
- ref.scroll_speed = ref.scroll_speed / 2;
- ref.toptext("speed halved:" + ref.scroll_speed);
- break;
- case 49: // 1
- ref.scroll_speed = 1;
- break;
- case 50: //2
- ref.scroll_speed = 2;
- break;
- case 51: //3
- ref.scroll_speed = 3;
- break;
- case 52: //4
- ref.scroll_speed = 4;
- break;
- case 53: //5
- ref.scroll_speed = 5;
- break;
- case 220: // "\"
- ref.toptext(ref.scroll_speed);
- break;
- case 8: // backspace
- case 68: // D
- ref.stopscroll();
- break;
- // move about keys
- case 33: // pgup
- ref.moveabout(24);
- break;
- case 34: // pgdwn
- ref.moveabout(-24);
- break;
- case 36: // home
- ref.moveabout(0);
- break;
- case 35: // end
- ref.moveabout(Infinity);
- break;
- case 40: // down
- ref.moveabout(-1);
- break;
- case 32: // space
- ref.nextpic();
- break;
- case 38: // up
- ref.moveabout(1);
- break;
- case 19: // pause/break
- case 121: // F10
- ref.toggledebug();
- break;
- // debug alerts for these keys are annoying (:
- case 116: // f5
- case 123: // f12
- break;
- default:
- if (ref.DEBUG) {
- alert(ev.which);
- };
- break;
- };
+ }
+ });
+
+ $(document).bind('keydown', function(ev) {
+ switch (ev.which) {
+ case 84: // t
+ ref.asciiasgfx = (!ref.asciiasgfx);
+ ref.toptext(ref.asciiasgfx);
+ break;
+ case 85: // u
+ case 9: // u
+ $('div.infobox').slideToggle('slow');
+ break;
+ case 70: // f
+ ref.gofullscreen();
+ break;
+ case 27: // esc
+ case 71: // G, as escape seems to not get passed from fullscreen on chrome
+ ref.cancelfullscreen();
+ break;
+ case 73: // i
+ ref.resize(2);
+ break;
+ case 75: // k
+ ref.resize(0.5);
+ break;
+ case 79: // o
+ ref.fullwidth();
+ break;
+ case 76: // l
+ ref.fullheight();
+ break;
+ case 80: // p
+ ref.originalsize(0);
+ break;
+
+ case 83: // s
+ ref.setscroll();
+ break;
+ case 72: // h
+ case 191: // "?" (also / but no shift)
+ $('.help').fadeToggle('fast');
+ break;
+ case 107: // +
+ case 190: // .
+ ref.scroll_speed = ref.scroll_speed * 2;
+ ref.toptext("speed doubled:" + ref.scroll_speed);
+ break;
+ case 109: // -
+ case 188: // ,
+ ref.scroll_speed = ref.scroll_speed / 2;
+ ref.toptext("speed halved:" + ref.scroll_speed);
+ break;
+ case 49: // 1
+ ref.scroll_speed = 1;
+ break;
+ case 50: //2
+ ref.scroll_speed = 2;
+ break;
+ case 51: //3
+ ref.scroll_speed = 3;
+ break;
+ case 52: //4
+ ref.scroll_speed = 4;
+ break;
+ case 53: //5
+ ref.scroll_speed = 5;
+ break;
+ case 220: // "\"
+ ref.toptext(ref.scroll_speed);
+ break;
+ case 8: // backspace
+ case 68: // D
+ ref.stopscroll();
+ break;
+ // move about keys
+ case 33: // pgup
+ ref.moveabout(24);
+ break;
+ case 34: // pgdwn
+ ref.moveabout(-24);
+ break;
+ case 36: // home
+ ref.moveabout(0);
+ break;
+ case 35: // end
+ ref.moveabout(Infinity);
+ break;
+ case 40: // down
+ ref.moveabout(-1);
+ break;
+ case 32: // space
+ ref.nextpic();
+ break;
+ case 38: // up
+ ref.moveabout(1);
+ break;
+ case 19: // pause/break
+ case 121: // F10
+ ref.toggledebug();
+ break;
+ // debug alerts for these keys are annoying (:
+ case 116: // f5
+ case 123: // f12
+ break;
+ default:
+ if (ref.DEBUG) {
+ alert(ev.which);
+ }
+ break;
+ }
});
};
this.loadkeys();
-// this.loadpic('h7-r2012.ans',this.dbox);
+ // this.loadpic('h7-r2012.ans',this.dbox);
this.fixhelpbox();
- var ref = this;
- $(window).resize(function () {
- ref.resizedrawbox();
- });
+ var ref = this;
+ $(window).resize(function() {
+ ref.resizedrawbox();
+ });
this.requestsahlifile('list.sahli');
};
-// Dammit I hate how conttrol-R in textmate is "some shell shit"
-// I also hate how scrolling is incredibly stupid on osX
-// Mind you, it's better than touching anything in Windows.
+// I switched to Sublime text + sublemacs pro.
+// Yes, the author of Sublime Text's emacs hatred is annoying.
\ No newline at end of file