001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.imagery.street_level;
003
004/**
005 * Projections for street level imagery
006 * @author Taylor Smock
007 * @since 18246
008 */
009public enum Projections {
010    /** This is the image type from most cameras */
011    PERSPECTIVE(1),
012    /** This will probably not be seen often in JOSM, but someone might have a synchronized pair of fisheye camers */
013    FISHEYE(1),
014    /** 360 imagery using the equirectangular method (single image) */
015    EQUIRECTANGULAR(1),
016    /** 360 imagery using a cube map */
017    CUBE_MAP(6),
018    // Additional known projections: Equi-Angular Cubemap (EAC) from Google and the Pyramid format from Facebook
019    // Neither are particularly well-documented at this point, although I believe the Pyramid format uses 30 images.
020    /** In the event that we have no clue what the projection should be. Defaults to perspective viewing. */
021    UNKNOWN(Integer.MAX_VALUE);
022
023    private final int expectedImages;
024
025    /**
026     * Create a new Projections enum
027     * @param expectedImages The maximum images for the projection type
028     */
029    Projections(final int expectedImages) {
030        this.expectedImages = expectedImages;
031    }
032
033    /**
034     * Get the maximum number of expected images for the projection
035     * @return The number of expected images
036     */
037    public int getExpectedImages() {
038        return this.expectedImages;
039    }
040}