package org.osm2world.console;
import java.io.File;
import java.util.List;
import org.osm2world.console.CLIArgumentsUtil.InputMode;
import org.osm2world.core.osm.creation.OverpassReader;
import org.osm2world.core.target.common.rendering.OrthoTilesUtil.CardinalDirection;
import org.osm2world.core.target.common.rendering.TileNumber;
import uk.co.flamingpenguin.jewel.cli.Option;
public interface CLIArguments {
public static final String OUTPUT_PATTERN = "(.*)\\.(?:obj|pov|png|ppm|gd)";
/* input and output files */
@Option(description="the .osm input file", shortName="i")
File getInput();
boolean isInput();
@Option(description="output files", shortName="o", pattern=OUTPUT_PATTERN)
List<File> getOutput();
boolean isOutput();
@Option(description="properties file with configuration parameters")
File getConfig();
boolean isConfig();
@Option(description="output size in pixels", pattern=Resolution.PATTERN,
defaultValue="800,600")
Resolution getResolution();
boolean isResolution();
/* other input options */
@Option(description="input mode", longName="input_mode", defaultValue="FILE", pattern="FILE|OVERPASS")
InputMode getInputMode();
boolean isInputMode();
@Option(description="lat,lon pairs defining an input bounding box (does not work with files)",
longName="input_bbox", pattern=LatLonEle.PATTERN)
List<LatLonEle> getInputBoundingBox();
boolean isInputBoundingBox();
@Option(description="overpass query string", longName="input_query")
String getInputQuery();
boolean isInputQuery();
@Option(description="overpass instance to use", longName="overpass_url", defaultValue=OverpassReader.DEFAULT_API_URL)
String getOverpassURL();
boolean isOverpassURL();
/* camera */
@Option(description="downwards angle of orthographic view in degrees",
longName="oview.angle", defaultValue="30")
double getOviewAngle();
boolean isOviewAngle();
@Option(description="direction from which the orthographic view is rendered",
pattern="[NESW]", longName="oview.from", defaultValue="S")
CardinalDirection getOviewFrom();
boolean isOviewFrom();
@Option(description="lat,lon pairs defining a bounding box for orthographic view",
pattern=LatLonEle.PATTERN, longName="oview.bbox")
List<LatLonEle> getOviewBoundingBox();
boolean isOviewBoundingBox();
@Option(description="zoom,x,y triples of tiles defining a bounding box for orthographic view",
pattern=TileNumber.PATTERN, longName="oview.tiles")
List<TileNumber> getOviewTiles();
boolean isOviewTiles();
@Option(description="lat,lon,ele of camera position for perspective view",
pattern=LatLonEle.PATTERN_WITH_ELE, longName="pview.pos")
LatLonEle getPviewPos();
boolean isPviewPos();
@Option(description="lat,lon,ele of camera look-at for perspective view",
pattern=LatLonEle.PATTERN_WITH_ELE, longName="pview.lookAt")
LatLonEle getPviewLookat();
boolean isPviewLookat();
@Option(description="vertical field of view angle for perspective view, in degrees",
longName="pview.fovy", defaultValue="45")
double getPviewFovy();
boolean isPviewFovy();
@Option(description="aspect ratio (width / height) for perspective view",
longName="pview.aspect")
double getPviewAspect();
boolean isPviewAspect();
/* logging */
@Option(description="writes execution times to the command line")
boolean getPerformancePrint();
@Option(description="appends a line with execution times to a file")
File getPerformanceTable();
boolean isPerformanceTable();
/* other parameters */
@Option(description="start the graphical user interface")
boolean getGui();
@Option(helpRequest=true, description="show this help", shortName="?")
boolean getHelp();
@Option(description="print software version and exit")
boolean getVersion();
/* parameter files */
@Option(description="a file containing one set of parameters per line")
File getParameterFile();
boolean isParameterFile();
}