clause method

  1. @override
CommandClause clause()
override

Implementation

@override
CommandClause clause() {
  var processer = Pbita(
    command: 'esc',
    threshold: _threshold,
    compress: _compress,
    reverse: _reverse,
  );
  var info = processer.processWithBytes(Uint8List.fromList(_image));
  var fimage = info.result;
  if (fimage == null) {
    throw Exception('Wrong image data');
  }
  int width = fimage.width;
  int height = fimage.height;

  int byteWidth;
  if (width % 8 != 0) {
    byteWidth = (width / 8 + 1).toInt();
  } else {
    byteWidth = width ~/ 8;
  }

  if (_compress) {
    return BinaryCommand(header())
        .appendNumber((byteWidth ~/ 256))
        .appendNumber(byteWidth % 256)
        .appendNumber((height ~/ 256))
        .appendNumber(height % 256)
        .appendNumber((fimage.data.length) >> 24 & 0xff)
        .appendNumber((fimage.data.length) >> 16 & 0xff)
        .appendNumber((fimage.data.length) >> 8 & 0xff)
        .appendNumber((fimage.data.length) & 0xff)
        .appendListInt(fimage.data)
        .clause();
  }

  return BinaryCommand(header())
      .appendNumber(_mode.getMode())
      .appendNumber((byteWidth % 256))
      .appendNumber(byteWidth ~/ 256)
      .appendNumber((height % 256))
      .appendNumber(height ~/ 256)
      .appendListInt(fimage.data)
      .clause();
}