write method

Future<void> write(
  1. FileWriter fileWriter,
  2. ShapeType type,
  3. int numGeoms,
  4. int length,
  5. double minX,
  6. double minY,
  7. double maxX,
  8. double maxY,
)

Implementation

Future<void> write(FileWriter fileWriter, ShapeType type, int numGeoms,
    int length, double minX, double minY, double maxX, double maxY) async {
  // file.order(ByteOrder.BIG_ENDIAN);
  Endian endian = Endian.big;

  await fileWriter.putInt32(MAGIC, endian);

  for (int i = 0; i < 5; i++) {
    await fileWriter.putInt32(0, endian); // Skip unused part of header
  }

  await fileWriter.putInt32(length, endian);

  endian = Endian.little;
  // file.order(ByteOrder.LITTLE_ENDIAN);

  await fileWriter.putInt32(VERSION, endian);
  await fileWriter.putInt32(type.id, endian);

  // write the bounding box
  await fileWriter.putDouble64(minX, endian);
  await fileWriter.putDouble64(minY, endian);
  await fileWriter.putDouble64(maxX, endian);
  await fileWriter.putDouble64(maxY, endian);

  // skip remaining unused bytes
  endian = Endian.big;
  // file.order(ByteOrder.BIG_ENDIAN);
  for (int i = 0; i < 8; i++) {
    await fileWriter.putInt32(0, endian); // Skip unused part of header
  }
}