com.sparshui.common.messages.events.FlickEvent Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmol Show documentation
Show all versions of jmol Show documentation
Jmol: an open-source Java viewer for chemical structures in 3D
package com.sparshui.common.messages.events;
import com.sparshui.common.Event;
import com.sparshui.common.utils.Converter;
public class FlickEvent implements Event {
// constructor coding error fixed by Bob Hanson for Jmol 11/29/2009
private static final long serialVersionUID = -2305607021385835330L;
// private float _absx;
// private float _absy;
//private Velocity[] runningVelocities;
private float xDirection;
private float yDirection;
private float speedLevel;
public FlickEvent() {
// _absx = 0;
// _absy = 0;
//runningVelocities = null;
xDirection = 0;
yDirection = 0;
speedLevel = 0;
}
/**
*
* @param absx
* @param absy
*/
public FlickEvent(float absx, float absy) {
// _absx = absx;
// _absy = absy;
}
public FlickEvent(int _speedLevel, int _xDirection, int _yDirection){
speedLevel = _speedLevel;
xDirection = _xDirection;
yDirection = _yDirection;
}
/**
* Constructs a flickEvent from a complete serialized version of the drag
* event.
* - 4 bytes : dx
* - 4 bytes : dy
* - 8 bytes total
*
* @param data
* The byte array that represents a serialized Drag Event.
*/
public FlickEvent(byte[] data) {
if (data.length < 12) {
// TODO add error handling
System.err.println("Error constructing Flick Event.");
} else {
speedLevel = Converter.byteArrayToFloat(data, 0);
xDirection = Converter.byteArrayToFloat(data, 4);
yDirection = Converter.byteArrayToFloat(data, 8);
}
}
public float getSpeedLevel() {
return speedLevel;
}
public float getXdirection() {
return xDirection;
}
public float getYdirection() {
return yDirection;
}
//@override
public int getEventType() {
return EventType.FLICK_EVENT;
}
//@override
@Override
public String toString() {
String ret = "Flick Event";
return ret;
}
/**
* Constructs the data packet with this event data. Message format for this
* event:
*
* - 4 bytes : EventType
* - 4 bytes : SpeedLevel
* - 4 bytes : X Direction
* - 4 bytes : Y Direction
* - 16 bytes total
* @return serialized data
*/
public byte[] serialize() {
byte[] data = new byte[16];
Converter.intToByteArray(data, 0, getEventType());
Converter.floatToByteArray(data, 4, speedLevel);
Converter.floatToByteArray(data, 8, xDirection);
Converter.floatToByteArray(data, 12, yDirection);
return data;
}
}