Wintab compiles, not linking yet though.

This commit is contained in:
Endolf 2018-05-20 13:13:50 +01:00
parent 9a6fd1cf66
commit 76669f6b51
4 changed files with 49 additions and 48 deletions

View file

@ -33,14 +33,6 @@ import java.util.List;
public class WinTabComponent extends AbstractComponent {
public final static int XAxis = 1;
public final static int YAxis = 2;
public final static int ZAxis = 3;
public final static int NPressureAxis = 4;
public final static int TPressureAxis = 5;
public final static int OrientationAxis = 6;
public final static int RotationAxis = 7;
private int min;
private int max;
protected float lastKnownValue;
@ -77,27 +69,27 @@ public class WinTabComponent extends AbstractComponent {
List components = new ArrayList();
Identifier id;
switch(axisId) {
case XAxis:
case WinTabDevice.XAxis:
id = Identifier.Axis.X;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
break;
case YAxis:
case WinTabDevice.YAxis:
id = Identifier.Axis.Y;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
break;
case ZAxis:
case WinTabDevice.ZAxis:
id = Identifier.Axis.Z;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
break;
case NPressureAxis:
case WinTabDevice.NPressureAxis:
id = Identifier.Axis.X_FORCE;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
break;
case TPressureAxis:
case WinTabDevice.TPressureAxis:
id = Identifier.Axis.Y_FORCE;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
break;
case OrientationAxis:
case WinTabDevice.OrientationAxis:
id = Identifier.Axis.RX;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
id = Identifier.Axis.RY;
@ -105,7 +97,7 @@ public class WinTabComponent extends AbstractComponent {
id = Identifier.Axis.RZ;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[4], axisRanges[5]));
break;
case RotationAxis:
case WinTabDevice.RotationAxis:
id = Identifier.Axis.RX;
components.add(new WinTabComponent(context, parentDevice, id.getName(), id, axisRanges[0], axisRanges[1]));
id = Identifier.Axis.RY;

View file

@ -30,6 +30,14 @@ import java.util.ArrayList;
import java.util.List;
public class WinTabDevice extends AbstractController {
public final static int XAxis = 1;
public final static int YAxis = 2;
public final static int ZAxis = 3;
public final static int NPressureAxis = 4;
public final static int TPressureAxis = 5;
public final static int OrientationAxis = 6;
public final static int RotationAxis = 7;
private WinTabContext context;
private List eventList = new ArrayList();
@ -74,60 +82,60 @@ public class WinTabDevice extends AbstractController {
WinTabEnvironmentPlugin.logln("Device " + deviceIndex + ", name: " + name);
List componentsList = new ArrayList();
int[] axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.XAxis);
int[] axisDetails = nGetAxisDetails(deviceIndex, XAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("ZAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("Xmin: " + axisDetails[0] + ", Xmax: " + axisDetails[1]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.XAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, XAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.YAxis);
axisDetails = nGetAxisDetails(deviceIndex, YAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("YAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("Ymin: " + axisDetails[0] + ", Ymax: " + axisDetails[1]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.YAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, YAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.ZAxis);
axisDetails = nGetAxisDetails(deviceIndex, ZAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("ZAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("Zmin: " + axisDetails[0] + ", Zmax: " + axisDetails[1]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.ZAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, ZAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.NPressureAxis);
axisDetails = nGetAxisDetails(deviceIndex, NPressureAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("NPressureAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("NPressMin: " + axisDetails[0] + ", NPressMax: " + axisDetails[1]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.NPressureAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, NPressureAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.TPressureAxis);
axisDetails = nGetAxisDetails(deviceIndex, TPressureAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("TPressureAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("TPressureAxismin: " + axisDetails[0] + ", TPressureAxismax: " + axisDetails[1]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.TPressureAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, TPressureAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.OrientationAxis);
axisDetails = nGetAxisDetails(deviceIndex, OrientationAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("OrientationAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("OrientationAxis mins/maxs: " + axisDetails[0] + "," + axisDetails[1] + ", " + axisDetails[2] + "," + axisDetails[3] + ", " + axisDetails[4] + "," + axisDetails[5]);
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.OrientationAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, OrientationAxis, axisDetails));
}
axisDetails = nGetAxisDetails(deviceIndex, WinTabComponent.RotationAxis);
axisDetails = nGetAxisDetails(deviceIndex, RotationAxis);
if(axisDetails.length==0) {
WinTabEnvironmentPlugin.logln("RotationAxis not supported");
} else {
WinTabEnvironmentPlugin.logln("RotationAxis is supported (by the device, not by this plugin)");
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, WinTabComponent.RotationAxis, axisDetails));
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, RotationAxis, axisDetails));
}
String[] cursorNames = nGetCursorNames(deviceIndex);

View file

@ -2,10 +2,12 @@
<project name="JInput wintab port, Native code" basedir="." default="compile">
<property environment="env"/>
<property name="wintabhome" location="${env.WINTAB_DIR}"/>
<property name="wintabhome" location="${env.WintabSdkDir}"/>
<property name="sdkhome" location="${env.WindowsSdkDir}"/>
<property name="generated-natives" location="..\..\..\target\generated-sources\natives"/>
<property name="compiled-natives" location="..\..\..\target/natives"/>
<property name="jinput-windows-headers" location="../../../../windows/target/generated-sources/natives"/>
<property name="jinput-windows-sources" location="../../../../windows/src/main/native"/>
<target name="init">
<mkdir dir="${compiled-natives}"/>
@ -16,12 +18,13 @@
<echo message="wintab: ${wintabhome}"/>
<apply dir="${compiled-natives}" failonerror="true" executable="cl" dest="${compiled-natives}" skipemptyfilesets="true">
<arg line="/Ox /W2 /nologo /c"/>
<arg value="/I${sdkhome}\include"/>
<arg value="/I${wintabhome}\include"/>
<arg value="/I${java.home}\include"/>
<arg value="/I${java.home}\include\win32"/>
<arg line="/I&quot;${sdkhome}\include&quot;"/>
<arg line="/I&quot;${wintabhome}&quot;"/>
<arg line="/I&quot;${java.home}\include&quot;"/>
<arg line="/I&quot;${java.home}\include\win32&quot;"/>
<arg value="/I${commonhome}/src/native"/>
<arg value="/I${generated-natives}"/>
<arg value="/I${jinput-windows-headers}"/>
<srcfile/>
<fileset dir="${compiledir}" includes="*.c"/>
<mapper type="glob" from="*.c" to="*.obj"/>
@ -33,16 +36,15 @@
<arg line="/LD /nologo"/>
<srcfile/>
<arg line="/Fe${dllname} /link"/>
<arg value="/LIBPATH:${java.home}\lib"/>
<arg value="/LIBPATH:${wintabhome}\lib\I386"/>
<arg value="/LIBPATH:${sdkhome}\lib"/>
<arg line="/LIBPATH:&quot;${java.home}\lib&quot;"/>
<arg line="/LIBPATH:&quot;${sdkhome}\lib&quot;"/>
<arg line="/DLL ${libs}"/>
<fileset dir="${compiled-natives}" includes="*.obj"/>
</apply>
</target>
<target name="compile" depends="init">
<property name="wintablibs" value="Kernel32.lib WINTAB32.LIB User32.lib"/>
<property name="wintablibs" value="Kernel32.lib User32.lib"/>
<property name="commonhome" location="../../../../common"/>
<property name="dllname" value="jinput-wintab.dll"/>
<antcall target="compile_dir">
@ -52,7 +54,7 @@
<param name="compiledir" location="."/>
</antcall>
<antcall target="compile_dir">
<param name="compiledir" location="../../../windows/src/native"/>
<param name="compiledir" location="${jinput-windows-sources}"/>
</antcall>
<antcall target="link">
<param name="dllname" value="${dllname}"/>

View file

@ -3,7 +3,6 @@
#include <jni.h>
#include "net_java_games_input_WinTabDevice.h"
#include "net_java_games_input_WinTabComponent.h"
#include "util.h"
#include <wintab.h>
#include <malloc.h>
@ -26,15 +25,15 @@ JNIEXPORT jintArray JNICALL Java_net_java_games_input_WinTabDevice_nGetAxisDetai
int res;
jintArray retVal = NULL;
if(axisId==net_java_games_input_WinTabComponent_XAxis) type = DVC_X;
else if(axisId==net_java_games_input_WinTabComponent_YAxis) type = DVC_Y;
else if(axisId==net_java_games_input_WinTabComponent_ZAxis) type = DVC_Z;
else if(axisId==net_java_games_input_WinTabComponent_NPressureAxis) type = DVC_NPRESSURE;
else if(axisId==net_java_games_input_WinTabComponent_TPressureAxis) type = DVC_TPRESSURE;
else if(axisId==net_java_games_input_WinTabComponent_OrientationAxis) type = DVC_ORIENTATION;
else if(axisId==net_java_games_input_WinTabComponent_RotationAxis) type = DVC_ROTATION;
if(axisId==net_java_games_input_WinTabDevice_XAxis) type = DVC_X;
else if(axisId==net_java_games_input_WinTabDevice_YAxis) type = DVC_Y;
else if(axisId==net_java_games_input_WinTabDevice_ZAxis) type = DVC_Z;
else if(axisId==net_java_games_input_WinTabDevice_NPressureAxis) type = DVC_NPRESSURE;
else if(axisId==net_java_games_input_WinTabDevice_TPressureAxis) type = DVC_TPRESSURE;
else if(axisId==net_java_games_input_WinTabDevice_OrientationAxis) type = DVC_ORIENTATION;
else if(axisId==net_java_games_input_WinTabDevice_RotationAxis) type = DVC_ROTATION;
if(axisId==net_java_games_input_WinTabComponent_RotationAxis || axisId==net_java_games_input_WinTabComponent_OrientationAxis) {
if(axisId==net_java_games_input_WinTabDevice_RotationAxis || axisId==net_java_games_input_WinTabDevice_OrientationAxis) {
res = WTInfo(WTI_DEVICES + deviceIndex, type, &threeAxisArray);
if(res!=0) {
threeAxisData[0] = threeAxisArray[0].axMin;