package hep.aida.ref.plotter;

import hep.aida.ITextStyle;
import hep.aida.ref.plotter.BrushStyle;
import hep.aida.ref.plotter.Style;

/**
 *
 * @author The FreeHEP team @ SLAC.
 *
 */
public class TextStyle extends BrushStyle implements ITextStyle {
    
    private static String textFontPar = Style.TEXT_FONT;
    private static String textFontSizePar = Style.TEXT_FONT_SIZE;
    private static String textBoldPar = Style.TEXT_BOLD;
    private static String textItalicPar = Style.TEXT_ITALIC;
    private static String textUnderlinedPar = Style.TEXT_UNDERLINED;
    
    protected void initializeBrushStyle() {
        addParameter( textFontPar, "SansSerif" );
        addParameter( textFontSizePar, "12" );
        addParameter( textBoldPar, "false" );
        addParameter( textItalicPar, "false" );
        addParameter( textUnderlinedPar, "false" );
    }
    
    public String[] availableFonts() {
        return availableParameterOptions( textFontPar );
    }
    
    public String font() {
        return parameterValue( textFontPar );
    }
    
    public double fontSize() {
        String fontSizeStr = parameterValue( textFontSizePar );
        if ( fontSizeStr == null ) return -1;
        return Double.parseDouble( fontSizeStr );
    }
    
    public boolean isBold() {
        String isBoldStr = parameterValue(textBoldPar);
        if ( isBoldStr == null ) isBoldStr = parameterDefaultValue( textBoldPar );
        return Boolean.valueOf( isBoldStr ).booleanValue();
    }
    
    public boolean isItalic() {
        String isItalicStr = parameterValue(textItalicPar);
        if ( isItalicStr == null ) isItalicStr = parameterDefaultValue( textItalicPar );
        return Boolean.valueOf( isItalicStr ).booleanValue();
    }
    
    public boolean isUnderlined() {
        String isUnderlinedStr = parameterValue(textUnderlinedPar);
        if ( isUnderlinedStr == null ) isUnderlinedStr = parameterDefaultValue( textUnderlinedPar );
        return Boolean.valueOf( isUnderlinedStr ).booleanValue();
    }
    
    public boolean setBold() {
        return setParameter(textBoldPar);
    }
    
    public boolean setBold(boolean isBold) {
        return setParameter(textBoldPar, String.valueOf( isBold ));
    }
    
    public boolean setFont(String font) {
        return setParameter(textFontPar, font);
    }
    
    public boolean setFontSize(double fontSize) {
        return setParameter(textFontSizePar, String.valueOf( fontSize ));
    }
    
    public boolean setItalic() {
        return setParameter(textItalicPar);
    }
    
    public boolean setItalic(boolean isItalic) {
        return setParameter(textItalicPar, String.valueOf(isItalic));
    }
    
    public boolean setUnderlined() {
        return setParameter(textUnderlinedPar);
    }
    
    public boolean setUnderlined(boolean isUnderlined) {
        return setParameter(textUnderlinedPar, String.valueOf(isUnderlined));
    }
}
