package de.arxsilex.maptools.converter.core

data class ExportSelection(
    val mapsforgeMap: Boolean = true,
    val mapsforgePoi: Boolean = true,
    val filteredPbf: Boolean = false,
    val elevationData: Boolean = false,
    val elevationOutputFormat: ElevationOutputFormat = ElevationOutputFormat.GEOTIFF,
    val poiSchemaVersion: PoiSchemaVersion = PoiSchemaVersion.V4,
    val mapFormatVersion: MapFormatVersion = MapFormatVersion.V5,
) {
    val hasOutput: Boolean
        get() = mapsforgeMap || mapsforgePoi || filteredPbf || elevationData
}

enum class ElevationOutputFormat(
    val displayName: String,
    val extension: String,
    val tiled: Boolean,
) {
    GEOTIFF("DEM GeoTIFF", ".tif", false),
    ESRI_ASCII_GRID("ESRI ASCII Grid", ".asc", false),
    SRTM_HGT("SRTM HGT", ".hgt", true),
    DTED("DTED", ".dt1", true),
}

enum class MapFormatVersion(val metadataVersion: Int) {
    V4(4),
    V5(5),
}

enum class PoiSchemaVersion(val metadataVersion: Int) {
    V3(3),
    V4(4),
}
