drawBitmap method
打印图片
context
内容
offset
偏移位置
bytes
位图内容, true:代表黑色 false:代表白色 二维数组 第一维纵 第二维横
Implementation
@override
drawBitmap(PrinterOffset offset, PrinterSize size, List<List<bool>> bytes) {
var data = List<int>.filled(size.width! * size.height! ~/ 8, 0);
var k = 0;
for (var y = 0; y < bytes.length;y++) {
var rowBytes = List<bool>.from(bytes[y]);
for (var x = 0; x < rowBytes.length; x += 8) {
if (rowBytes.length < x + 8) {
rowBytes.addAll(List<bool>.filled((x + 8) - rowBytes.length, false));
}
var b0 = _p0[rowBytes[x] == true ? 1 : 0];
var b1 = _p1[rowBytes[x + 1] == true ? 1 : 0];
var b2 = _p2[rowBytes[x + 2] == true ? 1 : 0];
var b3 = _p3[rowBytes[x + 3] == true ? 1 : 0];
var b4 = _p4[rowBytes[x + 4] == true ? 1 : 0];
var b5 = _p5[rowBytes[x + 5] == true ? 1 : 0];
var b6 = _p6[rowBytes[x + 6] == true ? 1 : 0];
var b7 = _p7[rowBytes[x + 7] == true ? 1 : 0];
var temp = b0 + b1 + b2 + b3 + b4 + b5 + b6 + b7;
data[k] = temp;
k++;
}
}
this.addCommand('CG ${size.width! ~/ 8} ${size.height!.toInt()} ${offset.x!.toInt()} ${offset.y!.toInt()} ', addEnd: false);
this.buffer.addAll(data);
this.addCommand('');
}