// **********************************************************************
//
// <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/corba/com/bbn/openmap/layer/specialist/JRaster.java,v
// $
// $RCSfile: JRaster.java,v $
// $Revision: 1.4 $
// $Date: 2005/08/09 20:59:19 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.layer.specialist;
import java.awt.Color;
import java.io.Serializable;
import com.bbn.openmap.corba.CSpecialist.LLPoint;
import com.bbn.openmap.corba.CSpecialist.XYPoint;
import com.bbn.openmap.corba.CSpecialist.RasterPackage.ERaster;
import com.bbn.openmap.omGraphics.OMRaster;
import com.bbn.openmap.util.ColorFactory;
public class JRaster extends OMRaster implements Serializable, JObjectHolder {
protected transient com.bbn.openmap.corba.CSpecialist.EComp object = null;
protected int x_hot, y_hot;//UNUSED
/** Constructor */
public JRaster(ERaster eraster) {
super();
JGraphic.fillOMGraphicParams(this, eraster.egraphic);
setColorModel(COLORMODEL_INDEXED);
x = eraster.p1.x;
y = eraster.p1.y;
lat = eraster.ll1.lat;
lon = eraster.ll1.lon;
height = eraster.height;
width = eraster.width;
bits = eraster.pixels;
// Transparency HACK for Java RPF specialist...
transparent = eraster.transparent & 0xff;
// scaling HACK!
if ((eraster.transparent & 0xff00) != 0) {
scaleTo(eraster.x_hot, eraster.y_hot, OMRaster.FAST_SCALING);
} else {
x_hot = eraster.x_hot;
y_hot = eraster.y_hot;
}
// save the tmp colortable
Color[] tmpColors = new Color[eraster.colorsTotal];
for (int i = 0; i < eraster.colorsTotal; i++) {
tmpColors[i] = ColorFactory.createColor(eraster.ct[i].red,
eraster.ct[i].green,
eraster.ct[i].blue,
eraster.ct[i].open,
true);
}
setColors(tmpColors);
setNeedToRegenerate(true);
}
public void setObject(com.bbn.openmap.corba.CSpecialist.EComp aObject) {
object = aObject;
}
public com.bbn.openmap.corba.CSpecialist.EComp getObject() {
return object;
}
public void update(
com.bbn.openmap.corba.CSpecialist.GraphicPackage.GF_update update) {
JGraphic.update((JObjectHolder) this, update);
}
public void update(
com.bbn.openmap.corba.CSpecialist.RasterPackage.RASF_update update) {
// do the updates, but don't rerender just yet
setNeedToRegenerate(true); // flag dirty
switch (update.discriminator().value()) {
// set fixed point
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_ll1:
LLPoint ll = update.ll1();
lat = ll.lat;
lon = ll.lon;
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_p1:
XYPoint pt = update.p1();
x = pt.x;
y = pt.y;
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_width:
width = update.width();
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_height:
height = update.height();
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_x_hot:
x_hot = update.x_hot();
needToRegenerate = false;
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_y_hot:
y_hot = update.y_hot();
needToRegenerate = false;
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_pixels:
bits = update.pixels();
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_colorsTotal:
// No longer needed!
// colorsTotal = update.colorsTotal();
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_ct:
com.bbn.openmap.corba.CSpecialist.CTEntry[] ct = update.ct();
Color[] tmpColors = new Color[ct.length];
for (int i = 0; i < ct.length; i++) {
tmpColors[i] = ColorFactory.createColor(ct[i].red,
ct[i].green,
ct[i].blue,
ct[i].open,
true);
}
setColors(tmpColors);
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_transparent:
transparent = update.transparent();
break;
case com.bbn.openmap.corba.CSpecialist.RasterPackage.settableFields._RASF_openColors:
default:
System.err.println("JRaster.update: invalid raster update");
setNeedToRegenerate(false);
break;
}
}
}