/*
 * $URL$
 * $Revision$
 * $LastChangedBy$
 * $LastChangedDate$
 *
 * Copyright (c) 2005 syseca AG, Switzerland
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of syseca AG. ("Confidential Information"). You shall not
 * disclose such Confidential Information and shall use it only
 * in accordance with the terms of the license agreement you
 * entered into with syseca AG.
 */
package ch.spherIC.resultlist;

import java.text.DecimalFormat;

import android.graphics.Bitmap;


/**
 * Exposure result class.
 */
public class Exposure {

    private int nbr;
    private String aperture;
    private String shutterSpeed;
    private double evStep;
    private double evRange;
    private Bitmap evStepBtmp;

    /**
     * Creates a new Exposure object.
     *
     * @param  nbr           Number
     * @param  aperture      Aperture value
     * @param  shutterSpeed  Shutter speed value
     * @param  evStep        EV step
     * @param  evRng         Measured and maybe corrected ev range
     * @param  evStepBtmp    Bitmap
     */
    public Exposure(int nbr, String aperture, String shutterSpeed, double evStep, double evRng, Bitmap evStepBtmp) {
        super();
        this.nbr = nbr;
        this.aperture = aperture;
        this.shutterSpeed = shutterSpeed;
        this.evStep = evStep;
        this.evRange = evRng;
        this.evStepBtmp = evStepBtmp;
    }

    /**
     * Gibt den Wert des Feldes <code>nbr</code> zurück.
     *
     * @return  Wert des Feldes <code>nbr</code>.
     *
     * @see     #nbr
     */
    public int getNbr() {
        return this.nbr;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>nbr</code>.
     *
     * @param  nbr  Neuer Wert für das Feld <code>nbr</code>.
     *
     * @see    #nbr
     */
    public void setNbr(int nbr) {
        this.nbr = nbr;
    }

    /**
     * Gibt den Wert des Feldes <code>aperture</code> zurück.
     *
     * @return  Wert des Feldes <code>aperture</code>.
     *
     * @see     #aperture
     */
    public String getAperture() {
        return this.aperture;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>aperture</code>.
     *
     * @param  aperture  Neuer Wert für das Feld <code>aperture</code>.
     *
     * @see    #aperture
     */
    public void setAperture(String aperture) {
        this.aperture = aperture;
    }

    /**
     * Gibt den Wert des Feldes <code>shutterSpeed</code> zurück.
     *
     * @return  Wert des Feldes <code>shutterSpeed</code>.
     *
     * @see     #shutterSpeed
     */
    public String getShutterSpeed() {
        return this.shutterSpeed;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>shutterSpeed</code>.
     *
     * @param  shutterSpeed  Neuer Wert für das Feld <code>shutterSpeed</code>.
     *
     * @see    #shutterSpeed
     */
    public void setShutterSpeed(String shutterSpeed) {
        this.shutterSpeed = shutterSpeed;
    }

    /**
     * Gibt den Wert des Feldes <code>evStep</code> zurück.
     *
     * @return  Wert des Feldes <code>evStep</code>.
     *
     * @see     #evStep
     */
    public double getEvStep() {
        return this.evStep;
    }

    /**
     * Gibt den Wert des Feldes <code>evStep</code> als String der Form +2.0 oder -1.0 oder ±0.0 zurück.
     *
     * @return  Wert des Feldes <code>evStep</code> als String
     */
    public String getEvStepAsString() {

        String res = "";
        String prefix = "+";

        if (this.evStep == 0.0f) {
            prefix = "±";
        } else if (this.evStep < 0) {
            prefix = "";
        }
        res = prefix + new DecimalFormat("0.0").format(getEvStep());

        return res;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>evStep</code>.
     *
     * @param  evStep  Neuer Wert für das Feld <code>evStep</code>.
     *
     * @see    #evStep
     */
    public void setEvStep(double evStep) {
        this.evStep = evStep;
    }

    /**
     * Gibt den Wert des Feldes <code>evStepRange</code> zurück.
     *
     * @return  Wert des Feldes <code>evStepRange</code>.
     *
     * @see     #evRange
     */
    public double getEvStepRange() {
        return this.evRange;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>evStepRange</code>.
     *
     * @param  evStepRange  Neuer Wert für das Feld <code>evStepRange</code>.
     *
     * @see    #evRange
     */
    public void setEvStepRange(double evStepRange) {
        this.evRange = evStepRange;
    }

    /**
     * Gibt den Wert des Feldes <code>evStepBtmp</code> zurück.
     *
     * @return  Wert des Feldes <code>evStepBtmp</code>.
     *
     * @see     #evStepBtmp
     */
    public Bitmap getEvStepBtmp() {
        return this.evStepBtmp;
    }

    /**
     * Setzt einen neuen Wert für das Feld <code>evStepBtmp</code>.
     *
     * @param  evStepBtmp  Neuer Wert für das Feld <code>evStepBtmp</code>.
     *
     * @see    #evStepBtmp
     */
    public void setEvStepBtmp(Bitmap evStepBtmp) {
        this.evStepBtmp = evStepBtmp;
    }


}
