// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/rpf/RpfFrameProvider.java,v $ // $RCSfile: RpfFrameProvider.java,v $ // $Revision: 1.4 $ // $Date: 2005/05/23 20:08:28 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.layer.rpf; import java.util.List; import com.bbn.openmap.proj.Projection; /** * The RpfFrameProvider describes an interface to an object that can provide * information about RPF coverage over a certain area, and also retrieve data * from the RPF frame files. */ public interface RpfFrameProvider { /** * Returns true if the view attributes should be set if they change at the * RpfCacheHandler/RpfCacheManager. If the source of the data is a server, * this should return yes. If the source is local, the view attributes will * be a shared object and updates are not necessary. */ public boolean needViewAttributeUpdates(); /** * Set the RpfViewAttribute object parameters, which describes a lot about * what you'll be asking for later. */ public void setViewAttributes(RpfViewAttributes rva); /** * Given a projection that describes a map or geographical area, return * RpfCoverageBoxes that let you know how to locate and ask for * RpfSubframes. */ public List<RpfCoverageBox> getCoverage(double ullat, double ullon, double lrlat, double lrlon, Projection p); /** * Given a projection that describes a map or geographical area, return * RpfCoverageBoxes that let you know what bounding boxes of data are * available. * * @param ullat * upper lat * @param ullon * left lon * @param lrlat * lower lat * @param lrlon * right lon * @param chartSeries * can be null to see all/any. */ public List<RpfCoverageBox> getCatalogCoverage(double ullat, double ullon, double lrlat, double lrlon, Projection p, String chartSeries); /** * Given an area and a two-letter chart series code, find the percentage of * coverage on the map that that chart series can offer. If you want * specific coverage information, use the getCatalogCoverage call. * * @see #getCatalogCoverage(double, double, double, double, Projection, String) */ public float getCalculatedCoverage(double ullat, double ullon, double lrlat, double lrlon, Projection p, String chartSeries); /** * Given the indexes to a certain RpfTocEntry within a certain A.TOC, find * the frame/subframe data, decompress it, and return image pixels. The * tocNumber and entryNumber are given within the RpfCoverageBox received * from a getCoverage call. * * @param tocNumber * the toc id for a RpfTocHandler for a particular frame * provider. * @param entryNumber * the RpfTocEntry id for a RpfTocHandler for a particular frame * provider. * @param x * the horizontal subframe index, from the left side of a * boundary rectangle of the entry. * @param y * the vertical subframe index, from the top side of a boundary * rectangle of the entry. * @see #getCoverage(double, double, double, double, Projection) * @return integer pixel data. */ public int[] getSubframeData(int tocNumber, int entryNumber, int x, int y); public RpfIndexedImageData getRawSubframeData(int tocNumber, int entryNumber, int x, int y); /** * Given the indexes to a certain RpfTocEntry within a certain A.TOC, find * the frame and return the attribute information. The tocNumber and * entryNumber are given within the RpfCoverageBox received from a * getCoverage call. * * @param tocNumber * the toc id for a RpfTocHandler for a particular frame * provider. * @param entryNumber * the RpfTocEntry id for a RpfTocHandler for a particular frame * provider. * @param x * the horizontal subframe index, from the left side of a * boundary rectangle of the entry. * @param y * the vertical subframe index, from the top side of a boundary * rectangle of the entry. * @see #getCoverage(double, double, double, double, Projection) * @return string. */ public String getSubframeAttributes(int tocNumber, int entryNumber, int x, int y); }