package com.revolsys.elevation.cloud.las.pointformat; import com.revolsys.collection.map.LinkedHashMapEx; import com.revolsys.collection.map.MapEx; import com.revolsys.elevation.cloud.las.LasPointCloud; import com.revolsys.geometry.model.Point; import com.revolsys.io.channels.ChannelReader; import com.revolsys.io.endian.EndianOutput; import com.revolsys.io.map.MapSerializer; public interface LasPoint extends Point, MapSerializer { @Override LasPoint clone(); default int getBlue() { return 0; } byte getClassification(); byte getClassificationByte(); default double getGpsTime() { return 315964800; } default int getGreen() { return 0; } int getIntensity(); byte getNumberOfReturns(); LasPointFormat getPointFormat(); default int getPointFormatId() { return getPointFormat().getId(); } int getPointSourceID(); default int getRed() { return 0; } byte getReturnByte(); byte getReturnNumber(); double getScanAngleDegrees(); byte getScanAngleRank(); byte getScannerChannel(); short getUserData(); boolean isEdgeOfFlightLine(); boolean isKeyPoint(); boolean isScanDirectionFlag(); boolean isSynthetic(); boolean isWithheld(); void read(LasPointCloud pointCloud, ChannelReader reader); default void setBlue(final int blue) { } void setClassification(byte classification); void setClassificationByte(byte classificationByte); void setEdgeOfFlightLine(boolean edgeOfFlightLine); default void setGpsTime(final double gpsTime) { } default void setGreen(final int green) { } void setIntensity(int intensity); void setKeyPoint(boolean keyPoint); void setNumberOfReturns(byte numberOfReturns); void setPointSourceID(int pointSourceID); default void setRed(final int red) { } void setReturnByte(byte returnByte); void setReturnNumber(byte returnNumber); void setScanAngleRank(byte scanAngleRank); void setScanDirectionFlag(boolean scanDirectionFlag); void setScannerChannel(byte scannerChannel); void setSynthetic(boolean synthetic); void setUserData(short userData); void setWithheld(boolean withheld); void setXYZ(int x, int y, int z); @Override default MapEx toMap() { final MapEx map = new LinkedHashMapEx(); return map; } void write(final EndianOutput out); }