/*******************************************************************************
* Copyright (c) 2010, 2011, 2012 IBM Corporation, Gerhardt Informatics Kft. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Gerhardt Informatics Kft. - GEFGWT port
*******************************************************************************/
package org.eclipse.swt.widgets;
import org.eclipse.swt.graphics.Rectangle;
/**
* Instances of this class represent sources of touch input that generate
* <code>Touch</code> objects. They also provide information about the input
* source, which is important for interpreting the information in the
* <code>Touch</code> object.
* <p>
* Instances of this class can be marked as direct or indirect:
* <ul>
* <li>When an instance is <em>direct</em>, the touch source is a
* touch-sensitive digitizer surface such as a tablet or a touch screen. There
* is a one-to-one mapping between a touch point and a location in a window.</li>
* <li>
* When an instance is <em>indirect</em> (more precisely, not direct), the touch
* source is a track pad or other device that normally moves the cursor, but is
* also able to interpret multiple touches on its surface. In this case there is
* not a one-to-one mapping between the location of the touch on the device and
* a location on the display because the user can remove their finger or stylus
* and touch another part of the device and resume what they were doing.</li>
* </ul>
*
* @see Touch
* @see <a href="http://www.eclipse.org/swt/">Sample code and further
* information</a>
*
* @since 3.7
*/
public final class TouchSource {
long /* int */handle;
boolean direct;
Rectangle bounds;
/**
* Constructs a new touch source from the given inputs.
*
* @param direct
* Is the touch source direct or indirect?
* @param height
* height of the source in pixels.
* @param width
* width of the source in pixels.
*/
TouchSource(long /* int */handle, boolean direct, Rectangle bounds) {
this.handle = handle;
this.direct = direct;
this.bounds = bounds;
}
/**
* Returns the type of touch input this source generates, <code>true</code>
* for direct or <code>false</code> for indirect.
*
* @return <code>true</code> if the input source is direct, or
* <code>false</code> otherwise
*/
public boolean isDirect() {
return direct;
}
/**
* Returns the bounding rectangle of the device. For a direct source, this
* corresponds to the bounds of the display device in pixels. For an
* indirect source, this contains the size of the device in pixels.
* <p>
* Note that the x and y values may not necessarily be 0 if the TouchSource
* is a direct source.
*
* @return the bounding rectangle of the input source
*/
public Rectangle getBounds() {
return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height);
}
/**
* Returns a string containing a concise, human-readable description of the
* receiver.
*
* @return a string representation of the event
*/
public String toString() {
return "TouchSource {handle=" + handle + " direct=" + direct
+ " bounds=" + bounds + "}";
}
}