Package org.mt4j.input.inputSources

Source Code of org.mt4j.input.inputSources.MuitoInputSource

/***********************************************************************
* mt4j Copyright (c) 2008 - 2009, C.Ruff, Fraunhofer-Gesellschaft All rights reserved.
*   This program 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.
*
*   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
*
***********************************************************************/
package org.mt4j.input.inputSources;


import java.util.HashMap;

import muito.motion.Motion;
import muito.motion.MotionEvent;
import muito.motion.MotionProviderListener;
import muito.motion.Settings;
import muito.motion.provider.MuitoMotionTrackerPorvider;

import org.mt4j.MTApplication;
import org.mt4j.input.inputData.ActiveCursorPool;
import org.mt4j.input.inputData.InputCursor;
import org.mt4j.input.inputData.MTFingerInputEvt;
import org.mt4j.util.MT4jSettings;


/**
* The Class MuitoInputSource.
* @author Christopher Ruff
*/
public class MuitoInputSource extends AbstractInputSource implements MotionProviderListener {

  /** The muito id to input motion id. */
  private HashMap<Long, Long> muitoIDToInputMotionID;

  /**
   * Instantiates a new muito input source.
   *
   * @param pa the pa
   * @param server the server
   * @param port the port
   */
  public MuitoInputSource(MTApplication pa, String server, int port){
    super(pa);
      Settings.getInstance().setScreensizeX(MT4jSettings.getInstance().getWindowWidth());
      Settings.getInstance().setScreensizeY(MT4jSettings.getInstance().getWindowHeight());
    MuitoMotionTrackerPorvider muitoProvider = new MuitoMotionTrackerPorvider(server, port);
      muitoProvider.addListener(this);
//      muitoProvider.addMotionFilter(new CalibrationFilter());
      muitoIDToInputMotionID = new HashMap<Long, Long>();
  }
 
 
  /* (non-Javadoc)
   * @see muito.motion.MotionProviderListener#newMotionProvided(muito.motion.Motion)
   */
  public void newMotionProvided(Motion motion) {
    MotionEvent me = motion.getLastEvent();
   
    InputCursor m = new InputCursor();
    MTFingerInputEvt touchEvt = new MTFingerInputEvt(this, me.getXAbs(), me.getYAbs(), MTFingerInputEvt.INPUT_DETECTED, m);
//    m.addEvent(touchEvt);
   
    long motionID = motion.getId();
    ActiveCursorPool.getInstance().putActiveCursor(motionID, m);
    muitoIDToInputMotionID.put(motionID, motionID);
   
    //FIRE
    this.enqueueInputEvent(touchEvt);
  }
 

  /* (non-Javadoc)
   * @see muito.motion.MotionProviderListener#providedMotionUpdated(muito.motion.Motion, muito.motion.MotionEvent)
   */
  public void providedMotionUpdated(Motion m, MotionEvent me) {
    InputCursor mo = ActiveCursorPool.getInstance().getActiveCursorByID(muitoIDToInputMotionID.get(m.getId()));
   
    MTFingerInputEvt te = new MTFingerInputEvt(this, me.getXAbs(), me.getYAbs(), MTFingerInputEvt.INPUT_UPDATED, mo);
//    m.addEvent(new MTFingerInputEvt2(this, e.getX(), e.getY(), MTFingerInputEvt.FINGER_UPDATE, m));
   
    //FIRE
    this.enqueueInputEvent(te);
  }
 
 
  /* (non-Javadoc)
   * @see muito.motion.MotionProviderListener#providedMotionCompleted(muito.motion.Motion)
   */
  public void providedMotionCompleted(Motion m) {
    long motionID = muitoIDToInputMotionID.get(m.getId());
    InputCursor mo = ActiveCursorPool.getInstance().getActiveCursorByID(motionID);

    MTFingerInputEvt te;
    if (mo.getCurrentEvent() != null)
      te = new MTFingerInputEvt(this, mo.getCurrentEvent().getPosX(), mo.getCurrentEvent().getPosY(), MTFingerInputEvt.INPUT_ENDED, mo);
    else
      te = new MTFingerInputEvt(this, 0,0, MTFingerInputEvt.INPUT_ENDED, mo);
   
//    m.addEvent(te);
   
    this.enqueueInputEvent(te);
   
    ActiveCursorPool.getInstance().removeCursor(motionID);
   
    muitoIDToInputMotionID.remove(m.getId());   
  }

 
//  @Override
//  public boolean firesEventType(Class<? extends MTInputEvent> evtClass){
//    return (evtClass == MTFingerInputEvt.class);
//  }


}
TOP

Related Classes of org.mt4j.input.inputSources.MuitoInputSource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.