/**
 * 
 */
package plugins.kernel.roi.descriptor.property;

import icy.roi.ROI;
import icy.roi.ROIDescriptor;
import icy.roi.ROIEvent;
import icy.roi.ROIEvent.ROIEventType;
import icy.sequence.Sequence;
import icy.util.StringUtil;

import java.awt.Image;

/**
 * Icon descriptor class (see {@link ROIDescriptor}).<br>
 * Return the ROI icon a 20 pixels side icon
 * 
 * @author Stephane
 */
public class ROIIconDescriptor extends ROIDescriptor
{
    public static final String ID = "Icon";

    public ROIIconDescriptor()
    {
        super(ID, "Icon", Image.class);
    }

    @Override
    public String getDescription()
    {
        return "Icon";
    }

    @Override
    public boolean needRecompute(ROIEvent change)
    {
        return (change.getType() == ROIEventType.PROPERTY_CHANGED)
                && (StringUtil.equals(change.getPropertyName(), ROI.PROPERTY_ICON));
    }

    @Override
    public Object compute(ROI roi, Sequence sequence) throws UnsupportedOperationException
    {
        return getIcon(roi);
    }

    /**
     * Returns ROI icon
     */
    public static Image getIcon(ROI roi)
    {
        if (roi == null)
            return null;

        // return ImageUtil.getColorImageFromAlphaImage(roi.getIcon(), ColorUtil.mix(Color.gray, roi.getColor()));
        return roi.getIcon();
    }
}