From a9f03f7d7c9c4d533aa685de81166b3bac2414ee Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Mon, 21 Jan 2013 22:18:47 +0000 Subject: [PATCH] Improved efficiency of blocktype --- js-plugins/drone/blocktype.js | 528 +++++++++++++++++----------------- 1 file changed, 271 insertions(+), 257 deletions(-) diff --git a/js-plugins/drone/blocktype.js b/js-plugins/drone/blocktype.js index e107022..cebdafb 100644 --- a/js-plugins/drone/blocktype.js +++ b/js-plugins/drone/blocktype.js @@ -2,283 +2,300 @@ load(__folder + "drone.js"); (function(){ - var bitmap = { - '0':' ### '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' ### ', + var bitmaps = { + raw: { + '0':' ### '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' ### ', + + '1':' # '+ + ' ## '+ + ' # '+ + ' # '+ + ' ### ', + + '2':' ### '+ + ' # '+ + ' ### '+ + ' # '+ + ' ### ', + + '3':' ### '+ + ' # '+ + ' ## '+ + ' # '+ + ' ### ', - '1':' # '+ - ' ## '+ - ' # '+ - ' # '+ - ' ### ', + '4':' # '+ + ' ## '+ + ' # # '+ + ' ### '+ + ' # ', + + '5':' ### '+ + ' # '+ + ' ### '+ + ' # '+ + ' ### ', + + '6':' ### '+ + ' # '+ + ' ### '+ + ' # # '+ + ' ### ', + + '7':' ### '+ + ' # '+ + ' # '+ + ' # '+ + ' # ', - '2':' ### '+ - ' # '+ - ' ### '+ - ' # '+ - ' ### ', - - '3':' ### '+ - ' # '+ - ' ## '+ - ' # '+ - ' ### ', + '8':' ### '+ + ' # # '+ + ' ### '+ + ' # # '+ + ' ### ', - '4':' # '+ - ' ## '+ - ' # # '+ - ' ### '+ - ' # ', - - '5':' ### '+ - ' # '+ - ' ### '+ - ' # '+ - ' ### ', - - '6':' ### '+ - ' # '+ - ' ### '+ - ' # # '+ - ' ### ', - - '7':' ### '+ - ' # '+ - ' # '+ - ' # '+ - ' # ', + '9':' ### '+ + ' # # '+ + ' ### '+ + ' # '+ + ' ### ', - '8':' ### '+ - ' # # '+ - ' ### '+ - ' # # '+ - ' ### ', + 'a':' ### '+ + ' # # '+ + ' ### '+ + ' # # '+ + ' # # ', - '9':' ### '+ - ' # # '+ - ' ### '+ - ' # '+ - ' ### ', + 'b':' ## '+ + ' # # '+ + ' ## '+ + ' # # '+ + ' ## ', + + 'c':' ## '+ + ' # '+ + ' # '+ + ' # '+ + ' ## ', - 'a':' ### '+ - ' # # '+ - ' ### '+ - ' # # '+ - ' # # ', + 'd':' ## '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' ## ', - 'b':' ## '+ - ' # # '+ - ' ## '+ - ' # # '+ - ' ## ', - - 'c':' ## '+ - ' # '+ - ' # '+ - ' # '+ - ' ## ', + 'e':' ### '+ + ' # '+ + ' ## '+ + ' # '+ + ' ### ', - 'd':' ## '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' ## ', + 'f':' ### '+ + ' # '+ + ' ## '+ + ' # '+ + ' # ', - 'e':' ### '+ - ' # '+ - ' ## '+ - ' # '+ - ' ### ', + 'g':' ### '+ + ' # '+ + ' # '+ + ' # # '+ + ' ### ', - 'f':' ### '+ - ' # '+ - ' ## '+ - ' # '+ - ' # ', + 'h':' # # '+ + ' # # '+ + ' ### '+ + ' # # '+ + ' # # ', - 'g':' ### '+ - ' # '+ - ' # '+ - ' # # '+ - ' ### ', + 'i':' ### '+ + ' # '+ + ' # '+ + ' # '+ + ' ### ', + + 'j':' ### '+ + ' # '+ + ' # '+ + ' # '+ + ' # ', + + 'k':' # '+ + ' # # '+ + ' ## '+ + ' # # '+ + ' # # ', + + 'l':' # '+ + ' # '+ + ' # '+ + ' # '+ + ' ### ', + + 'm':' # # '+ + ' ### '+ + ' # # '+ + ' # # '+ + ' # # ', - 'h':' # # '+ - ' # # '+ - ' ### '+ - ' # # '+ - ' # # ', + 'n':' ## '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' # # ', - 'i':' ### '+ - ' # '+ - ' # '+ - ' # '+ - ' ### ', - - 'j':' ### '+ - ' # '+ - ' # '+ - ' # '+ - ' # ', - - 'k':' # '+ - ' # # '+ - ' ## '+ - ' # # '+ - ' # # ', - - 'l':' # '+ - ' # '+ - ' # '+ - ' # '+ - ' ### ', - - 'm':' # # '+ - ' ### '+ - ' # # '+ - ' # # '+ - ' # # ', + 'o':' # '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' # ', - 'n':' ## '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' # # ', + 'p':' ### '+ + ' # # '+ + ' ### '+ + ' # '+ + ' # ', + + 'q':' ### '+ + ' # # '+ + ' # # '+ + ' ### '+ + ' # ', - 'o':' # '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' # ', + 'r':' ## '+ + ' # # '+ + ' ## '+ + ' # # '+ + ' # # ', - 'p':' ### '+ - ' # # '+ - ' ### '+ - ' # '+ - ' # ', - - 'q':' ### '+ - ' # # '+ - ' # # '+ - ' ### '+ - ' # ', + 's':' ## '+ + ' # '+ + ' ### '+ + ' # '+ + ' ## ', - 'r':' ## '+ - ' # # '+ - ' ## '+ - ' # # '+ - ' # # ', + 't':' ### '+ + ' # '+ + ' # '+ + ' # '+ + ' # ', - 's':' ## '+ - ' # '+ - ' ### '+ - ' # '+ - ' ## ', + 'u':' # # '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' ### ', - 't':' ### '+ - ' # '+ - ' # '+ - ' # '+ - ' # ', + 'v':' # # '+ + ' # # '+ + ' # # '+ + ' # # '+ + ' # ', - 'u':' # # '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' ### ', + 'w':' # # '+ + ' # # '+ + ' # # '+ + ' ### '+ + ' # # ', - 'v':' # # '+ - ' # # '+ - ' # # '+ - ' # # '+ - ' # ', + 'x':' # # '+ + ' # # '+ + ' # '+ + ' # # '+ + ' # # ', - 'w':' # # '+ - ' # # '+ - ' # # '+ - ' ### '+ - ' # # ', + 'y':' # # '+ + ' # # '+ + ' # # '+ + ' # '+ + ' # ', + + 'z':' ### '+ + ' # '+ + ' # '+ + ' # '+ + ' ### ', + + '!':' # '+ + ' # '+ + ' # '+ + ' '+ + ' # ', - 'x':' # # '+ - ' # # '+ - ' # '+ - ' # # '+ - ' # # ', + ':':' '+ + ' # '+ + ' '+ + ' # '+ + ' ', - 'y':' # # '+ - ' # # '+ - ' # # '+ - ' # '+ - ' # ', - - 'z':' ### '+ - ' # '+ - ' # '+ - ' # '+ - ' ### ', - - '!':' # '+ - ' # '+ - ' # '+ - ' '+ - ' # ', + ';':' '+ + ' # '+ + ' '+ + ' # '+ + ' # ', - ':':' '+ - ' # '+ - ' '+ - ' # '+ - ' ', + ',':' '+ + ' '+ + ' '+ + ' # '+ + ' # ', - ';':' '+ - ' # '+ - ' '+ - ' # '+ - ' # ', + '/':' # '+ + ' # '+ + ' # '+ + ' # '+ + ' # ', - ',':' '+ - ' '+ - ' '+ - ' # '+ - ' # ', + '+':' '+ + ' # '+ + ' ### '+ + ' # '+ + ' ', + + '-':' '+ + ' '+ + ' ### '+ + ' '+ + ' ', - '/':' # '+ - ' # '+ - ' # '+ - ' # '+ - ' # ', + '.':' '+ + ' '+ + ' '+ + ' '+ + ' # ', - '+':' '+ - ' # '+ - ' ### '+ - ' # '+ - ' ', - - '-':' '+ - ' '+ - ' ### '+ - ' '+ - ' ', - - '.':' '+ - ' '+ - ' '+ - ' '+ - ' # ', - - "'":' # '+ - ' # '+ - ' '+ - ' '+ - ' ', - - ' ':' '+ - ' '+ - ' '+ - ' '+ - ' ' + "'":' # '+ + ' # '+ + ' '+ + ' '+ + ' ', + + ' ':' '+ + ' '+ + ' '+ + ' '+ + ' ' + }, + computed: {} }; + /* + wph 20130121 compute the width, and x,y coords of pixels ahead of time + */ + for (var c in bitmaps.raw){ + var bits = bitmaps.raw[c]; + var width = bits.length/5; + var bmInfo = {"width": width,"pixels":[]} + bitmaps.computed[c] = bmInfo; + for (var j = 0; j < bits.length; j++){ + if (bits.charAt(j) != ' '){ + bmInfo.pixels.push([j%width,Math.ceil(j/width)]); + } + } + } Drone.extend('blocktype', function(message,fg,bg){ this.chkpt('blocktext'); @@ -287,25 +304,22 @@ load(__folder + "drone.js"); for (var h = 0;h < lineCount; h++) { var line = lines[h]; line = line.toLowerCase().replace(/[^0-9a-z \.\-\+\/\;\'\:\!]/g,""); - print ("lineCount=" + lineCount); this.up(7*(lineCount-(h+1))); for (var i =0;i < line.length; i++) { var ch = line.charAt(i) - var bits = bitmap[ch]; + var bits = bitmaps.computed[ch]; if (typeof bits == "undefined"){ - bits = bitmap[' ']; + bits = bitmaps.computed[' ']; } - var charWidth = bits.length/5; + var charWidth = bits.width; if (typeof bg != "undefined") this.box(bg,charWidth,7,1); - for (var j = 0;j < bits.length;j++){ + for (var j = 0;j < bits.pixels.length;j++){ this.chkpt('btbl'); - if (bits.charAt(j) != ' '){ - var x = j % charWidth; - var y = Math.ceil(j/charWidth); - this.up(6-y).right(x).box(fg); - } + var x = bits.pixels[j][0]; + var y = bits.pixels[j][1]; + this.up(6-y).right(x).box(fg); this.move('btbl'); } this.right(charWidth-1);