001// License: GPL. For details, see Readme.txt file. 002package org.openstreetmap.gui.jmapviewer; 003 004/** 005 * This is a rectangular range of tiles. 006 */ 007public class TileRange { 008 protected int minX; 009 protected int maxX; 010 protected int minY; 011 protected int maxY; 012 protected int zoom; 013 014 protected TileRange() { 015 } 016 017 /** 018 * Constructs a new {@code TileRange}. 019 * @param t1 first tile 020 * @param t2 second tile 021 * @param zoom zoom level 022 */ 023 public TileRange(TileXY t1, TileXY t2, int zoom) { 024 minX = (int) Math.floor(Math.min(t1.getX(), t2.getX())); 025 minY = (int) Math.floor(Math.min(t1.getY(), t2.getY())); 026 maxX = (int) Math.ceil(Math.max(t1.getX(), t2.getX())); 027 maxY = (int) Math.ceil(Math.max(t1.getY(), t2.getY())); 028 this.zoom = zoom; 029 } 030 031 /** 032 * Constructs a new {@code TileRange}. 033 * @param r existing tile range to copy 034 */ 035 public TileRange(TileRange r) { 036 minX = r.minX; 037 minY = r.minY; 038 maxX = r.maxX; 039 maxY = r.maxY; 040 zoom = r.zoom; 041 } 042 043 protected double tilesSpanned() { 044 return Math.sqrt(1.0 * this.size()); 045 } 046 047 /** 048 * Returns size 049 * @return size 050 */ 051 public int size() { 052 int xSpan = maxX - minX + 1; 053 int ySpan = maxY - minY + 1; 054 return xSpan * ySpan; 055 } 056} 057