/* * 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$ } }