ZoneData.fromBuffer constructor

ZoneData.fromBuffer(
  1. ByteDataWrapper wrapper
)

Implementation

factory ZoneData.fromBuffer(ByteDataWrapper wrapper) {
  final zoneName = wrapper.extractString();
  final zoneType = wrapper.extractUint32();
  final zoneLedsMin = wrapper.extractUint32();
  final zoneLedsMax = wrapper.extractUint32();
  final zoneLedsCount = wrapper.extractUint32();
  final zoneMatrixLength = wrapper.extractUint16();
  late final int zoneMatrixHeight;
  late final int zoneMatrixWidth;
  final List<int> zoneMatrix = [];
  if (zoneMatrixLength != 0) {
    zoneMatrixHeight = wrapper.extractUint16();
    zoneMatrixWidth = wrapper.extractUint16();

    for (int i = 0; i < zoneMatrixHeight * zoneMatrixWidth; i++) {
      zoneMatrix.add(wrapper.extractUint32());
    }
  } else {
    zoneMatrixHeight = 0;
    zoneMatrixWidth = 0;
  }

  return ZoneData(
    zoneName: zoneName,
    zoneType: zoneType,
    zoneLedsMin: zoneLedsMin,
    zoneLedsMax: zoneLedsMax,
    zoneLedsCount: zoneLedsCount,
    zoneMatrixHeight: zoneMatrixHeight,
    zoneMatrixWidth: zoneMatrixWidth,
    zoneMatrix: zoneMatrix,
  );
}