package hep.aida.ref.plotter;

import hep.aida.IBrushStyle;
import hep.aida.ref.plotter.BaseStyle;
import hep.aida.ref.plotter.Style;

/**
 *
 * @author The FreeHEP team @ SLAC.
 *
 */
abstract class BrushStyle extends BaseStyle implements IBrushStyle {
    
    private static String colorPar   = Style.BRUSH_COLOR;
    private static String opacityPar = Style.BRUSH_OPACITY;
    
    protected void initializeBaseStyle() {
        addParameter(colorPar);
        addParameter(opacityPar, "-1");
        initializeBrushStyle();
    }
    
    protected abstract void initializeBrushStyle();
    
    public String[] availableColors() {
        return availableParameterOptions( colorPar );
    }   
    
    public String color() {
        return parameterValue( colorPar );
    }
    
    /**
     * returns -1 if it not set
     */
    public double opacity() {
        String opacityStr = parameterValue( opacityPar );
        if ( opacityStr == null ) opacityStr = parameterDefaultValue(opacityPar);
        return Double.parseDouble(opacityStr);
    }
    
    public boolean setColor(String color) {
        return setParameter( colorPar, color );
    }
    
    public boolean setOpacity(double opacity) {
        if ( opacity < 0 || opacity > 1 ) return setParameter(opacityPar);
        return setParameter( opacityPar, String.valueOf( opacity ) );
    }    
}
