First import Dwell buttons
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Wed, 15 Feb 2012 13:39:26 +0000 (13:39 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Wed, 15 Feb 2012 13:39:26 +0000 (13:39 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@45 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

22 files changed:
DwellCursor.sln [new file with mode: 0644]
DwellCursor.suo [new file with mode: 0644]
DwellCursor/DwellButton.cpp [new file with mode: 0644]
DwellCursor/DwellButton.h [new file with mode: 0644]
DwellCursor/DwellCursor.vcxproj [new file with mode: 0644]
DwellCursor/DwellCursor.vcxproj.filters [new file with mode: 0644]
DwellCursor/DwellWidget.cpp [new file with mode: 0644]
DwellCursor/DwellWidget.h [new file with mode: 0644]
DwellCursor/ExperimentSetup.cpp [new file with mode: 0644]
DwellCursor/ExperimentSetup.h [new file with mode: 0644]
DwellCursor/ExperimentSetup.ui [new file with mode: 0644]
DwellCursor/KinectInput.cpp [new file with mode: 0644]
DwellCursor/KinectInput.h [new file with mode: 0644]
DwellCursor/MainScene.cpp [new file with mode: 0644]
DwellCursor/MainScene.h [new file with mode: 0644]
DwellCursor/MainView.cpp [new file with mode: 0644]
DwellCursor/MainView.h [new file with mode: 0644]
DwellCursor/dwellcursor.cpp [new file with mode: 0644]
DwellCursor/dwellcursor.h [new file with mode: 0644]
DwellCursor/dwellcursor.qrc [new file with mode: 0644]
DwellCursor/dwellcursor.ui [new file with mode: 0644]
DwellCursor/main.cpp [new file with mode: 0644]

diff --git a/DwellCursor.sln b/DwellCursor.sln
new file mode 100644 (file)
index 0000000..fb993bc
Binary files /dev/null and b/DwellCursor.sln differ
diff --git a/DwellCursor.suo b/DwellCursor.suo
new file mode 100644 (file)
index 0000000..9d0b21d
Binary files /dev/null and b/DwellCursor.suo differ
diff --git a/DwellCursor/DwellButton.cpp b/DwellCursor/DwellButton.cpp
new file mode 100644 (file)
index 0000000..4e7c073
--- /dev/null
@@ -0,0 +1,60 @@
+#include "DwellButton.h"\r
+\r
+#include <QBrush>\r
+\r
+QColor DwellButton::_bgcolor = Qt::gray;\r
+QColor DwellButton::_hovercolor = Qt::lightGray;\r
+QColor DwellButton::_validatedcolor = Qt::red;\r
+QColor DwellButton::_targetcolor = Qt::green;\r
+QColor DwellButton::_targethovercolor = Qt::yellow;\r
+\r
+DwellButton::DwellButton(QGraphicsItem *parent)\r
+:QGraphicsRectItem(parent), _active(false)\r
+{\r
+       setBrush(QBrush(_bgcolor));\r
+       setZValue(0);\r
+}\r
+\r
+DwellButton::DwellButton(float posx, float posy, float width, float height, QGraphicsItem *parent)\r
+:QGraphicsRectItem(posx, posy, width, height, parent), _active(false)\r
+{\r
+       setBrush(QBrush(_bgcolor));\r
+       setZValue(0);\r
+}\r
+\r
+DwellButton::DwellButton(QRect pos, QGraphicsItem *parent)\r
+:QGraphicsRectItem(pos, parent), _active(false)\r
+{\r
+       setBrush(QBrush(_bgcolor));\r
+       setZValue(0);\r
+}\r
+\r
+void DwellButton::setActive() \r
+{ \r
+       _active = true; \r
+       setBrush(QBrush(_targetcolor));\r
+}\r
+\r
+void DwellButton::hover()\r
+{\r
+       if (_active)\r
+               setBrush(QBrush(_targethovercolor));\r
+       else\r
+               setBrush(QBrush(_hovercolor));\r
+}\r
+\r
+void DwellButton::press()\r
+{\r
+       setBrush(QBrush(_validatedcolor));\r
+       emit clicked();\r
+       _active = false;\r
+       //disconnect(this);\r
+}\r
+\r
+void DwellButton::leave()\r
+{\r
+       if (_active)\r
+               setBrush(QBrush(_targetcolor));\r
+       else\r
+               setBrush(QBrush(_bgcolor));\r
+}\r
diff --git a/DwellCursor/DwellButton.h b/DwellCursor/DwellButton.h
new file mode 100644 (file)
index 0000000..3af2928
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __DWELLBUTTON__\r
+#define __DWELLBUTTON__\r
+\r
+#include <QGraphicsRectItem>\r
+#include <QColor>\r
+\r
+class DwellButton: public QObject, public QGraphicsRectItem\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               DwellButton(QGraphicsItem *parent = 0);\r
+               DwellButton(float posx, float posy, float width, float height, QGraphicsItem *parent = 0);\r
+               DwellButton(QRect pos, QGraphicsItem *parent = 0);\r
+\r
+               void setActive();\r
+\r
+       private:\r
+               static QColor _bgcolor, _hovercolor, _validatedcolor, _targetcolor, _targethovercolor;\r
+               bool _active;\r
+\r
+       public slots:\r
+               void hover();\r
+               void press();\r
+               void leave();\r
+\r
+       private slots:\r
+\r
+       signals:\r
+               void clicked();\r
+};\r
+\r
+#endif\r
diff --git a/DwellCursor/DwellCursor.vcxproj b/DwellCursor/DwellCursor.vcxproj
new file mode 100644 (file)
index 0000000..b4d3a4d
--- /dev/null
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{2928B2FC-98F8-427E-B0D2-2CEA2DA1FFC9}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>$(KINECTSDK10_DIR)\inc;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(KINECTSDK10_DIR)\lib\x86;$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>tactonplayer.lib;Kinect10.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>$(KINECTSDK10_DIR)\inc;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(KINECTSDK10_DIR)\lib\x86;$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>tactonplayer.lib;Kinect10.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="DwellButton.cpp" />\r
+    <ClCompile Include="dwellcursor.cpp" />\r
+    <ClCompile Include="DwellWidget.cpp" />\r
+    <ClCompile Include="ExperimentSetup.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DwellButton.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_dwellcursor.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DwellWidget.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_ExperimentSetup.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_KinectInput.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_MainScene.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_MainView.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_dwellcursor.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DwellButton.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_dwellcursor.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DwellWidget.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_ExperimentSetup.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_KinectInput.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_MainScene.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_MainView.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="KinectInput.cpp" />\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="MainScene.cpp" />\r
+    <ClCompile Include="MainView.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="dwellcursor.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "dwellcursor.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "dwellcursor.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="dwellcursor.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_ExperimentSetup.h" />\r
+    <CustomBuild Include="ExperimentSetup.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "ExperimentSetup.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "ExperimentSetup.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="MainView.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainView.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainView.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="DwellWidget.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellWidget.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellWidget.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="DwellButton.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellButton.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellButton.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <ClInclude Include="GeneratedFiles\ui_dwellcursor.h" />\r
+    <CustomBuild Include="KinectInput.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "KinectInput.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "KinectInput.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="MainScene.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainScene.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainScene.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="dwellcursor.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="ExperimentSetup.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/DwellCursor/DwellCursor.vcxproj.filters b/DwellCursor/DwellCursor.vcxproj.filters
new file mode 100644 (file)
index 0000000..b59ed00
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;cxx;c;def</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Form Files">\r
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+      <Extensions>ui</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+      <Extensions>qrc;*</Extensions>\r
+      <ParseFiles>false</ParseFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files">\r
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+      <Extensions>moc;h;cpp</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Debug">\r
+      <UniqueIdentifier>{8395e438-d93a-41cb-9c3a-631bdb7f2df0}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Release">\r
+      <UniqueIdentifier>{d92c74f0-c1ab-4435-b7b0-32ae41c89011}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="dwellcursor.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_dwellcursor.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_dwellcursor.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_dwellcursor.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="DwellWidget.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="MainScene.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DwellWidget.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DwellWidget.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="KinectInput.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_KinectInput.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_KinectInput.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_MainScene.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_MainScene.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="MainView.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_MainView.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_MainView.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="DwellButton.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DwellButton.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DwellButton.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_ExperimentSetup.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_ExperimentSetup.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="ExperimentSetup.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="dwellcursor.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="dwellcursor.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="dwellcursor.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="DwellWidget.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="KinectInput.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="MainScene.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="MainView.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="DwellButton.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="ExperimentSetup.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="ExperimentSetup.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_dwellcursor.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="GeneratedFiles\ui_ExperimentSetup.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/DwellCursor/DwellWidget.cpp b/DwellCursor/DwellWidget.cpp
new file mode 100644 (file)
index 0000000..7ca041c
--- /dev/null
@@ -0,0 +1,181 @@
+#include "DwellWidget.h"\r
+\r
+#include <QBrush>\r
+#include <QPen>\r
+\r
+#include <TactonPlayer\Tacton.hpp>\r
+\r
+float DwellWidget::_widgetsize = 0.1;\r
+int DwellWidget::_activationduration = 300;\r
+int DwellWidget::_dwellduration = 1500;\r
+int DwellWidget::_validationduration = 200;\r
+int DwellWidget::_hoverduration = 50;\r
+\r
+QColor DwellWidget::_colornormal = Qt::transparent;\r
+QColor DwellWidget::_coloractivated = Qt::darkCyan;\r
+\r
+DwellWidget::DwellWidget(QGraphicsItem * parent)\r
+:_tactonplayer(NULL),\r
+       _activationtimeline(_activationduration), \r
+       _validationtimeline(_validationduration), \r
+       _progressiontimeline(_dwellduration), \r
+       _center(0, 0, _widgetsize / 2, _widgetsize / 2, this), \r
+       _background(0.0, 0.0, _widgetsize / 2, _widgetsize / 2, this), \r
+       _progress(0.0, 0.0, _widgetsize, _widgetsize, this), \r
+       _activation(), _validation()\r
+{\r
+/*\r
+       _activationtimeline.setFrameRange(0, 100);\r
+       _activation.setItem(&_center);\r
+       _activation.setTimeLine(&_activationtimeline);\r
+       _activation.setScaleAt(0, 1, 1);\r
+       _activation.setPosAt(0 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+       _activation.setScaleAt(1 , 0.5, 0.5);\r
+       _activation.setPosAt(1 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+        connect(&_activationtimeline, SIGNAL(finished()), this, SLOT(startdwell()));\r
+        */\r
+       _activationtimeline.setFrameRange(0, 100);\r
+       _activation.setItem(&_background);\r
+       _activation.setTimeLine(&_activationtimeline);\r
+       _activation.setScaleAt(0, 1, 1);\r
+       _activation.setPosAt(0 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+       _activation.setScaleAt(1 , 2, 2);\r
+       _activation.setPosAt(1 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+        connect(&_activationtimeline, SIGNAL(finished()), this, SLOT(startdwell()));\r
+\r
+//     _progressiontimeline.setUpdateInterval(_dwellduration / 5760);\r
+        _progressiontimeline.setFrameRange(0, 5760);\r
+       _progress.setBrush(QBrush(_coloractivated));\r
+       _progress.setStartAngle(90 * 16);\r
+       _progress.setSpanAngle(0);\r
+       _progress.setPen(QPen(Qt::transparent));\r
+        connect(&_progressiontimeline, SIGNAL(frameChanged(int)), this, SLOT(progress(int)));\r
+        connect(&_progressiontimeline, SIGNAL(finished()), this, SLOT(startvalidation()));\r
+/*\r
+        _validationtimeline.setFrameRange(0, 300);\r
+       _validation.setItem(&_center);  \r
+       _validation.setTimeLine(&_validationtimeline);\r
+       _validation.setScaleAt(0, 0.5, 0.5);\r
+       _validation.setPosAt(0 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+       _validation.setScaleAt(0.5 , 1.5, 1.5);\r
+       _validation.setPosAt(0.5 , QPointF(-_widgetsize * 3 / 4, -_widgetsize * 3 / 4));\r
+       _validation.setScaleAt(1 , 1, 1);\r
+       _validation.setPosAt(1 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+        connect(&_validationtimeline, SIGNAL(finished()), this, SLOT(validation()));\r
+*/\r
+       _validationtimeline.setFrameRange(0, 300);\r
+       _validation.setItem(&_center);  \r
+       _validation.setTimeLine(&_validationtimeline);\r
+       _validation.setScaleAt(0, 2, 2);\r
+       _validation.setPosAt(0 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+       _validation.setScaleAt(0.5 , 2.5, 2.5);\r
+       _validation.setPosAt(0.5 , QPointF(-_widgetsize * 5 / 8, -_widgetsize * 5 / 8));\r
+       _validation.setScaleAt(1 , 1, 1);\r
+       _validation.setPosAt(1 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+        connect(&_validationtimeline, SIGNAL(finished()), this, SLOT(validation()));\r
+\r
+        _center.setZValue(10);\r
+        _center.setPos(QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+        _progress.setPos(QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+        _progress.setZValue(1);\r
+        _background.setZValue(5);\r
+        _background.setPos(QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+        _background.setBrush(QBrush(Qt::transparent));\r
+}\r
+\r
+DwellWidget::~DwellWidget()\r
+{\r
+       if (_tactonplayer)\r
+               _tactonplayer->stop();\r
+}\r
+\r
+void DwellWidget::init()\r
+{\r
+//     _tactonplayer = new TactonPlayer("COM4");\r
+       //hover tacton\r
+       if (_tactonplayer)\r
+       {\r
+               _tactonplayer->regist(Tacton(0x0f, _hoverduration / 2, 100, 255));\r
+               //activation tacton\r
+               _tactonplayer->regist(Tacton(0x0f, _activationduration / 2, 250, 255));\r
+               //progression tacton\r
+               unsigned char animpatterns[8] = {POS2_UP, 0x00, POS2_RIGHT, 0x00, POS2_DOWN, 0x00, POS2_LEFT, 0x00};\r
+               unsigned int animdurations[8] = {_dwellduration / 8, _dwellduration / 8, _dwellduration / 8, _dwellduration / 8,\r
+                       _dwellduration / 8, _dwellduration / 8, _dwellduration / 8, _dwellduration / 8};\r
+               unsigned int animfrequencies[8] = {250, 250, 250, 250, 250, 250, 250, 250};\r
+               unsigned char animamplitudes[8] = {255, 255, 255, 255, 255, 255, 255, 255};\r
+               _tactonplayer->regist(Tacton(8, animpatterns,animdurations, animfrequencies, animamplitudes));\r
+               //validation tacton\r
+               _tactonplayer->regist(Tacton(0x0f, _validationduration / 2, 250, 255));\r
+       }\r
+       _lasthover.restart();\r
+}\r
+\r
+void DwellWidget::hover()\r
+{\r
+       if (_lasthover.elapsed() > _hoverduration)\r
+       {\r
+               if (_tactonplayer)\r
+                       _tactonplayer->play(0);\r
+               _lasthover.restart();\r
+       }\r
+}\r
+\r
+void DwellWidget::start()\r
+{\r
+//     _currentstate = ACTIVATED;\r
+       //_activationpos = \r
+       _center.setBrush(QBrush(_coloractivated));\r
+       if (_tactonplayer)\r
+               _tactonplayer->play(1);\r
+       _activationtimeline.start();\r
+}\r
+\r
+void DwellWidget::startdwell()\r
+{\r
+       if (_tactonplayer)\r
+               _tactonplayer->play(2);\r
+       _progressiontimeline.start();\r
+}\r
+\r
+void DwellWidget::progress(int v)\r
+{\r
+       _progress.setSpanAngle(-v);\r
+}\r
+\r
+void DwellWidget::startvalidation()\r
+{\r
+       if (_tactonplayer)\r
+               _tactonplayer->play(3);\r
+       _activationtimeline.setCurrentTime(0);\r
+       _progressiontimeline.setCurrentTime(0);\r
+       _validationtimeline.start();\r
+}\r
+\r
+void DwellWidget::validation()\r
+{\r
+       emit validated();\r
+       reset();\r
+}\r
+\r
+\r
+void DwellWidget::interrupt()\r
+{\r
+       _activationtimeline.stop();\r
+       _progressiontimeline.stop();\r
+       _validationtimeline.stop();\r
+       reset();\r
+}\r
+\r
+void DwellWidget::reset()\r
+{\r
+       disconnect(this, 0, 0, 0);\r
+//     _validationtimeline.setCurrentTime(0);\r
+       _progressiontimeline.setCurrentTime(0);\r
+       _activationtimeline.setCurrentTime(0);\r
+       _center.setScale(1);\r
+       _background.setScale(1);\r
+       _center.setBrush(QBrush(_colornormal));\r
+       _progress.setSpanAngle(0);\r
+       this->update();\r
+}\r
\ No newline at end of file
diff --git a/DwellCursor/DwellWidget.h b/DwellCursor/DwellWidget.h
new file mode 100644 (file)
index 0000000..07bb1a4
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef __DWELLWIDGET__\r
+#define __DWELLWIDGET__\r
+\r
+#include <QGraphicsItem>\r
+#include <QGraphicsItemGroup>\r
+#include <QGraphicsEllipseItem>\r
+#include <QGraphicsItemAnimation>\r
+#include <QColor>\r
+#include <QTimeLine>\r
+#include <QTime>\r
+\r
+#include <TactonPlayer\TactonPlayer.hpp>\r
+\r
+class DwellWidget: public QObject, public QGraphicsItemGroup\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               DwellWidget(QGraphicsItem * parent = 0);\r
+               ~DwellWidget();\r
+\r
+               void init();\r
+\r
+               void hover();\r
+               void start();\r
+               void interrupt();\r
+               void reset();\r
+\r
+       private:\r
+               TactonPlayer *_tactonplayer;\r
+\r
+               QTimeLine _activationtimeline, _validationtimeline, _progressiontimeline;\r
+               QGraphicsEllipseItem _center, _background, _progress;\r
+               QGraphicsItemAnimation _activation, _validation;\r
+               QPointF _activationpos;\r
+\r
+               QTime _lasthover;\r
+\r
+               static float _widgetsize;\r
+\r
+               static int _activationduration;\r
+               static int _dwellduration;\r
+               static int _validationduration;\r
+               static int _hoverduration;\r
+\r
+               static QColor _colornormal;\r
+               static QColor _coloractivated;\r
+\r
+       signals:\r
+               void validated();\r
+\r
+       private slots:\r
+               void startdwell();\r
+               void startvalidation();\r
+               void validation();\r
+               void progress(int v);\r
+};\r
+\r
+#endif\r
\ No newline at end of file
diff --git a/DwellCursor/ExperimentSetup.cpp b/DwellCursor/ExperimentSetup.cpp
new file mode 100644 (file)
index 0000000..1959a9e
--- /dev/null
@@ -0,0 +1,26 @@
+#include "ExperimentSetup.h"\r
+\r
+ExperimentSetup::ExperimentSetup(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags)\r
+{\r
+       setupUi(this);\r
+\r
+       this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+       QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+ExperimentSetup::~ExperimentSetup()\r
+{\r
+\r
+}\r
+\r
+void ExperimentSetup::runBlock(void)\r
+{\r
+       this->hide();\r
+       w.init(username->text(), condition->currentText(), repetitions->value(), \r
+               nbx->value(), nby->value(), \r
+               buttonssizex->value(), buttonssizey->value(),\r
+               spacex->value(), spacey->value());\r
+       w.show();\r
+}\r
diff --git a/DwellCursor/ExperimentSetup.h b/DwellCursor/ExperimentSetup.h
new file mode 100644 (file)
index 0000000..522d756
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef EXPERIMENTSETUP_H\r
+#define EXPERIMENTSETUP_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_experimentsetup.h"\r
+\r
+#include "dwellcursor.h"\r
+class ExperimentSetup : public QMainWindow,  Ui::ExperimentSetupClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       ExperimentSetup(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~ExperimentSetup();\r
+\r
+private:\r
+       DwellCursor w;\r
+\r
+private slots:\r
+     void runBlock();\r
+};\r
+\r
+#endif\r
diff --git a/DwellCursor/ExperimentSetup.ui b/DwellCursor/ExperimentSetup.ui
new file mode 100644 (file)
index 0000000..fcec084
--- /dev/null
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>ExperimentSetupClass</class>\r
+ <widget class="QMainWindow" name="ExperimentSetupClass">\r
+  <property name="windowModality">\r
+   <enum>Qt::NonModal</enum>\r
+  </property>\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>324</width>\r
+    <height>277</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Dwell Widgets</string>\r
+  </property>\r
+  <property name="locale">\r
+   <locale language="English" country="Canada"/>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <layout class="QGridLayout" name="gridLayout_2">\r
+    <item row="0" column="0">\r
+     <layout class="QGridLayout" name="gridLayout">\r
+      <item row="0" column="0">\r
+       <widget class="QLabel" name="labeluser">\r
+        <property name="text">\r
+         <string>User:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="0" column="1">\r
+       <widget class="QLineEdit" name="username"/>\r
+      </item>\r
+      <item row="2" column="0">\r
+       <widget class="QLabel" name="labelrepetitions">\r
+        <property name="text">\r
+         <string>Repetitions:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="2" column="1">\r
+       <widget class="QSpinBox" name="repetitions">\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>100</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>1</number>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="7" column="0">\r
+       <widget class="QLabel" name="labelexperiment">\r
+        <property name="text">\r
+         <string>Space x:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="1" column="0">\r
+       <widget class="QLabel" name="label">\r
+        <property name="text">\r
+         <string>Condition:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="3" column="0">\r
+       <widget class="QLabel" name="label_2">\r
+        <property name="text">\r
+         <string>Nb x:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="4" column="0">\r
+       <widget class="QLabel" name="label_3">\r
+        <property name="text">\r
+         <string>Nb y:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="5" column="0">\r
+       <widget class="QLabel" name="label_4">\r
+        <property name="text">\r
+         <string>BtSize x:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="6" column="0">\r
+       <widget class="QLabel" name="label_5">\r
+        <property name="text">\r
+         <string>BtSize y:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="8" column="0">\r
+       <widget class="QLabel" name="label_6">\r
+        <property name="text">\r
+         <string>Space y:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="3" column="1">\r
+       <widget class="QSpinBox" name="nbx">\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>10</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>4</number>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="4" column="1">\r
+       <widget class="QSpinBox" name="nby">\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>10</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>4</number>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="1" column="1">\r
+       <widget class="QComboBox" name="condition">\r
+        <item>\r
+         <property name="text">\r
+          <string>Visual only</string>\r
+         </property>\r
+        </item>\r
+        <item>\r
+         <property name="text">\r
+          <string>Tactile + visual</string>\r
+         </property>\r
+        </item>\r
+       </widget>\r
+      </item>\r
+      <item row="5" column="1">\r
+       <widget class="QDoubleSpinBox" name="buttonssizex">\r
+        <property name="decimals">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="minimum">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="maximum">\r
+         <double>1.600000000000000</double>\r
+        </property>\r
+        <property name="singleStep">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="value">\r
+         <double>0.200000000000000</double>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="6" column="1">\r
+       <widget class="QDoubleSpinBox" name="buttonssizey">\r
+        <property name="decimals">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="minimum">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="maximum">\r
+         <double>1.000000000000000</double>\r
+        </property>\r
+        <property name="singleStep">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="value">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="7" column="1">\r
+       <widget class="QDoubleSpinBox" name="spacex">\r
+        <property name="decimals">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <double>10.000000000000000</double>\r
+        </property>\r
+        <property name="singleStep">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="value">\r
+         <double>1.600000000000000</double>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="8" column="1">\r
+       <widget class="QDoubleSpinBox" name="spacey">\r
+        <property name="decimals">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <double>10.000000000000000</double>\r
+        </property>\r
+        <property name="singleStep">\r
+         <double>0.100000000000000</double>\r
+        </property>\r
+        <property name="value">\r
+         <double>1.000000000000000</double>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+    <item row="1" column="0">\r
+     <widget class="QPushButton" name="buttonstart">\r
+      <property name="locale">\r
+       <locale language="English" country="Canada"/>\r
+      </property>\r
+      <property name="text">\r
+       <string>Start experiment</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="dwellcursor.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
diff --git a/DwellCursor/KinectInput.cpp b/DwellCursor/KinectInput.cpp
new file mode 100644 (file)
index 0000000..dca9d65
--- /dev/null
@@ -0,0 +1,99 @@
+#include "KinectInput.h"\r
+\r
+#include <QDebug>\r
+\r
+#define TIMEOUT 100\r
+\r
+KinectInput::KinectInput()\r
+:_running(false), _skeletonid(-1)\r
+{\r
+       //creates the kinect sensor (id 0)\r
+       if(FAILED(NuiCreateSensorByIndex(0, &_kinect)))\r
+    {\r
+               qDebug() << "Cannot find a KINECT sensor" << endl;\r
+               //I should do something else, sucha as an exception\r
+        return;\r
+    }\r
+\r
+    if (_kinect->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_SKELETON) == E_NUI_SKELETAL_ENGINE_BUSY)\r
+    {\r
+               qDebug() << "Cannot initialize the KINECT sensor" << endl;\r
+        return;\r
+   }\r
+\r
+       //initialize the skeleton tracking\r
+       _skeletonEvent = CreateEvent(NULL, TRUE, FALSE, NULL);\r
+       if(!HasSkeletalEngine(_kinect) || FAILED(_kinect->NuiSkeletonTrackingEnable(_skeletonEvent, 0)))\r
+    {\r
+               qDebug() << "Cannot Initialize skeleton tracking" << endl;\r
+        return;\r
+    }\r
+}\r
+\r
+KinectInput::~KinectInput()\r
+{\r
+       NuiShutdown();\r
+       if( _skeletonEvent && ( _skeletonEvent != INVALID_HANDLE_VALUE ) )\r
+        CloseHandle( _skeletonEvent );\r
+}\r
+\r
+//thread that manages the kinect events\r
+void KinectInput::run()\r
+{\r
+       _running = true;\r
+       while(_running)\r
+       {\r
+               //wait for an event\r
+               if (WaitForSingleObject(_skeletonEvent, TIMEOUT) != 0)\r
+                       continue;\r
+\r
+               //get skeleton values\r
+               NUI_SKELETON_FRAME SkeletonFrame;\r
+               HRESULT hr = _kinect->NuiSkeletonGetNextFrame( 0, &SkeletonFrame );\r
+//             qDebug() << "Kinect frame " << SkeletonFrame.dwFrameNumber;\r
+\r
+               //if no skeleton already identified or not tracked anymore, search for one\r
+               if (_skeletonid < 0 || SkeletonFrame.SkeletonData[_skeletonid].eTrackingState != NUI_SKELETON_TRACKED)\r
+               {\r
+                       for( int i = 0 ; i < NUI_SKELETON_COUNT ; i++ )\r
+                       {\r
+                               if(SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED)\r
+                               {\r
+                                       _skeletonid = i;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               //no skeleton found\r
+               if (_skeletonid < 0)\r
+                       continue;\r
+\r
+               //retrieve information on the skeleton\r
+               NUI_SKELETON_DATA &data = SkeletonFrame.SkeletonData[_skeletonid];\r
+\r
+               //checking if we have a skeleton\r
+/*             if (data.eTrackingState != NUI_SKELETON_TRACKED)\r
+                       continue;*/\r
+\r
+               //smooth out the skeleton data\r
+               _kinect->NuiTransformSmooth(&SkeletonFrame, NULL);\r
+\r
+\r
+               if (data.eSkeletonPositionTrackingState[NUI_SKELETON_POSITION_HAND_RIGHT] == NUI_SKELETON_NOT_TRACKED)\r
+                       continue; //right hand not detected\r
+               else\r
+               {\r
+/*                     float posx, posy;\r
+                       NuiTransformSkeletonToDepthImageF(data.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT], &posx, &posy);\r
+                       emit rightHandMove(posx, posy,0);*/\r
+                       Vector4 &skelpos = data.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT];\r
+                       emit rightHandMove(skelpos.x, skelpos.y, skelpos.z);\r
+        }\r
+       }\r
+}\r
+\r
+void KinectInput::stop()\r
+{\r
+       _running = false;\r
+}\r
\ No newline at end of file
diff --git a/DwellCursor/KinectInput.h b/DwellCursor/KinectInput.h
new file mode 100644 (file)
index 0000000..b4bf077
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __KINECTINPUT__\r
+#define __KINECTINPUT__\r
+\r
+#include <QObject>\r
+#include <QThread>\r
+#include <Windows.h>\r
+#include <NuiAPI.h>\r
+\r
+class KinectInput: public QThread\r
+{\r
+       Q_OBJECT\r
+       public:\r
+               KinectInput();\r
+               ~KinectInput();\r
+\r
+               void run();\r
+               void stop();\r
+\r
+       private:\r
+               INuiSensor* _kinect;\r
+               HANDLE _skeletonEvent;\r
+               bool _running;\r
+               int _skeletonid;\r
+\r
+       signals:\r
+               void rightHandMove(float x, float y, float z);\r
+};\r
+\r
+#endif\r
diff --git a/DwellCursor/MainScene.cpp b/DwellCursor/MainScene.cpp
new file mode 100644 (file)
index 0000000..3bfdc32
Binary files /dev/null and b/DwellCursor/MainScene.cpp differ
diff --git a/DwellCursor/MainScene.h b/DwellCursor/MainScene.h
new file mode 100644 (file)
index 0000000..41c640c
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef __MAINSCENE__\r
+#define __MAINSCENE__\r
+\r
+#include <QObject>\r
+#include <QGraphicsScene>\r
+#include <QGraphicsSceneMouseEvent>\r
+#include <QGraphicsSimpleTextItem>\r
+#include <QSignalMapper>\r
+\r
+#include "DwellWidget.h"\r
+#include "KinectInput.h"\r
+#include "DwellButton.h"\r
+\r
+#include <QTime>\r
+\r
+class MainScene: public QGraphicsScene\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               MainScene(QObject * parent = 0);\r
+               ~MainScene();\r
+\r
+               void init(QString user, QString condition, int repetitions);\r
+\r
+               void mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent);\r
+               void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);\r
+\r
+               void setButtonArray(int x, int y, float sx, float sy, float bsx, float bsy);\r
+\r
+               void log(const QString &event, int button, int answer);\r
+               int indexOfButton(DwellButton *b) const;\r
+\r
+       private:\r
+               DwellWidget _dwellwidget;\r
+               KinectInput _kinectsensor;\r
+\r
+               QTime _enteredtime;\r
+               bool _alreadypressed;\r
+               DwellButton *_lastitemover;\r
+               DwellButton **_buttons;\r
+               int _nbbuttonsx, _nbbuttonsy;\r
+               QSignalMapper _signalmapper;\r
+\r
+               static int _dwelltime;\r
+\r
+               //experiment stuff\r
+               FILE *_logfile;\r
+               QTime _start;\r
+               QList<int> _trials;\r
+               int _currenttrial;\r
+\r
+       private slots:\r
+               void displayHandPosition(float x, float y, float z);\r
+               void buttonClicked(int n);\r
+};\r
+\r
+#endif\r
\ No newline at end of file
diff --git a/DwellCursor/MainView.cpp b/DwellCursor/MainView.cpp
new file mode 100644 (file)
index 0000000..2e8c15a
--- /dev/null
@@ -0,0 +1,18 @@
+#include "MainView.h"\r
+\r
+MainView::MainView(float sx, float sy, MainScene * scene, QWidget *parent)\r
+:QGraphicsView(scene, parent), _width(sx), _height(sy)\r
+{\r
+       setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);\r
+       setMouseTracking(true);\r
+       setSceneRect(-sx / 2.0, -sy / 2.0, sx, sy);\r
+}\r
+\r
+MainView::~MainView()\r
+{\r
+}\r
+\r
+void MainView::resizeEvent(QResizeEvent * event)\r
+{\r
+       fitInView(-_width / 2.0, -_height / 2.0, _width, _height, Qt::KeepAspectRatio);\r
+}\r
diff --git a/DwellCursor/MainView.h b/DwellCursor/MainView.h
new file mode 100644 (file)
index 0000000..0c6aaaa
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __MAINVIEW__\r
+#define __MAINVIEW__\r
+\r
+#include <QGraphicsView>\r
+\r
+#include "MainScene.h"\r
+\r
+class MainView: public QGraphicsView\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               MainView(float sx, float sy, MainScene * scene, QWidget * parent=0);\r
+               ~MainView();\r
+\r
+       private:\r
+               void resizeEvent(QResizeEvent * event);\r
+\r
+               float _width, _height;\r
+};\r
+\r
+#endif\r
diff --git a/DwellCursor/dwellcursor.cpp b/DwellCursor/dwellcursor.cpp
new file mode 100644 (file)
index 0000000..2be2b47
--- /dev/null
@@ -0,0 +1,38 @@
+#include "dwellcursor.h"\r
+\r
+#include <QGraphicsView>\r
+\r
+DwellCursor::DwellCursor(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags), _sound(new QSound("whitenoise05.wav"))\r
+{\r
+       setupUi(this);\r
+       if (_sound)\r
+               _sound->setLoops(-1);\r
+}\r
+\r
+DwellCursor::~DwellCursor()\r
+{\r
+}\r
+\r
+void DwellCursor::init(QString user, QString condition, int repetitions, int nbx, int nby, float bsx, float bsy,float spacex, float spacey)\r
+{\r
+       _user = user;\r
+       _condition = condition;\r
+       _repetitions = repetitions;\r
+       _nbx = nbx;\r
+       _nby = nby;\r
+       _bsx = bsx;\r
+       _bsy = bsy;\r
+       _spacex = spacex;\r
+       _spacey = spacey;\r
+\r
+       if (_sound)\r
+               _sound->play();\r
+\r
+       _scene = new MainScene();\r
+       _scene->setButtonArray(nbx, nby, spacex, spacey, bsx, bsy);\r
+       _scene->init(user, condition, repetitions);\r
+\r
+       _view = new MainView(spacex, spacey, _scene);\r
+       setCentralWidget(_view);\r
+}\r
diff --git a/DwellCursor/dwellcursor.h b/DwellCursor/dwellcursor.h
new file mode 100644 (file)
index 0000000..5fe27fd
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef DWELLCURSOR_H\r
+#define DWELLCURSOR_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_dwellcursor.h"\r
+#include <QSound>\r
+#include "DwellWidget.h"\r
+#include "MainScene.h"\r
+#include "MainView.h"\r
+\r
+class DwellCursor : public QMainWindow, Ui::DwellCursorClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       DwellCursor(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~DwellCursor();\r
+\r
+       void init(QString user, QString condition, int repetitions, int nbx, int nby, float bsx, float bsy, float spacex, float spacey);\r
+       void log(QString answer);\r
+\r
+private:\r
+       DwellWidget _dwellwidget;\r
+       MainScene *_scene;\r
+       QGraphicsView *_view;\r
+       QSound *_sound;\r
+\r
+       QString _user, _condition;\r
+       int _repetitions;\r
+       int _nbx, _nby;\r
+       float _bsx, _bsy;\r
+       float _spacex, _spacey;\r
+\r
+};\r
+\r
+#endif // DWELLCURSOR_H\r
diff --git a/DwellCursor/dwellcursor.qrc b/DwellCursor/dwellcursor.qrc
new file mode 100644 (file)
index 0000000..2d55f9f
--- /dev/null
@@ -0,0 +1,4 @@
+<RCC>\r
+    <qresource prefix="DwellCursor">\r
+    </qresource>\r
+</RCC>\r
diff --git a/DwellCursor/dwellcursor.ui b/DwellCursor/dwellcursor.ui
new file mode 100644 (file)
index 0000000..85d861c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>DwellCursorClass</class>\r
+ <widget class="QMainWindow" name="DwellCursorClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>600</width>\r
+    <height>400</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>DwellCursor</string>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget"/>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="dwellcursor.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
diff --git a/DwellCursor/main.cpp b/DwellCursor/main.cpp
new file mode 100644 (file)
index 0000000..5eaf6de
--- /dev/null
@@ -0,0 +1,10 @@
+#include "ExperimentSetup.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       ExperimentSetup w;\r
+       w.show();\r
+       return a.exec();\r
+}
\ No newline at end of file