/* This file is part of the source code for 3D-XplorMath-J, Version 1.0 (January 2008). * Copyright (c) 2008 The 3D-XplorMath Consortium (http://3d-xplormath.org). * This source code is released under a BSD License, which allows redistribution * in source and binary form, with or without modification, provided copyright * and license information are included, and with no warranty or guarantee of * any kind. For details, see http://3d-xplormath.org/j/source/BSDLicense.txt */ package vmm.core; /** * This interface is implemented by "Animateable" Parameters such as {@link vmm.core.RealParamAnimateable}. * It includes the setFractionComplete method, which is used for morphing. It * also includes several methods for getting and setting the start and end values for the * animation; these methods are used in several dialogs, such as {@link vmm.core.AnimationLimitsDialog}. * Note that an Animateable object could be used in other * places besides in actual animations. For example, frames might be selected * with a slider or with Prev and Next buttons, or fractionComplete might even * be called directly. In general, however, this interface will not be used by ordinary programmers. */ public interface Animateable { /** * Called during the course of a morphing animation so that the Animateable object * can adjust itself to the current stage of the animation. In fact, * an Animateable Parameter could set its value to "startValue + fractionComplete * (endValue - startValue)" * when this metod is called. * @param fractionComplete A number in the range 0 to 1 that tells what * stage the animation is at. The Animateable object adjusts itself * accordingly. * @see BasicAnimator */ public void setFractionComplete(double fractionComplete); /** * Set the starting Animation value for this Animateable object from a string. This method will probably * only be used by Dialog boxes such as {@link AnimationLimitsDialog}. * @param startVal The start value, as a string. This string will be parsed as a constant expression, * and a NumberFormatException will be thrown if the string is not a legal expression. */ public void setAnimationStartFromString(String startVal); /** * Set the ending Animation value for this Animateable object from a string. * @param endVal The end value, as a string. This string will be parsed as a constant expression, * and a NumberFormatException will be thrown if the string is not a legal expression. */ public void setAnimationEndFromString(String endVal); /** * Returns a string representation of the start value for the animation. */ public String getAnimationStartAsString(); /** * Returns a string representation of the end value for the animation. */ public String getAnimationEndAsString(); /** * Sets the default start animation value for this Animateable object from a string * representation of the value. The default values are used, for example, when the user clicks the * "Defaults" button in {@link vmm.core.AnimationLimitsDialog}. * @param startVal The default start value, as a string. This string will be parsed as a constant expression, * and a NumberFormatException will be thrown if the string is not a legal expression. */ public void setDefaultAnimationStartFromString(String startVal); /** * Sets the default ending animation value for this Animateable object from a string * representation of the value. The default values are used, for example, when the user clicks the * "Defaults" button in {@link vmm.core.AnimationLimitsDialog}. * @param endVal The default end value, as a string. This string will be parsed as a constant expression, * and a NumberFormatException will be thrown if the string is not a legal expression. */ public void setDefaultAnimationEndFromString(String endVal); /** * Returns a string representation of the default start value for the animation. */ public String getDefaultAnimationStartAsString(); /** * Returns a string representation of the default end value for the animation. */ public String getDefaultAnimationEndAsString(); /** * Check whether this Animateable will really change during an animation. * (If the start and end values are the same, then the return value will * presumably be false.) */ public boolean reallyAnimated(); }