apple2js/js/ui/printer.js

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2019-03-01 05:21:18 +00:00
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
2019-03-01 05:21:18 +00:00
export default function Printer(paper) {
var _lineBuffer;
var _line;
function newLine() {
_line = $('<div>').addClass('line').text(_lineBuffer);
paper.append(_line);
_lineBuffer = '';
}
newLine();
return {
putChar: function(val) {
var ascii = val & 0x7f;
var visible = val >= 0x20;
var c = String.fromCharCode(ascii);
if (c == '\r') {
newLine();
_lineBuffer = '';
} else if (c == '\t') {
_lineBuffer += ' ';
2019-03-01 05:21:18 +00:00
} else if (c == 0x04) {
_lineBuffer = _lineBuffer.slice(0, -1);
} else {
if (visible) {
_lineBuffer += c;
}
}
_line.text(_lineBuffer);
},
clear: function() {
_lineBuffer = '';
paper.empty();
newLine();
},
hasPrintout: function() {
return paper.text().length();
}
};
}