/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: J3DAlpha.java * Written by Gilda Garreton, Sun Microsystems. * * Copyright (c) 2003 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */ package com.sun.electric.plugins.j3d.utils; import javax.media.j3d.Alpha; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import javax.swing.*; /** * Alpha class to control motion with JSlider class * Idea taken from Selman's book * @author Gilda Garreton * @version 0.1 */ public class J3DAlpha extends Alpha implements ChangeListener { private Alpha alpha; private float manualValue = 0.5f; // in the middle private boolean autoMode = true; private int speed; // in miliseconds public J3DAlpha(int speed, boolean mode, float value) { this.speed = speed; this.autoMode = mode; this.manualValue = value; setAlphaSpeed(speed); } public void setAlphaSpeed(int speed) { // previous value is OK if (alpha != null && this.speed == speed) return; alpha = new Alpha (-1, Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE, 0, 0, (long)(2.5*speed), // 2500 (long)(0.4*speed), // 400 (long)(0.1*speed), // 100 (long)(2*speed), //2000 (long)(5*speed), // 5000 (long)(0.05*speed)); // 50 } /** * Set AutoMode flag according to boolean * @param mode True if interpolator runs automatically */ public void setAutoMode(boolean mode) {autoMode = mode;} /** * Method to retrieve auto mode flag * @return */ public boolean getAutoMode() {return autoMode;} /** * Overwrites original Alpha's value function * to consider manual mode * @param time * @return */ public float value(long time) { if (autoMode) return alpha.value(time); return manualValue; } /** * * @param e */ public void stateChanged( ChangeEvent e ) { if( e.getSource( ) instanceof JSlider ) { manualValue = ((JSlider) e.getSource( )).getValue( ) / 100.0f; } } }