drawBitmap method

  1. @override
dynamic drawBitmap(
  1. PrinterOffset offset,
  2. PrinterSize size,
  3. List<List<bool>> bytes
)
override

打印图片

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('');
}