001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package javax.sound.sampled;
019:
020: import org.apache.harmony.sound.internal.nls.Messages;
021:
022: public abstract class FloatControl extends Control {
023:
024: public static class Type extends Control.Type {
025: public static final Type MASTER_GAIN = new Type("Master Gain"); //$NON-NLS-1$
026:
027: public static final Type AUX_SEND = new Type("AUX Send"); //$NON-NLS-1$
028:
029: public static final Type AUX_RETURN = new Type("AUX Return"); //$NON-NLS-1$
030:
031: public static final Type REVERB_SEND = new Type("Reverb Send"); //$NON-NLS-1$
032:
033: public static final Type REVERB_RETURN = new Type(
034: "Reverb Return"); //$NON-NLS-1$
035:
036: public static final Type VOLUME = new Type("Volume"); //$NON-NLS-1$
037:
038: public static final Type PAN = new Type("Pan"); //$NON-NLS-1$
039:
040: public static final Type BALANCE = new Type("Balance"); //$NON-NLS-1$
041:
042: public static final Type SAMPLE_RATE = new Type("Sample Rate"); //$NON-NLS-1$
043:
044: protected Type(String name) {
045: super (name);
046: }
047: }
048:
049: private float value;
050:
051: private float maximum;
052:
053: private float minimum;
054:
055: private String units;
056:
057: private String minLabel;
058:
059: private String midLabel;
060:
061: private String maxLabel;
062:
063: private float precision;
064:
065: private int updatePeriod;
066:
067: protected FloatControl(FloatControl.Type type, float minimum,
068: float maximum, float precision, int updatePeriod,
069: float initialValue, String units, String minLabel,
070: String midLabel, String maxLabel) {
071: super (type);
072: this .maximum = maximum;
073: this .maxLabel = maxLabel;
074: this .midLabel = midLabel;
075: this .minLabel = minLabel;
076: this .minimum = minimum;
077: this .precision = precision;
078: this .units = units;
079: this .updatePeriod = updatePeriod;
080: this .value = initialValue;
081: }
082:
083: protected FloatControl(FloatControl.Type type, float minimum,
084: float maximum, float precision, int updatePeriod,
085: float initialValue, String units) {
086: this (type, minimum, maximum, precision, updatePeriod,
087: initialValue, units, "", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
088: }
089:
090: public void setValue(float newValue) {
091: if (newValue > maximum || newValue < minimum) {
092: // sound.0F=value does not fall within the allowable range
093: throw new IllegalArgumentException(Messages
094: .getString("sound.0F")); //$NON-NLS-1$
095: }
096: this .value = newValue;
097: }
098:
099: public float getValue() {
100: return this .value;
101: }
102:
103: public float getMaximum() {
104: return this .maximum;
105: }
106:
107: public float getMinimum() {
108: return this .minimum;
109: }
110:
111: public String getUnits() {
112: return this .units;
113: }
114:
115: public String getMinLabel() {
116: return this .minLabel;
117: }
118:
119: public String getMidLabel() {
120: return this .midLabel;
121: }
122:
123: public String getMaxLabel() {
124: return this .maxLabel;
125: }
126:
127: public float getPrecision() {
128: return this .precision;
129: }
130:
131: public int getUpdatePeriod() {
132: return this .updatePeriod;
133: }
134:
135: public void shift(float from, float to, int microseconds) {
136: setValue(to);
137: }
138:
139: public String toString() {
140: return getType()
141: + " with current value: " + value + " " + units //$NON-NLS-1$ //$NON-NLS-2$
142: + " (range: " + minimum + " - " + maximum + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
143: }
144:
145: }
|