package com.revolsys.elevation.tin.compactbinary; import java.nio.charset.StandardCharsets; import java.util.Map; import com.revolsys.elevation.tin.TriangleConsumer; import com.revolsys.elevation.tin.TriangulatedIrregularNetwork; import com.revolsys.elevation.tin.TriangulatedIrregularNetworkReadFactory; import com.revolsys.elevation.tin.TriangulatedIrregularNetworkWriter; import com.revolsys.elevation.tin.TriangulatedIrregularNetworkWriterFactory; import com.revolsys.io.AbstractIoFactoryWithCoordinateSystem; import com.revolsys.spring.resource.Resource; public class CompactBinaryTin extends AbstractIoFactoryWithCoordinateSystem implements TriangulatedIrregularNetworkReadFactory, TriangulatedIrregularNetworkWriterFactory { public static final int HEADER_SIZE = 64; public static final short VERSION = 1; public static final String FILE_TYPE = "TIN-CB"; public static final byte[] FILE_TYPE_BYTES = FILE_TYPE.getBytes(StandardCharsets.UTF_8); public CompactBinaryTin() { super("Compact Binary TIN"); addMediaTypeAndFileExtension("image/x-rs-compact-binary-tin", "tincb"); } @Override public void forEachTriangle(final Resource resource, final Map<String, ? extends Object> properties, final TriangleConsumer action) { try ( CompactBinaryTinReader compactBinaryTinReader = new CompactBinaryTinReader(resource)) { compactBinaryTinReader.forEachTriangle(action); } } @Override public boolean isReadFromZipFileSupported() { return true; } @Override public TriangulatedIrregularNetwork newTriangulatedIrregularNetwork(final Resource resource, final Map<String, ? extends Object> properties) { try ( CompactBinaryTinReader compactBinaryTinReader = new CompactBinaryTinReader(resource)) { return compactBinaryTinReader.newTriangulatedIrregularNetwork(); } } @Override public TriangulatedIrregularNetworkWriter newTriangulatedIrregularNetworkWriter( final Resource resource) { return new CompactBinaryTinWriter(resource); } }