////////////////////////////////////////////////////////////////////////////////
// Copyright 2013 Michael Schmalle - Teoti Graphix, LLC
//
// Licensed 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
//
// Author: Michael Schmalle, Principal Architect
// mschmalle at teotigraphix dot com
////////////////////////////////////////////////////////////////////////////////
package com.teotigraphix.caustk.tone;
import com.teotigraphix.caustk.core.ICausticEngine;
import com.teotigraphix.caustk.core.IRestore;
import com.teotigraphix.caustk.utils.ExceptionUtils;
public abstract class ToneComponent implements IRestore {
//----------------------------------
// tone
//----------------------------------
private transient Tone tone;
public Tone getTone() {
return tone;
}
public void setTone(Tone value) {
tone = value;
}
protected final int getToneIndex() {
return tone.getIndex();
}
protected final ICausticEngine getEngine() {
return tone.getEngine();
}
//--------------------------------------------------------------------------
// Constructor
//--------------------------------------------------------------------------
public ToneComponent() {
}
//--------------------------------------------------------------------------
// ISerialize API :: Methods
//--------------------------------------------------------------------------
public String serialize() {
return tone.getController().getSerializeService().toString(this);
}
/**
* Returns a new {@link IllegalArgumentException} for an error in OSC range.
*
* @param control The OSC control involved.
* @param range The accepted range.
* @param value The value that is throwing the range exception.
* @return A new {@link IllegalArgumentException}.
*/
protected final RuntimeException newRangeException(String control, String range, Object value) {
return ExceptionUtils.newRangeException(control, range, value);
}
}