Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package edu.uci.ics.inf117.mstar.filter;
- import java.util.Vector;
- import edu.uci.ics.inf117.mstar.event.Point;
- import edu.uci.ics.inf117.mstar.event.StarboardEvent;
- import edu.uci.ics.inf117.mstar.gesture.GestureAnalyzer;
- public class Filter implements CoordinateFilter
- {
- private Vector<StarboardEvent> events;
- private GestureAnalyzer gestureHandler;
- private boolean leftClick;
- private boolean prevIsRelease;
- private boolean sendDataToApplication;
- private boolean mouseIsDown;
- private Point previous;
- private final int TOLERANCE = 10;
- private enum LeftButtonState {LB_UP, LB_DOWN}
- private LeftButtonState leftMouseState = LeftButtonState.LB_UP;
- public Filter(GestureAnalyzer analyzer)
- {
- gestureHandler = analyzer;
- events = new Vector<StarboardEvent>();
- leftClick = false;
- prevIsRelease = false;
- sendDataToApplication = false;
- mouseIsDown = false;
- }
- // the current filter does two things
- // 1) get rid of extra point after release
- // 2) (NOT YET IMPLEMENTED) it makes sure that related inputs
- @Override
- public void filterEvent(StarboardEvent e)
- {
- if (sendDataToApplication)
- {
- // We are getting an extra point after a release,which doesn't make sense,
- // so we want to get rid of it
- if (mouseIsDown)
- {
- if (e.getPoint().released() == 1)
- {
- mouseIsDown = false;
- }
- if (currentPointInValidRange(e.getPoint()))
- {
- System.out.println("valid point");
- gestureHandler.receiveFilteredEvent(e);
- previous = e.getPoint();
- }
- else
- {
- System.out.println("invalid point!");
- }
- }
- else
- {
- if (e.getPoint().click() == 1)
- {
- mouseIsDown = true;
- previous = e.getPoint();
- gestureHandler.receiveFilteredEvent(e);
- }
- }
- }
- else
- {
- // this makes sure no points get sent to the application until the board
- // has actually been touched. Since an LC is always the first thing to
- // be sent when the board is first touched, we can check for that
- if (e.getPoint().click() == 1)
- {
- sendDataToApplication = true;
- mouseIsDown = true;
- previous = e.getPoint();
- gestureHandler.receiveFilteredEvent(e);
- }
- }
- }
- private boolean currentPointInValidRange(Point current)
- {
- /*if ((Math.abs(previous.getX()- current.getX()) > TOLERANCE) ||
- (Math.abs(previous.getX() - current.getY()) > TOLERANCE))
- {
- return false;
- }
- else
- {
- return true;
- }*/
- System.out.println("Current Point: (" + current.getX() + ", " + current.getY() +")");
- System.out.println("Previous Point: (" + previous.getX() + ", " + previous.getY() +")");
- return true;
- }
- }
Add Comment
Please, Sign In to add comment