// **********************************************************************
//
// <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/image/ImageServerUtils.java,v $
// $RCSfile: ImageServerUtils.java,v $
// $Revision: 1.10 $
// $Date: 2006/02/16 16:22:49 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.image;
import java.awt.Color;
import java.awt.Paint;
import java.awt.geom.Point2D;
import java.util.Properties;
import com.bbn.openmap.omGraphics.OMColor;
import com.bbn.openmap.proj.Proj;
import com.bbn.openmap.proj.Projection;
import com.bbn.openmap.proj.ProjectionFactory;
import com.bbn.openmap.util.Debug;
import com.bbn.openmap.util.PropUtils;
/**
* A class to contain convenience functions for parsing web image requests.
*/
public class ImageServerUtils implements ImageServerConstants {
/**
* Create an OpenMap projection from the values stored in a Properties
* object. The properties inside should be parsed out from a map request,
* with the keywords being those defined in the ImageServerConstants
* interface. Assumes that the shared instance of the ProjectionFactory has
* been initialized with the expected Projections.
*/
public static Proj createOMProjection(Properties props,
Projection defaultProj) {
float scale = PropUtils.floatFromProperties(props,
SCALE,
defaultProj.getScale());
int height = PropUtils.intFromProperties(props,
HEIGHT,
defaultProj.getHeight());
int width = PropUtils.intFromProperties(props,
WIDTH,
defaultProj.getWidth());
Point2D llp = defaultProj.getCenter();
float longitude = PropUtils.floatFromProperties(props,
LON,
(float) llp.getX());
float latitude = PropUtils.floatFromProperties(props,
LAT,
(float) llp.getY());
Class<? extends Projection> projClass = null;
String projType = props.getProperty(PROJTYPE);
ProjectionFactory projFactory = ProjectionFactory.loadDefaultProjections();
if (projType != null) {
projClass = projFactory.getProjClassForName(projType);
}
if (projClass == null) {
projClass = defaultProj.getClass();
}
if (Debug.debugging("imageserver")) {
Debug.output("ImageServerUtils.createOMProjection: projection "
+ projClass.getName() + ", with HEIGHT = " + height
+ ", WIDTH = " + width + ", lat = " + latitude + ", lon = "
+ longitude + ", scale = " + scale);
}
Proj proj = (Proj) projFactory.makeProjection(projClass,
new Point2D.Float(longitude, latitude),
scale,
width,
height);
return (Proj) proj;
}
/**
* Create a Color object from the properties TRANSPARENT and BGCOLOR
* properties. Default color returned is white.
*
* @param props the Properties containing background color information.
* @return Color object for background.
*/
public static Color getBackground(Properties props) {
return (Color) getBackground(props, Color.white);
}
/**
* Create a Color object from the properties TRANSPARENT and BGCOLOR
* properties. Default color returned is white.
*
* @param props the Properties containing background color information.
* @param defPaint the default Paint to use in case the color isn't defined
* in the properties.
* @return Color object for background.
*/
public static Paint getBackground(Properties props, Paint defPaint) {
boolean transparent = PropUtils.booleanFromProperties(props,
TRANSPARENT,
false);
Paint backgroundColor = PropUtils.parseColorFromProperties(props,
BGCOLOR,
defPaint);
if (backgroundColor == null) {
backgroundColor = Color.white;
}
if (transparent) {
if (backgroundColor instanceof Color) {
Color bgc = (Color) backgroundColor;
backgroundColor = new Color(bgc.getRed(), bgc.getGreen(), bgc.getBlue(), 0x00);
} else {
backgroundColor = OMColor.clear;
}
}
if (Debug.debugging("imageserver")) {
Debug.output("ImageServerUtils.createOMProjection: projection color: "
+ (backgroundColor instanceof Color ? Integer.toHexString(((Color) backgroundColor).getRGB())
: backgroundColor.toString())
+ ", transparent("
+ transparent + ")");
}
return backgroundColor;
}
}