static void queryTabletPos(GLUTwindow * window) { #if !defined(WIN32) XDeviceState *state; XInputClass *any; XValuatorState *v; int i; state = XQueryDeviceState(__glutDisplay, __glutTablet); any = state->data; for (i = 0; i < state->num_classes; i++) { switch (any->class) { case ValuatorClass: v = (XValuatorState *) any; if (v->num_valuators < 2) goto end; if (window->tabletPos[0] == -1) window->tabletPos[0] = normalizeTabletPos(0, v->valuators[0]); if (window->tabletPos[1] == -1) window->tabletPos[1] = normalizeTabletPos(1, v->valuators[1]); } any = (XInputClass *) ((char *) any + any->length); } end: XFreeDeviceState(state); #endif /* !WIN32 */ }
static void queryTabletPos(GLUTwindow * window) { XDeviceState *state; XInputClass *any; XValuatorState *v; int i; state = XQueryDeviceState(__glutDisplay, __glutTablet); any = state->data; for (i = 0; i < state->num_classes; i++) { #if defined(__cplusplus) || defined(c_plusplus) switch (any->c_class) { #else switch (any->class) { #endif case ValuatorClass: v = (XValuatorState *) any; if (v->num_valuators < 2) goto end; if (window->tabletPos[0] == -1) window->tabletPos[0] = normalizeTabletPos(0, v->valuators[0]); if (window->tabletPos[1] == -1) window->tabletPos[1] = normalizeTabletPos(1, v->valuators[1]); } any = (XInputClass *) ((char *) any + any->length); } end: XFreeDeviceState(state); } static void tabletPosChange(GLUTwindow * window, int first, int count, int *data) { int i, value, genEvent = 0; for (i = first; i < first + count; i++) { switch (i) { case 0: /* X axis */ case 1: /* Y axis */ value = normalizeTabletPos(i, data[i - first]); if (value != window->tabletPos[i]) { window->tabletPos[i] = value; genEvent = 1; } break; } } if (window->tabletPos[0] == -1 || window->tabletPos[1] == -1) queryTabletPos(window); if (genEvent) window->tabletMotion(window->tabletPos[0], window->tabletPos[1]); }
static void tabletPosChange(GLUTwindow * window, int first, int count, int *data) { int i, value, genEvent = 0; for (i = first; i < first + count; i++) { switch (i) { case 0: /* X axis */ case 1: /* Y axis */ value = normalizeTabletPos(i, data[i - first]); if (value != window->tabletPos[i]) { window->tabletPos[i] = value; genEvent = 1; } break; } } if (window->tabletPos[0] == -1 || window->tabletPos[1] == -1) queryTabletPos(window); if (genEvent) window->tabletMotion(window->tabletPos[0], window->tabletPos[1]); }