/*
* Copyright 2010-2015 Institut Pasteur.
*
* This file is part of Icy.
*
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Icy is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Icy. If not, see <http://www.gnu.org/licenses/>.
*/
package icy.image.lut;
import icy.image.colormap.IcyColorMap;
import icy.image.colorspace.IcyColorSpace;
import icy.image.colorspace.IcyColorSpaceEvent;
import icy.image.colorspace.IcyColorSpaceEvent.IcyColorSpaceEventType;
import icy.image.colorspace.IcyColorSpaceListener;
import icy.image.lut.LUT.LUTChannel;
import icy.image.lut.LUTBandEvent.LUTBandEventType;
import icy.math.Scaler;
import icy.math.ScalerEvent;
import icy.math.ScalerEvent.ScalerEventType;
import icy.math.ScalerListener;
import javax.swing.event.EventListenerList;
/**
* @deprecated Use {@link LUTChannel} instead.
*/
@Deprecated
public class LUTBand implements ScalerListener, IcyColorSpaceListener
{
/**
* parent LUT
*/
private final LUT lut;
/**
* band index
*/
private final int component;
private boolean enabled;
/**
* cached
*/
private final Scaler scaler;
/**
* listeners
*/
private EventListenerList listeners;
public LUTBand(LUT lut, int component)
{
this.lut = lut;
this.component = component;
// add listener
getColorSpace().addListener(this);
// cached
scaler = lut.getScalers()[component];
scaler.addListener(this);
// default
enabled = true;
listeners = new EventListenerList();
}
@Override
protected void finalize() throws Throwable
{
// remove listener
getColorSpace().removeListener(this);
scaler.removeListener(this);
super.finalize();
}
public LUT getLut()
{
return lut;
}
public IcyColorSpace getColorSpace()
{
return lut.getColorSpace();
}
public IcyColorMap getColorMap()
{
return getColorSpace().getColorMap(component);
}
public void copyColorMap(IcyColorMap colorMap, boolean copyName, boolean copyAlpha)
{
getColorSpace().copyColormap(component, colorMap, copyName, copyAlpha);
}
public void copyColorMap(IcyColorMap colorMap)
{
copyColorMap(colorMap, true, true);
}
// private void adJustBounds()
// {
// // return default bounds ([0..255] / [-128..127]) for BYTE data type
// if ((!adjustByteToo) && (dataType.getJavaType() == DataType.BYTE))
// return dataType.getDefaultBounds();
// }
public Scaler getScaler()
{
return scaler;
}
public double getMin()
{
return scaler.getLeftIn();
}
public void setMin(double value)
{
scaler.setLeftIn(value);
}
public double getMax()
{
return scaler.getRightIn();
}
public void setMax(double value)
{
scaler.setRightIn(value);
}
public void setMinMax(double min, double max)
{
scaler.setLeftRightIn(min, max);
}
public double getMinBound()
{
return scaler.getAbsLeftIn();
}
public double getMaxBound()
{
return scaler.getAbsRightIn();
}
public void setMinBound(double value)
{
scaler.setAbsLeftIn(value);
}
public void setMaxBound(double value)
{
scaler.setAbsRightIn(value);
}
public boolean isEnabled()
{
return enabled;
}
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
}
/**
* @return the component
*/
public int getComponent()
{
return component;
}
/**
* Add a listener
*
* @param listener
*/
public void addListener(LUTBandListener listener)
{
listeners.add(LUTBandListener.class, listener);
}
/**
* Remove a listener
*
* @param listener
*/
public void removeListener(LUTBandListener listener)
{
listeners.remove(LUTBandListener.class, listener);
}
/**
* fire event
*/
public void fireEvent(LUTBandEvent e)
{
for (LUTBandListener listener : listeners.getListeners(LUTBandListener.class))
listener.lutBandChanged(e);
}
@Override
public void scalerChanged(ScalerEvent e)
{
if (e.getType() == ScalerEventType.CHANGED)
// notify LUTBand changed
fireEvent(new LUTBandEvent(this, LUTBandEventType.SCALER_CHANGED));
}
@Override
public void colorSpaceChanged(IcyColorSpaceEvent e)
{
if ((e.getType() == IcyColorSpaceEventType.CHANGED) && (e.getComponent() == component))
// notify LUTBand changed
fireEvent(new LUTBandEvent(this, LUTBandEventType.COLORMAP_CHANGED));
}
}