blob: 6bf92bea2df38fbbf10ce566404dc3dae889daf9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.sound.sampled;
import org.apache.harmony.sound.internal.nls.Messages;
public abstract class FloatControl extends Control {
public static class Type extends Control.Type {
public static final Type MASTER_GAIN = new Type("Master Gain"); //$NON-NLS-1$
public static final Type AUX_SEND = new Type("AUX Send"); //$NON-NLS-1$
public static final Type AUX_RETURN = new Type("AUX Return"); //$NON-NLS-1$
public static final Type REVERB_SEND = new Type("Reverb Send"); //$NON-NLS-1$
public static final Type REVERB_RETURN = new Type("Reverb Return"); //$NON-NLS-1$
public static final Type VOLUME = new Type("Volume"); //$NON-NLS-1$
public static final Type PAN = new Type("Pan"); //$NON-NLS-1$
public static final Type BALANCE = new Type("Balance"); //$NON-NLS-1$
public static final Type SAMPLE_RATE = new Type("Sample Rate"); //$NON-NLS-1$
protected Type(String name) {
super(name);
}
}
private float value;
private float maximum;
private float minimum;
private String units;
private String minLabel;
private String midLabel;
private String maxLabel;
private float precision;
private int updatePeriod;
protected FloatControl(FloatControl.Type type, float minimum,
float maximum, float precision, int updatePeriod,
float initialValue, String units, String minLabel, String midLabel,
String maxLabel) {
super(type);
this.maximum = maximum;
this.maxLabel = maxLabel;
this.midLabel = midLabel;
this.minLabel = minLabel;
this.minimum = minimum;
this.precision = precision;
this.units = units;
this.updatePeriod = updatePeriod;
this.value = initialValue;
}
protected FloatControl(FloatControl.Type type, float minimum,
float maximum, float precision, int updatePeriod,
float initialValue, String units) {
this(type, minimum, maximum, precision, updatePeriod, initialValue,
units, "", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
public void setValue(float newValue) {
if (newValue > maximum || newValue < minimum) {
// sound.0F=value does not fall within the allowable range
throw new IllegalArgumentException(Messages.getString("sound.0F")); //$NON-NLS-1$
}
this.value = newValue;
}
public float getValue() {
return this.value;
}
public float getMaximum() {
return this.maximum;
}
public float getMinimum() {
return this.minimum;
}
public String getUnits() {
return this.units;
}
public String getMinLabel() {
return this.minLabel;
}
public String getMidLabel() {
return this.midLabel;
}
public String getMaxLabel() {
return this.maxLabel;
}
public float getPrecision() {
return this.precision;
}
public int getUpdatePeriod() {
return this.updatePeriod;
}
public void shift(float from, float to, int microseconds) {
setValue(to);
}
public String toString() {
return getType() + " with current value: "+ value + " " + units //$NON-NLS-1$ //$NON-NLS-2$
+ " (range: " + minimum + " - " + maximum + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}