35package com.jogamp.newt.event;
37import java.util.Arrays;
72@SuppressWarnings(
"serial")
81 public static enum PointerType implements InputEvent.InputType {
107 if( 0 <= ordinal && ordinal < all.length ) {
110 throw new IllegalArgumentException(
"Ordinal "+ordinal+
" out of range of PointerType.values()[0.."+(all.length-1)+
"]");
121 final int count = ordinals.length;
123 for(
int i=count-1; i>=0; i--) {
136 public static final short BUTTON1 = 1;
138 public static final short BUTTON2 = 2;
140 public static final short BUTTON3 = 3;
142 public static final short BUTTON4 = 4;
144 public static final short BUTTON5 = 5;
146 public static final short BUTTON6 = 6;
148 public static final short BUTTON7 = 7;
150 public static final short BUTTON8 = 8;
152 public static final short BUTTON9 = 9;
155 public static final short BUTTON_COUNT = 16;
158 public static final float[]
getRotationXYZ(
final float rotationXorY,
final int mods) {
159 final float[] rotationXYZ =
new float[] { 0f, 0f, 0f };
161 rotationXYZ[0] = rotationXorY;
163 rotationXYZ[1] = rotationXorY;
187 public MouseEvent(
final short eventType,
final Object source,
final long when,
188 final int modifiers,
final int x,
final int y,
final short clickCount,
final short button,
189 final float[] rotationXYZ,
final float rotationScale)
191 super(eventType, source, when, modifiers);
192 this.x =
new int[]{x};
193 this.y =
new int[]{y};
195 case EVENT_MOUSE_CLICKED:
196 case EVENT_MOUSE_PRESSED:
197 case EVENT_MOUSE_DRAGGED:
198 this.pressure = constMousePressure1;
201 this.pressure = constMousePressure0;
203 this.maxPressure= 1.0f;
204 this.pointerID =
new short[] { (short)0 };
205 this.clickCount=clickCount;
207 this.rotationXYZ = rotationXYZ;
208 this.rotationScale = rotationScale;
209 this.pointerType = constMousePointerTypes;
237 public MouseEvent(
final short eventType,
final Object source,
final long when,
final int modifiers,
238 final PointerType pointerType[],
final short[] pointerID,
239 final int[] x,
final int[] y,
final float[] pressure,
final float maxPressure,
240 final short button,
final short clickCount,
final float[] rotationXYZ,
final float rotationScale)
242 super(eventType, source, when, modifiers);
245 final int pointerCount = pointerType.length;
246 if(pointerCount != pointerID.length ||
247 pointerCount != x.length ||
248 pointerCount != y.length ||
249 pointerCount != pressure.length) {
250 throw new IllegalArgumentException(
"All multiple pointer arrays must be of same size");
252 if( 0.0f >= maxPressure ) {
253 throw new IllegalArgumentException(
"maxPressure must be > 0.0f");
255 this.pressure = pressure;
256 this.maxPressure= maxPressure;
257 this.pointerID = pointerID;
258 this.clickCount=clickCount;
260 this.rotationXYZ = rotationXYZ;
261 this.rotationScale = rotationScale;
262 this.pointerType = pointerType;
266 return new MouseEvent(newEventType, source, getWhen(), getModifiers(), pointerType, pointerID,
267 x, y, pressure, maxPressure, button, clickCount, rotationXYZ, rotationScale);
275 return pointerType.length;
283 if(0 > index || index >= pointerType.length) {
286 return pointerType[index];
307 if(0 > index || index >= pointerID.length) {
310 return pointerID[index];
319 for(
int i=pointerID.length-1; i>=0; i--) {
320 if( pointerID[i] ==
id ) {
375 public final int getX(
final int index) {
385 public final int getY(
final int index) {
412 return normalized ? pressure[0] / maxPressure : pressure[0];
423 public final float getPressure(
final int index,
final boolean normalized){
424 return normalized ? pressure[index] / maxPressure : pressure[index];
510 return rotationScale;
515 return toString(
null).toString();
519 public final StringBuilder
toString(StringBuilder sb) {
521 sb =
new StringBuilder();
523 sb.append(
"MouseEvent[").append(getEventTypeString(getEventType()))
524 .append(
", ").append(Arrays.toString(x)).append(
"/").append(Arrays.toString(y))
525 .append(
", button ").append(button).append(
", count ")
526 .append(clickCount).append(
", rotation [").append(rotationXYZ[0]).append(
", ").append(rotationXYZ[1]).append(
", ").append(rotationXYZ[2]).append(
"] * ").append(rotationScale);
527 if(pointerID.length>0) {
528 sb.append(
", pointer<").append(pointerID.length).append(
">[");
529 for(
int i=0; i<pointerID.length; i++) {
533 sb.append(pointerID[i]).append(
"/").append(pointerType[i]).append(
": ")
534 .append(x[i]).append(
"/").append(y[i]).append(
", ")
535 .append(
"p[").append(pressure[i]).append(
"/").append(maxPressure).append(
"=").append(pressure[i]/maxPressure).append(
"]");
540 return super.toString(sb).append(
"]");
545 case EVENT_MOUSE_CLICKED:
return "CLICKED";
546 case EVENT_MOUSE_ENTERED:
return "ENTERED";
547 case EVENT_MOUSE_EXITED:
return "EXITED";
548 case EVENT_MOUSE_PRESSED:
return "PRESSED";
549 case EVENT_MOUSE_RELEASED:
return "RELEASED";
550 case EVENT_MOUSE_MOVED:
return "MOVED";
551 case EVENT_MOUSE_DRAGGED:
return "DRAGGED";
552 case EVENT_MOUSE_WHEEL_MOVED:
return "WHEEL_MOVED";
553 default:
return "unknown (" + type +
")";
560 private final short pointerID[];
562 private final int x[];
564 private final int y[];
566 private final float pressure[];
568 private final short clickCount;
575 private final short button;
577 private final float[] rotationXYZ;
579 private final float rotationScale;
580 private final float maxPressure;
582 private static final float[] constMousePressure0 =
new float[]{0f};
583 private static final float[] constMousePressure1 =
new float[]{1f};
584 private static final PointerType[] constMousePointerTypes =
new PointerType[] { PointerType.Mouse };
586 public static final short EVENT_MOUSE_CLICKED = 200;
588 public static final short EVENT_MOUSE_ENTERED = 201;
590 public static final short EVENT_MOUSE_EXITED = 202;
591 public static final short EVENT_MOUSE_PRESSED = 203;
592 public static final short EVENT_MOUSE_RELEASED = 204;
593 public static final short EVENT_MOUSE_MOVED = 205;
594 public static final short EVENT_MOUSE_DRAGGED = 206;
595 public static final short EVENT_MOUSE_WHEEL_MOVED = 207;
Pointer event of type PointerType.
final short[] getAllPointerIDs()
See details for multiple-pointer events.
final StringBuilder toString(StringBuilder sb)
final PointerType getPointerType(final int index)
See details for multiple-pointer events.
final int getPointerCount()
See details for multiple-pointer events.
final PointerType[] getAllPointerTypes()
See details for multiple-pointer events.
final float getPressure(final int index, final boolean normalized)
See details for multiple-pointer events.
final int getY(final int index)
See details for multiple-pointer events.
final short getButton()
Returns the button number, e.g.
final short getPointerId(final int index)
Return the pointer id for the given index or -1 if index not available.
static final short getClickTimeout()
MouseEvent(final short eventType, final Object source, final long when, final int modifiers, final int x, final int y, final short clickCount, final short button, final float[] rotationXYZ, final float rotationScale)
Constructor for traditional one-pointer event.
MouseEvent(final short eventType, final Object source, final long when, final int modifiers, final PointerType pointerType[], final short[] pointerID, final int[] x, final int[] y, final float[] pressure, final float maxPressure, final short button, final short clickCount, final float[] rotationXYZ, final float rotationScale)
Constructor for a multiple-pointer event.
final int getPointerIdx(final short id)
See details for multiple-pointer events.
final float getMaxPressure()
Returns the maximum pressure known for the input device generating this event.
final float getRotationScale()
Returns the scale used to determine the rotation value, which semantics depends on the pointer type's...
final float[] getAllPressures()
See details for multiple-pointer events.
final short getClickCount()
final int[] getAllX()
See details for multiple-pointer events.
final float getPressure(final boolean normalized)
final int getY()
See details for multiple-pointer events.
final int getX(final int index)
See details for multiple-pointer events.
final int[] getAllY()
See details for multiple-pointer events.
static String getEventTypeString(final short type)
final MouseEvent createVariant(final short newEventType)
static final float[] getRotationXYZ(final float rotationXorY, final int mods)
Returns the 3-axis XYZ rotation array by given rotation on Y axis or X axis (if SHIFT_MASK is given i...
final float[] getRotation()
Returns a 3-component float array filled with the values of the rotational axis in the following orde...
final int getX()
See details for multiple-pointer events.
PointerClass getPointerClass()
static PointerType valueOf(final int ordinal)
Returns the matching PointerType value corresponding to the given PointerType's integer ordinal.
static PointerType[] valuesOf(final int[] ordinals)
Returns the PointerType array of matching PointerType values corresponding to the given PointerType's...
TouchPad
PointerClass#Offscreen touch pad, usually using fingers.
Undefined
PointerClass#Undefined ?.
Mouse
PointerClass#Offscreen mouse.
TouchScreen
PointerClass#Onscreen touch screen, usually using fingers.
Pen
PointerClass#Onscreen pen usually on screen? Ordinal 3.