001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer.geoimage.viewers.projections;
003
004import java.awt.Component;
005import java.awt.Graphics;
006import java.awt.Image;
007import java.awt.Rectangle;
008import java.awt.event.ComponentAdapter;
009import java.awt.image.BufferedImage;
010import java.util.EnumSet;
011import java.util.Set;
012
013import org.openstreetmap.josm.data.imagery.street_level.Projections;
014import org.openstreetmap.josm.gui.layer.geoimage.ImageDisplay;
015
016/**
017 * The default perspective image viewer class.
018 * This also handles (by default) unknown projections.
019 * @since 18246
020 */
021public class Perspective extends ComponentAdapter implements IImageViewer {
022
023    @Override
024    public Set<Projections> getSupportedProjections() {
025        return EnumSet.of(Projections.PERSPECTIVE);
026    }
027
028    @Override
029    public void paintImage(Graphics g, BufferedImage image, Rectangle target, Rectangle r) {
030        g.drawImage(image,
031                target.x, target.y, target.x + target.width, target.y + target.height,
032                r.x, r.y, r.x + r.width, r.y + r.height, null);
033    }
034
035    @Override
036    public ImageDisplay.VisRect getDefaultVisibleRectangle(Component component, Image image) {
037        return new ImageDisplay.VisRect(0, 0, image.getWidth(null), image.getHeight(null));
038    }
039}